diff --git a/AGENTS.md b/AGENTS.md index 11e3b8f..e7366cb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -545,6 +545,19 @@ scope. Add yours. containers is a `dict` too, so every lookup returned the table and the test failed for a reason that looked like the code's. → A fake that serves one thing or many decides by a field of the thing, not by its type. +- **A slice anchored on the first match, not the intended one.** Editing a + test file with a Python slice from `subprocess.run([NODE, "-e", script]` to + `return result.stdout.strip()` cut from the first test that contained the + first string to the helper that contained the second, deleting ninety tests + in between; the file was not committed and had to be rebuilt from memory. → + Anchor both ends of a slice inside the block you mean, assert the slice's + length is what you expect, and commit a test file before rewriting it by + script. +- **A key registered before it was used.** The extraction script wrote a + catalogue entry as soon as it saw a candidate and only then checked the + candidate was safe to rewrite, leaving a dozen keys no page asked for. → + Register an effect after the decision to take it, never before; a test + that every key is used (`test_no_key_is_left_unused`) catches the rest. ### Running the tests (read this before trusting "green") diff --git a/Docs/I18n/guide b/Docs/I18n/guide index c861ab5..7d3da6f 100644 --- a/Docs/I18n/guide +++ b/Docs/I18n/guide @@ -65,6 +65,28 @@ and markup that carries its words as data, translated in one pass at load: A key nobody defined shows as itself — ugly on purpose. `applyI18n(root)` translates markup a page built later. +### What a page carries + +A static sentence keeps its **English inside the element** and names its key: + +```html + +``` + +The English is what shows before `/i18n.js` answers, and what a page shows with +scripts off; `tests/test_i18n.py` holds it to the catalogue's English word for +word, so the two cannot drift. Markup that JS builds later is translated as it +arrives (`setHTML` translates before it compares, a `MutationObserver` catches +the rest). A message JS composes asks `t("area.key", {param: value})`; +`plural(n, "node")` looks up `count.node`, so a noun takes its language's forms. + +Two things are **not** done yet and are the next ones to migrate, in this order: +paragraphs that mix text with inline markup (`

… x …

`), and +JS strings composed outside `toast()`, `setMessage()` and `.textContent =`. A +test refuses any new literal in those three calls. The chat page is being +rewritten on this system and is not migrated here. Text a *machine* reads +(API errors, protocol names) stays English. + ## In an app * **Python**: `from src import i18n` then `i18n.t("common.saved", "de")`. diff --git a/Docs/WebConsole/design b/Docs/WebConsole/design index d7365aa..ee0568a 100644 --- a/Docs/WebConsole/design +++ b/Docs/WebConsole/design @@ -338,7 +338,8 @@ refusal, not as a sign-out. Every page loads `/i18n.js` right after `/theme.js`; `ui.JS` then offers `t(key, params)` and `applyI18n(root)` (`data-i18n`, `data-i18n-attr`). A page writes -**no sentence of its own**: it asks for a key. See +**no sentence of its own**: it asks for a key; a static sentence keeps its +English inside the element beside `data-i18n`, and a test holds the two equal. See [`../I18n/guide`](../I18n/guide). ## Constraints you cannot see diff --git a/pyproject.toml b/pyproject.toml index 9cbce97..1c62931 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.backends.legacy:build" [project] name = "nmesh" -version = "0.4.117" +version = "0.4.118" license = "GPL-3.0-only" [tool.pytest.ini_options] diff --git a/src/locales/de.json b/src/locales/de.json index c6555a4..3400105 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -18,18 +18,822 @@ "common.send": "Senden", "common.unknown": "Unbekannt", "config.saved": "Konfiguration gespeichert", + "console.100_rows": "100 Zeilen", + "console.10_minutes": "10 Minuten", + "console.10_rows": "10 Zeilen", + "console.1_create_request": "1 · Anfrage erstellen", + "console.1_minute": "1 Minute", + "console.20_rows": "20 Zeilen", + "console.2_make_invite": "2 · Einladung erstellen", + "console.3_paste_their_reply_block": "3 · Antwortblock der Gegenseite einfügen", + "console.40_character_content_id": "40-stellige Inhalts-ID", + "console.50_rows": "50 Zeilen", + "console.6_hours_maximum": "6 Stunden (Maximum)", + "console.a_few_lines_this_is_all_anybody_sees": "ein paar Zeilen — das ist alles, was jemand sieht, bevor er es abruft", + "console.a_key_made_before_this_node_had": "Ein Schlüssel, der entstand, bevor dieser Knoten einen Ort für sie hatte, ist eine Datei, die nichts benennen kann — und erst die Benennung per ID erlaubt es, damit eine Version zu signieren oder sie jemandem anzubieten. Gib oben den Pfad und die Passphrase an.", + "console.a_line_is_an_authenticated_direct": "Eine Linie ist eine authentifizierte direkte Verbindung: gelb, solange sie Prüfpakete verliert, rot und gestrichelt, sobald sie ausfällt, doppelt, wenn MLO sie bündelt, daneben gepunktet, solange MLO eine zweite Verbindung sucht. Eine blasse gestrichelte Linie ist eine Sitzung über einen ersten Hop — alles dahinter bleibt diesem Knoten bewusst verborgen.", + "console.a_membership_is_issued_for_a_year": "Eine Mitgliedschaft wird für ein Jahr ausgestellt und einen Monat vor Ablauf automatisch erneuert, von dem Knoten, der diesen aufgenommen hat. Es ist der eine Vertrauensausfall, den ein Knoten kommen sieht: Ist die Kette abgelaufen, authentifiziert sie nichts mehr, und der einzige Weg zurück ist eine neue Einladung.", + "console.a_name_and_at_least_one_file_are": "Ein Name und mindestens eine Datei sind erforderlich.", + "console.a_name_and_files_are_required": "Ein Name und Dateien sind erforderlich.", + "console.a_name_you_choose_beside_the_id_you": "Ein Name deiner Wahl, neben der ID, die du nicht wählen kannst", + "console.a_node_drops_anything_it_cannot": "Ein Knoten verwirft alles, was er nicht prüfen kann, und das ist Absicht — aber ein Mesh-Netz, das sich nicht verbindet, sieht von außen genauso aus wie eines, das niemand anruft. Das sind die fehlgeschlagenen Prüfungen, neueste zuerst. Nichts davon ist für sich ein Fehler: Auch ein Fremder, der an eine geschlossene Tür klopft, landet hier.", + "console.a_node_id_is_required": "Eine Knoten-ID ist erforderlich.", + "console.a_passphrase_to_keep_it_under": "Eine Passphrase, unter der er gespeichert wird", + "console.a_password_is_needed": "Ein Passwort ist erforderlich.", + "console.a_publisher_key_is_the_safer_choice": "Ein Herausgeberschlüssel ist die sicherere Wahl: Er wird nur für diese eine Signatur entsperrt. Die Knotenidentität ist bereits entsperrt und bleibt es immer.", + "console.accept_failed": "Annehmen fehlgeschlagen", + "console.accept_someone": "Jemanden aufnehmen", + "console.accepted_for": "Akzeptiert für", + "console.accusers": "Melder", + "console.add_a_node": "Knoten hinzufügen", + "console.address_preference_updated": "Adresspräferenz aktualisiert", + "console.addressing": "Adressierung", + "console.advanced": "Erweitert", + "console.after_a_restart": "Nach einem Neustart", + "console.agreeing": "Einig", + "console.alice": "alice", + "console.all": "Alle", + "console.already_have_a_key_file": "Schon eine Schlüsseldatei?", + "console.also_ask_the_network_for_this_exact": "Das Netzwerk auch nach genau diesem Namen fragen", + "console.always_on_no": "Immer aktiv: nein", + "console.always_on_yes": "Immer aktiv: ja", + "console.an_address_and_an_invite_code_are": "Eine Adresse und ein Einladungscode sind erforderlich.", + "console.an_app_needs": "Eine App braucht", + "console.anchors_and_taking_a_membership_back": "Anker und der Entzug einer Mitgliedschaft", + "console.anchors_this_node_trusts": "Anker, denen dieser Knoten vertraut", + "console.any_app": "beliebige App", + "console.app": "App", + "console.app_name": "App-Name", + "console.app_pages": "App-Seiten", + "console.app_views": "App-Ansichten", + "console.applications": "Anwendungen", + "console.applies_now": "gilt sofort", + "console.applies_now_2": "Gilt sofort", + "console.apply": "Anwenden", + "console.apply_now_at_restart": "{live} sofort angewendet · {live2} beim Neustart", + "console.apply_size": "Größe anwenden", + "console.applying": "Wende an…", + "console.apps": "Apps", + "console.apps_signed_by_it": "von ihm signierte Apps", + "console.ask_the_network": "Das Netzwerk fragen", + "console.ask_the_network_not_just_what_this": "Das Netzwerk fragen, nicht nur, was dieser Knoten schon hält", + "console.asked": "angefragt", + "console.asking_github": "Frage GitHub ab…", + "console.authenticated_and_open_a_node": "Authentifiziert und offen. Ein Knoten mit mehreren Verbindungen klappt sich darauf auf", + "console.auto_refresh": "Automatisch aktualisieren", + "console.automatic": "Automatisch", + "console.balance": "Ausgewogen", + "console.being_in_the_network_is_not_being": "Im Netzwerk zu sein heißt nicht, vertrauenswürdig zu sein. Jede Anwendung legt selbst fest, was ihr zu viel ist — nur Chat weiß, was zu viele Nachrichten sind — und meldet den Absender; dieser Knoten entscheidet, was die Meldungen ergeben. Ein Knoten jenseits der ersten Schwelle wird nicht mehr bedient, und zwar stillschweigend: Ihm wird nichts gesagt, er erfährt es so spät wie möglich. Beschwerden verblassen von selbst, ein Knoten, der einmal auffiel und sich dann korrekt verhielt, kommt also ohne weiteres Zutun zurück.", + "console.beyond_this_node": "Jenseits dieses Knotens", + "console.beyond_this_striping_is_not_worth_it": "Darüber lohnt sich Striping für diesen Knoten nicht.", + "console.both_the_current_and_the_new": "Das aktuelle und das neue Passwort sind beide erforderlich.", + "console.built_in_applications_on_this_node": "Eingebaute Anwendungen auf diesem Knoten und wie man eine im Mesh-Netz findet. Es gibt keinen Katalog zum Durchblättern: Du fragst nach einem Namen, und signierte Einträge kommen zurück.", + "console.bytes": "Bytes", + "console.certificate_unavailable": "Zertifikat nicht verfügbar", + "console.change_password": "Passwort ändern", + "console.changing": "Ändere…", + "console.check_for_updates": "Auf Updates prüfen", + "console.choose_a_passphrase_first": "Zuerst eine Passphrase wählen", + "console.choose_a_passphrase_to_keep_it_under": "Eine Passphrase wählen, unter der er gespeichert wird", + "console.choosing_between_a_node_s_addresses": "Auswahl zwischen den Adressen eines Knotens", + "console.clear": "Leeren", + "console.clear_all": "Alle löschen", + "console.clear_view": "Ansicht leeren", + "console.coming_soon_the_node_moves_along_the": "Bald verfügbar: Der Knoten bewegt sich selbst auf der Leiste, je nachdem, was er tut — im Akku- oder Netzbetrieb, ausgelastet oder im Leerlauf. Du gibst eine Tendenz vor, und er bleibt darin.", + "console.command_palette": "Befehlspalette", + "console.configuration": "Konfiguration", + "console.configuration_file": "Konfigurationsdatei", + "console.confirm": "Bestätigen", + "console.confirm_reachability": "Erreichbarkeit bestätigen", + "console.connect": "Verbinden", + "console.connect_failed": "Verbindung fehlgeschlagen", + "console.connect_two_nodes_by_hand": "Zwei Knoten von Hand verbinden", + "console.connected_apps": "Verbundene Apps", + "console.connected_nodes_click_to_open_the": "Verbundene Knoten — klicken, um die ganze Karte zu öffnen", + "console.connecting": "Verbinde…", + "console.connecting_over_the_mesh": "Verbinde über das Mesh-Netz…", + "console.connector_token": "Connector-Token", + "console.console": "Konsole", + "console.console_is_not_reachable": "Konsole ist nicht erreichbar", + "console.console_password": "Konsolenpasswort", + "console.console_password_changed": "Konsolenpasswort geändert", + "console.console_sections": "Konsolenbereiche", + "console.contains": "Enthält", + "console.content_addressed_transfer": "Inhaltsadressierte Übertragung", + "console.content_id": "Inhalts-ID", + "console.content_published": "Inhalt veröffentlicht.", + "console.control_action_failed": "Steueraktion fehlgeschlagen", + "console.could_not_change_the_password": "Das Passwort konnte nicht geändert werden", + "console.could_not_check_for_updates": "Auf Updates konnte nicht geprüft werden.", + "console.could_not_create_a_request": "Eine Anfrage konnte nicht erstellt werden", + "console.could_not_create_an_invitation": "Eine Einladung konnte nicht erstellt werden", + "console.could_not_read_the_configuration": "Die Konfiguration konnte nicht gelesen werden.", + "console.could_not_read_the_keys_held_here": "Die hier gehaltenen Schlüssel konnten nicht gelesen werden.", + "console.could_not_read_what_this_node_can": "Es konnte nicht gelesen werden, worauf dieser Knoten aktualisiert werden kann.", + "console.could_not_save_that": "Das konnte nicht gespeichert werden", + "console.could_not_save_the_balance": "Die Gewichtung konnte nicht gespeichert werden", + "console.counts_towards_a_quorum": "Zählt für ein Quorum", + "console.create_invitation": "Einladung erstellen", + "console.create_one": "Eine erstellen", + "console.creating": "Erstelle…", + "console.current_password": "Aktuelles Passwort", + "console.dark": "Dunkel", + "console.decide_by_screen_size": "Nach Bildschirmgröße entscheiden", + "console.diagnostics": "Diagnose", + "console.does": "Tut", + "console.does_not_apply": "gilt nicht", + "console.done": "Fertig", + "console.download": "Herunterladen", + "console.downloading_and_installing": "{update_offer} wird heruntergeladen und installiert…", + "console.drag_to_move_pinch_or_scroll_to_zoom": "Ziehen zum Verschieben · Pinch oder Scrollen zum Zoomen", + "console.drop_share_that_benches_a_link": "Verlustanteil, der eine Verbindung aussetzt", + "console.drop_what_was_reported": "Das Gemeldete verwerfen", + "console.dropped_whatever_is_still_true_will": "Verworfen — was noch zutrifft, wird erneut gemeldet", + "console.dynamic_addressing_off": "Dynamische Adressierung: aus", + "console.dynamic_addressing_on": "Dynamische Adressierung: an", + "console.each_key_and_what_its_signature_is": "Jeder Schlüssel und wofür seine Signatur akzeptiert wird", + "console.endpoint": "Endpunkt", + "console.energy_and_performance": "Energie und Leistung", + "console.energy_bar": "Energieleiste", + "console.enter_a_content_id": "Eine Inhalts-ID eingeben.", + "console.enter_a_listener_uri": "Einen Listener-URI eingeben", + "console.enter_a_valid_udp_port": "Einen gültigen UDP-Port eingeben", + "console.errors_only": "nur Fehler", + "console.every_background_job_this_node_keeps": "Jeder Hintergrundjob dieses Knotens und was ihn weckt", + "console.every_number_and_every_setting": "Jede Zahl und jede Einstellung, statt der Entscheidungen, die sich daraus ergeben. Ändert nur, was dieser Browser zeigt — der Knoten verhält sich in beiden Fällen gleich.", + "console.every_option_this_node_reads_from": "Jede Option, die dieser Knoten aus seiner Datei liest", + "console.everything": "Alles", + "console.everything_that_changes_how_this": "Alles, was ändert, wie dieser Knoten läuft. Getrennt vom Live-Status, damit nichts hier nur einen Klick von einem Diagramm entfernt ist, das du bloß lesen wolltest.", + "console.expand": "Erweitern", + "console.expert_mode": "Expertenmodus", + "console.expert_mode_shows_every_setting_in": "Der Expertenmodus zeigt jede Einstellung der Konfigurationsdatei des Knotens, auch die, aus denen diese Leiste besteht.", + "console.failed": "{action} fehlgeschlagen", + "console.fastest_ever": "Am schnellsten überhaupt", + "console.fastest_measured": "Am schnellsten gemessen", + "console.fastest_when_idle": "Am schnellsten im Leerlauf", + "console.fetch": "Abrufen", + "console.fetch_failed": "Abruf fehlgeschlagen", + "console.fetched": "{name} {version} abgerufen.", + "console.fetched_from_the_mesh_and_unpacked": "Aus dem Mesh-Netz geholt und auf diesem Knoten entpackt", + "console.fetching_content": "Rufe Inhalt ab…", + "console.find_a_node_by_name": "Knoten nach Namen finden", + "console.find_a_package_by_name_or_by_the": "Ein Paket nach Namen finden oder nach dem Knoten, der es veröffentlicht", + "console.find_an_app": "App finden", + "console.fit_the_whole_mesh": "Gesamtes Mesh-Netz einpassen", + "console.follow_the_system": "System folgen", + "console.following_a_link_into_chat_or_fleet": "Einem Link in Chat oder Fleet folgen — etwa um einen Knoten aus seinen Details anzuschreiben. Ein Fenster hält im Blick, was du gerade tust; ein Telefon bekommt in beiden Fällen einen Tab.", + "console.for_nodes_that_cannot_see_each_other": "Für Knoten, die einander noch nicht sehen: drei Textblöcke, übertragen über einen Kanal, dem du ohnehin vertraust.", + "console.forget_this_app": "Diese App vergessen", + "console.from": "Von", + "console.from_the_mesh": "Aus dem Mesh-Netz", + "console.from_the_project": "Vom Projekt", + "console.further_apart_than_this_and_they_are": "Liegen sie weiter auseinander, werden sie nicht gebündelt: Striping über eine schnelle und eine langsame Verbindung liefert die Hälfte der Pakete verspätet.", + "console.generate_invite_code": "Einladungscode erzeugen", + "console.getting_an_update": "Ein Update beziehen", + "console.give_the_path_to_the_key_file": "Den Pfad zur Schlüsseldatei angeben", + "console.giving_one": "Einen weitergeben", + "console.handing_one_to_somebody_else_and": "Einen an jemand anderen weitergeben und einen entgegennehmen, der angeboten wird", + "console.happening_now": "Gerade aktuell", + "console.health_throughput_and_the_links_this": "Zustand, Durchsatz und die Verbindungen, die dieser Knoten authentifiziert hat.", + "console.holding": "hält", + "console.host_port": "Host:Port", + "console.how_much_this_node_may_spend_to_stay": "Wie viel dieser Knoten aufwenden darf, um schnell zu bleiben", + "console.how_often_it_goes_checking_and": "Wie oft er nachsieht und ob er sich im Leerlauf die Mühe macht", + "console.how_often_the_changing_numbers_are": "Wie oft die sich ändernden Zahlen neu gelesen werden, in Sekunden (0 schaltet es aus)", + "console.how_the_balance_is_chosen": "Wie die Gewichtung gewählt wird", + "console.how_this_node_trades_energy_for": "Wie dieser Knoten Energie gegen Geschwindigkeit abwägt, ist eine einzige Einstellung unter Einstellungen → Konfiguration. Der Expertenmodus zeigt hier die Werte, aus denen sie besteht.", + "console.id": "ID", + "console.identity": "Identität", + "console.idle": "Leerlauf", + "console.in_a_new_tab": "In einem neuen Tab", + "console.in_a_separate_window": "In einem eigenen Fenster", + "console.inbound_and_outbound_bytes_per": "Eingehende und ausgehende Bytes pro Sekunde", + "console.info_and_above": "Info und höher", + "console.install": "Installieren", + "console.install_2": "{latest} installieren", + "console.install_automatically": "Automatisch installieren", + "console.installed": "Installiert", + "console.internal_api": "Interne API", + "console.into_which_node_s_network": "In das Netzwerk welches Knotens", + "console.invitation": "Einladung", + "console.invite_a_node": "Knoten einladen", + "console.invite_code": "Einladungscode", + "console.invite_codes_and_certificates": "Einladungscodes und Zertifikate", + "console.invite_generation_failed": "Einladung konnte nicht erzeugt werden", + "console.is": "ist", + "console.is_available_but_this_install_cannot": "{latest} ist verfügbar{where}, aber diese Installation kann sich nicht selbst aktualisieren: {blocked}", + "console.is_available_you_run": "{latest} ist verfügbar{where} (installiert: {current}).", + "console.it_listens_beyond_this_machine": "Er lauscht über diesen Rechner hinaus. Jeder, der diese Adresse erreicht und das Token besitzt, kann alles tun, was der MCP-App erteilt wurde.", + "console.it_never_leaves_this_machine_lose_it": "Sie verlässt diesen Rechner nie. Geht sie verloren, ist der Schlüssel weg — es gibt keine Wiederherstellung, und genau das macht eine kopierte Datei nutzlos.", + "console.its_passphrase": "Seine Passphrase", + "console.job": "Job", + "console.join": "Beitreten", + "console.join_or_invite": "Beitreten oder einladen", + "console.join_someone": "Jemandem beitreten", + "console.joined_node": "{node} beigetreten.", + "console.joined_the_network": "Dem Netzwerk beigetreten", + "console.joined_through_a_relay": "Über ein Relay beigetreten.", + "console.joining_the_handshake_is_post": "Beitritt läuft — der Handshake ist post-quantensicher, einen Moment bitte…", + "console.jump_to_a_section_or_run_an_action": "Zu einem Bereich springen oder eine Aktion ausführen…", + "console.key": "Schlüssel", + "console.key_compromised": "Schlüssel kompromittiert", + "console.key_to_share": "Zu teilender Schlüssel", + "console.keys_are_pinned_from_the_package": "Schlüssel werden vom Paket angeheftet, das sie signiert haben, mit einem Klick und einer Bestätigung: Der Schlüssel kommt im Eintrag an und wird gegen die Signatur geprüft, die er erzeugt hat; es gibt also nichts von irgendwoher zu kopieren und nichts falsch zu machen.", + "console.keys_this_node_can_sign_a_release": "Schlüssel, mit denen dieser Knoten eine Version signieren kann", + "console.last": "Zuletzt", + "console.left_the_network": "Hat das Netzwerk verlassen", + "console.level": "Stufe", + "console.light": "Hell", + "console.link": "Verbindung", + "console.links": "Verbindungen", + "console.links_open_in_a_new_tab": "Links werden in einem neuen Tab geöffnet", + "console.links_open_in_a_separate_window": "Links werden in einem eigenen Fenster geöffnet", + "console.links_open_to_suit_the_screen": "Links werden passend zum Bildschirm geöffnet", + "console.links_that_reached_this_node_and": "Verbindungen, die diesen Knoten erreichten und abgewiesen wurden, und warum", + "console.listen_elsewhere": "Anderswo lauschen", + "console.listener_added": "Listener hinzugefügt", + "console.listener_removed": "Listener entfernt", + "console.listener_uri": "Listener-URI", + "console.listening_on": "Lauscht auf", + "console.live": "Live", + "console.load_older": "Ältere laden", + "console.local_management_plane": "Lokale Verwaltungsebene", + "console.log_dropped": "{older} verdrängt, um Platz zu schaffen", + "console.log_held": "Aufbewahrt für {who}. {lines} gehalten, {used} von {size} MB", + "console.log_ratio": "({ratio}× komprimiert)", + "console.log_stop_not_yours": "Das Beenden liegt hier nicht bei dir: Es endet, wenn {who} endet.", + "console.looking_for_a_relay_that_can_reach": "Suche ein Relay, das sie erreichen kann — siehe Netzwerk → Peers.", + "console.loss": "Verlust", + "console.made_here": "hier erstellt", + "console.make_a_key": "Schlüssel erstellen", + "console.manage": "{name} verwalten", + "console.managing": "{name} wird verwaltet", + "console.manual": "Manuell", + "console.mcp_server": "MCP-Server", + "console.mcp_tool": "MCP-Tool", + "console.measures": "misst", + "console.medium": "Medium", + "console.membership": "Mitgliedschaft", + "console.mesh": "Mesh-Netz", + "console.mesh_map": "Mesh-Karte", + "console.mesh_map_draggable_and_zoomable": "Mesh-Karte, verschiebbar und zoombar", + "console.message": "Nachricht", + "console.mlo_ready": "MLO bereit", + "console.more": "Mehr", + "console.multi_link_operation": "Multi-Link-Betrieb", + "console.multi_link_operation_updated": "Multi-Link-Betrieb aktualisiert", + "console.name_the_node_that_receives_it": "Den Knoten benennen, der ihn empfängt", + "console.network": "Netzwerk", + "console.network_views": "Netzwerkansichten", + "console.neutral": "Neutral", + "console.new_password": "Neues Passwort", + "console.new_token": "Neues Token", + "console.nm": "NM", + "console.nmesh": "nmesh", + "console.nmesh_console": "NMesh-Konsole", + "console.nmesh_packet_bytes_excluding": "NMesh-Paketbytes, ohne Transport-Overhead", + "console.no": "nein", + "console.no_camera_available_it_needs_your": "Keine Kamera verfügbar. Sie braucht deine Erlaubnis und eine sichere Seite (HTTPS oder localhost).", + "console.no_key_pinned_this_node_installs": "Kein Schlüssel angeheftet — dieser Knoten installiert nichts aus dem Mesh-Netz von selbst. Finde oben ein Paket und hefte den Schlüssel an, der es signiert hat.", + "console.no_links_yet": "noch keine Verbindungen", + "console.no_node_is_reached_over_two_mlo": "Derzeit ist kein Knoten über zwei MLO-fähige Verbindungen erreichbar.", + "console.no_other_address_on_an_mlo_ready": "— keine weitere Adresse auf einem MLO-fähigen Medium", + "console.no_payload_is_ever_recorded": "Es wird nie eine Nutzlast aufgezeichnet", + "console.no_publisher_key_here_this_node": "Kein Herausgeberschlüssel hier — dieser Knoten signiert Versionen mit seiner eigenen Identität.", + "console.no_publisher_key_on_this_node": "kein Herausgeberschlüssel auf diesem Knoten", + "console.node_being_managed": "Verwalteter Knoten", + "console.node_controls": "Knotensteuerung", + "console.node_peers_app": "Knoten, Peers, App:…", + "console.nodes_linked_directly_and_nodes": "Direkt verbundene Knoten und Knoten, die über sie erreicht werden", + "console.nodes_under_suspicion": "Verdächtige Knoten", + "console.none_yet_this_node_trusts_only": "Noch keine — dieser Knoten vertraut nur sich selbst.", + "console.not_recording_nothing_is_kept_until": "Keine Aufzeichnung. Nichts wird gespeichert, bis jemand sie startet — hier durch Starten einer Ablaufverfolgung oder durch Verfolgen von einer anderen Konsole aus.", + "console.not_restarting": "Kein Neustart", + "console.nothing_held_against_that_node": "Gegen diesen Knoten liegt nichts vor.", + "console.nothing_is_kept_until_it_is_started": "Nichts wird gespeichert, bis es gestartet wird, und was gespeichert war, wird verworfen, wenn der Letzte aufhört, es zu halten: ein Operator hier, ein laufender Trace oder eine Konsole, die dieses Protokoll von anderswo verfolgt. Es liegt nur im Speicher, komprimiert, und ist durch die Größe unten begrenzt.", + "console.nothing_on_the_mesh_changes_it_can": "Nichts im Mesh-Netz ändert sich — sie kann erneut gefunden und installiert werden.", + "console.nothing_registered_the_node_is_not": "Nichts registriert — der Knoten ist nicht gestartet.", + "console.nothing_to_download_yet": "Noch nichts zum Herunterladen", + "console.noticed_not_judged": "Bemerkt, nicht beurteilt", + "console.off": "Aus", + "console.off_2": "aus", + "console.offer_refused": "Angebot abgelehnt", + "console.offer_this_key": "Diesen Schlüssel anbieten", + "console.oldest_at_the_top_follows_the_end_as": "Älteste oben, folgt dem Ende, während Zeilen geschrieben werden", + "console.one_block_per_medium_what_is_bound": "Ein Block pro Medium: was gebunden ist, was es trägt, was es annimmt", + "console.one_invitation_both_ways_round": "Eine Einladung, in beide Richtungen", + "console.one_link_short_of_a_bundle": "Eine Verbindung fehlt zum Bündel:", + "console.one_short_string_where_to_connect_a": "Eine kurze Zeichenfolge: wohin verbinden, ein Weg über einen anderen Knoten, falls das scheitert, und ein Einmalcode", + "console.open_console": "Konsole öffnen", + "console.opening_another_app": "Eine andere App öffnen", + "console.other_sessions_signed_out": { + "one": "{count} andere Sitzung abgemeldet.", + "other": "{count} andere Sitzungen abgemeldet." + }, + "console.overview": "Übersicht", + "console.package_name": "Paketname", + "console.packages_this_node_checks_on_and": "Pakete, die dieser Knoten prüft, und was er allein installieren darf", + "console.packets": "Pakete", + "console.packets_spread_over_two_links_arrive": "Auf zwei Verbindungen verteilte Pakete treffen in etwa um den doppelten gemessenen Versatz durcheinander ein. Apps müssen damit rechnen, mit oder ohne dies: Ein Mesh-Netz routet, und eine geroutete Antwort muss nie nach der vorherigen eintreffen.", + "console.passes": "Durchläufe", + "console.passphrase": "Passphrase", + "console.password_changed": "Passwort geändert.", + "console.past_this_the_link_stops_being": "Darüber hinaus ist die Verbindung nicht mehr glaubwürdig. Bleibt unter dem Timeout des Mediums, was auch vereinbart wird.", + "console.paste_a_certificate": "Ein Zertifikat einfügen.", + "console.paste_a_request_first": "Zuerst eine Anfrage einfügen.", + "console.paste_a_root_certificate_to_trust": "Ein Wurzelzertifikat zum Vertrauen einfügen", + "console.paste_or_scan_an_invitation": "Eine Einladung einfügen oder scannen…", + "console.paste_or_scan_an_invitation_first": "Zuerst eine Einladung einfügen oder scannen.", + "console.paste_the_reply_first": "Zuerst die Antwort einfügen.", + "console.paste_their_request_block": "Anfrageblock der Gegenseite einfügen", + "console.path_on_this_machine": "Pfad auf diesem Rechner", + "console.path_to_publisher_key": "/path/to/publisher.key", + "console.pause": "Pause", + "console.peers": "Peers", + "console.percent_of_its_last_50_probes_it": "Prozent der letzten 50 Prüfpakete. Bei der Hälfte steigt sie wieder ein, damit eine Verbindung an der Schwelle nicht bei jedem Prüfpaket hin- und herspringt.", + "console.performance": "Leistung", + "console.permissions": "Berechtigungen", + "console.permissions_2": "{name} — Berechtigungen", + "console.ping_active_nodes": "Aktive Knoten pingen", + "console.ping_failed": "Ping fehlgeschlagen", + "console.point_the_camera_at_the_ticket_s_qr": "Die Kamera auf den QR-Code des Tickets richten.", + "console.port": "Port", + "console.preferences_about_this_screen_kept": "Einstellungen zu dieser Ansicht, nur hier gespeichert", + "console.preferred_medium": "Bevorzugtes Medium", + "console.probe_failed": "Prüfung fehlgeschlagen", + "console.problems_in_the_file": "Probleme in der Datei: {problems}", + "console.protocol_trace": "Protokoll-Trace", + "console.publish": "Veröffentlichen", + "console.publish_a_signed_release": "Signierte Version veröffentlichen", + "console.publish_content": "Inhalt veröffentlichen", + "console.publish_this_node_s_code": "Den Code dieses Knotens veröffentlichen", + "console.published": "{name} {version} veröffentlicht", + "console.published_and_filed_under_its_name": "Veröffentlicht und unter seinem Namen abgelegt — jeder kann es jetzt finden, indem er ihn eingibt.", + "console.publisher_keys_held_here": "Hier gehaltene Herausgeberschlüssel", + "console.publishing_did_not_finish_the_node": "Die Veröffentlichung wurde nicht abgeschlossen — der Knoten arbeitet möglicherweise noch. In einer Minute Einstellungen → Updates erneut prüfen.", + "console.publishing_under_a_key": "Mit einem Schlüssel veröffentlichen", + "console.rate": "Rate", + "console.raw_dht_package_exchange_not_the": "Roher DHT-Paketaustausch — nicht der signierte App-Store", + "console.re_check_network": "Netzwerk erneut prüfen", + "console.reachability": "Erreichbarkeit", + "console.reading_files": "Dateien werden gelesen…", + "console.reading_hashing_and_signing_this_can": "Lesen, Hashen und Signieren — das kann in einem ausgelasteten Mesh-Netz einen Moment dauern…", + "console.reading_node_status": "Knotenstatus wird gelesen…", + "console.reason": "Grund", + "console.receiving_node": "Empfangender Knoten", + "console.recording": "Aufzeichnung läuft", + "console.refresh_now": "Jetzt aktualisieren", + "console.refused": "abgelehnt", + "console.refused_handshakes": "Abgelehnte Handshakes", + "console.release_notes": "Versionshinweise", + "console.reload_from_file": "Aus Datei neu laden", + "console.remove_the_name": "Namen entfernen", + "console.reordering": "Umordnung", + "console.repeat_new_password": "Neues Passwort wiederholen", + "console.restart_this_node": "Diesen Knoten neu starten", + "console.restarting": "{who} wird neu gestartet", + "console.revoke": "Widerrufen", + "console.ring_size_in_megabytes": "Ring-Größe in Megabyte", + "console.round_trip": "Round-Trip", + "console.rows_per_page": "Zeilen pro Seite", + "console.rtt": "RTT", + "console.said_by": "gesagt von {from}", + "console.same": "gleich", + "console.save_configuration": "Konfiguration speichern", + "console.save_energy": "Energie sparen", + "console.save_failed": "Speichern fehlgeschlagen", + "console.save_name": "Namen speichern", + "console.saves_energy": "Spart Energie", + "console.saving": "Speichere…", + "console.says_which_version_it_runs": "Nennt die Version, die er ausführt", + "console.scan_with_camera": "Mit Kamera scannen", + "console.score": "Punktzahl", + "console.search_active_nodes": "Aktive Knoten suchen", + "console.search_commands": "Suche & Befehle", + "console.search_endpoints": "Endpunkte suchen", + "console.search_endpoints_2": "Endpunkte suchen…", + "console.search_installed": "Installierte suchen…", + "console.search_installed_apps": "Installierte Apps suchen", + "console.search_known_nodes": "Bekannte Knoten suchen", + "console.search_name_id_address_transport": "Name, ID, Adresse, Transport suchen…", + "console.search_name_id_or_address": "Name, ID oder Adresse suchen…", + "console.seconds": "Sekunden", + "console.seconds_to_record": "Aufzunehmende Sekunden", + "console.security": "Sicherheit", + "console.seen": "Gesehen", + "console.send_this_block_to_the_other_side": "Diesen Block an die Gegenseite senden.", + "console.send_this_invite_block_back": "Diesen Einladungsblock zurücksenden.", + "console.send_this_invite_block_back_2": "Diesen Einladungsblock zurücksenden", + "console.send_this_request_block": "Diesen Anfrageblock senden", + "console.sent_probe_s": "{sent} Prüfpaket(e) gesendet", + "console.settings": "Einstellungen", + "console.settings_applied": "{scheme}-Einstellungen angewendet", + "console.settings_apply_to_the_running_node": "Einstellungen gelten sofort für den laufenden Knoten, sofern nicht anders angegeben, und werden dann in die Konfigurationsdatei geschrieben, damit sie einen Neustart überstehen. Ein Wert, den der Transport ablehnt, erreicht die Datei nie.", + "console.settings_sections": "Einstellungsbereiche", + "console.sharing_a_key": "Einen Schlüssel teilen", + "console.show_our_root_certificate": "Unser Wurzelzertifikat anzeigen", + "console.show_the_client_configuration": "Client-Konfiguration anzeigen", + "console.show_this_node_s_details": "Details dieses Knotens anzeigen", + "console.sign_out": "Abmelden", + "console.sign_what_is_installed_here_and": "Das hier Installierte signieren und dem Mesh-Netz anbieten", + "console.sign_with": "Signieren mit", + "console.signed_by": "Signiert von", + "console.signing_keys_you_accept": "Signierschlüssel, die du akzeptierst", + "console.size_mb": "Größe, MB", + "console.sketchpad": "Skizzenblock", + "console.skew_two_links_may_differ_by": "Versatz, um den zwei Verbindungen abweichen dürfen", + "console.skip_to_content": "Zum Inhalt springen", + "console.slowest_still_fast": "Langsamste noch „schnelle“", + "console.slowest_when_idle": "Am langsamsten im Leerlauf", + "console.software": "Software", + "console.soon": "Bald", + "console.source": "Quelle", + "console.standing": "Stand", + "console.start_recording": "Aufzeichnung starten", + "console.stop": "Stopp", + "console.stop_camera": "Kamera stoppen", + "console.superseded": "Ersetzt", + "console.sweep": "Durchlauf", + "console.switch_theme": "Design wechseln", + "console.take_back_a_membership": "Eine Mitgliedschaft entziehen", + "console.take_it_in": "Übernehmen", + "console.team": "Team", + "console.tendency": "Tendenz", + "console.text_or_a_field_value": "Text oder ein Feldwert", + "console.that_could_not_be_dropped": "Das konnte nicht verworfen werden", + "console.that_step_could_not_be_applied": "Dieser Schritt konnte nicht angewendet werden", + "console.the_certificate_chain_this_node": "Die Zertifikatskette, die dieser Knoten vorlegt, um seine Zugehörigkeit zu beweisen", + "console.the_console_stopped_answering_while": "Die Konsole hat beim Beitreten nicht mehr geantwortet. Netzwerk → Peers prüfen, bevor erneut versucht wird — der Beitritt könnte erfolgt sein.", + "console.the_fastest_this_node_will_be_probed": "Das Schnellste, womit dieser Knoten geprüft wird, mit oder ohne Striping.", + "console.the_last_things_this_node_did_or_was": "Das Letzte, was dieser Knoten getan hat oder was ihm gesagt wurde", + "console.the_mcp_app_is_off_enable_it_on_the": "Die MCP-App ist aus. Aktiviere sie im Tab Installiert und erteile ihr dann, was sie lesen und tun darf — ihre Tools werden daraus erzeugt.", + "console.the_node_did_not_answer": "Der Knoten hat nicht geantwortet.", + "console.the_only_credential_between_the": "Die einzige Zugangsberechtigung zwischen dem Netzwerk und der Steuerung dieses Knotens", + "console.the_other_direction_nothing_here": "Die Gegenrichtung. Nichts hier fügt einen Knoten hinzu — das sind die zwei Wege, Vertrauen zu entziehen, und sie sind nicht dasselbe.", + "console.the_password_is_checked_on_this": "Das Passwort wird auf diesem Rechner geprüft und verlässt ihn nie. Es schützt jede Verwaltungsaktion, auch jene, die den Knoten neu starten oder aktualisieren können.", + "console.the_primitives": "Die Grundbausteine", + "console.the_routing_table_reachable_not": "Die Routing-Tabelle — erreichbar, nicht unbedingt verbunden", + "console.the_secret_is_sealed_to_a_key_the": "Das Geheimnis wird für einen Schlüssel versiegelt, den die Gegenseite beim Annehmen erzeugt; es kann also nicht reisen, bevor jemand zustimmt, es zu empfangen, und nur sie können es öffnen. Sie wählen ihre eigene Passphrase — nie deine.", + "console.the_trace_could_not_be_read": "Der Trace konnte nicht gelesen werden", + "console.the_two_new_passwords_do_not_match": "Die beiden neuen Passwörter stimmen nicht überein.", + "console.theme": "Design", + "console.theme_updated": "Design aktualisiert", + "console.there_is_no_key_to_share": "Es gibt keinen Schlüssel zum Teilen", + "console.these_are_not_settings_of_the_node": "Das sind keine Einstellungen des Knotens: Sie liegen in diesem Browser, ein anderer Rechner, der an derselben Konsole angemeldet ist, behält also seine eigenen. Nichts davon wird irgendwohin gesendet.", + "console.these_settings_were_tuned_by_hand": "Diese Einstellungen wurden von Hand abgestimmt und passen zu keiner Stufe. Das Bewegen der Leiste ersetzt sie durch die gewählte Stufe.", + "console.they": "sie", + "console.things_this_node_saw_and_will_not": "Dinge, die dieser Knoten gesehen hat und über die er nicht entscheidet, weil die ehrliche Erklärung meist du selbst bist: ein Peer, dessen Verkehr plötzlich nach einem anderen Rechner aussieht (du hast ihn aktualisiert), oder ein Mitglied des Netzwerks, das auf einmal weit mehr Knoten aufgenommen hat als je zuvor (du hast welche ausgerollt). Er kann das nicht von einem gestohlenen Schlüssel oder einer geprägten Menge unterscheiden und sagt es deshalb, statt zu handeln. Hier wird niemandem etwas angelastet: Bestätigen macht nur das, was sie jetzt tun, zur neuen Normalität.", + "console.this_app_connects_to_with_the_token": "Diese App verbindet sich mit dem untenstehenden Token mit {host}:{port}. Er beweist, dass die App diese App ist — nicht in Geteiltem ablegen.", + "console.this_browser": "Dieser Browser", + "console.this_browser_cannot_scan_qr_codes": "Dieser Browser kann keine QR-Codes scannen. Stattdessen das Ticket einfügen.", + "console.this_field_takes_any_of_them_an": "Dieses Feld nimmt jede davon an — eine Einladung oder einen Block von einem älteren Knoten. Es gibt nichts auszuwählen.", + "console.this_medium_declares_no_setting": "Dieses Medium deklariert keine Einstellung.", + "console.this_node": "Dieser Knoten", + "console.this_node_could_not_build": "Dieser Knoten konnte nicht bauen: {names}", + "console.this_node_has_no_configuration_file": "Dieser Knoten hat keine Konfigurationsdatei: Ein Schritt gilt sofort und wird beim Neustart vergessen.", + "console.this_node_s": "dieses Knotens", + "console.this_node_s_identity_key": "Identitätsschlüssel dieses Knotens", + "console.this_project_s_published_releases_on": "Die veröffentlichten Versionen dieses Projekts auf GitHub", + "console.throughput": "Durchsatz", + "console.ticket_scanned_check_it_then_press": "Ticket gescannt — prüfen, dann auf Beitreten drücken.", + "console.times": "Anzahl", + "console.tools_right_now": "Tools derzeit", + "console.topology": "Topologie", + "console.trace_command_failed": "Trace-Befehl fehlgeschlagen", + "console.transport": "Transport", + "console.transports": "Transporte", + "console.trust_already_given": "Bereits erteiltes Vertrauen", + "console.trust_certificate": "Zertifikat vertrauen", + "console.two_channels_can_replace_that_and": "Zwei Kanäle können das ersetzen, und sie sind voneinander unabhängig", + "console.two_links_to_one_node_carrying_its": "Zwei Verbindungen zu einem Knoten, die seinen Verkehr gemeinsam tragen", + "console.type_a_name_the_mesh_answers_nothing": "Einen Namen eingeben — das Mesh-Netz antwortet, nichts wird aufgelistet", + "console.type_its_passphrase_in_the_field": "Die Passphrase im Feld oben eingeben", + "console.type_the_key_s_passphrase": "Die Passphrase des Schlüssels eingeben", + "console.udp_port": "UDP-Port", + "console.unavailable": "nicht verfügbar", + "console.unlock_this_node": "Diesen Knoten entsperren", + "console.unnamed": "unbenannt", + "console.unspecified": "Nicht angegeben", + "console.up_to_date_running_latest_is": "Aktuell — {current} läuft, neueste Version ist {latest}{where}.", + "console.update_failed": "Update fehlgeschlagen.", + "console.updates": "Updates", + "console.use_one": "Eine verwenden", + "console.valid_for": "Gültig für", + "console.valid_for_single_use": "Gültig für {duration}. Einmalig verwendbar — wie ein Passwort behandeln.", + "console.version": "Version", + "console.via": "über {via}", + "console.wakes_on": "Wacht auf bei", + "console.warnings_and_errors": "Warnungen und Fehler", + "console.watch_for_new_versions": "Auf neue Versionen achten", + "console.what_changed": "was sich geändert hat", + "console.what_is_kept_is_dropped_recording": "Was gespeichert ist, wird verworfen; die Aufzeichnung läuft weiter.", + "console.what_is_running": "Was läuft", + "console.what_it_does": "Was sie tut", + "console.what_it_is": "Was es ist", + "console.what_the_applications_and_the_core": "Was die Anwendungen und der Kern gemeldet haben", + "console.what_the_lines_mean": "Was die Linien bedeuten", + "console.what_this_key_is_for": "wofür dieser Schlüssel ist", + "console.what_this_node_actually_sends_and": "Was dieser Knoten tatsächlich sendet und empfängt, nach Nachrichtentyp", + "console.what_this_node_is_called": "Wie dieser Knoten heißt", + "console.what_this_node_noticed_about_itself": "Was dieser Knoten an sich selbst und an den Rechnern bemerkt hat, mit denen er spricht. Eine Zeile pro Problem, mit Häufigkeit", + "console.what_this_node_says_about_itself": "Was dieser Knoten über sich sagt — nur gespeichert, solange jemand fragt", + "console.what_this_node_tells_other_nodes": "Was dieser Knoten anderen Knoten über sich mitteilt", + "console.what_you_are_watching": "Was du beobachtest", + "console.when_neither_node_can_reach_the": "Wenn keiner der beiden Knoten den anderen erreichen kann", + "console.when_this_node_looks": "Wann dieser Knoten nachsieht", + "console.where_it_came_from": "Woher er kam", + "console.whether_other_nodes_can_open_a_link": "Ob andere Knoten eine Verbindung zu diesem öffnen können", + "console.which_endpoints": "Welche Endpunkte", + "console.while_nobody_is_here": "Solange niemand da ist", + "console.who_receives_it": "wer ihn empfängt", + "console.who_this_node_is_connected_to_how_it": "Mit wem dieser Knoten verbunden ist, wie er erreichbar ist und wie ein weiterer Knoten hinzukommt.", + "console.whole_or_partial_best_match_first": "Ganz oder teilweise — beste Übereinstimmung zuerst", + "console.why": "Warum", + "console.with_nothing_happening_no_more_often": "Wenn nichts passiert, nicht öfter als dies.", + "console.yes": "ja", + "console.yours_chosen_here_never_theirs": "Deine, hier gewählt. Nie die der anderen.", + "console.yours_to_unlock_the_key_here_it_is": "Deine, um den Schlüssel hier zu entsperren. Sie wird nicht gesendet.", + "console.zoom": "Zoom", + "console.zoom_in": "Vergrößern", + "console.zoom_out": "Verkleinern", + "count.container": { + "one": "{count} Container", + "other": "{count} Container" + }, + "count.environment": { + "one": "{count} Umgebung", + "other": "{count} Umgebungen" + }, + "count.file": { + "one": "{count} Datei", + "other": "{count} Dateien" + }, + "count.hour": { + "one": "{count} Stunde", + "other": "{count} Stunden" + }, + "count.line": { + "one": "{count} Zeile", + "other": "{count} Zeilen" + }, "count.link": { "one": "{count} Verbindung", "other": "{count} Verbindungen" }, + "count.listener": { + "one": "{count} Listener", + "other": "{count} Listener" + }, + "count.member": { + "one": "{count} Mitglied", + "other": "{count} Mitglieder" + }, "count.message": { "one": "{count} Nachricht", "other": "{count} Nachrichten" }, + "count.minute": { + "one": "{count} Minute", + "other": "{count} Minuten" + }, "count.node": { "one": "{count} Knoten", "other": "{count} Knoten" }, + "count.older_line": { + "one": "{count} ältere Zeile", + "other": "{count} ältere Zeilen" + }, + "count.permission": { + "one": "{count} Berechtigung", + "other": "{count} Berechtigungen" + }, + "count.stack": { + "one": "{count} Stack", + "other": "{count} Stacks" + }, + "count.unread_message": { + "one": "{count} ungelesene Nachricht", + "other": "{count} ungelesene Nachrichten" + }, + "fleet.1_scan": "1 · Scannen", + "fleet.2_install": "2 · Installieren", + "fleet.a_group_needs_a_name": "Eine Gruppe braucht einen Namen.", + "fleet.a_lowercase_name_and_a_compose_file": "Ein Name in Kleinbuchstaben und eine Compose-Datei sind erforderlich.", + "fleet.a_node_id_is_40_hexadecimal": "Eine Knoten-ID besteht aus 40 Hexadezimalzeichen.", + "fleet.a_subnet_a_machine_or_nothing_to": "Ein Subnetz, ein Rechner oder nichts, um alle angeschlossenen Netzwerke zu durchsuchen.", + "fleet.a_system_install_needs_root_tick": "Eine Systeminstallation braucht root: sudo ankreuzen, ein sudo-Konto angeben oder unter dem Benutzer installieren.", + "fleet.accept": "{id} akzeptieren?", + "fleet.access": "Zugriff", + "fleet.access_granted": "Zugriff erteilt", + "fleet.access_token": "Zugriffstoken", + "fleet.activity": "Aktivität", + "fleet.address": "Adresse", + "fleet.address_as_that_machine_reaches_it": "Adresse, wie dieser Rechner sie erreicht", + "fleet.address_here": "Adresse hier", + "fleet.always": "always", + "fleet.always_follow": "Immer verfolgen", + "fleet.an_address_and_a_token_are_needed": "Eine Adresse und ein Token sind erforderlich.", + "fleet.an_address_is_needed": "Eine Adresse ist erforderlich.", + "fleet.an_image_is_required": "Ein Image ist erforderlich.", + "fleet.an_ssh_user_is_required": "Ein SSH-Benutzer ist erforderlich.", + "fleet.ask_for_at_least_one_capability": "Mindestens eine Berechtigung anfragen.", + "fleet.ask_this_machine_now": "Diesen Rechner jetzt fragen", + "fleet.asked_for_its_log": "Protokoll von {node} angefordert", + "fleet.asking": "{who} wird angefragt…", + "fleet.auto_or_192_168_1_0_24_10_0_0_5_nas": "auto — oder 192.168.1.0/24, 10.0.0.5, nas.lan:2222", + "fleet.auto_refresh_in_seconds_0_turns_it": "Automatisch aktualisieren, in Sekunden (0 schaltet es aus)", + "fleet.back_to_console": "Zurück zur Konsole", + "fleet.capabilities_the_new_machines_grant": "Berechtigungen, die die neuen Rechner dir erteilen", + "fleet.capabilities_to_ask_for": "Anzufragende Berechtigungen", + "fleet.choose_a_machine_first": "Zuerst einen Rechner wählen", + "fleet.collected_logs_dropped": "Gesammelte Protokolle verworfen", + "fleet.collection": "Sammlung", + "fleet.console_of": "Konsole von {id}", + "fleet.containers": "Container", + "fleet.could_not_be_updated": "{name} konnte nicht aktualisiert werden", + "fleet.create": "Erstellen", + "fleet.created": "Erstellt", + "fleet.credentials_are_held_in_memory_for": "Zugangsdaten werden nur für diesen Lauf im Speicher gehalten", + "fleet.debug_and_above": "debug und höher", + "fleet.default_behaviour": "Standardverhalten", + "fleet.delete_group": "Gruppe löschen", + "fleet.deploy": "Bereitstellen", + "fleet.deploy_a_stack": "Einen Stack bereitstellen", + "fleet.deployed_by": "Bereitgestellt von", + "fleet.deploying_watch_activity": "Stelle bereit… siehe Aktivität.", + "fleet.deployment_failed_to_start": "Bereitstellung konnte nicht gestartet werden.", + "fleet.discover_deploy": "Entdecken & bereitstellen", + "fleet.docker": "Docker", + "fleet.docker_2": "docker", + "fleet.docker_compose_yml": "docker-compose.yml", + "fleet.docker_views": "Docker-Ansichten", + "fleet.done_succeeded": "Fertig: {good}/{length} erfolgreich.", + "fleet.driver": "Treiber", + "fleet.each_container_whose_image_changed": "Jeder Container, dessen Image sich geändert hat, wird neu erstellt.", + "fleet.each_of_these_accepted_a_request": "Jeder davon hat eine Anfrage dieses Knotens angenommen und genau die gezeigten Berechtigungen erteilt. Nichts davon wurde genommen; alles wurde gegeben.", + "fleet.encrypted": "verschlüsselt", + "fleet.enter": "Eintreten", + "fleet.environment": "Umgebung", + "fleet.every_machine": "Jeder Rechner", + "fleet.every_node_listed_here_can_act_on": "Jeder hier aufgeführte Knoten kann auf diesem Rechner handeln. Ein Recht wird nur von hier aus hinzugefügt — ein Knoten kann anfragen, aber jemand an diesem Rechner muss zustimmen.", + "fleet.filter_containers": "Container filtern", + "fleet.filter_stacks": "Stacks filtern", + "fleet.fleet": "Fleet", + "fleet.fleet_sections": "Fleet-Bereiche", + "fleet.fleet_uses_the_console_password_of": "Fleet verwendet das Konsolenpasswort dieses Knotens.", + "fleet.forget": "Vergessen", + "fleet.forget_everything_collected": "Alles Gesammelte vergessen", + "fleet.full_screen": "Vollbild", + "fleet.ghcr_io_owner_image_tag": "ghcr.io/owner/image:tag", + "fleet.give_a_password_a_key_or_both": "Ein Passwort, einen Schlüssel oder beides angeben.", + "fleet.give_a_password_a_key_or_both_both": "Ein Passwort, einen Schlüssel oder beides angeben — beides wird versucht.", + "fleet.grant_access": "Zugriff erteilen", + "fleet.group_deleted": "Gruppe gelöscht", + "fleet.group_saved": "Gruppe gespeichert", + "fleet.groups_for": "Gruppen für {id}", + "fleet.groups_updated": "Gruppen aktualisiert", + "fleet.history": "Verlauf", + "fleet.host_container_one_per_line_add_udp": "host:container, einer pro Zeile; :udp für UDP anhängen", + "fleet.host_path_or_volume_name_container": "Host-Pfad oder Volume-Name : Container-Pfad, :ro für schreibgeschützt", + "fleet.image": "Image", + "fleet.images": "Images", + "fleet.inbound": "Eingehend", + "fleet.install_directory": "Installationsverzeichnis", + "fleet.install_options": "Installationsoptionen", + "fleet.invite_somebody_to_s_mesh": "Jemanden in das Mesh-Netz von {who} einladen", + "fleet.is_running": "{image} läuft", + "fleet.its_password": "Sein Passwort", + "fleet.keep_them_updated_from_the": "Von den Herausgebern, die dieser Knoten akzeptiert, aktuell halten", + "fleet.key_passphrase": "Schlüssel-Passphrase", + "fleet.key_removed": "Schlüssel entfernt", + "fleet.key_value_one_per_line": "KEY=value, einer pro Zeile", + "fleet.label_optional": "Bezeichnung (optional)", + "fleet.let_it_run_its_own_system_updates": "Eigene Systemupdates ausführen lassen (ein fester Root-Befehl)", + "fleet.line": "Zeile", + "fleet.lines_collected_from_the_machines": "Zeilen, gesammelt von den Rechnern, die dieser Knoten verwaltet — was darauf geschah, während niemand hinsah. Hier im Speicher gehalten, ein begrenzter Ring pro Rechner.", + "fleet.log_collection_for": "Protokollsammlung für {node}: {value}", + "fleet.logs": "Protokolle", + "fleet.logs_2": "Protokolle · {id}", + "fleet.lowercase_letters_digits_and": "Kleinbuchstaben, Ziffern, - und _", + "fleet.machine": "Rechner", + "fleet.managed": "Verwaltet", + "fleet.mark_all_read": "Alle als gelesen markieren", + "fleet.megabytes_kept_per_machine": "Megabyte pro Rechner gespeichert", + "fleet.name": "Name", + "fleet.networks": "Netzwerke", + "fleet.never_ask_when_needed": "Nie — bei Bedarf fragen", + "fleet.new_group": "Neue Gruppe", + "fleet.newest_first_by_the_time_this_node": "Neueste zuerst, nach dem Zeitpunkt, zu dem dieser Knoten sie empfangen hat.", + "fleet.nmesh_fleet": "NMesh Fleet", + "fleet.no_group_yet_name_one_below": "Noch keine Gruppe — unten eine benennen.", + "fleet.no_status_yet": "Noch kein Status.", + "fleet.node": "Knoten {id}", + "fleet.node_id": "Knoten-ID", + "fleet.nodes": "Knoten", + "fleet.nodes_you_control": "Knoten, die du steuerst", + "fleet.nothing_of_it_runs_on_this_machine": "Nichts davon läuft auf diesem Rechner.", + "fleet.nothing_waiting_jobs_and_access": "Nichts wartet. Aufträge und Zugriffsanfragen erscheinen hier.", + "fleet.notifications": "Benachrichtigungen", + "fleet.on_failure": "on-failure", + "fleet.only_while_a_page_is_open_on_it": "Nur solange eine Seite darauf offen ist", + "fleet.open_shell": "Shell öffnen", + "fleet.opt_nmesh": "/opt/nmesh", + "fleet.optional": "optional", + "fleet.or_a_new_group": "Oder eine neue Gruppe", + "fleet.or_type_a_whole_line_here_and_press": "…oder hier eine ganze Zeile eingeben und Enter drücken", + "fleet.otherwise_an_account_that_can": "Sonst ein Konto, das kann", + "fleet.outside_a_stack": "Außerhalb eines Stacks", + "fleet.password": "Passwort", + "fleet.portainer_connected_environments": { + "one": "Portainer verbunden — {count} Umgebung sichtbar", + "other": "Portainer verbunden — {count} Umgebungen sichtbar" + }, + "fleet.portainer_did_not_answer": "Portainer hat nicht geantwortet", + "fleet.portainer_forgotten": "Portainer vergessen", + "fleet.ports": "Ports", + "fleet.pull": "Pull", + "fleet.pulled": "{image} gepullt", + "fleet.pulling": "{image} wird gepullt…", + "fleet.reachable_at": "Erreichbar unter", + "fleet.read_its_certificate": "Zertifikat lesen", + "fleet.recommended": "Empfohlen.", + "fleet.relationship_revoked": "Beziehung widerrufen", + "fleet.reload": "Neu laden", + "fleet.request_access_to_a_node": "Zugriff auf einen Knoten anfragen", + "fleet.request_denied": "Anfrage abgelehnt", + "fleet.request_sent_it_is_theirs_to_accept": "Anfrage gesendet — die Annahme liegt bei der Gegenseite", + "fleet.restart_policy": "Neustart-Richtlinie", + "fleet.rights_on": "Rechte auf {id}", + "fleet.root": "root", + "fleet.run": "Ausführen", + "fleet.run_a_container": "Einen Container ausführen", + "fleet.running_on_the_remote_node": "Läuft auf dem entfernten Knoten…", + "fleet.scan": "Scannen", + "fleet.scan_failed": "Scan fehlgeschlagen.", + "fleet.scan_from": "Scannen von", + "fleet.scan_running_on_the_remote_node": "Scan läuft auf dem entfernten Knoten…", + "fleet.scanning_this_takes_a_moment": "Scanne… das dauert einen Moment.", + "fleet.send_a_whole_line": "Ganze Zeile senden", + "fleet.send_request": "Anfrage senden", + "fleet.service": "Dienst", + "fleet.service_name": "Dienstname", + "fleet.shell": "Shell", + "fleet.sign_in": "Anmelden", + "fleet.since": "Seit", + "fleet.size": "Größe", + "fleet.srv_data_data": "/srv/data:/data", + "fleet.ssh_key": "SSH-Schlüssel", + "fleet.ssh_user": "SSH-Benutzer", + "fleet.stack_deployed": "Stack {name} bereitgestellt", + "fleet.stack_failed": "Stack {name} fehlgeschlagen", + "fleet.start_the_fleet_app_on_it_so_it_can": "Die Fleet-App darauf starten, damit er verwaltet werden und weiter bereitstellen kann", + "fleet.state_directory": "Statusverzeichnis", + "fleet.stays_live_for": "Bleibt aktiv für", + "fleet.subnet": "Subnetz", + "fleet.sudo_account": "sudo-Konto", + "fleet.system": "System", + "fleet.targets": "Ziele", + "fleet.that_could_not_be_changed": "Das konnte nicht geändert werden", + "fleet.that_does_not_look_like_a_private": "Das sieht nicht nach einem privaten Schlüssel aus.", + "fleet.that_file_is_too_large_for_a_key": "Diese Datei ist für einen Schlüssel zu groß.", + "fleet.that_group_name_was_refused": "Dieser Gruppenname wurde abgelehnt.", + "fleet.that_machine_could_not_be_asked": "Dieser Rechner konnte nicht angefragt werden", + "fleet.that_machine_did_not_answer": "Dieser Rechner hat nicht geantwortet", + "fleet.that_machine_has_no_docker_compose": "Auf diesem Rechner ist docker compose nicht vorhanden: zuerst dort installieren.", + "fleet.that_request_was_refused": "Diese Anfrage wurde abgelehnt.", + "fleet.the_daemon_refuses_while_a_container": "Der Daemon lehnt ab, solange ein Container es verwendet.", + "fleet.the_default_could_not_be_changed": "Der Standard konnte nicht geändert werden", + "fleet.the_new_machines_pin_the_same": "Die neuen Rechner heften dieselben Versionsherausgeber an wie dieser Knoten (und dieser Knoten selbst) und installieren ihre signierten Versionen eigenständig. Das wird hier festgelegt oder nirgends: Ein Rechner ohne Oberfläche hat niemanden, der einen Herausgeberschlüssel in eine Konsole einfügt, und würde ewig nichts aus dem Mesh-Netz akzeptieren.", + "fleet.the_size_could_not_be_changed": "Die Größe konnte nicht geändert werden", + "fleet.the_stacks_and_containers_of_one": "Die Stacks und Container eines Rechners, anhand dessen gefunden, was darauf läuft — ob Compose oder Portainer sie bereitgestellt hat — und so aktualisiert, wie ihr Eigentümer es täte.", + "fleet.this_node_s_id": "ID dieses Knotens", + "fleet.tz_europe_paris": "TZ=Europe/Paris", + "fleet.unless_stopped": "unless-stopped", + "fleet.until": "Bis", + "fleet.update": "Aktualisieren", + "fleet.update_all": "Alle aktualisieren", + "fleet.update_stacks": { + "one": "{count} Stack aktualisieren", + "other": "{count} Stacks aktualisieren" + }, + "fleet.update_started_on_nodes": { + "one": "Update auf {count} Knoten gestartet", + "other": "Update auf {count} Knoten gestartet" + }, + "fleet.update_started_progress_shows_on_the": "Update gestartet — der Fortschritt erscheint auf der Karte des Knotens", + "fleet.upload_a_key": "Schlüssel hochladen…", + "fleet.user": "Benutzer", + "fleet.var_lib_nmesh": "/var/lib/nmesh", + "fleet.volumes": "Volumes", + "fleet.volumes_networks": "Volumes & Netzwerke", + "fleet.what_is_followed_and_how_much_of_it": "Was verfolgt wird und wie viel davon gespeichert bleibt.", + "fleet.what_the_machines_said": "Was die Rechner gesagt haben", + "fleet.what_this_node_asked_what_it_was": "Was dieser Knoten gefragt hat, was er gefragt wurde und wie es jeweils endete.", + "fleet.when": "Wann", + "fleet.where_nmesh_goes_on_each_machine": "Wohin NMesh auf jedem Rechner kommt", + "fleet.which_containers": "Welche Container", + "fleet.who_controls_this_node": "Wer diesen Knoten steuert", "language.auto": "Automatisch (Browser folgen)", "language.help": "Sprache der Konsole und der Apps. Automatisch folgt dem Browser.", "language.label": "Sprache", @@ -40,8 +844,83 @@ "language.name.ru": "Русский", "language.name.sk": "Slovenčina", "language.name.zh": "中文", + "node.1_hour": "1 Stunde", + "node.5_minutes": "5 Minuten", + "node.6_hours": "6 Stunden", + "node.access_requested": "Zugriff angefragt", + "node.added_to_contacts": "Zu Kontakten hinzugefügt", + "node.nmesh_node": "NMesh-Knoten", + "node.node": "Knoten", + "node.node_actions": "Knotenaktionen", + "node.node_forgotten": "Knoten vergessen", + "node.open_in_fleet": "In Fleet öffnen", + "node.request_access": "Zugriff anfragen", + "node.request_sent_someone_there_has_to": "Anfrage gesendet — dort muss jemand sie annehmen", + "node.s_of_at_most": "{seconds} s von höchstens {speed_seconds}", + "node.speed_test": "Geschwindigkeitstest", + "node.state": "Status", + "node.this_page_reads_the_console_of_this": "Diese Seite liest die Konsole dieses Knotens und braucht daher das Konsolenpasswort.", + "node.tried": "Versucht", + "pkg.downloaded": "{path} heruntergeladen.", + "pkg.fetching_and_verifying": "Rufe ab und prüfe…", + "pkg.fetching_the_package": "Rufe das Paket ab…", + "pkg.installed": "{name} {version} installiert", + "pkg.nmesh_package": "NMesh-Paket", + "pkg.no_longer_watching": "{name} wird nicht mehr beobachtet", + "pkg.not_stated_here": "nicht hier angegeben", + "pkg.open_on_its_own": "Einzeln öffnen", + "pkg.package": "Paket", + "pkg.pin_the_signing_key": "Signaturschlüssel anheften", + "pkg.pinned": "{signer_id} angeheftet", + "pkg.signing_key": "Signaturschlüssel", + "pkg.signing_keys_that_must_agree": "Signaturschlüssel, die übereinstimmen müssen", + "pkg.that_package_is_empty": "Dieses Paket ist leer.", + "pkg.watching": "{name} wird beobachtet", + "pkg.what_it_says_about_itself": "Was es über sich selbst sagt", "state.connected": "Verbunden", "state.disconnected": "Getrennt", "state.offline": "Offline", - "state.online": "Online" + "state.online": "Online", + "term.back_to_the_bottom": "zurück nach unten", + "term.back_to_the_fleet": "Zurück zu Fleet", + "term.fetching": "{name} wird abgerufen…", + "term.files": "Dateien", + "term.folder_name": "Ordnername", + "term.folder_name_2": "Ordnername", + "term.idle": "inaktiv", + "term.keyboard": "Tastatur", + "term.link": "Verbindung", + "term.new_folder": "Neuer Ordner", + "term.nmesh_terminal": "NMesh-Terminal", + "term.no_node_has_granted_a_shell": "Kein Knoten hat eine Shell erteilt", + "term.nothing_to_copy": "Nichts zu kopieren", + "term.open": "Öffnen", + "term.paste": "Einfügen", + "term.paste_into_the_terminal": "In das Terminal einfügen", + "term.pick_a_node_first": "Zuerst einen Knoten wählen.", + "term.reading": "Lese…", + "term.remote_shell": "Remote-Shell", + "term.saved": "{name} gespeichert ({size}).", + "term.sending": "{name} wird gesendet…", + "term.terminal": "Terminal", + "term.terminal_keys": "Terminaltasten", + "term.text": "×", + "term.text_to_send": "Zu sendender Text", + "term.that_file_could_not_be_fetched": "Diese Datei konnte nicht abgerufen werden.", + "term.that_node_could_not_be_reached": "Dieser Knoten konnte nicht erreicht werden.", + "term.that_upload_could_not_be_sent": "Dieser Upload konnte nicht gesendet werden.", + "term.the_terminal_uses_the_console": "Das Terminal verwendet das Konsolenpasswort dieses Knotens.", + "term.this_browser_did_not_hand_over_the": "Dieser Browser hat die Zwischenablage nicht herausgegeben, daher hier einfügen und senden. Nichts wird gespeichert.", + "term.up": "Hoch", + "term.upload": "Hochladen", + "ui.back_to_this_node": "Zurück zu diesem Knoten", + "ui.copied_to_clipboard": "In die Zwischenablage kopiert", + "ui.could_not_copy_select_and_copy_by": "Kopieren nicht möglich — von Hand markieren und kopieren", + "ui.dismiss": "Ausblenden", + "ui.is_no_longer_reachable_back_on_this": "{name} ist nicht mehr erreichbar — wieder auf diesem Knoten", + "ui.not_answering": "antwortet nicht", + "ui.nothing_matches_that": "Dazu gibt es keine Treffer.", + "ui.switch_to_the_dark_theme": "Zum dunklen Design wechseln", + "ui.switch_to_the_light_theme": "Zum hellen Design wechseln", + "ui.this_node_was_updated_reloading": "Dieser Knoten wurde aktualisiert — wird neu geladen" } diff --git a/src/locales/en.json b/src/locales/en.json index a731524..aa0139f 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -18,18 +18,822 @@ "common.send": "Send", "common.unknown": "Unknown", "config.saved": "Configuration saved", + "console.100_rows": "100 rows", + "console.10_minutes": "10 minutes", + "console.10_rows": "10 rows", + "console.1_create_request": "1 · Create request", + "console.1_minute": "1 minute", + "console.20_rows": "20 rows", + "console.2_make_invite": "2 · Make invite", + "console.3_paste_their_reply_block": "3 · Paste their reply block", + "console.40_character_content_id": "40-character content id", + "console.50_rows": "50 rows", + "console.6_hours_maximum": "6 hours (maximum)", + "console.a_few_lines_this_is_all_anybody_sees": "a few lines — this is all anybody sees before they fetch it", + "console.a_key_made_before_this_node_had": "A key made before this node had somewhere to keep them is a file nothing can name — and naming it by id is what lets a release be signed with it, or offered to somebody. Give the path and the passphrase above.", + "console.a_line_is_an_authenticated_direct": "A line is an authenticated direct link: amber while it loses probes, red and dashed once it is failing, doubled when MLO bundles it, dotted beside it while MLO looks for a second link. A faint dashed line is a session routed through a first hop — anything deeper is opaque to this node by design.", + "console.a_membership_is_issued_for_a_year": "A membership is issued for a year and renewed automatically a month before it runs out, from the node that admitted this one. It is the one trust failure a node can see coming: once the chain expires nothing will authenticate it, and the only way back in is a fresh invitation.", + "console.a_name_and_at_least_one_file_are": "A name and at least one file are required.", + "console.a_name_and_files_are_required": "A name and files are required.", + "console.a_name_you_choose_beside_the_id_you": "A name you choose, beside the id you cannot", + "console.a_node_drops_anything_it_cannot": "A node drops anything it cannot verify, which is the point — but a mesh that will not connect looks the same from outside as one nobody is calling. These are the tests that failed, newest first. Nothing here is an error on its own: a stranger dialling a closed door lands here too.", + "console.a_node_id_is_required": "A node id is required.", + "console.a_passphrase_to_keep_it_under": "A passphrase to keep it under", + "console.a_password_is_needed": "A password is needed.", + "console.a_publisher_key_is_the_safer_choice": "A publisher key is the safer choice: it is unlocked for this one signature. The node identity is already unlocked and always will be.", + "console.accept_failed": "Accept failed", + "console.accept_someone": "Accept someone", + "console.accepted_for": "Accepted for", + "console.accusers": "Accusers", + "console.add_a_node": "Add a node", + "console.address_preference_updated": "Address preference updated", + "console.addressing": "Addressing", + "console.advanced": "Advanced", + "console.after_a_restart": "After a restart", + "console.agreeing": "Agreeing", + "console.alice": "alice", + "console.all": "All", + "console.already_have_a_key_file": "Already have a key file?", + "console.also_ask_the_network_for_this_exact": "Also ask the network for this exact name", + "console.always_on_no": "Always on: no", + "console.always_on_yes": "Always on: yes", + "console.an_address_and_an_invite_code_are": "An address and an invite code are required.", + "console.an_app_needs": "An app needs", + "console.anchors_and_taking_a_membership_back": "Anchors, and taking a membership back", + "console.anchors_this_node_trusts": "Anchors this node trusts", + "console.any_app": "any app", + "console.app": "App", + "console.app_name": "App name", + "console.app_pages": "App pages", + "console.app_views": "App views", + "console.applications": "Applications", + "console.applies_now": "applies now", + "console.applies_now_2": "Applies now", + "console.apply": "Apply", + "console.apply_now_at_restart": "{live} apply now · {live2} at restart", + "console.apply_size": "Apply size", + "console.applying": "Applying…", + "console.apps": "Apps", + "console.apps_signed_by_it": "apps signed by it", + "console.ask_the_network": "Ask the network", + "console.ask_the_network_not_just_what_this": "Ask the network, not just what this node already holds", + "console.asked": "asked", + "console.asking_github": "Asking GitHub…", + "console.authenticated_and_open_a_node": "Authenticated and open. A node holding several links unfolds onto them", + "console.auto_refresh": "Auto-refresh", + "console.automatic": "Automatic", + "console.balance": "Balance", + "console.being_in_the_network_is_not_being": "Being in the network is not being trusted. Each application sets its own idea of too much — only chat knows what too many messages is — and reports the sender; this node decides what the reports add up to. A node past the first threshold stops being served, silently: it is told nothing, so it learns as late as possible. Complaints fade on their own, so a node that misbehaved once and then behaved comes back without anyone doing anything.", + "console.beyond_this_node": "Beyond this node", + "console.beyond_this_striping_is_not_worth_it": "Beyond this, striping is not worth it to this node.", + "console.both_the_current_and_the_new": "Both the current and the new password are needed.", + "console.built_in_applications_on_this_node": "Built-in applications on this node, and how to find one on the mesh. There is no catalogue to browse: you ask for a name and signed records come back.", + "console.bytes": "Bytes", + "console.certificate_unavailable": "Certificate unavailable", + "console.change_password": "Change password", + "console.changing": "Changing…", + "console.check_for_updates": "Check for updates", + "console.choose_a_passphrase_first": "Choose a passphrase first", + "console.choose_a_passphrase_to_keep_it_under": "Choose a passphrase to keep it under", + "console.choosing_between_a_node_s_addresses": "Choosing between a node’s addresses", + "console.clear": "Clear", + "console.clear_all": "Clear all", + "console.clear_view": "Clear view", + "console.coming_soon_the_node_moves_along_the": "Coming soon: the node moves along the bar by itself, with what it is doing — on battery or on mains, busy or idle. You give it a tendency, and it keeps within it.", + "console.command_palette": "Command palette", + "console.configuration": "Configuration", + "console.configuration_file": "Configuration file", + "console.confirm": "Confirm", + "console.confirm_reachability": "Confirm reachability", + "console.connect": "Connect", + "console.connect_failed": "Connect failed", + "console.connect_two_nodes_by_hand": "Connect two nodes by hand", + "console.connected_apps": "Connected apps", + "console.connected_nodes_click_to_open_the": "Connected nodes — click to open the full map", + "console.connecting": "Connecting…", + "console.connecting_over_the_mesh": "Connecting over the mesh…", + "console.connector_token": "Connector token", + "console.console": "Console", + "console.console_is_not_reachable": "Console is not reachable", + "console.console_password": "Console password", + "console.console_password_changed": "Console password changed", + "console.console_sections": "Console sections", + "console.contains": "Contains", + "console.content_addressed_transfer": "Content-addressed transfer", + "console.content_id": "Content id", + "console.content_published": "Content published.", + "console.control_action_failed": "Control action failed", + "console.could_not_change_the_password": "Could not change the password", + "console.could_not_check_for_updates": "Could not check for updates.", + "console.could_not_create_a_request": "Could not create a request", + "console.could_not_create_an_invitation": "Could not create an invitation", + "console.could_not_read_the_configuration": "Could not read the configuration.", + "console.could_not_read_the_keys_held_here": "Could not read the keys held here.", + "console.could_not_read_what_this_node_can": "Could not read what this node can update to.", + "console.could_not_save_that": "Could not save that", + "console.could_not_save_the_balance": "Could not save the balance", + "console.counts_towards_a_quorum": "Counts towards a quorum", + "console.create_invitation": "Create invitation", + "console.create_one": "Create one", + "console.creating": "Creating…", + "console.current_password": "Current password", + "console.dark": "Dark", + "console.decide_by_screen_size": "Decide by screen size", + "console.diagnostics": "Diagnostics", + "console.does": "Does", + "console.does_not_apply": "does not apply", + "console.done": "Done", + "console.download": "Download", + "console.downloading_and_installing": "Downloading and installing {update_offer}…", + "console.drag_to_move_pinch_or_scroll_to_zoom": "Drag to move · pinch or scroll to zoom", + "console.drop_share_that_benches_a_link": "Drop share that benches a link", + "console.drop_what_was_reported": "Drop what was reported", + "console.dropped_whatever_is_still_true_will": "Dropped — whatever is still true will be reported again", + "console.dynamic_addressing_off": "Dynamic addressing: off", + "console.dynamic_addressing_on": "Dynamic addressing: on", + "console.each_key_and_what_its_signature_is": "Each key, and what its signature is accepted for", + "console.endpoint": "Endpoint", + "console.energy_and_performance": "Energy and performance", + "console.energy_bar": "energy bar", + "console.enter_a_content_id": "Enter a content id.", + "console.enter_a_listener_uri": "Enter a listener URI", + "console.enter_a_valid_udp_port": "Enter a valid UDP port", + "console.errors_only": "errors only", + "console.every_background_job_this_node_keeps": "Every background job this node keeps, and what wakes it", + "console.every_number_and_every_setting": "Every number and every setting, rather than the decisions they add up to. Only changes what this browser shows — the node behaves the same either way.", + "console.every_option_this_node_reads_from": "Every option this node reads from its file", + "console.everything": "Everything", + "console.everything_that_changes_how_this": "Everything that changes how this node runs. Kept apart from live status so nothing here is a click away from a graph you were only reading.", + "console.expand": "Expand", + "console.expert_mode": "Expert mode", + "console.expert_mode_shows_every_setting_in": "Expert mode shows every setting in the node’s configuration file, including the ones this bar is made of.", + "console.failed": "{action} failed", + "console.fastest_ever": "Fastest, ever", + "console.fastest_measured": "Fastest measured", + "console.fastest_when_idle": "Fastest when idle", + "console.fetch": "Fetch", + "console.fetch_failed": "Fetch failed", + "console.fetched": "{name} {version} fetched.", + "console.fetched_from_the_mesh_and_unpacked": "Fetched from the mesh and unpacked on this node", + "console.fetching_content": "Fetching content…", + "console.find_a_node_by_name": "Find a node by name", + "console.find_a_package_by_name_or_by_the": "Find a package by name, or by the node that publishes it", + "console.find_an_app": "Find an app", + "console.fit_the_whole_mesh": "Fit the whole mesh", + "console.follow_the_system": "Follow the system", + "console.following_a_link_into_chat_or_fleet": "Following a link into Chat or Fleet — messaging a node from its details, say. A window keeps what you were doing in view; a phone gets a tab either way.", + "console.for_nodes_that_cannot_see_each_other": "For nodes that cannot see each other yet: three blocks of text, moved by whatever channel you already trust.", + "console.forget_this_app": "Forget this app", + "console.from": "From", + "console.from_the_mesh": "From the mesh", + "console.from_the_project": "From the project", + "console.further_apart_than_this_and_they_are": "Further apart than this and they are not bundled: striping across a fast link and a slow one delivers half the packets late.", + "console.generate_invite_code": "Generate invite code", + "console.getting_an_update": "Getting an update", + "console.give_the_path_to_the_key_file": "Give the path to the key file", + "console.giving_one": "Giving one", + "console.handing_one_to_somebody_else_and": "Handing one to somebody else, and taking one they offer", + "console.happening_now": "Happening now", + "console.health_throughput_and_the_links_this": "Health, throughput, and the links this node has authenticated.", + "console.holding": "holding", + "console.host_port": "host:port", + "console.how_much_this_node_may_spend_to_stay": "How much this node may spend to stay quick", + "console.how_often_it_goes_checking_and": "How often it goes checking, and whether it bothers when idle", + "console.how_often_the_changing_numbers_are": "How often the changing numbers are re-read, in seconds (0 turns it off)", + "console.how_the_balance_is_chosen": "How the balance is chosen", + "console.how_this_node_trades_energy_for": "How this node trades energy for speed is one setting, under Settings → Configuration. Expert mode shows the numbers it is made of here.", + "console.id": "Id", + "console.identity": "Identity", + "console.idle": "Idle", + "console.in_a_new_tab": "In a new tab", + "console.in_a_separate_window": "In a separate window", + "console.inbound_and_outbound_bytes_per": "Inbound and outbound bytes per second", + "console.info_and_above": "info and above", + "console.install": "Install", + "console.install_2": "Install {latest}", + "console.install_automatically": "Install automatically", + "console.installed": "Installed", + "console.internal_api": "Internal API", + "console.into_which_node_s_network": "Into which node's network", + "console.invitation": "Invitation", + "console.invite_a_node": "Invite a node", + "console.invite_code": "Invite code", + "console.invite_codes_and_certificates": "Invite codes and certificates", + "console.invite_generation_failed": "Invite generation failed", + "console.is": "is", + "console.is_available_but_this_install_cannot": "{latest} is available{where}, but this install cannot update itself: {blocked}", + "console.is_available_you_run": "{latest} is available{where} (you run {current}).", + "console.it_listens_beyond_this_machine": "It listens beyond this machine. Anybody who can reach that address and holds the token can do whatever the MCP app was granted.", + "console.it_never_leaves_this_machine_lose_it": "It never leaves this machine. Lose it and the key is gone — there is no recovery, which is what makes a copied file useless.", + "console.its_passphrase": "Its passphrase", + "console.job": "Job", + "console.join": "Join", + "console.join_or_invite": "Join or invite", + "console.join_someone": "Join someone", + "console.joined_node": "Joined {node}.", + "console.joined_the_network": "Joined the network", + "console.joined_through_a_relay": "Joined through a relay.", + "console.joining_the_handshake_is_post": "Joining — the handshake is post-quantum, give it a moment…", + "console.jump_to_a_section_or_run_an_action": "Jump to a section, or run an action…", + "console.key": "Key", + "console.key_compromised": "Key compromised", + "console.key_to_share": "Key to share", + "console.keys_are_pinned_from_the_package": "Keys are pinned from the package they signed, one press and a confirmation: the key arrives inside the record and is checked against the signature it made, so there is nothing to copy across from anywhere and nothing to get wrong.", + "console.keys_this_node_can_sign_a_release": "Keys this node can sign a release with", + "console.last": "Last", + "console.left_the_network": "Left the network", + "console.level": "Level", + "console.light": "Light", + "console.link": "Link", + "console.links": "Links", + "console.links_open_in_a_new_tab": "Links will open in a new tab", + "console.links_open_in_a_separate_window": "Links will open in a separate window", + "console.links_open_to_suit_the_screen": "Links will open to suit the screen", + "console.links_that_reached_this_node_and": "Links that reached this node and were turned away, and why", + "console.listen_elsewhere": "Listen elsewhere", + "console.listener_added": "Listener added", + "console.listener_removed": "Listener removed", + "console.listener_uri": "Listener URI", + "console.listening_on": "Listening on", + "console.live": "Live", + "console.load_older": "Load older", + "console.local_management_plane": "Local management plane", + "console.log_dropped": "{older} pushed out to make room", + "console.log_held": "Kept for {who}. {lines} held, {used} of {size} MB", + "console.log_ratio": "({ratio}× compressed)", + "console.log_stop_not_yours": "Stop is not yours to press here: it goes when {who} does.", + "console.looking_for_a_relay_that_can_reach": "Looking for a relay that can reach them — watch Network → Peers.", + "console.loss": "Loss", + "console.made_here": "made here", + "console.make_a_key": "Make a key", + "console.manage": "Manage {name}", + "console.managing": "Managing {name}", + "console.manual": "Manual", + "console.mcp_server": "MCP server", + "console.mcp_tool": "MCP tool", + "console.measures": "measures", + "console.medium": "medium", + "console.membership": "Membership", + "console.mesh": "Mesh", + "console.mesh_map": "Mesh map", + "console.mesh_map_draggable_and_zoomable": "Mesh map, draggable and zoomable", + "console.message": "Message", + "console.mlo_ready": "MLO ready", + "console.more": "More", + "console.multi_link_operation": "Multi-link operation", + "console.multi_link_operation_updated": "Multi-link operation updated", + "console.name_the_node_that_receives_it": "Name the node that receives it", + "console.network": "Network", + "console.network_views": "Network views", + "console.neutral": "Neutral", + "console.new_password": "New password", + "console.new_token": "New token", + "console.nm": "NM", + "console.nmesh": "nmesh", + "console.nmesh_console": "NMesh Console", + "console.nmesh_packet_bytes_excluding": "NMesh packet bytes, excluding transport overhead", + "console.no": "no", + "console.no_camera_available_it_needs_your": "No camera available. It needs your permission, and a secure page (HTTPS or localhost).", + "console.no_key_pinned_this_node_installs": "No key pinned — this node installs nothing from the mesh on its own. Find a package above and pin the key that signed it.", + "console.no_links_yet": "no links yet", + "console.no_node_is_reached_over_two_mlo": "No node is reached over two MLO-ready links right now.", + "console.no_other_address_on_an_mlo_ready": "— no other address on an MLO-ready medium", + "console.no_payload_is_ever_recorded": "No payload is ever recorded", + "console.no_publisher_key_here_this_node": "No publisher key here — this node signs releases with its own identity.", + "console.no_publisher_key_on_this_node": "no publisher key on this node", + "console.node_being_managed": "Node being managed", + "console.node_controls": "Node controls", + "console.node_peers_app": "node, peers, app:…", + "console.nodes_linked_directly_and_nodes": "Nodes linked directly, and nodes reached through them", + "console.nodes_under_suspicion": "Nodes under suspicion", + "console.none_yet_this_node_trusts_only": "None yet — this node trusts only itself.", + "console.not_recording_nothing_is_kept_until": "Not recording. Nothing is kept until somebody starts it — here, by starting a trace, or by following it from another console.", + "console.not_restarting": "Not restarting", + "console.nothing_held_against_that_node": "Nothing held against that node.", + "console.nothing_is_kept_until_it_is_started": "Nothing is kept until it is started, and what was kept is dropped when the last one keeping it stops: an operator here, a trace that is running, or a console following this log from elsewhere. It lives in memory only, compressed, and is bounded by the size below.", + "console.nothing_on_the_mesh_changes_it_can": "Nothing on the mesh changes — it can be found and installed again.", + "console.nothing_registered_the_node_is_not": "Nothing registered — the node is not started.", + "console.nothing_to_download_yet": "Nothing to download yet", + "console.noticed_not_judged": "Noticed, not judged", + "console.off": "Off", + "console.off_2": "off", + "console.offer_refused": "Offer refused", + "console.offer_this_key": "Offer this key", + "console.oldest_at_the_top_follows_the_end_as": "Oldest at the top, follows the end as lines are written", + "console.one_block_per_medium_what_is_bound": "One block per medium: what is bound, what it carries, what it takes", + "console.one_invitation_both_ways_round": "One invitation, both ways round", + "console.one_link_short_of_a_bundle": "One link short of a bundle:", + "console.one_short_string_where_to_connect_a": "One short string: where to connect, a way through somebody else when that fails, and a single-use code", + "console.open_console": "Open console", + "console.opening_another_app": "Opening another app", + "console.other_sessions_signed_out": { + "one": "{count} other session signed out.", + "other": "{count} other sessions signed out." + }, + "console.overview": "Overview", + "console.package_name": "Package name", + "console.packages_this_node_checks_on_and": "Packages this node checks on, and what it may install alone", + "console.packets": "Packets", + "console.packets_spread_over_two_links_arrive": "Packets spread over two links arrive out of order by roughly twice the measured skew. Apps have to expect that, with or without this: a mesh routes, and a routed reply was never obliged to arrive after the one before it.", + "console.passes": "Passes", + "console.passphrase": "Passphrase", + "console.password_changed": "Password changed.", + "console.past_this_the_link_stops_being": "Past this the link stops being believable. Kept under the medium’s own timeout whatever is agreed.", + "console.paste_a_certificate": "Paste a certificate.", + "console.paste_a_request_first": "Paste a request first.", + "console.paste_a_root_certificate_to_trust": "Paste a root certificate to trust", + "console.paste_or_scan_an_invitation": "Paste or scan an invitation…", + "console.paste_or_scan_an_invitation_first": "Paste or scan an invitation first.", + "console.paste_the_reply_first": "Paste the reply first.", + "console.paste_their_request_block": "Paste their request block", + "console.path_on_this_machine": "Path on this machine", + "console.path_to_publisher_key": "/path/to/publisher.key", + "console.pause": "Pause", + "console.peers": "Peers", + "console.percent_of_its_last_50_probes_it": "Percent of its last 50 probes. It rejoins at half this, so a link at the threshold does not flap in and out on one probe.", + "console.performance": "Performance", + "console.permissions": "Permissions", + "console.permissions_2": "{name} — permissions", + "console.ping_active_nodes": "Ping active nodes", + "console.ping_failed": "Ping failed", + "console.point_the_camera_at_the_ticket_s_qr": "Point the camera at the ticket's QR code.", + "console.port": "Port", + "console.preferences_about_this_screen_kept": "Preferences about this screen, kept here and nowhere else", + "console.preferred_medium": "Preferred medium", + "console.probe_failed": "Probe failed", + "console.problems_in_the_file": "Problems in the file: {problems}", + "console.protocol_trace": "Protocol trace", + "console.publish": "Publish", + "console.publish_a_signed_release": "Publish a signed release", + "console.publish_content": "Publish content", + "console.publish_this_node_s_code": "Publish this node's code", + "console.published": "Published {name} {version}", + "console.published_and_filed_under_its_name": "Published and filed under its name — anybody can now find it by typing it.", + "console.publisher_keys_held_here": "Publisher keys held here", + "console.publishing_did_not_finish_the_node": "Publishing did not finish — the node may still be working. Check Settings → Updates again in a minute.", + "console.publishing_under_a_key": "Publishing under a key", + "console.rate": "Rate", + "console.raw_dht_package_exchange_not_the": "Raw DHT package exchange — not the signed app store", + "console.re_check_network": "Re-check network", + "console.reachability": "Reachability", + "console.reading_files": "Reading files…", + "console.reading_hashing_and_signing_this_can": "Reading, hashing and signing — this can take a moment on a busy mesh…", + "console.reading_node_status": "Reading node status…", + "console.reason": "Reason", + "console.receiving_node": "Receiving node", + "console.recording": "Recording", + "console.refresh_now": "Refresh now", + "console.refused": "refused", + "console.refused_handshakes": "Refused handshakes", + "console.release_notes": "Release notes", + "console.reload_from_file": "Reload from file", + "console.remove_the_name": "Remove the name", + "console.reordering": "Reordering", + "console.repeat_new_password": "Repeat new password", + "console.restart_this_node": "Restart this node", + "console.restarting": "Restarting {who}", + "console.revoke": "Revoke", + "console.ring_size_in_megabytes": "Ring size in megabytes", + "console.round_trip": "Round trip", + "console.rows_per_page": "Rows per page", + "console.rtt": "RTT", + "console.said_by": "said by {from}", + "console.same": "same", + "console.save_configuration": "Save configuration", + "console.save_energy": "Save energy", + "console.save_failed": "Save failed", + "console.save_name": "Save name", + "console.saves_energy": "Saves energy", + "console.saving": "Saving…", + "console.says_which_version_it_runs": "Says which version it runs", + "console.scan_with_camera": "Scan with camera", + "console.score": "Score", + "console.search_active_nodes": "Search active nodes", + "console.search_commands": "Search & commands", + "console.search_endpoints": "Search endpoints", + "console.search_endpoints_2": "Search endpoints…", + "console.search_installed": "Search installed…", + "console.search_installed_apps": "Search installed apps", + "console.search_known_nodes": "Search known nodes", + "console.search_name_id_address_transport": "Search name, id, address, transport…", + "console.search_name_id_or_address": "Search name, id or address…", + "console.seconds": "Seconds", + "console.seconds_to_record": "Seconds to record", + "console.security": "Security", + "console.seen": "Seen", + "console.send_this_block_to_the_other_side": "Send this block to the other side.", + "console.send_this_invite_block_back": "Send this invite block back.", + "console.send_this_invite_block_back_2": "Send this invite block back", + "console.send_this_request_block": "Send this request block", + "console.sent_probe_s": "Sent {sent} probe(s)", + "console.settings": "Settings", + "console.settings_applied": "{scheme} settings applied", + "console.settings_apply_to_the_running_node": "Settings apply to the running node immediately unless one says otherwise, then go to the configuration file so they survive a restart. A value the transport refuses never reaches the file.", + "console.settings_sections": "Settings sections", + "console.sharing_a_key": "Sharing a key", + "console.show_our_root_certificate": "Show our root certificate", + "console.show_the_client_configuration": "Show the client configuration", + "console.show_this_node_s_details": "Show this node's details", + "console.sign_out": "Sign out", + "console.sign_what_is_installed_here_and": "Sign what is installed here and offer it to the mesh", + "console.sign_with": "Sign with", + "console.signed_by": "Signed by", + "console.signing_keys_you_accept": "Signing keys you accept", + "console.size_mb": "Size, MB", + "console.sketchpad": "sketchpad", + "console.skew_two_links_may_differ_by": "Skew two links may differ by", + "console.skip_to_content": "Skip to content", + "console.slowest_still_fast": "Slowest still “fast”", + "console.slowest_when_idle": "Slowest when idle", + "console.software": "Software", + "console.soon": "Soon", + "console.source": "Source", + "console.standing": "Standing", + "console.start_recording": "Start recording", + "console.stop": "Stop", + "console.stop_camera": "Stop camera", + "console.superseded": "Superseded", + "console.sweep": "Sweep", + "console.switch_theme": "Switch theme", + "console.take_back_a_membership": "Take back a membership", + "console.take_it_in": "Take it in", + "console.team": "team", + "console.tendency": "Tendency", + "console.text_or_a_field_value": "text or a field value", + "console.that_could_not_be_dropped": "That could not be dropped", + "console.that_step_could_not_be_applied": "That step could not be applied", + "console.the_certificate_chain_this_node": "The certificate chain this node presents to prove it belongs", + "console.the_console_stopped_answering_while": "The console stopped answering while joining. Check Network → Peers before trying again — the join may have gone through.", + "console.the_fastest_this_node_will_be_probed": "The fastest this node will be probed, striping or not.", + "console.the_last_things_this_node_did_or_was": "The last things this node did, or was told", + "console.the_mcp_app_is_off_enable_it_on_the": "The MCP app is off. Enable it on the Installed tab, then grant it what it may read and do — its tools are generated from that.", + "console.the_node_did_not_answer": "The node did not answer.", + "console.the_only_credential_between_the": "The only credential between the network and this node's controls", + "console.the_other_direction_nothing_here": "The other direction. Nothing here adds a node — these are the two ways trust is withdrawn, and they are not the same act.", + "console.the_password_is_checked_on_this": "The password is checked on this machine and never leaves it. It protects every management action, including the ones that can restart or update the node.", + "console.the_primitives": "The primitives", + "console.the_routing_table_reachable_not": "The routing table — reachable, not necessarily connected", + "console.the_secret_is_sealed_to_a_key_the": "The secret is sealed to a key the other side generates when they accept, so it cannot travel before somebody agrees to receive it, and only they can open it. They choose their own passphrase — never yours.", + "console.the_trace_could_not_be_read": "The trace could not be read", + "console.the_two_new_passwords_do_not_match": "The two new passwords do not match.", + "console.theme": "Theme", + "console.theme_updated": "Theme updated", + "console.there_is_no_key_to_share": "There is no key to share", + "console.these_are_not_settings_of_the_node": "These are not settings of the node: they live in this browser, so a different machine signed into the same console keeps its own. Nothing here is sent anywhere.", + "console.these_settings_were_tuned_by_hand": "These settings were tuned by hand and match no step. Moving the bar replaces them with the step you choose.", + "console.they": "they", + "console.things_this_node_saw_and_will_not": "Things this node saw and will not decide about, because the honest explanation is usually you: a peer whose traffic suddenly looks like a different machine (you upgraded it), or a member of the network that admitted far more nodes at once than it ever has (you rolled some out). It cannot tell either apart from a stolen key or a minted crowd, so it says so instead of acting. Nothing is held against anyone here: confirming just makes what they do now the new normal.", + "console.this_app_connects_to_with_the_token": "This app connects to {host}:{port} with the token below. It proves the app is this app — keep it out of anything shared.", + "console.this_browser": "This browser", + "console.this_browser_cannot_scan_qr_codes": "This browser cannot scan QR codes. Paste the ticket instead.", + "console.this_field_takes_any_of_them_an": "This field takes any of them — an invitation, or a block pasted from an older node. There is nothing to choose between.", + "console.this_medium_declares_no_setting": "This medium declares no setting.", + "console.this_node": "This node", + "console.this_node_could_not_build": "This node could not build: {names}", + "console.this_node_has_no_configuration_file": "This node has no configuration file: a step applies now and is forgotten when it restarts.", + "console.this_node_s": "this node's", + "console.this_node_s_identity_key": "This node's identity key", + "console.this_project_s_published_releases_on": "This project's published releases, on GitHub", + "console.throughput": "Throughput", + "console.ticket_scanned_check_it_then_press": "Ticket scanned — check it, then press Join.", + "console.times": "Times", + "console.tools_right_now": "Tools right now", + "console.topology": "Topology", + "console.trace_command_failed": "Trace command failed", + "console.transport": "Transport", + "console.transports": "Transports", + "console.trust_already_given": "Trust already given", + "console.trust_certificate": "Trust certificate", + "console.two_channels_can_replace_that_and": "Two channels can replace that, and they are independent", + "console.two_links_to_one_node_carrying_its": "Two links to one node, carrying its traffic together", + "console.type_a_name_the_mesh_answers_nothing": "Type a name — the mesh answers, nothing is listed", + "console.type_its_passphrase_in_the_field": "Type its passphrase in the field above", + "console.type_the_key_s_passphrase": "Type the key's passphrase", + "console.udp_port": "UDP port", + "console.unavailable": "unavailable", + "console.unlock_this_node": "Unlock this node", + "console.unnamed": "unnamed", + "console.unspecified": "Unspecified", + "console.up_to_date_running_latest_is": "Up to date — running {current}, latest is {latest}{where}.", + "console.update_failed": "Update failed.", + "console.updates": "Updates", + "console.use_one": "Use one", + "console.valid_for": "Valid for", + "console.valid_for_single_use": "Valid for {duration}. Single use — treat it like a password.", + "console.version": "Version", + "console.via": "via {via}", + "console.wakes_on": "Wakes on", + "console.warnings_and_errors": "warnings and errors", + "console.watch_for_new_versions": "Watch for new versions", + "console.what_changed": "what changed", + "console.what_is_kept_is_dropped_recording": "What is kept is dropped; recording goes on.", + "console.what_is_running": "What is running", + "console.what_it_does": "What it does", + "console.what_it_is": "What it is", + "console.what_the_applications_and_the_core": "What the applications and the core have reported", + "console.what_the_lines_mean": "What the lines mean", + "console.what_this_key_is_for": "what this key is for", + "console.what_this_node_actually_sends_and": "What this node actually sends and receives, by message type", + "console.what_this_node_is_called": "What this node is called", + "console.what_this_node_noticed_about_itself": "What this node noticed about itself and about the machines it talks to. One line per problem, with how often", + "console.what_this_node_says_about_itself": "What this node says about itself — kept only while somebody asks", + "console.what_this_node_tells_other_nodes": "What this node tells other nodes about itself", + "console.what_you_are_watching": "What you are watching", + "console.when_neither_node_can_reach_the": "When neither node can reach the other", + "console.when_this_node_looks": "When this node looks", + "console.where_it_came_from": "Where it came from", + "console.whether_other_nodes_can_open_a_link": "Whether other nodes can open a link to this one", + "console.which_endpoints": "Which endpoints", + "console.while_nobody_is_here": "While nobody is here", + "console.who_receives_it": "who receives it", + "console.who_this_node_is_connected_to_how_it": "Who this node is connected to, how it can be reached, and how to bring another node in.", + "console.whole_or_partial_best_match_first": "Whole or partial — best match first", + "console.why": "Why", + "console.with_nothing_happening_no_more_often": "With nothing happening, no more often than this.", + "console.yes": "yes", + "console.yours_chosen_here_never_theirs": "Yours, chosen here. Never theirs.", + "console.yours_to_unlock_the_key_here_it_is": "Yours, to unlock the key here. It is not sent.", + "console.zoom": "Zoom", + "console.zoom_in": "Zoom in", + "console.zoom_out": "Zoom out", + "count.container": { + "one": "{count} container", + "other": "{count} containers" + }, + "count.environment": { + "one": "{count} environment", + "other": "{count} environments" + }, + "count.file": { + "one": "{count} file", + "other": "{count} files" + }, + "count.hour": { + "one": "{count} hour", + "other": "{count} hours" + }, + "count.line": { + "one": "{count} line", + "other": "{count} lines" + }, "count.link": { "one": "{count} link", "other": "{count} links" }, + "count.listener": { + "one": "{count} listener", + "other": "{count} listeners" + }, + "count.member": { + "one": "{count} member", + "other": "{count} members" + }, "count.message": { "one": "{count} message", "other": "{count} messages" }, + "count.minute": { + "one": "{count} minute", + "other": "{count} minutes" + }, "count.node": { "one": "{count} node", "other": "{count} nodes" }, + "count.older_line": { + "one": "{count} older line", + "other": "{count} older lines" + }, + "count.permission": { + "one": "{count} permission", + "other": "{count} permissions" + }, + "count.stack": { + "one": "{count} stack", + "other": "{count} stacks" + }, + "count.unread_message": { + "one": "{count} unread message", + "other": "{count} unread messages" + }, + "fleet.1_scan": "1 · Scan", + "fleet.2_install": "2 · Install", + "fleet.a_group_needs_a_name": "A group needs a name.", + "fleet.a_lowercase_name_and_a_compose_file": "A lowercase name and a compose file are needed.", + "fleet.a_node_id_is_40_hexadecimal": "A node id is 40 hexadecimal characters.", + "fleet.a_subnet_a_machine_or_nothing_to": "A subnet, a machine, or nothing to sweep every attached network.", + "fleet.a_system_install_needs_root_tick": "A system install needs root: tick sudo, name a sudo account, or install under the user.", + "fleet.accept": "Accept {id}?", + "fleet.access": "Access", + "fleet.access_granted": "Access granted", + "fleet.access_token": "Access token", + "fleet.activity": "Activity", + "fleet.address": "Address", + "fleet.address_as_that_machine_reaches_it": "Address, as that machine reaches it", + "fleet.address_here": "Address here", + "fleet.always": "always", + "fleet.always_follow": "Always follow", + "fleet.an_address_and_a_token_are_needed": "An address and a token are needed.", + "fleet.an_address_is_needed": "An address is needed.", + "fleet.an_image_is_required": "An image is required.", + "fleet.an_ssh_user_is_required": "An SSH user is required.", + "fleet.ask_for_at_least_one_capability": "Ask for at least one capability.", + "fleet.ask_this_machine_now": "Ask this machine now", + "fleet.asked_for_its_log": "Asked {node} for its log", + "fleet.asking": "Asking {who}…", + "fleet.auto_or_192_168_1_0_24_10_0_0_5_nas": "auto — or 192.168.1.0/24, 10.0.0.5, nas.lan:2222", + "fleet.auto_refresh_in_seconds_0_turns_it": "Auto-refresh, in seconds (0 turns it off)", + "fleet.back_to_console": "Back to console", + "fleet.capabilities_the_new_machines_grant": "Capabilities the new machines grant you", + "fleet.capabilities_to_ask_for": "Capabilities to ask for", + "fleet.choose_a_machine_first": "Choose a machine first", + "fleet.collected_logs_dropped": "Collected logs dropped", + "fleet.collection": "Collection", + "fleet.console_of": "Console of {id}", + "fleet.containers": "Containers", + "fleet.could_not_be_updated": "{name} could not be updated", + "fleet.create": "Create", + "fleet.created": "Created", + "fleet.credentials_are_held_in_memory_for": "Credentials are held in memory for the run only", + "fleet.debug_and_above": "debug and above", + "fleet.default_behaviour": "Default behaviour", + "fleet.delete_group": "Delete group", + "fleet.deploy": "Deploy", + "fleet.deploy_a_stack": "Deploy a stack", + "fleet.deployed_by": "Deployed by", + "fleet.deploying_watch_activity": "Deploying… watch Activity.", + "fleet.deployment_failed_to_start": "Deployment failed to start.", + "fleet.discover_deploy": "Discover & deploy", + "fleet.docker": "Docker", + "fleet.docker_2": "docker", + "fleet.docker_compose_yml": "docker-compose.yml", + "fleet.docker_views": "Docker views", + "fleet.done_succeeded": "Done: {good}/{length} succeeded.", + "fleet.driver": "Driver", + "fleet.each_container_whose_image_changed": "Each container whose image changed is recreated.", + "fleet.each_of_these_accepted_a_request": "Each of these accepted a request from this node, and granted exactly the capabilities shown. Nothing here was taken; all of it was given.", + "fleet.encrypted": "encrypted", + "fleet.enter": "Enter", + "fleet.environment": "Environment", + "fleet.every_machine": "Every machine", + "fleet.every_node_listed_here_can_act_on": "Every node listed here can act on this machine. A right is only ever added from here — a node can ask, but someone standing on this machine has to agree.", + "fleet.filter_containers": "Filter containers", + "fleet.filter_stacks": "Filter stacks", + "fleet.fleet": "Fleet", + "fleet.fleet_sections": "Fleet sections", + "fleet.fleet_uses_the_console_password_of": "Fleet uses the console password of this node.", + "fleet.forget": "Forget", + "fleet.forget_everything_collected": "Forget everything collected", + "fleet.full_screen": "Full screen", + "fleet.ghcr_io_owner_image_tag": "ghcr.io/owner/image:tag", + "fleet.give_a_password_a_key_or_both": "Give a password, a key, or both.", + "fleet.give_a_password_a_key_or_both_both": "Give a password, a key, or both — both are tried.", + "fleet.grant_access": "Grant access", + "fleet.group_deleted": "Group deleted", + "fleet.group_saved": "Group saved", + "fleet.groups_for": "Groups for {id}", + "fleet.groups_updated": "Groups updated", + "fleet.history": "History", + "fleet.host_container_one_per_line_add_udp": "host:container, one per line; add :udp for UDP", + "fleet.host_path_or_volume_name_container": "host path or volume name : container path, :ro for read-only", + "fleet.image": "Image", + "fleet.images": "Images", + "fleet.inbound": "Inbound", + "fleet.install_directory": "Install directory", + "fleet.install_options": "Install options", + "fleet.invite_somebody_to_s_mesh": "Invite somebody to {who}'s mesh", + "fleet.is_running": "{image} is running", + "fleet.its_password": "Its password", + "fleet.keep_them_updated_from_the": "Keep them updated from the publishers this node accepts", + "fleet.key_passphrase": "Key passphrase", + "fleet.key_removed": "Key removed", + "fleet.key_value_one_per_line": "KEY=value, one per line", + "fleet.label_optional": "Label (optional)", + "fleet.let_it_run_its_own_system_updates": "Let it run its own system updates (one fixed root command)", + "fleet.line": "Line", + "fleet.lines_collected_from_the_machines": "Lines collected from the machines this node manages — what happened on them while nobody was looking. Kept here, in memory, one bounded ring per machine.", + "fleet.log_collection_for": "Log collection for {node}: {value}", + "fleet.logs": "Logs", + "fleet.logs_2": "Logs · {id}", + "fleet.lowercase_letters_digits_and": "lowercase letters, digits, - and _", + "fleet.machine": "Machine", + "fleet.managed": "Managed", + "fleet.mark_all_read": "Mark all read", + "fleet.megabytes_kept_per_machine": "Megabytes kept per machine", + "fleet.name": "Name", + "fleet.networks": "Networks", + "fleet.never_ask_when_needed": "Never — ask when needed", + "fleet.new_group": "New group", + "fleet.newest_first_by_the_time_this_node": "Newest first, by the time this node received them.", + "fleet.nmesh_fleet": "NMesh Fleet", + "fleet.no_group_yet_name_one_below": "No group yet — name one below.", + "fleet.no_status_yet": "No status yet.", + "fleet.node": "Node {id}", + "fleet.node_id": "Node id", + "fleet.nodes": "Nodes", + "fleet.nodes_you_control": "Nodes you control", + "fleet.nothing_of_it_runs_on_this_machine": "Nothing of it runs on this machine.", + "fleet.nothing_waiting_jobs_and_access": "Nothing waiting. Jobs and access requests show up here.", + "fleet.notifications": "Notifications", + "fleet.on_failure": "on-failure", + "fleet.only_while_a_page_is_open_on_it": "Only while a page is open on it", + "fleet.open_shell": "Open shell", + "fleet.opt_nmesh": "/opt/nmesh", + "fleet.optional": "optional", + "fleet.or_a_new_group": "Or a new group", + "fleet.or_type_a_whole_line_here_and_press": "…or type a whole line here and press Enter", + "fleet.otherwise_an_account_that_can": "Otherwise, an account that can", + "fleet.outside_a_stack": "Outside a stack", + "fleet.password": "Password", + "fleet.portainer_connected_environments": { + "one": "Portainer connected — {count} environment visible", + "other": "Portainer connected — {count} environments visible" + }, + "fleet.portainer_did_not_answer": "Portainer did not answer", + "fleet.portainer_forgotten": "Portainer forgotten", + "fleet.ports": "Ports", + "fleet.pull": "Pull", + "fleet.pulled": "Pulled {image}", + "fleet.pulling": "Pulling {image}…", + "fleet.reachable_at": "Reachable at", + "fleet.read_its_certificate": "Read its certificate", + "fleet.recommended": "Recommended.", + "fleet.relationship_revoked": "Relationship revoked", + "fleet.reload": "Reload", + "fleet.request_access_to_a_node": "Request access to a node", + "fleet.request_denied": "Request denied", + "fleet.request_sent_it_is_theirs_to_accept": "Request sent — it is theirs to accept", + "fleet.restart_policy": "Restart policy", + "fleet.rights_on": "Rights on {id}", + "fleet.root": "root", + "fleet.run": "Run", + "fleet.run_a_container": "Run a container", + "fleet.running_on_the_remote_node": "Running on the remote node…", + "fleet.scan": "Scan", + "fleet.scan_failed": "Scan failed.", + "fleet.scan_from": "Scan from", + "fleet.scan_running_on_the_remote_node": "Scan running on the remote node…", + "fleet.scanning_this_takes_a_moment": "Scanning… this takes a moment.", + "fleet.send_a_whole_line": "Send a whole line", + "fleet.send_request": "Send request", + "fleet.service": "Service", + "fleet.service_name": "Service name", + "fleet.shell": "Shell", + "fleet.sign_in": "Sign in", + "fleet.since": "Since", + "fleet.size": "Size", + "fleet.srv_data_data": "/srv/data:/data", + "fleet.ssh_key": "SSH key", + "fleet.ssh_user": "SSH user", + "fleet.stack_deployed": "Stack {name} deployed", + "fleet.stack_failed": "Stack {name} failed", + "fleet.start_the_fleet_app_on_it_so_it_can": "Start the fleet app on it, so it can be managed and can deploy further", + "fleet.state_directory": "State directory", + "fleet.stays_live_for": "Stays live for", + "fleet.subnet": "Subnet", + "fleet.sudo_account": "sudo account", + "fleet.system": "System", + "fleet.targets": "Targets", + "fleet.that_could_not_be_changed": "That could not be changed", + "fleet.that_does_not_look_like_a_private": "That does not look like a private key.", + "fleet.that_file_is_too_large_for_a_key": "That file is too large for a key.", + "fleet.that_group_name_was_refused": "That group name was refused.", + "fleet.that_machine_could_not_be_asked": "That machine could not be asked", + "fleet.that_machine_did_not_answer": "That machine did not answer", + "fleet.that_machine_has_no_docker_compose": "That machine has no docker compose: install it there first.", + "fleet.that_request_was_refused": "That request was refused.", + "fleet.the_daemon_refuses_while_a_container": "The daemon refuses while a container uses it.", + "fleet.the_default_could_not_be_changed": "The default could not be changed", + "fleet.the_new_machines_pin_the_same": "The new machines pin the same release publishers as this node (and this node itself), and install their signed releases on their own. It is set here or nowhere: a headless box has nobody to paste a publisher key into a console, and would accept nothing from the mesh for ever.", + "fleet.the_size_could_not_be_changed": "The size could not be changed", + "fleet.the_stacks_and_containers_of_one": "The stacks and containers of one machine, found from what it runs — whether compose or Portainer deployed them — and brought up to date the way their owner would.", + "fleet.this_node_s_id": "This node's id", + "fleet.tz_europe_paris": "TZ=Europe/Paris", + "fleet.unless_stopped": "unless-stopped", + "fleet.until": "Until", + "fleet.update": "Update", + "fleet.update_all": "Update all", + "fleet.update_stacks": { + "one": "Update {count} stack", + "other": "Update {count} stacks" + }, + "fleet.update_started_on_nodes": { + "one": "Update started on {count} node", + "other": "Update started on {count} nodes" + }, + "fleet.update_started_progress_shows_on_the": "Update started — progress shows on the node's card", + "fleet.upload_a_key": "Upload a key…", + "fleet.user": "User", + "fleet.var_lib_nmesh": "/var/lib/nmesh", + "fleet.volumes": "Volumes", + "fleet.volumes_networks": "Volumes & networks", + "fleet.what_is_followed_and_how_much_of_it": "What is followed, and how much of it is kept.", + "fleet.what_the_machines_said": "What the machines said", + "fleet.what_this_node_asked_what_it_was": "What this node asked, what it was asked, and how each ended.", + "fleet.when": "When", + "fleet.where_nmesh_goes_on_each_machine": "Where NMesh goes on each machine", + "fleet.which_containers": "Which containers", + "fleet.who_controls_this_node": "Who controls this node", "language.auto": "Automatic (follow the browser)", "language.help": "Language of the console and of the apps. Automatic follows the browser.", "language.label": "Language", @@ -40,8 +844,83 @@ "language.name.ru": "Русский", "language.name.sk": "Slovenčina", "language.name.zh": "中文", + "node.1_hour": "1 hour", + "node.5_minutes": "5 minutes", + "node.6_hours": "6 hours", + "node.access_requested": "Access requested", + "node.added_to_contacts": "Added to contacts", + "node.nmesh_node": "NMesh node", + "node.node": "Node", + "node.node_actions": "Node actions", + "node.node_forgotten": "Node forgotten", + "node.open_in_fleet": "Open in Fleet", + "node.request_access": "Request access", + "node.request_sent_someone_there_has_to": "Request sent — someone there has to accept it", + "node.s_of_at_most": "{seconds} s of at most {speed_seconds}", + "node.speed_test": "Speed test", + "node.state": "State", + "node.this_page_reads_the_console_of_this": "This page reads the console of this node, so it needs the console password.", + "node.tried": "Tried", + "pkg.downloaded": "Downloaded {path}.", + "pkg.fetching_and_verifying": "Fetching and verifying…", + "pkg.fetching_the_package": "Fetching the package…", + "pkg.installed": "Installed {name} {version}", + "pkg.nmesh_package": "NMesh package", + "pkg.no_longer_watching": "No longer watching {name}", + "pkg.not_stated_here": "not stated here", + "pkg.open_on_its_own": "Open on its own", + "pkg.package": "Package", + "pkg.pin_the_signing_key": "Pin the signing key", + "pkg.pinned": "Pinned {signer_id}", + "pkg.signing_key": "Signing key", + "pkg.signing_keys_that_must_agree": "Signing keys that must agree", + "pkg.that_package_is_empty": "That package is empty.", + "pkg.watching": "Watching {name}", + "pkg.what_it_says_about_itself": "What it says about itself", "state.connected": "Connected", "state.disconnected": "Disconnected", "state.offline": "Offline", - "state.online": "Online" + "state.online": "Online", + "term.back_to_the_bottom": "back to the bottom", + "term.back_to_the_fleet": "Back to the fleet", + "term.fetching": "Fetching {name}…", + "term.files": "Files", + "term.folder_name": "Folder name", + "term.folder_name_2": "folder name", + "term.idle": "idle", + "term.keyboard": "Keyboard", + "term.link": "link", + "term.new_folder": "New folder", + "term.nmesh_terminal": "NMesh Terminal", + "term.no_node_has_granted_a_shell": "No node has granted a shell", + "term.nothing_to_copy": "Nothing to copy", + "term.open": "Open", + "term.paste": "Paste", + "term.paste_into_the_terminal": "Paste into the terminal", + "term.pick_a_node_first": "Pick a node first.", + "term.reading": "Reading…", + "term.remote_shell": "Remote shell", + "term.saved": "Saved {name} ({size}).", + "term.sending": "Sending {name}…", + "term.terminal": "Terminal", + "term.terminal_keys": "Terminal keys", + "term.text": "×", + "term.text_to_send": "Text to send", + "term.that_file_could_not_be_fetched": "That file could not be fetched.", + "term.that_node_could_not_be_reached": "That node could not be reached.", + "term.that_upload_could_not_be_sent": "That upload could not be sent.", + "term.the_terminal_uses_the_console": "The terminal uses the console password of this node.", + "term.this_browser_did_not_hand_over_the": "This browser did not hand over the clipboard, so paste here and send it. Nothing is stored.", + "term.up": "Up", + "term.upload": "Upload", + "ui.back_to_this_node": "Back to this node", + "ui.copied_to_clipboard": "Copied to clipboard", + "ui.could_not_copy_select_and_copy_by": "Could not copy — select and copy by hand", + "ui.dismiss": "Dismiss", + "ui.is_no_longer_reachable_back_on_this": "{name} is no longer reachable — back on this node", + "ui.not_answering": "not answering", + "ui.nothing_matches_that": "Nothing matches that.", + "ui.switch_to_the_dark_theme": "Switch to the dark theme", + "ui.switch_to_the_light_theme": "Switch to the light theme", + "ui.this_node_was_updated_reloading": "This node was updated — reloading" } diff --git a/src/locales/fr.json b/src/locales/fr.json index b6ed67a..943f4dd 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -18,18 +18,822 @@ "common.send": "Envoyer", "common.unknown": "Inconnu", "config.saved": "Configuration enregistrée", + "console.100_rows": "100 lignes", + "console.10_minutes": "10 minutes", + "console.10_rows": "10 lignes", + "console.1_create_request": "1 · Créer la demande", + "console.1_minute": "1 minute", + "console.20_rows": "20 lignes", + "console.2_make_invite": "2 · Créer l'invitation", + "console.3_paste_their_reply_block": "3 · Collez leur bloc de réponse", + "console.40_character_content_id": "id de contenu de 40 caractères", + "console.50_rows": "50 lignes", + "console.6_hours_maximum": "6 heures (maximum)", + "console.a_few_lines_this_is_all_anybody_sees": "quelques lignes — c'est tout ce que quiconque voit avant de le récupérer", + "console.a_key_made_before_this_node_had": "Une clé créée avant que ce nœud ait un endroit où les garder est un fichier que rien ne peut nommer — et la nommer par son id permet de signer une version avec elle, ou de l'offrir à quelqu'un. Indiquez le chemin et la phrase secrète ci-dessus.", + "console.a_line_is_an_authenticated_direct": "Une ligne est un lien direct authentifié : ambre tant qu'il perd des sondes, rouge et en pointillés lorsqu'il défaille, doublée lorsque MLO le regroupe, pointillée à côté tant que MLO cherche un second lien. Une ligne discrète en tirets est une session routée via un premier saut — tout ce qui est plus loin est opaque pour ce nœud, par conception.", + "console.a_membership_is_issued_for_a_year": "Une appartenance est émise pour un an et renouvelée automatiquement un mois avant son terme, par le nœud qui a admis celui-ci. C'est la seule défaillance de confiance qu'un nœud voit venir : une fois la chaîne expirée, plus rien ne l'authentifiera, et le seul retour possible est une nouvelle invitation.", + "console.a_name_and_at_least_one_file_are": "Un nom et au moins un fichier sont requis.", + "console.a_name_and_files_are_required": "Un nom et des fichiers sont requis.", + "console.a_name_you_choose_beside_the_id_you": "Un nom de votre choix, à côté de l'id que vous ne choisissez pas", + "console.a_node_drops_anything_it_cannot": "Un nœud rejette tout ce qu'il ne peut vérifier, c'est le but — mais un maillage qui ne se connecte pas ressemble, vu de dehors, à un maillage que personne n'appelle. Voici les tests échoués, du plus récent au plus ancien. Rien ici n'est une erreur en soi : un inconnu qui frappe à une porte fermée atterrit aussi ici.", + "console.a_node_id_is_required": "Un identifiant de nœud est requis.", + "console.a_passphrase_to_keep_it_under": "Une phrase secrète pour la protéger", + "console.a_password_is_needed": "Un mot de passe est requis.", + "console.a_publisher_key_is_the_safer_choice": "Une clé d'éditeur est le choix le plus sûr : elle n'est déverrouillée que pour cette signature. L'identité du nœud est déjà déverrouillée, et le restera.", + "console.accept_failed": "Échec de l'acceptation", + "console.accept_someone": "Accepter quelqu'un", + "console.accepted_for": "Acceptée pour", + "console.accusers": "Accusateurs", + "console.add_a_node": "Ajouter un nœud", + "console.address_preference_updated": "Préférence d'adresse mise à jour", + "console.addressing": "Adressage", + "console.advanced": "Avancé", + "console.after_a_restart": "Après un redémarrage", + "console.agreeing": "D'accord", + "console.alice": "alice", + "console.all": "Tous", + "console.already_have_a_key_file": "Vous avez déjà un fichier de clé ?", + "console.also_ask_the_network_for_this_exact": "Interroger aussi le réseau pour ce nom exact", + "console.always_on_no": "Toujours actif : non", + "console.always_on_yes": "Toujours actif : oui", + "console.an_address_and_an_invite_code_are": "Une adresse et un code d'invitation sont requis.", + "console.an_app_needs": "Ce dont une app a besoin", + "console.anchors_and_taking_a_membership_back": "Ancres, et reprise d'une appartenance", + "console.anchors_this_node_trusts": "Ancres auxquelles ce nœud fait confiance", + "console.any_app": "toute app", + "console.app": "App", + "console.app_name": "Nom de l'app", + "console.app_pages": "Pages d'apps", + "console.app_views": "Vues des apps", + "console.applications": "Applications", + "console.applies_now": "s'applique immédiatement", + "console.applies_now_2": "S'applique immédiatement", + "console.apply": "Appliquer", + "console.apply_now_at_restart": "{live} appliqués maintenant · {live2} au redémarrage", + "console.apply_size": "Appliquer la taille", + "console.applying": "Application…", + "console.apps": "Apps", + "console.apps_signed_by_it": "apps signées par lui", + "console.ask_the_network": "Interroger le réseau", + "console.ask_the_network_not_just_what_this": "Interroger le réseau, pas seulement ce que ce nœud détient déjà", + "console.asked": "demandé", + "console.asking_github": "Interrogation de GitHub…", + "console.authenticated_and_open_a_node": "Authentifiés et ouverts. Un nœud détenant plusieurs liens se déplie sur eux", + "console.auto_refresh": "Actualisation auto", + "console.automatic": "Automatique", + "console.balance": "Équilibre", + "console.being_in_the_network_is_not_being": "Être dans le réseau n'est pas être digne de confiance. Chaque application fixe sa propre idée du trop — seul chat sait ce que trop de messages veut dire — et signale l'expéditeur ; ce nœud décide de ce que les signalements totalisent. Un nœud au-delà du premier seuil n'est plus servi, en silence : on ne lui dit rien, il l'apprend le plus tard possible. Les plaintes s'estompent d'elles-mêmes, donc un nœud fautif une fois puis correct revient sans que personne n'intervienne.", + "console.beyond_this_node": "Au-delà de ce nœud", + "console.beyond_this_striping_is_not_worth_it": "Au-delà, la répartition ne vaut pas la peine pour ce nœud.", + "console.both_the_current_and_the_new": "Le mot de passe actuel et le nouveau sont tous deux requis.", + "console.built_in_applications_on_this_node": "Applications intégrées à ce nœud, et comment en trouver une sur le maillage. Il n'y a pas de catalogue à parcourir : on demande un nom et des enregistrements signés reviennent.", + "console.bytes": "Octets", + "console.certificate_unavailable": "Certificat indisponible", + "console.change_password": "Changer le mot de passe", + "console.changing": "Modification…", + "console.check_for_updates": "Rechercher des mises à jour", + "console.choose_a_passphrase_first": "Choisissez d'abord une phrase secrète", + "console.choose_a_passphrase_to_keep_it_under": "Choisissez une phrase secrète pour la protéger", + "console.choosing_between_a_node_s_addresses": "Choisir entre les adresses d'un nœud", + "console.clear": "Effacer", + "console.clear_all": "Tout effacer", + "console.clear_view": "Vider l'affichage", + "console.coming_soon_the_node_moves_along_the": "Bientôt : le nœud se déplacera seul sur la barre, selon ce qu'il fait — sur batterie ou sur secteur, occupé ou inactif. Vous lui donnez une tendance, et il s'y tient.", + "console.command_palette": "Palette de commandes", + "console.configuration": "Configuration", + "console.configuration_file": "Fichier de configuration", + "console.confirm": "Confirmer", + "console.confirm_reachability": "Confirmer la joignabilité", + "console.connect": "Connecter", + "console.connect_failed": "Échec de la connexion", + "console.connect_two_nodes_by_hand": "Connecter deux nœuds à la main", + "console.connected_apps": "Apps connectées", + "console.connected_nodes_click_to_open_the": "Nœuds connectés — cliquer pour ouvrir la carte complète", + "console.connecting": "Connexion…", + "console.connecting_over_the_mesh": "Connexion via le maillage…", + "console.connector_token": "Jeton de connecteur", + "console.console": "Console", + "console.console_is_not_reachable": "La console est injoignable", + "console.console_password": "Mot de passe de la console", + "console.console_password_changed": "Mot de passe de la console modifié", + "console.console_sections": "Sections de la console", + "console.contains": "Contient", + "console.content_addressed_transfer": "Transfert adressé par contenu", + "console.content_id": "Id de contenu", + "console.content_published": "Contenu publié.", + "console.control_action_failed": "Échec de l'action de contrôle", + "console.could_not_change_the_password": "Impossible de changer le mot de passe", + "console.could_not_check_for_updates": "Impossible de rechercher des mises à jour.", + "console.could_not_create_a_request": "Impossible de créer une demande", + "console.could_not_create_an_invitation": "Impossible de créer une invitation", + "console.could_not_read_the_configuration": "Impossible de lire la configuration.", + "console.could_not_read_the_keys_held_here": "Impossible de lire les clés détenues ici.", + "console.could_not_read_what_this_node_can": "Impossible de lire les versions vers lesquelles ce nœud peut se mettre à jour.", + "console.could_not_save_that": "Impossible d'enregistrer cela", + "console.could_not_save_the_balance": "Impossible d'enregistrer la répartition", + "console.counts_towards_a_quorum": "Compte pour un quorum", + "console.create_invitation": "Créer l'invitation", + "console.create_one": "En créer une", + "console.creating": "Création…", + "console.current_password": "Mot de passe actuel", + "console.dark": "Sombre", + "console.decide_by_screen_size": "Selon la taille de l'écran", + "console.diagnostics": "Diagnostics", + "console.does": "Fait", + "console.does_not_apply": "non applicable", + "console.done": "Terminé", + "console.download": "Télécharger", + "console.downloading_and_installing": "Téléchargement et installation de {update_offer}…", + "console.drag_to_move_pinch_or_scroll_to_zoom": "Glisser pour déplacer · pincer ou défiler pour zoomer", + "console.drop_share_that_benches_a_link": "Part de pertes qui met un lien à l'écart", + "console.drop_what_was_reported": "Oublier ce qui a été signalé", + "console.dropped_whatever_is_still_true_will": "Supprimé — tout ce qui reste vrai sera signalé à nouveau", + "console.dynamic_addressing_off": "Adressage dynamique : désactivé", + "console.dynamic_addressing_on": "Adressage dynamique : activé", + "console.each_key_and_what_its_signature_is": "Chaque clé, et ce pour quoi sa signature est acceptée", + "console.endpoint": "Point d'accès", + "console.energy_and_performance": "Énergie et performances", + "console.energy_bar": "barre d'énergie", + "console.enter_a_content_id": "Saisissez un identifiant de contenu.", + "console.enter_a_listener_uri": "Saisissez une URI d'écoute (listener)", + "console.enter_a_valid_udp_port": "Saisissez un port UDP valide", + "console.errors_only": "erreurs seulement", + "console.every_background_job_this_node_keeps": "Toutes les tâches de fond de ce nœud, et ce qui les réveille", + "console.every_number_and_every_setting": "Chaque valeur et chaque réglage, plutôt que les décisions auxquelles ils mènent. Ne change que ce que ce navigateur affiche — le nœud se comporte pareil dans les deux cas.", + "console.every_option_this_node_reads_from": "Toutes les options que ce nœud lit dans son fichier", + "console.everything": "Tout", + "console.everything_that_changes_how_this": "Tout ce qui change le fonctionnement de ce nœud. Séparé de l'état en direct pour que rien ici ne soit à un clic d'un graphique que vous ne faisiez que lire.", + "console.expand": "Développer", + "console.expert_mode": "Mode expert", + "console.expert_mode_shows_every_setting_in": "Le mode expert affiche chaque réglage du fichier de configuration du nœud, y compris ceux dont cette barre est faite.", + "console.failed": "{action} : échec", + "console.fastest_ever": "Le plus rapide, jamais", + "console.fastest_measured": "Le plus rapide mesuré", + "console.fastest_when_idle": "Le plus rapide au repos", + "console.fetch": "Récupérer", + "console.fetch_failed": "Échec de la récupération", + "console.fetched": "{name} {version} récupéré.", + "console.fetched_from_the_mesh_and_unpacked": "Récupérées depuis le maillage et décompressées sur ce nœud", + "console.fetching_content": "Récupération du contenu…", + "console.find_a_node_by_name": "Trouver un nœud par son nom", + "console.find_a_package_by_name_or_by_the": "Trouver un paquet par son nom, ou par le nœud qui le publie", + "console.find_an_app": "Trouver une app", + "console.fit_the_whole_mesh": "Ajuster à tout le maillage", + "console.follow_the_system": "Suivre le système", + "console.following_a_link_into_chat_or_fleet": "Suivre un lien vers Chat ou Fleet — écrire à un nœud depuis ses détails, par exemple. Une fenêtre garde sous les yeux ce que vous faisiez ; un téléphone obtient un onglet dans les deux cas.", + "console.for_nodes_that_cannot_see_each_other": "Pour les nœuds qui ne se voient pas encore : trois blocs de texte, transmis par le canal en lequel vous avez déjà confiance.", + "console.forget_this_app": "Oublier cette app", + "console.from": "De", + "console.from_the_mesh": "Depuis le maillage", + "console.from_the_project": "Depuis le projet", + "console.further_apart_than_this_and_they_are": "Au-delà, ils ne sont pas regroupés : répartir sur un lien rapide et un lent livre la moitié des paquets en retard.", + "console.generate_invite_code": "Générer un code d'invitation", + "console.getting_an_update": "Obtenir une mise à jour", + "console.give_the_path_to_the_key_file": "Indiquez le chemin du fichier de clé", + "console.giving_one": "En donner une", + "console.handing_one_to_somebody_else_and": "En confier une à quelqu'un d'autre, et en recevoir une qu'il propose", + "console.happening_now": "En ce moment", + "console.health_throughput_and_the_links_this": "Santé, débit et liens que ce nœud a authentifiés.", + "console.holding": "détient", + "console.host_port": "hôte:port", + "console.how_much_this_node_may_spend_to_stay": "Ce que ce nœud peut dépenser pour rester rapide", + "console.how_often_it_goes_checking_and": "À quelle fréquence il va vérifier, et s'il s'en donne la peine au repos", + "console.how_often_the_changing_numbers_are": "Fréquence de relecture des valeurs changeantes, en secondes (0 pour désactiver)", + "console.how_the_balance_is_chosen": "Comment l'équilibre est choisi", + "console.how_this_node_trades_energy_for": "La façon dont ce nœud échange énergie contre vitesse est un seul réglage, sous Réglages → Configuration. Le mode expert affiche ici les valeurs qui le composent.", + "console.id": "Id", + "console.identity": "Identité", + "console.idle": "Inactive", + "console.in_a_new_tab": "Dans un nouvel onglet", + "console.in_a_separate_window": "Dans une fenêtre séparée", + "console.inbound_and_outbound_bytes_per": "Octets entrants et sortants par seconde", + "console.info_and_above": "info et plus", + "console.install": "Installer", + "console.install_2": "Installer {latest}", + "console.install_automatically": "Installer automatiquement", + "console.installed": "Installées", + "console.internal_api": "API interne", + "console.into_which_node_s_network": "Dans le réseau de quel nœud", + "console.invitation": "Invitation", + "console.invite_a_node": "Inviter un nœud", + "console.invite_code": "Code d'invitation", + "console.invite_codes_and_certificates": "Codes d'invitation et certificats", + "console.invite_generation_failed": "Échec de la génération de l'invitation", + "console.is": "est", + "console.is_available_but_this_install_cannot": "{latest} est disponible{where}, mais cette installation ne peut pas se mettre à jour elle-même : {blocked}", + "console.is_available_you_run": "{latest} est disponible{where} (vous utilisez {current}).", + "console.it_listens_beyond_this_machine": "Il écoute au-delà de cette machine. Quiconque peut joindre cette adresse et détient le jeton peut faire tout ce que l'app MCP s'est vu accorder.", + "console.it_never_leaves_this_machine_lose_it": "Elle ne quitte jamais cette machine. Perdez-la et la clé est perdue — il n'y a pas de récupération, ce qui rend un fichier copié inutile.", + "console.its_passphrase": "Sa phrase secrète", + "console.job": "Tâche", + "console.join": "Rejoindre", + "console.join_or_invite": "Rejoindre ou inviter", + "console.join_someone": "Rejoindre quelqu'un", + "console.joined_node": "{node} rejoint.", + "console.joined_the_network": "Réseau rejoint", + "console.joined_through_a_relay": "Rejoint via un relais.", + "console.joining_the_handshake_is_post": "Connexion en cours — la poignée de main est post-quantique, patientez un instant…", + "console.jump_to_a_section_or_run_an_action": "Aller à une section, ou lancer une action…", + "console.key": "Clé", + "console.key_compromised": "Clé compromise", + "console.key_to_share": "Clé à partager", + "console.keys_are_pinned_from_the_package": "Les clés s'épinglent depuis le paquet qu'elles ont signé, d'un appui et d'une confirmation : la clé arrive dans l'enregistrement et est vérifiée par la signature qu'elle a produite, donc rien à copier d'ailleurs et rien à mal faire.", + "console.keys_this_node_can_sign_a_release": "Clés avec lesquelles ce nœud peut signer une version", + "console.last": "Dernier", + "console.left_the_network": "A quitté le réseau", + "console.level": "Niveau", + "console.light": "Clair", + "console.link": "Lien", + "console.links": "Liens", + "console.links_open_in_a_new_tab": "Les liens s'ouvriront dans un nouvel onglet", + "console.links_open_in_a_separate_window": "Les liens s'ouvriront dans une fenêtre séparée", + "console.links_open_to_suit_the_screen": "Les liens s'ouvriront selon la taille de l'écran", + "console.links_that_reached_this_node_and": "Liens arrivés jusqu'à ce nœud et repoussés, et pourquoi", + "console.listen_elsewhere": "Écouter ailleurs", + "console.listener_added": "Écoute (listener) ajoutée", + "console.listener_removed": "Écoute (listener) supprimée", + "console.listener_uri": "URI d'écoute (listener)", + "console.listening_on": "Écoute sur", + "console.live": "En direct", + "console.load_older": "Charger plus ancien", + "console.local_management_plane": "Plan de gestion local", + "console.log_dropped": "{older} évacuées pour faire de la place", + "console.log_held": "Conservé pour {who}. {lines} retenues, {used} sur {size} Mo", + "console.log_ratio": "(compressé {ratio}×)", + "console.log_stop_not_yours": "Ce n'est pas à vous d'arrêter ici : cela s'arrête quand {who} s'arrête.", + "console.looking_for_a_relay_that_can_reach": "Recherche d'un relais capable de les joindre — surveillez Réseau → Pairs.", + "console.loss": "Perte", + "console.made_here": "créée ici", + "console.make_a_key": "Créer une clé", + "console.manage": "Gérer {name}", + "console.managing": "Gestion de {name}", + "console.manual": "Manuel", + "console.mcp_server": "Serveur MCP", + "console.mcp_tool": "Outil MCP", + "console.measures": "mesure", + "console.medium": "support", + "console.membership": "Appartenance", + "console.mesh": "Maillage", + "console.mesh_map": "Carte du maillage", + "console.mesh_map_draggable_and_zoomable": "Carte du maillage, déplaçable et zoomable", + "console.message": "Message", + "console.mlo_ready": "MLO prêt", + "console.more": "Plus", + "console.multi_link_operation": "Fonctionnement multi-liens", + "console.multi_link_operation_updated": "Fonctionnement multi-lien mis à jour", + "console.name_the_node_that_receives_it": "Indiquez le nœud qui la reçoit", + "console.network": "Réseau", + "console.network_views": "Vues du réseau", + "console.neutral": "Neutre", + "console.new_password": "Nouveau mot de passe", + "console.new_token": "Nouveau jeton", + "console.nm": "NM", + "console.nmesh": "nmesh", + "console.nmesh_console": "Console NMesh", + "console.nmesh_packet_bytes_excluding": "Octets de paquets NMesh, hors surcharge du transport", + "console.no": "non", + "console.no_camera_available_it_needs_your": "Aucune caméra disponible. Elle exige votre autorisation et une page sécurisée (HTTPS ou localhost).", + "console.no_key_pinned_this_node_installs": "Aucune clé épinglée — ce nœud n'installe rien du maillage de lui-même. Trouvez un paquet ci-dessus et épinglez la clé qui l'a signé.", + "console.no_links_yet": "aucun lien pour l'instant", + "console.no_node_is_reached_over_two_mlo": "Aucun nœud n'est joint par deux liens compatibles MLO pour le moment.", + "console.no_other_address_on_an_mlo_ready": "— aucune autre adresse sur un support compatible MLO", + "console.no_payload_is_ever_recorded": "Aucune charge utile n'est jamais enregistrée", + "console.no_publisher_key_here_this_node": "Aucune clé d'éditeur ici — ce nœud signe ses versions avec sa propre identité.", + "console.no_publisher_key_on_this_node": "aucune clé d'éditeur sur ce nœud", + "console.node_being_managed": "Nœud géré", + "console.node_controls": "Contrôles du nœud", + "console.node_peers_app": "nœud, pairs, app :…", + "console.nodes_linked_directly_and_nodes": "Nœuds liés directement, et nœuds joints par leur intermédiaire", + "console.nodes_under_suspicion": "Nœuds sous suspicion", + "console.none_yet_this_node_trusts_only": "Aucune pour l'instant — ce nœud ne fait confiance qu'à lui-même.", + "console.not_recording_nothing_is_kept_until": "Pas d'enregistrement. Rien n'est conservé tant que personne ne le démarre — ici, en lançant une trace, ou en la suivant depuis une autre console.", + "console.not_restarting": "Pas de redémarrage", + "console.nothing_held_against_that_node": "Rien n'est retenu contre ce nœud.", + "console.nothing_is_kept_until_it_is_started": "Rien n'est conservé tant que ce n'est pas démarré, et ce qui l'a été est supprimé quand le dernier qui le conservait s'arrête : un opérateur ici, une trace en cours, ou une console qui suit ce journal depuis ailleurs. Il vit en mémoire seulement, compressé, et est borné par la taille ci-dessous.", + "console.nothing_on_the_mesh_changes_it_can": "Rien ne change sur le maillage — elle peut être retrouvée et installée à nouveau.", + "console.nothing_registered_the_node_is_not": "Rien d'enregistré — le nœud n'est pas démarré.", + "console.nothing_to_download_yet": "Rien à télécharger pour l'instant", + "console.noticed_not_judged": "Remarqué, non jugé", + "console.off": "Désactivée", + "console.off_2": "désactivé", + "console.offer_refused": "Offre refusée", + "console.offer_this_key": "Proposer cette clé", + "console.oldest_at_the_top_follows_the_end_as": "Le plus ancien en haut, suit la fin à mesure que les lignes s'écrivent", + "console.one_block_per_medium_what_is_bound": "Un bloc par support : ce qui est lié, ce qu'il transporte, ce qu'il consomme", + "console.one_invitation_both_ways_round": "Une invitation, dans les deux sens", + "console.one_link_short_of_a_bundle": "Il manque un lien pour former un faisceau :", + "console.one_short_string_where_to_connect_a": "Une courte chaîne : où se connecter, un passage par un tiers si cela échoue, et un code à usage unique", + "console.open_console": "Ouvrir la console", + "console.opening_another_app": "Ouverture d'une autre app", + "console.other_sessions_signed_out": { + "one": "{count} autre session déconnectée.", + "other": "{count} autres sessions déconnectées." + }, + "console.overview": "Vue d'ensemble", + "console.package_name": "Nom du paquet", + "console.packages_this_node_checks_on_and": "Paquets que ce nœud vérifie, et ce qu'il peut installer seul", + "console.packets": "Paquets", + "console.packets_spread_over_two_links_arrive": "Des paquets répartis sur deux liens arrivent dans le désordre, d'environ deux fois le décalage mesuré. Les apps doivent s'y attendre, avec ou sans ceci : un maillage route, et une réponse routée n'a jamais été tenue d'arriver après la précédente.", + "console.passes": "Passages", + "console.passphrase": "Phrase secrète", + "console.password_changed": "Mot de passe modifié.", + "console.past_this_the_link_stops_being": "Passé ce seuil, le lien n'est plus crédible. Maintenu sous le délai propre au support, quoi qu'il soit convenu.", + "console.paste_a_certificate": "Collez un certificat.", + "console.paste_a_request_first": "Collez d'abord une demande.", + "console.paste_a_root_certificate_to_trust": "Collez un certificat racine à approuver", + "console.paste_or_scan_an_invitation": "Collez ou scannez une invitation…", + "console.paste_or_scan_an_invitation_first": "Collez ou scannez d'abord une invitation.", + "console.paste_the_reply_first": "Collez d'abord la réponse.", + "console.paste_their_request_block": "Collez leur bloc de demande", + "console.path_on_this_machine": "Chemin sur cette machine", + "console.path_to_publisher_key": "/path/to/publisher.key", + "console.pause": "Pause", + "console.peers": "Pairs", + "console.percent_of_its_last_50_probes_it": "Pourcentage de ses 50 dernières sondes. Il revient à la moitié de ce seuil, pour qu'un lien au seuil n'oscille pas à chaque sonde.", + "console.performance": "Performances", + "console.permissions": "Permissions", + "console.permissions_2": "{name} — autorisations", + "console.ping_active_nodes": "Pinguer les nœuds actifs", + "console.ping_failed": "Échec du ping", + "console.point_the_camera_at_the_ticket_s_qr": "Dirigez la caméra vers le code QR du ticket.", + "console.port": "Port", + "console.preferences_about_this_screen_kept": "Préférences de cet écran, conservées ici et nulle part ailleurs", + "console.preferred_medium": "Support préféré", + "console.probe_failed": "Échec de la sonde", + "console.problems_in_the_file": "Problèmes dans le fichier : {problems}", + "console.protocol_trace": "Trace du protocole", + "console.publish": "Publier", + "console.publish_a_signed_release": "Publier une version signée", + "console.publish_content": "Publier du contenu", + "console.publish_this_node_s_code": "Publier le code de ce nœud", + "console.published": "{name} {version} publié", + "console.published_and_filed_under_its_name": "Publié et classé sous son nom — n'importe qui peut désormais le trouver en le saisissant.", + "console.publisher_keys_held_here": "Clés d'éditeur détenues ici", + "console.publishing_did_not_finish_the_node": "La publication ne s'est pas terminée — le nœud travaille peut-être encore. Revérifiez Réglages → Mises à jour dans une minute.", + "console.publishing_under_a_key": "Publier sous une clé", + "console.rate": "Débit", + "console.raw_dht_package_exchange_not_the": "Échange brut de paquets DHT — pas le magasin d'apps signé", + "console.re_check_network": "Revérifier le réseau", + "console.reachability": "Joignabilité", + "console.reading_files": "Lecture des fichiers…", + "console.reading_hashing_and_signing_this_can": "Lecture, hachage et signature — cela peut prendre un moment sur un maillage chargé…", + "console.reading_node_status": "Lecture de l'état du nœud…", + "console.reason": "Motif", + "console.receiving_node": "Nœud destinataire", + "console.recording": "Enregistrement", + "console.refresh_now": "Actualiser maintenant", + "console.refused": "refusé", + "console.refused_handshakes": "Poignées de main refusées", + "console.release_notes": "Notes de version", + "console.reload_from_file": "Recharger depuis le fichier", + "console.remove_the_name": "Retirer le nom", + "console.reordering": "Réordonnancement", + "console.repeat_new_password": "Répéter le nouveau mot de passe", + "console.restart_this_node": "Redémarrer ce nœud", + "console.restarting": "Redémarrage de {who}", + "console.revoke": "Révoquer", + "console.ring_size_in_megabytes": "Taille de l'anneau en mégaoctets", + "console.round_trip": "Aller-retour", + "console.rows_per_page": "Lignes par page", + "console.rtt": "RTT", + "console.said_by": "dit par {from}", + "console.same": "identique", + "console.save_configuration": "Enregistrer la configuration", + "console.save_energy": "Économiser l'énergie", + "console.save_failed": "Échec de l'enregistrement", + "console.save_name": "Enregistrer le nom", + "console.saves_energy": "Économise l'énergie", + "console.saving": "Enregistrement…", + "console.says_which_version_it_runs": "Indique quelle version il exécute", + "console.scan_with_camera": "Scanner avec la caméra", + "console.score": "Score", + "console.search_active_nodes": "Rechercher parmi les nœuds actifs", + "console.search_commands": "Recherche et commandes", + "console.search_endpoints": "Rechercher des points d'accès", + "console.search_endpoints_2": "Rechercher des points d'accès…", + "console.search_installed": "Rechercher parmi les installées…", + "console.search_installed_apps": "Rechercher parmi les apps installées", + "console.search_known_nodes": "Rechercher parmi les nœuds connus", + "console.search_name_id_address_transport": "Rechercher nom, id, adresse, transport…", + "console.search_name_id_or_address": "Rechercher nom, id ou adresse…", + "console.seconds": "Secondes", + "console.seconds_to_record": "Secondes à enregistrer", + "console.security": "Sécurité", + "console.seen": "Vu", + "console.send_this_block_to_the_other_side": "Envoyez ce bloc à l'autre partie.", + "console.send_this_invite_block_back": "Renvoyez ce bloc d'invitation.", + "console.send_this_invite_block_back_2": "Renvoyer ce bloc d'invitation", + "console.send_this_request_block": "Envoyer ce bloc de demande", + "console.sent_probe_s": "{sent} sonde(s) envoyée(s)", + "console.settings": "Réglages", + "console.settings_applied": "Réglages {scheme} appliqués", + "console.settings_apply_to_the_running_node": "Les réglages s'appliquent immédiatement au nœud en marche, sauf indication contraire, puis sont écrits dans le fichier de configuration pour survivre à un redémarrage. Une valeur que le transport refuse n'atteint jamais le fichier.", + "console.settings_sections": "Sections des réglages", + "console.sharing_a_key": "Partager une clé", + "console.show_our_root_certificate": "Afficher notre certificat racine", + "console.show_the_client_configuration": "Afficher la configuration du client", + "console.show_this_node_s_details": "Afficher les détails de ce nœud", + "console.sign_out": "Se déconnecter", + "console.sign_what_is_installed_here_and": "Signer ce qui est installé ici et l'offrir au maillage", + "console.sign_with": "Signer avec", + "console.signed_by": "Signé par", + "console.signing_keys_you_accept": "Clés de signature acceptées", + "console.size_mb": "Taille, Mo", + "console.sketchpad": "brouillon", + "console.skew_two_links_may_differ_by": "Décalage toléré entre deux liens", + "console.skip_to_content": "Aller au contenu", + "console.slowest_still_fast": "Le plus lent encore « rapide »", + "console.slowest_when_idle": "Le plus lent au repos", + "console.software": "Logiciels", + "console.soon": "Bientôt", + "console.source": "Source", + "console.standing": "Situation", + "console.start_recording": "Démarrer l'enregistrement", + "console.stop": "Arrêter", + "console.stop_camera": "Arrêter la caméra", + "console.superseded": "Remplacée", + "console.sweep": "Balayage", + "console.switch_theme": "Changer de thème", + "console.take_back_a_membership": "Reprendre une appartenance", + "console.take_it_in": "L'importer", + "console.team": "équipe", + "console.tendency": "Tendance", + "console.text_or_a_field_value": "texte ou valeur d'un champ", + "console.that_could_not_be_dropped": "Impossible de supprimer cela", + "console.that_step_could_not_be_applied": "Impossible d'appliquer cette étape", + "console.the_certificate_chain_this_node": "La chaîne de certificats que ce nœud présente pour prouver qu'il appartient au réseau", + "console.the_console_stopped_answering_while": "La console a cessé de répondre pendant l'adhésion. Vérifiez Réseau → Pairs avant de réessayer — l'adhésion a peut-être abouti.", + "console.the_fastest_this_node_will_be_probed": "Le plus rapide auquel ce nœud sera sondé, réparti ou non.", + "console.the_last_things_this_node_did_or_was": "Les dernières actions de ce nœud, ou les ordres reçus", + "console.the_mcp_app_is_off_enable_it_on_the": "L'app MCP est désactivée. Activez-la dans l'onglet Installées, puis accordez-lui ce qu'elle peut lire et faire — ses outils en sont générés.", + "console.the_node_did_not_answer": "Le nœud n'a pas répondu.", + "console.the_only_credential_between_the": "Le seul justificatif entre le réseau et les contrôles de ce nœud", + "console.the_other_direction_nothing_here": "Le sens inverse. Rien ici n'ajoute de nœud — ce sont les deux façons de retirer la confiance, et ce ne sont pas le même acte.", + "console.the_password_is_checked_on_this": "Le mot de passe est vérifié sur cette machine et ne la quitte jamais. Il protège chaque action de gestion, y compris celles qui peuvent redémarrer ou mettre à jour le nœud.", + "console.the_primitives": "Les primitives", + "console.the_routing_table_reachable_not": "La table de routage — joignables, pas forcément connectés", + "console.the_secret_is_sealed_to_a_key_the": "Le secret est scellé pour une clé que l'autre côté génère à l'acceptation : il ne peut donc pas voyager avant que quelqu'un accepte de le recevoir, et seul cet interlocuteur peut l'ouvrir. Il choisit sa propre phrase secrète — jamais la vôtre.", + "console.the_trace_could_not_be_read": "Impossible de lire la trace", + "console.the_two_new_passwords_do_not_match": "Les deux nouveaux mots de passe ne correspondent pas.", + "console.theme": "Thème", + "console.theme_updated": "Thème mis à jour", + "console.there_is_no_key_to_share": "Il n'y a aucune clé à partager", + "console.these_are_not_settings_of_the_node": "Ce ne sont pas des réglages du nœud : ils vivent dans ce navigateur, donc une autre machine connectée à la même console garde les siens. Rien ici n'est envoyé nulle part.", + "console.these_settings_were_tuned_by_hand": "Ces réglages ont été ajustés à la main et ne correspondent à aucun cran. Déplacer la barre les remplace par le cran choisi.", + "console.they": "ils", + "console.things_this_node_saw_and_will_not": "Ce que ce nœud a vu et ne tranchera pas, car l'explication honnête, c'est souvent vous : un pair dont le trafic ressemble soudain à une autre machine (vous l'avez mis à jour), ou un membre du réseau qui a admis bien plus de nœuds d'un coup que jamais (vous en avez déployé). Il ne peut les distinguer d'une clé volée ou d'une foule fabriquée, alors il le dit au lieu d'agir. Rien n'est retenu contre personne ici : confirmer fait simplement de leur comportement actuel la nouvelle normalité.", + "console.this_app_connects_to_with_the_token": "Cette application se connecte à {host}:{port} avec le jeton ci-dessous. Il prouve que l'application est bien celle-ci — ne le laissez dans rien de partagé.", + "console.this_browser": "Ce navigateur", + "console.this_browser_cannot_scan_qr_codes": "Ce navigateur ne peut pas scanner de codes QR. Collez plutôt le ticket.", + "console.this_field_takes_any_of_them_an": "Ce champ accepte n'importe laquelle — une invitation, ou un bloc collé depuis un ancien nœud. Il n'y a rien à choisir.", + "console.this_medium_declares_no_setting": "Ce support ne déclare aucun réglage.", + "console.this_node": "Ce nœud", + "console.this_node_could_not_build": "Ce nœud n'a pas pu construire : {names}", + "console.this_node_has_no_configuration_file": "Ce nœud n'a pas de fichier de configuration : une étape s'applique tout de suite et est oubliée au redémarrage.", + "console.this_node_s": "de ce nœud", + "console.this_node_s_identity_key": "Clé d'identité de ce nœud", + "console.this_project_s_published_releases_on": "Les versions publiées de ce projet, sur GitHub", + "console.throughput": "Débit", + "console.ticket_scanned_check_it_then_press": "Ticket scanné — vérifiez-le, puis appuyez sur Rejoindre.", + "console.times": "Fois", + "console.tools_right_now": "Outils actuels", + "console.topology": "Topologie", + "console.trace_command_failed": "Échec de la commande de trace", + "console.transport": "Transport", + "console.transports": "Transports", + "console.trust_already_given": "Confiance déjà accordée", + "console.trust_certificate": "Faire confiance au certificat", + "console.two_channels_can_replace_that_and": "Deux canaux peuvent le remplacer, et ils sont indépendants", + "console.two_links_to_one_node_carrying_its": "Deux liens vers un même nœud, qui portent son trafic ensemble", + "console.type_a_name_the_mesh_answers_nothing": "Saisissez un nom — le maillage répond, rien n'est listé", + "console.type_its_passphrase_in_the_field": "Saisissez sa phrase secrète dans le champ ci-dessus", + "console.type_the_key_s_passphrase": "Saisissez la phrase secrète de la clé", + "console.udp_port": "Port UDP", + "console.unavailable": "indisponible", + "console.unlock_this_node": "Déverrouiller ce nœud", + "console.unnamed": "sans nom", + "console.unspecified": "Non précisé", + "console.up_to_date_running_latest_is": "À jour — version {current} en cours, la dernière est {latest}{where}.", + "console.update_failed": "Échec de la mise à jour.", + "console.updates": "Mises à jour", + "console.use_one": "En utiliser une", + "console.valid_for": "Valable pendant", + "console.valid_for_single_use": "Valable {duration}. Usage unique — traitez-le comme un mot de passe.", + "console.version": "Version", + "console.via": "via {via}", + "console.wakes_on": "Se réveille sur", + "console.warnings_and_errors": "avertissements et erreurs", + "console.watch_for_new_versions": "Surveiller les nouvelles versions", + "console.what_changed": "ce qui a changé", + "console.what_is_kept_is_dropped_recording": "Ce qui est conservé est supprimé ; l'enregistrement continue.", + "console.what_is_running": "Ce qui tourne", + "console.what_it_does": "Ce qu'il fait", + "console.what_it_is": "Ce que c'est", + "console.what_the_applications_and_the_core": "Ce que les applications et le cœur ont signalé", + "console.what_the_lines_mean": "Ce que signifient les lignes", + "console.what_this_key_is_for": "à quoi sert cette clé", + "console.what_this_node_actually_sends_and": "Ce que ce nœud envoie et reçoit réellement, par type de message", + "console.what_this_node_is_called": "Comment ce nœud s'appelle", + "console.what_this_node_noticed_about_itself": "Ce que ce nœud a remarqué sur lui-même et sur les machines avec lesquelles il communique. Une ligne par problème, avec sa fréquence", + "console.what_this_node_says_about_itself": "Ce que ce nœud dit de lui — conservé seulement tant que quelqu'un le demande", + "console.what_this_node_tells_other_nodes": "Ce que ce nœud dit de lui aux autres nœuds", + "console.what_you_are_watching": "Ce que vous surveillez", + "console.when_neither_node_can_reach_the": "Quand aucun des deux nœuds ne peut joindre l'autre", + "console.when_this_node_looks": "Quand ce nœud regarde", + "console.where_it_came_from": "D'où elle vient", + "console.whether_other_nodes_can_open_a_link": "Si d'autres nœuds peuvent ouvrir un lien vers celui-ci", + "console.which_endpoints": "Quels points d'accès", + "console.while_nobody_is_here": "Tant que personne n'est là", + "console.who_receives_it": "qui le reçoit", + "console.who_this_node_is_connected_to_how_it": "À qui ce nœud est connecté, comment le joindre, et comment y faire entrer un autre nœud.", + "console.whole_or_partial_best_match_first": "Entier ou partiel — meilleure correspondance d'abord", + "console.why": "Pourquoi", + "console.with_nothing_happening_no_more_often": "Sans activité, pas plus souvent que cela.", + "console.yes": "oui", + "console.yours_chosen_here_never_theirs": "La vôtre, choisie ici. Jamais la leur.", + "console.yours_to_unlock_the_key_here_it_is": "La vôtre, pour déverrouiller la clé ici. Elle n'est pas envoyée.", + "console.zoom": "Zoom", + "console.zoom_in": "Zoom avant", + "console.zoom_out": "Zoom arrière", + "count.container": { + "one": "{count} conteneur", + "other": "{count} conteneurs" + }, + "count.environment": { + "one": "{count} environnement", + "other": "{count} environnements" + }, + "count.file": { + "one": "{count} fichier", + "other": "{count} fichiers" + }, + "count.hour": { + "one": "{count} heure", + "other": "{count} heures" + }, + "count.line": { + "one": "{count} ligne", + "other": "{count} lignes" + }, "count.link": { "one": "{count} lien", "other": "{count} liens" }, + "count.listener": { + "one": "{count} écoute", + "other": "{count} écoutes" + }, + "count.member": { + "one": "{count} membre", + "other": "{count} membres" + }, "count.message": { "one": "{count} message", "other": "{count} messages" }, + "count.minute": { + "one": "{count} minute", + "other": "{count} minutes" + }, "count.node": { "one": "{count} nœud", "other": "{count} nœuds" }, + "count.older_line": { + "one": "{count} ligne plus ancienne", + "other": "{count} lignes plus anciennes" + }, + "count.permission": { + "one": "{count} autorisation", + "other": "{count} autorisations" + }, + "count.stack": { + "one": "{count} stack", + "other": "{count} stacks" + }, + "count.unread_message": { + "one": "{count} message non lu", + "other": "{count} messages non lus" + }, + "fleet.1_scan": "1 · Scanner", + "fleet.2_install": "2 · Installer", + "fleet.a_group_needs_a_name": "Un groupe doit avoir un nom.", + "fleet.a_lowercase_name_and_a_compose_file": "Un nom en minuscules et un fichier compose sont requis.", + "fleet.a_node_id_is_40_hexadecimal": "Un identifiant de nœud compte 40 caractères hexadécimaux.", + "fleet.a_subnet_a_machine_or_nothing_to": "Un sous-réseau, une machine, ou rien pour balayer tous les réseaux attachés.", + "fleet.a_system_install_needs_root_tick": "Une installation système nécessite root : cochez sudo, indiquez un compte sudo, ou installez sous l'utilisateur.", + "fleet.accept": "Accepter {id} ?", + "fleet.access": "Accès", + "fleet.access_granted": "Accès accordé", + "fleet.access_token": "Jeton d'accès", + "fleet.activity": "Activité", + "fleet.address": "Adresse", + "fleet.address_as_that_machine_reaches_it": "Adresse, telle que cette machine l'atteint", + "fleet.address_here": "Adresse ici", + "fleet.always": "always", + "fleet.always_follow": "Toujours suivre", + "fleet.an_address_and_a_token_are_needed": "Une adresse et un jeton sont requis.", + "fleet.an_address_is_needed": "Une adresse est requise.", + "fleet.an_image_is_required": "Une image est requise.", + "fleet.an_ssh_user_is_required": "Un utilisateur SSH est requis.", + "fleet.ask_for_at_least_one_capability": "Demandez au moins une capacité.", + "fleet.ask_this_machine_now": "Interroger cette machine maintenant", + "fleet.asked_for_its_log": "Journal demandé à {node}", + "fleet.asking": "Interrogation de {who}…", + "fleet.auto_or_192_168_1_0_24_10_0_0_5_nas": "auto — ou 192.168.1.0/24, 10.0.0.5, nas.lan:2222", + "fleet.auto_refresh_in_seconds_0_turns_it": "Actualisation auto, en secondes (0 pour désactiver)", + "fleet.back_to_console": "Retour à la console", + "fleet.capabilities_the_new_machines_grant": "Capacités que les nouvelles machines vous accordent", + "fleet.capabilities_to_ask_for": "Capacités à demander", + "fleet.choose_a_machine_first": "Choisissez d'abord une machine", + "fleet.collected_logs_dropped": "Journaux collectés supprimés", + "fleet.collection": "Collecte", + "fleet.console_of": "Console de {id}", + "fleet.containers": "Conteneurs", + "fleet.could_not_be_updated": "{name} n'a pas pu être mis à jour", + "fleet.create": "Créer", + "fleet.created": "Créé", + "fleet.credentials_are_held_in_memory_for": "Les identifiants ne sont gardés en mémoire que le temps de l'exécution", + "fleet.debug_and_above": "debug et plus", + "fleet.default_behaviour": "Comportement par défaut", + "fleet.delete_group": "Supprimer le groupe", + "fleet.deploy": "Déployer", + "fleet.deploy_a_stack": "Déployer une stack", + "fleet.deployed_by": "Déployé par", + "fleet.deploying_watch_activity": "Déploiement… surveillez Activité.", + "fleet.deployment_failed_to_start": "Le déploiement n'a pas pu démarrer.", + "fleet.discover_deploy": "Découvrir et déployer", + "fleet.docker": "Docker", + "fleet.docker_2": "docker", + "fleet.docker_compose_yml": "docker-compose.yml", + "fleet.docker_views": "Vues Docker", + "fleet.done_succeeded": "Terminé : {good}/{length} réussis.", + "fleet.driver": "Pilote", + "fleet.each_container_whose_image_changed": "Chaque conteneur dont l'image a changé est recréé.", + "fleet.each_of_these_accepted_a_request": "Chacun de ceux-ci a accepté une demande de ce nœud, et accordé exactement les capacités indiquées. Rien ici n'a été pris ; tout a été donné.", + "fleet.encrypted": "chiffrée", + "fleet.enter": "Entrer", + "fleet.environment": "Environnement", + "fleet.every_machine": "Toutes les machines", + "fleet.every_node_listed_here_can_act_on": "Chaque nœud listé ici peut agir sur cette machine. Un droit n'est jamais ajouté que d'ici — un nœud peut le demander, mais quelqu'un devant cette machine doit accepter.", + "fleet.filter_containers": "Filtrer les conteneurs", + "fleet.filter_stacks": "Filtrer les stacks", + "fleet.fleet": "Fleet", + "fleet.fleet_sections": "Sections de Fleet", + "fleet.fleet_uses_the_console_password_of": "Fleet utilise le mot de passe de console de ce nœud.", + "fleet.forget": "Oublier", + "fleet.forget_everything_collected": "Oublier tout ce qui a été collecté", + "fleet.full_screen": "Plein écran", + "fleet.ghcr_io_owner_image_tag": "ghcr.io/owner/image:tag", + "fleet.give_a_password_a_key_or_both": "Indiquez un mot de passe, une clé, ou les deux.", + "fleet.give_a_password_a_key_or_both_both": "Donnez un mot de passe, une clé, ou les deux — les deux sont essayés.", + "fleet.grant_access": "Accorder l'accès", + "fleet.group_deleted": "Groupe supprimé", + "fleet.group_saved": "Groupe enregistré", + "fleet.groups_for": "Groupes pour {id}", + "fleet.groups_updated": "Groupes mis à jour", + "fleet.history": "Historique", + "fleet.host_container_one_per_line_add_udp": "host:container, un par ligne ; ajoutez :udp pour UDP", + "fleet.host_path_or_volume_name_container": "chemin hôte ou nom de volume : chemin du conteneur, :ro pour lecture seule", + "fleet.image": "Image", + "fleet.images": "Images", + "fleet.inbound": "Entrant", + "fleet.install_directory": "Répertoire d'installation", + "fleet.install_options": "Options d'installation", + "fleet.invite_somebody_to_s_mesh": "Inviter quelqu'un dans le maillage de {who}", + "fleet.is_running": "{image} est en cours d'exécution", + "fleet.its_password": "Son mot de passe", + "fleet.keep_them_updated_from_the": "Les garder à jour depuis les éditeurs que ce nœud accepte", + "fleet.key_passphrase": "Phrase secrète de la clé", + "fleet.key_removed": "Clé supprimée", + "fleet.key_value_one_per_line": "KEY=value, un par ligne", + "fleet.label_optional": "Libellé (facultatif)", + "fleet.let_it_run_its_own_system_updates": "La laisser faire ses propres mises à jour système (une commande root fixe)", + "fleet.line": "Ligne", + "fleet.lines_collected_from_the_machines": "Lignes collectées sur les machines que ce nœud gère — ce qui s'y est passé pendant que personne ne regardait. Conservées ici, en mémoire, dans un anneau borné par machine.", + "fleet.log_collection_for": "Collecte des journaux pour {node} : {value}", + "fleet.logs": "Journaux", + "fleet.logs_2": "Journaux · {id}", + "fleet.lowercase_letters_digits_and": "lettres minuscules, chiffres, - et _", + "fleet.machine": "Machine", + "fleet.managed": "Géré", + "fleet.mark_all_read": "Tout marquer comme lu", + "fleet.megabytes_kept_per_machine": "Mégaoctets conservés par machine", + "fleet.name": "Nom", + "fleet.networks": "Réseaux", + "fleet.never_ask_when_needed": "Jamais — demander au besoin", + "fleet.new_group": "Nouveau groupe", + "fleet.newest_first_by_the_time_this_node": "Le plus récent d'abord, selon l'heure de réception par ce nœud.", + "fleet.nmesh_fleet": "NMesh Fleet", + "fleet.no_group_yet_name_one_below": "Aucun groupe pour l'instant — nommez-en un ci-dessous.", + "fleet.no_status_yet": "Aucun statut pour l'instant.", + "fleet.node": "Nœud {id}", + "fleet.node_id": "Identifiant du nœud", + "fleet.nodes": "Nœuds", + "fleet.nodes_you_control": "Nœuds que vous contrôlez", + "fleet.nothing_of_it_runs_on_this_machine": "Rien n'en tourne sur cette machine.", + "fleet.nothing_waiting_jobs_and_access": "Rien en attente. Les tâches et les demandes d'accès apparaissent ici.", + "fleet.notifications": "Notifications", + "fleet.on_failure": "on-failure", + "fleet.only_while_a_page_is_open_on_it": "Seulement tant qu'une page est ouverte dessus", + "fleet.open_shell": "Ouvrir un shell", + "fleet.opt_nmesh": "/opt/nmesh", + "fleet.optional": "facultatif", + "fleet.or_a_new_group": "Ou un nouveau groupe", + "fleet.or_type_a_whole_line_here_and_press": "…ou saisissez une ligne entière ici et appuyez sur Entrée", + "fleet.otherwise_an_account_that_can": "Sinon, un compte qui peut", + "fleet.outside_a_stack": "Hors d'une stack", + "fleet.password": "Mot de passe", + "fleet.portainer_connected_environments": { + "one": "Portainer connecté — {count} environnement visible", + "other": "Portainer connecté — {count} environnements visibles" + }, + "fleet.portainer_did_not_answer": "Portainer n'a pas répondu", + "fleet.portainer_forgotten": "Portainer oublié", + "fleet.ports": "Ports", + "fleet.pull": "Pull", + "fleet.pulled": "{image} téléchargée", + "fleet.pulling": "Téléchargement de {image}…", + "fleet.reachable_at": "Joignable à", + "fleet.read_its_certificate": "Lire son certificat", + "fleet.recommended": "Recommandé.", + "fleet.relationship_revoked": "Relation révoquée", + "fleet.reload": "Recharger", + "fleet.request_access_to_a_node": "Demander l'accès à un nœud", + "fleet.request_denied": "Demande refusée", + "fleet.request_sent_it_is_theirs_to_accept": "Demande envoyée — c'est à eux de l'accepter", + "fleet.restart_policy": "Politique de redémarrage", + "fleet.rights_on": "Droits sur {id}", + "fleet.root": "root", + "fleet.run": "Lancer", + "fleet.run_a_container": "Lancer un conteneur", + "fleet.running_on_the_remote_node": "Exécution sur le nœud distant…", + "fleet.scan": "Scanner", + "fleet.scan_failed": "Échec de l'analyse.", + "fleet.scan_from": "Scanner depuis", + "fleet.scan_running_on_the_remote_node": "Analyse en cours sur le nœud distant…", + "fleet.scanning_this_takes_a_moment": "Analyse en cours… cela prend un moment.", + "fleet.send_a_whole_line": "Envoyer une ligne entière", + "fleet.send_request": "Envoyer la demande", + "fleet.service": "Service", + "fleet.service_name": "Nom du service", + "fleet.shell": "Shell", + "fleet.sign_in": "Se connecter", + "fleet.since": "Depuis", + "fleet.size": "Taille", + "fleet.srv_data_data": "/srv/data:/data", + "fleet.ssh_key": "Clé SSH", + "fleet.ssh_user": "Utilisateur SSH", + "fleet.stack_deployed": "Pile {name} déployée", + "fleet.stack_failed": "Échec de la pile {name}", + "fleet.start_the_fleet_app_on_it_so_it_can": "Y démarrer l'app fleet, pour qu'elle soit gérable et puisse déployer plus loin", + "fleet.state_directory": "Répertoire d'état", + "fleet.stays_live_for": "Reste actif pendant", + "fleet.subnet": "Sous-réseau", + "fleet.sudo_account": "compte sudo", + "fleet.system": "Système", + "fleet.targets": "Cibles", + "fleet.that_could_not_be_changed": "Impossible de modifier cela", + "fleet.that_does_not_look_like_a_private": "Cela ne ressemble pas à une clé privée.", + "fleet.that_file_is_too_large_for_a_key": "Ce fichier est trop volumineux pour une clé.", + "fleet.that_group_name_was_refused": "Ce nom de groupe a été refusé.", + "fleet.that_machine_could_not_be_asked": "Impossible d'interroger cette machine", + "fleet.that_machine_did_not_answer": "Cette machine n'a pas répondu", + "fleet.that_machine_has_no_docker_compose": "Cette machine n'a pas docker compose : installez-le d'abord.", + "fleet.that_request_was_refused": "Cette demande a été refusée.", + "fleet.the_daemon_refuses_while_a_container": "Le démon refuse tant qu'un conteneur l'utilise.", + "fleet.the_default_could_not_be_changed": "Impossible de modifier la valeur par défaut", + "fleet.the_new_machines_pin_the_same": "Les nouvelles machines épinglent les mêmes éditeurs de versions que ce nœud (et ce nœud lui-même), et installent seules leurs versions signées. C'est ici ou nulle part : une machine sans écran n'a personne pour coller une clé d'éditeur dans une console, et n'accepterait jamais rien du maillage.", + "fleet.the_size_could_not_be_changed": "Impossible de modifier la taille", + "fleet.the_stacks_and_containers_of_one": "Les stacks et conteneurs d'une machine, retrouvés d'après ce qu'elle exécute — qu'ils aient été déployés par compose ou par Portainer — et mis à jour comme leur propriétaire le ferait.", + "fleet.this_node_s_id": "Identifiant de ce nœud", + "fleet.tz_europe_paris": "TZ=Europe/Paris", + "fleet.unless_stopped": "unless-stopped", + "fleet.until": "Jusqu'à", + "fleet.update": "Mettre à jour", + "fleet.update_all": "Tout mettre à jour", + "fleet.update_stacks": { + "one": "Mettre à jour {count} stack", + "other": "Mettre à jour {count} stacks" + }, + "fleet.update_started_on_nodes": { + "one": "Mise à jour lancée sur {count} nœud", + "other": "Mise à jour lancée sur {count} nœuds" + }, + "fleet.update_started_progress_shows_on_the": "Mise à jour lancée — la progression s'affiche sur la carte du nœud", + "fleet.upload_a_key": "Téléverser une clé…", + "fleet.user": "Utilisateur", + "fleet.var_lib_nmesh": "/var/lib/nmesh", + "fleet.volumes": "Volumes", + "fleet.volumes_networks": "Volumes et réseaux", + "fleet.what_is_followed_and_how_much_of_it": "Ce qui est suivi, et quelle part en est conservée.", + "fleet.what_the_machines_said": "Ce que les machines ont dit", + "fleet.what_this_node_asked_what_it_was": "Ce que ce nœud a demandé, ce qu'on lui a demandé, et comment chaque cas s'est terminé.", + "fleet.when": "Quand", + "fleet.where_nmesh_goes_on_each_machine": "Où NMesh va sur chaque machine", + "fleet.which_containers": "Quels conteneurs", + "fleet.who_controls_this_node": "Qui contrôle ce nœud", "language.auto": "Automatique (suivre le navigateur)", "language.help": "Langue de la console et des apps. Automatique suit le navigateur.", "language.label": "Langue", @@ -40,8 +844,83 @@ "language.name.ru": "Русский", "language.name.sk": "Slovenčina", "language.name.zh": "中文", + "node.1_hour": "1 heure", + "node.5_minutes": "5 minutes", + "node.6_hours": "6 heures", + "node.access_requested": "Accès demandé", + "node.added_to_contacts": "Ajouté aux contacts", + "node.nmesh_node": "Nœud NMesh", + "node.node": "Nœud", + "node.node_actions": "Actions du nœud", + "node.node_forgotten": "Nœud oublié", + "node.open_in_fleet": "Ouvrir dans Fleet", + "node.request_access": "Demander l'accès", + "node.request_sent_someone_there_has_to": "Demande envoyée — quelqu'un là-bas doit l'accepter", + "node.s_of_at_most": "{seconds} s sur {speed_seconds} au maximum", + "node.speed_test": "Test de débit", + "node.state": "État", + "node.this_page_reads_the_console_of_this": "Cette page lit la console de ce nœud : elle demande donc le mot de passe de la console.", + "node.tried": "Essayé", + "pkg.downloaded": "{path} téléchargé.", + "pkg.fetching_and_verifying": "Récupération et vérification…", + "pkg.fetching_the_package": "Récupération du paquet…", + "pkg.installed": "{name} {version} installé", + "pkg.nmesh_package": "Paquet NMesh", + "pkg.no_longer_watching": "{name} n'est plus suivi", + "pkg.not_stated_here": "non indiqué ici", + "pkg.open_on_its_own": "Ouvrir seul", + "pkg.package": "Paquet", + "pkg.pin_the_signing_key": "Épingler la clé de signature", + "pkg.pinned": "{signer_id} épinglé", + "pkg.signing_key": "Clé de signature", + "pkg.signing_keys_that_must_agree": "Clés de signature qui doivent concorder", + "pkg.that_package_is_empty": "Ce paquet est vide.", + "pkg.watching": "Suivi de {name}", + "pkg.what_it_says_about_itself": "Ce qu'il dit de lui-même", "state.connected": "Connecté", "state.disconnected": "Déconnecté", "state.offline": "Hors ligne", - "state.online": "En ligne" + "state.online": "En ligne", + "term.back_to_the_bottom": "retour en bas", + "term.back_to_the_fleet": "Retour à Fleet", + "term.fetching": "Récupération de {name}…", + "term.files": "Fichiers", + "term.folder_name": "Nom du dossier", + "term.folder_name_2": "nom du dossier", + "term.idle": "inactif", + "term.keyboard": "Clavier", + "term.link": "lien", + "term.new_folder": "Nouveau dossier", + "term.nmesh_terminal": "Terminal NMesh", + "term.no_node_has_granted_a_shell": "Aucun nœud n'a accordé de shell", + "term.nothing_to_copy": "Rien à copier", + "term.open": "Ouvrir", + "term.paste": "Coller", + "term.paste_into_the_terminal": "Coller dans le terminal", + "term.pick_a_node_first": "Choisissez d'abord un nœud.", + "term.reading": "Lecture…", + "term.remote_shell": "Shell distant", + "term.saved": "{name} enregistré ({size}).", + "term.sending": "Envoi de {name}…", + "term.terminal": "Terminal", + "term.terminal_keys": "Touches du terminal", + "term.text": "×", + "term.text_to_send": "Texte à envoyer", + "term.that_file_could_not_be_fetched": "Impossible de récupérer ce fichier.", + "term.that_node_could_not_be_reached": "Ce nœud est injoignable.", + "term.that_upload_could_not_be_sent": "Impossible d'envoyer ce téléversement.", + "term.the_terminal_uses_the_console": "Le terminal utilise le mot de passe de console de ce nœud.", + "term.this_browser_did_not_hand_over_the": "Ce navigateur n'a pas transmis le presse-papiers : collez ici puis envoyez. Rien n'est conservé.", + "term.up": "Monter", + "term.upload": "Téléverser", + "ui.back_to_this_node": "Retour à ce nœud", + "ui.copied_to_clipboard": "Copié dans le presse-papiers", + "ui.could_not_copy_select_and_copy_by": "Copie impossible — sélectionnez et copiez à la main", + "ui.dismiss": "Fermer", + "ui.is_no_longer_reachable_back_on_this": "{name} n'est plus joignable — de retour sur ce nœud", + "ui.not_answering": "ne répond pas", + "ui.nothing_matches_that": "Rien ne correspond.", + "ui.switch_to_the_dark_theme": "Passer au thème sombre", + "ui.switch_to_the_light_theme": "Passer au thème clair", + "ui.this_node_was_updated_reloading": "Ce nœud a été mis à jour — rechargement" } diff --git a/src/locales/pl.json b/src/locales/pl.json index 2e64710..1e0aa91 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -18,24 +18,860 @@ "common.send": "Wyślij", "common.unknown": "Nieznane", "config.saved": "Konfiguracja zapisana", + "console.100_rows": "100 wierszy", + "console.10_minutes": "10 minut", + "console.10_rows": "10 wierszy", + "console.1_create_request": "1 · Utwórz prośbę", + "console.1_minute": "1 minuta", + "console.20_rows": "20 wierszy", + "console.2_make_invite": "2 · Utwórz zaproszenie", + "console.3_paste_their_reply_block": "3 · Wklej ich blok odpowiedzi", + "console.40_character_content_id": "40-znakowy identyfikator treści", + "console.50_rows": "50 wierszy", + "console.6_hours_maximum": "6 godzin (maksimum)", + "console.a_few_lines_this_is_all_anybody_sees": "kilka wierszy — tylko to każdy widzi, zanim to pobierze", + "console.a_key_made_before_this_node_had": "Klucz utworzony, zanim ten węzeł miał gdzie je przechowywać, to plik, którego nic nie może nazwać — a nazwanie go identyfikatorem pozwala podpisać nim wersję lub komuś go zaoferować. Podaj ścieżkę i frazę dostępu powyżej.", + "console.a_line_is_an_authenticated_direct": "Linia to uwierzytelnione łącze bezpośrednie: bursztynowa, gdy gubi sondy, czerwona i przerywana, gdy zawodzi, podwójna, gdy MLO łączy je w wiązkę, kropkowana obok niego, gdy MLO szuka drugiego łącza. Blada przerywana linia to sesja kierowana przez pierwszy przeskok — wszystko głębiej jest dla tego węzła z założenia nieprzezroczyste.", + "console.a_membership_is_issued_for_a_year": "Członkostwo jest wydawane na rok i odnawiane automatycznie miesiąc przed wygaśnięciem, przez węzeł, który przyjął ten węzeł. To jedyna awaria zaufania, którą węzeł widzi z wyprzedzeniem: gdy łańcuch wygaśnie, nic go nie uwierzytelni, a jedyną drogą powrotu jest nowe zaproszenie.", + "console.a_name_and_at_least_one_file_are": "Wymagana jest nazwa i co najmniej jeden plik.", + "console.a_name_and_files_are_required": "Wymagana jest nazwa i pliki.", + "console.a_name_you_choose_beside_the_id_you": "Nazwa, którą wybierasz, obok identyfikatora, którego nie wybierasz", + "console.a_node_drops_anything_it_cannot": "Węzeł odrzuca wszystko, czego nie może zweryfikować, i o to chodzi — ale sieć kratowa, która się nie łączy, wygląda z zewnątrz tak samo jak sieć, do której nikt nie dzwoni. Oto testy, które zawiodły, od najnowszych. Nic tu samo w sobie nie jest błędem: obcy pukający do zamkniętych drzwi też tu trafia.", + "console.a_node_id_is_required": "Wymagany jest identyfikator węzła.", + "console.a_passphrase_to_keep_it_under": "Fraza dostępu, pod którą go przechowywać", + "console.a_password_is_needed": "Wymagane jest hasło.", + "console.a_publisher_key_is_the_safer_choice": "Klucz wydawcy to bezpieczniejszy wybór: jest odblokowany na ten jeden podpis. Tożsamość węzła jest już odblokowana i zawsze będzie.", + "console.accept_failed": "Przyjęcie nie powiodło się", + "console.accept_someone": "Przyjmij kogoś", + "console.accepted_for": "Akceptowany do", + "console.accusers": "Zgłaszający", + "console.add_a_node": "Dodaj węzeł", + "console.address_preference_updated": "Zaktualizowano preferencję adresu", + "console.addressing": "Adresowanie", + "console.advanced": "Zaawansowane", + "console.after_a_restart": "Po restarcie", + "console.agreeing": "Zgodne", + "console.alice": "alice", + "console.all": "Wszystkie", + "console.already_have_a_key_file": "Masz już plik klucza?", + "console.also_ask_the_network_for_this_exact": "Zapytaj też sieć o dokładnie tę nazwę", + "console.always_on_no": "Zawsze włączone: nie", + "console.always_on_yes": "Zawsze włączone: tak", + "console.an_address_and_an_invite_code_are": "Wymagany jest adres i kod zaproszenia.", + "console.an_app_needs": "Aplikacja potrzebuje", + "console.anchors_and_taking_a_membership_back": "Kotwice i cofanie członkostwa", + "console.anchors_this_node_trusts": "Kotwice, którym ten węzeł ufa", + "console.any_app": "dowolna aplikacja", + "console.app": "Aplikacja", + "console.app_name": "Nazwa aplikacji", + "console.app_pages": "Strony aplikacji", + "console.app_views": "Widoki aplikacji", + "console.applications": "Aplikacje", + "console.applies_now": "działa od razu", + "console.applies_now_2": "Działa od razu", + "console.apply": "Zastosuj", + "console.apply_now_at_restart": "{live} działa od razu · {live2} po restarcie", + "console.apply_size": "Zastosuj rozmiar", + "console.applying": "Stosowanie…", + "console.apps": "Aplikacje", + "console.apps_signed_by_it": "aplikacje przez niego podpisane", + "console.ask_the_network": "Zapytaj sieć", + "console.ask_the_network_not_just_what_this": "Zapytaj sieć, nie tylko o to, co ten węzeł już ma", + "console.asked": "zażądano", + "console.asking_github": "Pytanie GitHub…", + "console.authenticated_and_open_a_node": "Uwierzytelnione i otwarte. Węzeł z kilkoma łączami rozwija się na nie", + "console.auto_refresh": "Automatyczne odświeżanie", + "console.automatic": "Automatycznie", + "console.balance": "Równowaga", + "console.being_in_the_network_is_not_being": "Bycie w sieci to nie bycie zaufanym. Każda aplikacja ma własne pojęcie nadmiaru — tylko Chat wie, co to za dużo wiadomości — i zgłasza nadawcę; ten węzeł decyduje, co z tych zgłoszeń wynika. Węzeł, który przekroczy pierwszy próg, przestaje być obsługiwany, po cichu: nic mu nie mówi się o tym, więc dowiaduje się możliwie najpóźniej. Skargi wygasają same, więc węzeł, który raz źle się zachował, a potem zachowywał się dobrze, wraca bez niczyjej interwencji.", + "console.beyond_this_node": "Poza tym węzłem", + "console.beyond_this_striping_is_not_worth_it": "Powyżej tej wartości rozkładanie ruchu nie opłaca się temu węzłowi.", + "console.both_the_current_and_the_new": "Potrzebne są zarówno obecne, jak i nowe hasło.", + "console.built_in_applications_on_this_node": "Wbudowane aplikacje na tym węźle i sposób znalezienia aplikacji w sieci kratowej. Nie ma katalogu do przeglądania: pytasz o nazwę i wracają podpisane rekordy.", + "console.bytes": "Bajty", + "console.certificate_unavailable": "Certyfikat niedostępny", + "console.change_password": "Zmień hasło", + "console.changing": "Zmiana…", + "console.check_for_updates": "Sprawdź aktualizacje", + "console.choose_a_passphrase_first": "Najpierw wybierz frazę dostępu", + "console.choose_a_passphrase_to_keep_it_under": "Wybierz frazę dostępu, pod którą go przechowywać", + "console.choosing_between_a_node_s_addresses": "Wybór między adresami węzła", + "console.clear": "Wyczyść", + "console.clear_all": "Wyczyść wszystko", + "console.clear_view": "Wyczyść widok", + "console.coming_soon_the_node_moves_along_the": "Wkrótce: węzeł sam przesuwa się po pasku, zależnie od tego, co robi — na baterii lub z zasilania, zajęty lub bezczynny. Ty dajesz mu tendencję, a on trzyma się w jej granicach.", + "console.command_palette": "Paleta poleceń", + "console.configuration": "Konfiguracja", + "console.configuration_file": "Plik konfiguracji", + "console.confirm": "Potwierdź", + "console.confirm_reachability": "Potwierdź osiągalność", + "console.connect": "Połącz", + "console.connect_failed": "Połączenie nie powiodło się", + "console.connect_two_nodes_by_hand": "Połącz dwa węzły ręcznie", + "console.connected_apps": "Połączone aplikacje", + "console.connected_nodes_click_to_open_the": "Połączone węzły — kliknij, by otworzyć pełną mapę", + "console.connecting": "Łączenie…", + "console.connecting_over_the_mesh": "Łączenie przez sieć kratową…", + "console.connector_token": "Token łącznika", + "console.console": "Konsola", + "console.console_is_not_reachable": "Konsola jest nieosiągalna", + "console.console_password": "Hasło konsoli", + "console.console_password_changed": "Hasło konsoli zmienione", + "console.console_sections": "Sekcje konsoli", + "console.contains": "Zawiera", + "console.content_addressed_transfer": "Transfer adresowany treścią", + "console.content_id": "Identyfikator treści", + "console.content_published": "Treść opublikowana.", + "console.control_action_failed": "Działanie sterujące nie powiodło się", + "console.could_not_change_the_password": "Nie udało się zmienić hasła", + "console.could_not_check_for_updates": "Nie udało się sprawdzić aktualizacji.", + "console.could_not_create_a_request": "Nie udało się utworzyć prośby", + "console.could_not_create_an_invitation": "Nie udało się utworzyć zaproszenia", + "console.could_not_read_the_configuration": "Nie udało się odczytać konfiguracji.", + "console.could_not_read_the_keys_held_here": "Nie udało się odczytać kluczy przechowywanych tutaj.", + "console.could_not_read_what_this_node_can": "Nie udało się odczytać, do czego ten węzeł może się zaktualizować.", + "console.could_not_save_that": "Nie udało się tego zapisać", + "console.could_not_save_the_balance": "Nie udało się zapisać równowagi", + "console.counts_towards_a_quorum": "Liczy się do kworum", + "console.create_invitation": "Utwórz zaproszenie", + "console.create_one": "Utwórz", + "console.creating": "Tworzenie…", + "console.current_password": "Obecne hasło", + "console.dark": "Ciemny", + "console.decide_by_screen_size": "Decyduj według rozmiaru ekranu", + "console.diagnostics": "Diagnostyka", + "console.does": "Robi", + "console.does_not_apply": "nie dotyczy", + "console.done": "Gotowe", + "console.download": "Pobierz", + "console.downloading_and_installing": "Pobieranie i instalowanie {update_offer}…", + "console.drag_to_move_pinch_or_scroll_to_zoom": "Przeciągnij, by przesunąć · uszczypnij lub przewiń, by powiększyć", + "console.drop_share_that_benches_a_link": "Udział utraty odsuwający łącze", + "console.drop_what_was_reported": "Usuń zgłoszone", + "console.dropped_whatever_is_still_true_will": "Usunięto — to, co nadal jest prawdą, zostanie zgłoszone ponownie", + "console.dynamic_addressing_off": "Adresowanie dynamiczne: wyłączone", + "console.dynamic_addressing_on": "Adresowanie dynamiczne: włączone", + "console.each_key_and_what_its_signature_is": "Każdy klucz i do czego jego podpis jest akceptowany", + "console.endpoint": "Punkt końcowy", + "console.energy_and_performance": "Energia i wydajność", + "console.energy_bar": "pasek energii", + "console.enter_a_content_id": "Podaj identyfikator treści.", + "console.enter_a_listener_uri": "Podaj URI nasłuchu", + "console.enter_a_valid_udp_port": "Podaj prawidłowy port UDP", + "console.errors_only": "tylko błędy", + "console.every_background_job_this_node_keeps": "Każde zadanie w tle utrzymywane przez ten węzeł i to, co je budzi", + "console.every_number_and_every_setting": "Każda liczba i każde ustawienie, zamiast decyzji, które z nich wynikają. Zmienia tylko to, co pokazuje ta przeglądarka — węzeł zachowuje się tak samo w obu przypadkach.", + "console.every_option_this_node_reads_from": "Każda opcja, którą ten węzeł czyta ze swojego pliku", + "console.everything": "Wszystko", + "console.everything_that_changes_how_this": "Wszystko, co zmienia sposób działania tego węzła. Oddzielone od stanu na żywo, by nic tu nie było o jedno kliknięcie od wykresu, który tylko oglądałeś.", + "console.expand": "Rozwiń", + "console.expert_mode": "Tryb eksperta", + "console.expert_mode_shows_every_setting_in": "Tryb eksperta pokazuje każde ustawienie z pliku konfiguracji węzła, także te, z których składa się ten pasek.", + "console.failed": "{action} nie powiodło się", + "console.fastest_ever": "Najszybciej, w ogóle", + "console.fastest_measured": "Najszybsze zmierzone", + "console.fastest_when_idle": "Najszybciej w bezczynności", + "console.fetch": "Pobierz", + "console.fetch_failed": "Pobieranie nie powiodło się", + "console.fetched": "Pobrano {name} {version}.", + "console.fetched_from_the_mesh_and_unpacked": "Pobrane z sieci kratowej i rozpakowane na tym węźle", + "console.fetching_content": "Pobieranie treści…", + "console.find_a_node_by_name": "Znajdź węzeł po nazwie", + "console.find_a_package_by_name_or_by_the": "Znajdź pakiet po nazwie lub po węźle, który go publikuje", + "console.find_an_app": "Znajdź aplikację", + "console.fit_the_whole_mesh": "Dopasuj całą sieć kratową", + "console.follow_the_system": "Zgodnie z systemem", + "console.following_a_link_into_chat_or_fleet": "Przejście z łącza do Chat lub Fleet — na przykład wysłanie wiadomości do węzła z jego szczegółów. Okno zachowuje to, co robiłeś, w zasięgu wzroku; telefon i tak dostaje kartę.", + "console.for_nodes_that_cannot_see_each_other": "Dla węzłów, które jeszcze się nie widzą: trzy bloki tekstu, przenoszone dowolnym kanałem, któremu już ufasz.", + "console.forget_this_app": "Zapomnij tę aplikację", + "console.from": "Od", + "console.from_the_mesh": "Z sieci kratowej", + "console.from_the_project": "Z projektu", + "console.further_apart_than_this_and_they_are": "Przy większej różnicy nie są łączone w wiązkę: rozkładanie ruchu na szybkie i wolne łącze dostarcza połowę pakietów z opóźnieniem.", + "console.generate_invite_code": "Generuj kod zaproszenia", + "console.getting_an_update": "Pobieranie aktualizacji", + "console.give_the_path_to_the_key_file": "Podaj ścieżkę do pliku klucza", + "console.giving_one": "Przekazanie klucza", + "console.handing_one_to_somebody_else_and": "Przekazanie klucza komuś i przyjęcie klucza, który ktoś oferuje", + "console.happening_now": "Dzieje się teraz", + "console.health_throughput_and_the_links_this": "Kondycja, przepustowość i łącza uwierzytelnione przez ten węzeł.", + "console.holding": "przechowuje", + "console.host_port": "host:port", + "console.how_much_this_node_may_spend_to_stay": "Ile ten węzeł może wydać, by pozostać szybkim", + "console.how_often_it_goes_checking_and": "Jak często sprawdza i czy robi to w bezczynności", + "console.how_often_the_changing_numbers_are": "Jak często zmieniające się liczby są odczytywane ponownie, w sekundach (0 wyłącza)", + "console.how_the_balance_is_chosen": "Jak wybierana jest równowaga", + "console.how_this_node_trades_energy_for": "To, jak ten węzeł wymienia energię na szybkość, jest jednym ustawieniem, w Ustawienia → Konfiguracja. Tryb eksperta pokazuje tutaj liczby, z których się składa.", + "console.id": "Id", + "console.identity": "Tożsamość", + "console.idle": "Bezczynne", + "console.in_a_new_tab": "W nowej karcie", + "console.in_a_separate_window": "W osobnym oknie", + "console.inbound_and_outbound_bytes_per": "Bajty przychodzące i wychodzące na sekundę", + "console.info_and_above": "info i wyżej", + "console.install": "Zainstaluj", + "console.install_2": "Zainstaluj {latest}", + "console.install_automatically": "Instaluj automatycznie", + "console.installed": "Zainstalowane", + "console.internal_api": "Wewnętrzne API", + "console.into_which_node_s_network": "Do sieci którego węzła", + "console.invitation": "Zaproszenie", + "console.invite_a_node": "Zaproś węzeł", + "console.invite_code": "Kod zaproszenia", + "console.invite_codes_and_certificates": "Kody zaproszeń i certyfikaty", + "console.invite_generation_failed": "Generowanie zaproszenia nie powiodło się", + "console.is": "to", + "console.is_available_but_this_install_cannot": "{latest} jest dostępna{where}, ale ta instalacja nie może sama się zaktualizować: {blocked}", + "console.is_available_you_run": "{latest} jest dostępna{where} (działa {current}).", + "console.it_listens_beyond_this_machine": "Nasłuchuje poza tą maszyną. Każdy, kto dotrze do tego adresu i ma token, może zrobić wszystko, co nadano aplikacji MCP.", + "console.it_never_leaves_this_machine_lose_it": "Nigdy nie opuszcza tej maszyny. Zgubisz ją i klucz przepada — nie ma odzyskiwania, przez co skopiowany plik jest bezużyteczny.", + "console.its_passphrase": "Jego fraza dostępu", + "console.job": "Zadanie", + "console.join": "Dołącz", + "console.join_or_invite": "Dołącz lub zaproś", + "console.join_someone": "Dołącz do kogoś", + "console.joined_node": "Dołączono do {node}.", + "console.joined_the_network": "Dołączono do sieci", + "console.joined_through_a_relay": "Dołączono przez przekaźnik.", + "console.joining_the_handshake_is_post": "Dołączanie — uzgadnianie jest postkwantowe, daj mu chwilę…", + "console.jump_to_a_section_or_run_an_action": "Przejdź do sekcji lub uruchom działanie…", + "console.key": "Klucz", + "console.key_compromised": "Klucz skompromitowany", + "console.key_to_share": "Klucz do udostępnienia", + "console.keys_are_pinned_from_the_package": "Klucze przypina się z pakietu, który podpisały, jednym naciśnięciem i potwierdzeniem: klucz przychodzi w rekordzie i jest sprawdzany względem złożonego nim podpisu, więc nie ma czego skądkolwiek kopiować ani w czym się pomylić.", + "console.keys_this_node_can_sign_a_release": "Klucze, którymi ten węzeł może podpisać wersję", + "console.last": "Ostatnio", + "console.left_the_network": "Opuścił sieć", + "console.level": "Poziom", + "console.light": "Jasny", + "console.link": "Łącze", + "console.links": "Łącza", + "console.links_open_in_a_new_tab": "Linki będą otwierane w nowej karcie", + "console.links_open_in_a_separate_window": "Linki będą otwierane w osobnym oknie", + "console.links_open_to_suit_the_screen": "Linki będą otwierane odpowiednio do ekranu", + "console.links_that_reached_this_node_and": "Łącza, które dotarły do tego węzła i zostały odrzucone, oraz dlaczego", + "console.listen_elsewhere": "Nasłuchuj gdzie indziej", + "console.listener_added": "Nasłuch dodany", + "console.listener_removed": "Nasłuch usunięty", + "console.listener_uri": "URI nasłuchu", + "console.listening_on": "Nasłuchuje na", + "console.live": "Na żywo", + "console.load_older": "Wczytaj starsze", + "console.local_management_plane": "Lokalna płaszczyzna zarządzania", + "console.log_dropped": "wypchnięto, aby zrobić miejsce: {older}", + "console.log_held": "Zachowywane dla: {who}. Przechowywane: {lines}, {used} z {size} MB", + "console.log_ratio": "(skompresowano {ratio}×)", + "console.log_stop_not_yours": "Nie możesz tego tu zatrzymać: zatrzyma się, gdy zakończy {who}.", + "console.looking_for_a_relay_that_can_reach": "Szukanie przekaźnika, który może do nich dotrzeć — patrz Sieć → Peery.", + "console.loss": "Utrata", + "console.made_here": "utworzony tutaj", + "console.make_a_key": "Utwórz klucz", + "console.manage": "Zarządzaj {name}", + "console.managing": "Zarządzanie: {name}", + "console.manual": "Ręcznie", + "console.mcp_server": "Serwer MCP", + "console.mcp_tool": "Narzędzie MCP", + "console.measures": "pomiary", + "console.medium": "medium", + "console.membership": "Członkostwo", + "console.mesh": "Sieć kratowa", + "console.mesh_map": "Mapa sieci kratowej", + "console.mesh_map_draggable_and_zoomable": "Mapa sieci kratowej, przeciągana i skalowalna", + "console.message": "Wiadomość", + "console.mlo_ready": "Gotowe na MLO", + "console.more": "Więcej", + "console.multi_link_operation": "Praca wielołączowa", + "console.multi_link_operation_updated": "Zaktualizowano pracę wielołączową", + "console.name_the_node_that_receives_it": "Podaj węzeł, który go odbierze", + "console.network": "Sieć", + "console.network_views": "Widoki sieci", + "console.neutral": "Neutralnie", + "console.new_password": "Nowe hasło", + "console.new_token": "Nowy token", + "console.nm": "NM", + "console.nmesh": "nmesh", + "console.nmesh_console": "Konsola NMesh", + "console.nmesh_packet_bytes_excluding": "Bajty pakietów NMesh, bez narzutu transportu", + "console.no": "nie", + "console.no_camera_available_it_needs_your": "Brak dostępnej kamery. Potrzebna jest Twoja zgoda oraz bezpieczna strona (HTTPS lub localhost).", + "console.no_key_pinned_this_node_installs": "Brak przypiętego klucza — ten węzeł nie instaluje niczego z sieci kratowej samodzielnie. Znajdź pakiet powyżej i przypnij klucz, który go podpisał.", + "console.no_links_yet": "brak łączy", + "console.no_node_is_reached_over_two_mlo": "Żaden węzeł nie jest teraz osiągany przez dwa łącza gotowe na MLO.", + "console.no_other_address_on_an_mlo_ready": "— brak innego adresu w medium gotowym na MLO", + "console.no_payload_is_ever_recorded": "Żadna zawartość nie jest nigdy zapisywana", + "console.no_publisher_key_here_this_node": "Brak klucza wydawcy — ten węzeł podpisuje wersje własną tożsamością.", + "console.no_publisher_key_on_this_node": "brak klucza wydawcy na tym węźle", + "console.node_being_managed": "Zarządzany węzeł", + "console.node_controls": "Sterowanie węzłem", + "console.node_peers_app": "node, peers, app:…", + "console.nodes_linked_directly_and_nodes": "Węzły połączone bezpośrednio i węzły osiągane przez nie", + "console.nodes_under_suspicion": "Węzły pod podejrzeniem", + "console.none_yet_this_node_trusts_only": "Brak — ten węzeł ufa tylko sobie.", + "console.not_recording_nothing_is_kept_until": "Nie nagrywa. Nic nie jest przechowywane, dopóki ktoś tego nie uruchomi — tutaj, rozpoczynając ślad, lub śledząc go z innej konsoli.", + "console.not_restarting": "Brak restartu", + "console.nothing_held_against_that_node": "Nic nie zarzucono temu węzłowi.", + "console.nothing_is_kept_until_it_is_started": "Nic nie jest przechowywane, dopóki nie zostanie uruchomione, a to, co zachowano, jest usuwane, gdy ostatni przechowujący przestanie: operator tutaj, działający ślad lub konsola śledząca ten dziennik skądinąd. Żyje tylko w pamięci, skompresowane, i jest ograniczone rozmiarem poniżej.", + "console.nothing_on_the_mesh_changes_it_can": "Nic w sieci kratowej się nie zmienia — można ją znaleźć i zainstalować ponownie.", + "console.nothing_registered_the_node_is_not": "Nic nie zarejestrowano — węzeł nie jest uruchomiony.", + "console.nothing_to_download_yet": "Nie ma jeszcze nic do pobrania", + "console.noticed_not_judged": "Zauważone, nieocenione", + "console.off": "Wyłączone", + "console.off_2": "wyłączone", + "console.offer_refused": "Oferta odrzucona", + "console.offer_this_key": "Zaoferuj ten klucz", + "console.oldest_at_the_top_follows_the_end_as": "Najstarsze na górze, podąża za końcem w miarę zapisu wierszy", + "console.one_block_per_medium_what_is_bound": "Jeden blok na medium: co jest związane, co przenosi, co przyjmuje", + "console.one_invitation_both_ways_round": "Jedno zaproszenie, w obie strony", + "console.one_link_short_of_a_bundle": "Brakuje jednego łącza do wiązki:", + "console.one_short_string_where_to_connect_a": "Jeden krótki ciąg: gdzie się połączyć, droga przez kogoś innego, gdy to zawiedzie, oraz kod jednorazowy", + "console.open_console": "Otwórz konsolę", + "console.opening_another_app": "Otwieranie innej aplikacji", + "console.other_sessions_signed_out": { + "one": "Wylogowano {count} inną sesję.", + "few": "Wylogowano {count} inne sesje.", + "many": "Wylogowano {count} innych sesji.", + "other": "Wylogowano {count} innej sesji." + }, + "console.overview": "Przegląd", + "console.package_name": "Nazwa pakietu", + "console.packages_this_node_checks_on_and": "Pakiety, które ten węzeł sprawdza, i to, co może zainstalować samodzielnie", + "console.packets": "Pakiety", + "console.packets_spread_over_two_links_arrive": "Pakiety rozłożone na dwa łącza docierają w innej kolejności, z różnicą około dwukrotności zmierzonego przesunięcia. Aplikacje muszą się tego spodziewać, z tym ustawieniem lub bez: sieć kratowa kieruje ruch, a odpowiedź kierowana nigdy nie musiała dotrzeć po poprzedniej.", + "console.passes": "Przebiegi", + "console.passphrase": "Fraza dostępu", + "console.password_changed": "Hasło zmienione.", + "console.past_this_the_link_stops_being": "Powyżej tej wartości łącze przestaje być wiarygodne. Utrzymywane poniżej limitu czasu samego medium, niezależnie od uzgodnień.", + "console.paste_a_certificate": "Wklej certyfikat.", + "console.paste_a_request_first": "Najpierw wklej prośbę.", + "console.paste_a_root_certificate_to_trust": "Wklej certyfikat główny, któremu zaufać", + "console.paste_or_scan_an_invitation": "Wklej lub zeskanuj zaproszenie…", + "console.paste_or_scan_an_invitation_first": "Najpierw wklej lub zeskanuj zaproszenie.", + "console.paste_the_reply_first": "Najpierw wklej odpowiedź.", + "console.paste_their_request_block": "Wklej ich blok prośby", + "console.path_on_this_machine": "Ścieżka na tej maszynie", + "console.path_to_publisher_key": "/path/to/publisher.key", + "console.pause": "Wstrzymaj", + "console.peers": "Peery", + "console.percent_of_its_last_50_probes_it": "Procent z jego ostatnich 50 sond. Wraca przy połowie tej wartości, więc łącze na progu nie przełącza się tam i z powrotem przy jednej sondzie.", + "console.performance": "Wydajność", + "console.permissions": "Uprawnienia", + "console.permissions_2": "{name} — uprawnienia", + "console.ping_active_nodes": "Pinguj aktywne węzły", + "console.ping_failed": "Ping nie powiódł się", + "console.point_the_camera_at_the_ticket_s_qr": "Skieruj kamerę na kod QR biletu.", + "console.port": "Port", + "console.preferences_about_this_screen_kept": "Preferencje dotyczące tego ekranu, przechowywane tutaj i nigdzie indziej", + "console.preferred_medium": "Preferowane medium", + "console.probe_failed": "Sonda nie powiodła się", + "console.problems_in_the_file": "Problemy w pliku: {problems}", + "console.protocol_trace": "Ślad protokołu", + "console.publish": "Opublikuj", + "console.publish_a_signed_release": "Opublikuj podpisaną wersję", + "console.publish_content": "Opublikuj treść", + "console.publish_this_node_s_code": "Opublikuj kod tego węzła", + "console.published": "Opublikowano {name} {version}", + "console.published_and_filed_under_its_name": "Opublikowano i zapisano pod jego nazwą — każdy może to teraz znaleźć, wpisując ją.", + "console.publisher_keys_held_here": "Klucze wydawcy przechowywane tutaj", + "console.publishing_did_not_finish_the_node": "Publikowanie się nie zakończyło — węzeł może nadal pracować. Sprawdź ponownie Ustawienia → Aktualizacje za minutę.", + "console.publishing_under_a_key": "Publikowanie pod kluczem", + "console.rate": "Tempo", + "console.raw_dht_package_exchange_not_the": "Surowa wymiana pakietów DHT — nie podpisany sklep z aplikacjami", + "console.re_check_network": "Sprawdź sieć ponownie", + "console.reachability": "Osiągalność", + "console.reading_files": "Odczyt plików…", + "console.reading_hashing_and_signing_this_can": "Odczyt, haszowanie i podpisywanie — w obciążonej sieci kratowej może to chwilę potrwać…", + "console.reading_node_status": "Odczyt stanu węzła…", + "console.reason": "Powód", + "console.receiving_node": "Węzeł odbierający", + "console.recording": "Nagrywanie", + "console.refresh_now": "Odśwież teraz", + "console.refused": "odrzucono", + "console.refused_handshakes": "Odrzucone uzgadniania", + "console.release_notes": "Informacje o wersji", + "console.reload_from_file": "Wczytaj ponownie z pliku", + "console.remove_the_name": "Usuń nazwę", + "console.reordering": "Zmiana kolejności", + "console.repeat_new_password": "Powtórz nowe hasło", + "console.restart_this_node": "Zrestartuj ten węzeł", + "console.restarting": "Restart: {who}", + "console.revoke": "Cofnij", + "console.ring_size_in_megabytes": "Rozmiar bufora w megabajtach", + "console.round_trip": "Czas obiegu", + "console.rows_per_page": "Wierszy na stronę", + "console.rtt": "RTT", + "console.said_by": "powiedział {from}", + "console.same": "tak samo", + "console.save_configuration": "Zapisz konfigurację", + "console.save_energy": "Oszczędzaj energię", + "console.save_failed": "Zapis nie powiódł się", + "console.save_name": "Zapisz nazwę", + "console.saves_energy": "Oszczędza energię", + "console.saving": "Zapisywanie…", + "console.says_which_version_it_runs": "Podaje, jaką wersję uruchamia", + "console.scan_with_camera": "Skanuj kamerą", + "console.score": "Wynik", + "console.search_active_nodes": "Szukaj aktywnych węzłów", + "console.search_commands": "Szukaj i polecenia", + "console.search_endpoints": "Szukaj punktów końcowych", + "console.search_endpoints_2": "Szukaj punktów końcowych…", + "console.search_installed": "Szukaj zainstalowanych…", + "console.search_installed_apps": "Szukaj zainstalowanych aplikacji", + "console.search_known_nodes": "Szukaj znanych węzłów", + "console.search_name_id_address_transport": "Szukaj nazwy, id, adresu, transportu…", + "console.search_name_id_or_address": "Szukaj nazwy, id lub adresu…", + "console.seconds": "Sekundy", + "console.seconds_to_record": "Sekundy nagrywania", + "console.security": "Bezpieczeństwo", + "console.seen": "Widziany", + "console.send_this_block_to_the_other_side": "Wyślij ten blok drugiej stronie.", + "console.send_this_invite_block_back": "Odeślij ten blok zaproszenia.", + "console.send_this_invite_block_back_2": "Odeślij ten blok zaproszenia", + "console.send_this_request_block": "Wyślij ten blok prośby", + "console.sent_probe_s": "Wysłano sond: {sent}", + "console.settings": "Ustawienia", + "console.settings_applied": "Ustawienia {scheme} zastosowane", + "console.settings_apply_to_the_running_node": "Ustawienia dotyczą działającego węzła od razu, chyba że któreś mówi inaczej, a potem trafiają do pliku konfiguracji, by przetrwać restart. Wartość odrzucona przez transport nigdy nie trafia do pliku.", + "console.settings_sections": "Sekcje ustawień", + "console.sharing_a_key": "Udostępnianie klucza", + "console.show_our_root_certificate": "Pokaż nasz certyfikat główny", + "console.show_the_client_configuration": "Pokaż konfigurację klienta", + "console.show_this_node_s_details": "Pokaż szczegóły tego węzła", + "console.sign_out": "Wyloguj", + "console.sign_what_is_installed_here_and": "Podpisz to, co jest tu zainstalowane, i zaoferuj sieci kratowej", + "console.sign_with": "Podpisz za pomocą", + "console.signed_by": "Podpisane przez", + "console.signing_keys_you_accept": "Klucze podpisu, które akceptujesz", + "console.size_mb": "Rozmiar, MB", + "console.sketchpad": "notatnik", + "console.skew_two_links_may_differ_by": "Przesunięcie, jakim mogą się różnić dwa łącza", + "console.skip_to_content": "Przejdź do treści", + "console.slowest_still_fast": "Najwolniej, wciąż „szybkie”", + "console.slowest_when_idle": "Najwolniej w bezczynności", + "console.software": "Oprogramowanie", + "console.soon": "Wkrótce", + "console.source": "Źródło", + "console.standing": "Status", + "console.start_recording": "Rozpocznij nagrywanie", + "console.stop": "Zatrzymaj", + "console.stop_camera": "Zatrzymaj kamerę", + "console.superseded": "Zastąpiony", + "console.sweep": "Przegląd", + "console.switch_theme": "Przełącz motyw", + "console.take_back_a_membership": "Cofnij członkostwo", + "console.take_it_in": "Wczytaj", + "console.team": "zespół", + "console.tendency": "Tendencja", + "console.text_or_a_field_value": "tekst lub wartość pola", + "console.that_could_not_be_dropped": "Nie udało się tego usunąć", + "console.that_step_could_not_be_applied": "Nie udało się zastosować tego kroku", + "console.the_certificate_chain_this_node": "Łańcuch certyfikatów, który ten węzeł okazuje, by udowodnić przynależność", + "console.the_console_stopped_answering_while": "Konsola przestała odpowiadać podczas dołączania. Sprawdź Sieć → Peery, zanim spróbujesz ponownie — dołączenie mogło się udać.", + "console.the_fastest_this_node_will_be_probed": "Najszybciej, jak ten węzeł będzie sondowany, z rozkładaniem lub bez.", + "console.the_last_things_this_node_did_or_was": "Ostatnie rzeczy, które ten węzeł zrobił lub o których został poinformowany", + "console.the_mcp_app_is_off_enable_it_on_the": "Aplikacja MCP jest wyłączona. Włącz ją w karcie Zainstalowane, a potem nadaj jej, co może odczytywać i robić — jej narzędzia są z tego generowane.", + "console.the_node_did_not_answer": "Węzeł nie odpowiedział.", + "console.the_only_credential_between_the": "Jedyne poświadczenie między siecią a elementami sterującymi tego węzła", + "console.the_other_direction_nothing_here": "Druga strona. Nic tu nie dodaje węzła — to dwa sposoby wycofania zaufania i nie są tym samym działaniem.", + "console.the_password_is_checked_on_this": "Hasło jest sprawdzane na tej maszynie i nigdy jej nie opuszcza. Chroni każde działanie zarządzające, także te, które mogą zrestartować lub zaktualizować węzeł.", + "console.the_primitives": "Elementy podstawowe", + "console.the_routing_table_reachable_not": "Tablica routingu — osiągalne, niekoniecznie połączone", + "console.the_secret_is_sealed_to_a_key_the": "Sekret jest zapieczętowany kluczem, który druga strona generuje przy przyjęciu, więc nie może wyruszyć, zanim ktoś zgodzi się go odebrać, i tylko ta strona może go otworzyć. Wybiera własną frazę dostępu — nigdy Twoją.", + "console.the_trace_could_not_be_read": "Nie udało się odczytać śladu", + "console.the_two_new_passwords_do_not_match": "Oba nowe hasła nie są takie same.", + "console.theme": "Motyw", + "console.theme_updated": "Motyw zaktualizowany", + "console.there_is_no_key_to_share": "Nie ma klucza do udostępnienia", + "console.these_are_not_settings_of_the_node": "To nie są ustawienia węzła: żyją w tej przeglądarce, więc inna maszyna zalogowana do tej samej konsoli ma własne. Nic stąd nie jest nigdzie wysyłane.", + "console.these_settings_were_tuned_by_hand": "Te ustawienia dostrojono ręcznie i nie pasują do żadnego kroku. Przesunięcie paska zastępuje je wybranym krokiem.", + "console.they": "oni", + "console.things_this_node_saw_and_will_not": "Rzeczy, które ten węzeł zauważył i nie będzie o nich rozstrzygać, bo uczciwym wyjaśnieniem jest zwykle to, że to Ty: peer, którego ruch nagle wygląda jak inna maszyna (zaktualizowano go), albo członek sieci, który przyjął naraz znacznie więcej węzłów niż kiedykolwiek (wdrożono ich kilka). Nie odróżni żadnego z tych przypadków od skradzionego klucza ani wygenerowanego tłumu, więc to mówi zamiast działać. Nic tu nie jest wytykane nikomu: potwierdzenie sprawia tylko, że to, co robią teraz, staje się nową normą.", + "console.this_app_connects_to_with_the_token": "Ta aplikacja łączy się z {host}:{port} za pomocą poniższego tokenu. Dowodzi on, że aplikacja jest tą aplikacją — nie umieszczaj go w niczym udostępnianym.", + "console.this_browser": "Ta przeglądarka", + "console.this_browser_cannot_scan_qr_codes": "Ta przeglądarka nie potrafi skanować kodów QR. Wklej zamiast tego bilet.", + "console.this_field_takes_any_of_them_an": "To pole przyjmuje każde z nich — zaproszenie lub blok wklejony ze starszego węzła. Nie trzeba wybierać.", + "console.this_medium_declares_no_setting": "To medium nie deklaruje żadnego ustawienia.", + "console.this_node": "Ten węzeł", + "console.this_node_could_not_build": "Ten węzeł nie mógł zbudować: {names}", + "console.this_node_has_no_configuration_file": "Ten węzeł nie ma pliku konfiguracji: krok działa od razu i jest zapominany po restarcie.", + "console.this_node_s": "tego węzła", + "console.this_node_s_identity_key": "Klucz tożsamości tego węzła", + "console.this_project_s_published_releases_on": "Opublikowane wersje tego projektu na GitHub", + "console.throughput": "Przepustowość", + "console.ticket_scanned_check_it_then_press": "Bilet zeskanowany — sprawdź go, potem naciśnij Dołącz.", + "console.times": "Razy", + "console.tools_right_now": "Narzędzia w tej chwili", + "console.topology": "Topologia", + "console.trace_command_failed": "Polecenie śladu nie powiodło się", + "console.transport": "Transport", + "console.transports": "Transporty", + "console.trust_already_given": "Zaufanie już nadane", + "console.trust_certificate": "Zaufaj certyfikatowi", + "console.two_channels_can_replace_that_and": "Mogą to zastąpić dwa kanały i są niezależne", + "console.two_links_to_one_node_carrying_its": "Dwa łącza do jednego węzła, niosące jego ruch razem", + "console.type_a_name_the_mesh_answers_nothing": "Wpisz nazwę — sieć kratowa odpowiada, nic nie jest wypisane", + "console.type_its_passphrase_in_the_field": "Wpisz jego frazę dostępu w polu powyżej", + "console.type_the_key_s_passphrase": "Wpisz frazę dostępu klucza", + "console.udp_port": "Port UDP", + "console.unavailable": "niedostępne", + "console.unlock_this_node": "Odblokuj ten węzeł", + "console.unnamed": "bez nazwy", + "console.unspecified": "Nieokreślony", + "console.up_to_date_running_latest_is": "Aktualne — działa {current}, najnowsza to {latest}{where}.", + "console.update_failed": "Aktualizacja nie powiodła się.", + "console.updates": "Aktualizacje", + "console.use_one": "Użyj", + "console.valid_for": "Ważne przez", + "console.valid_for_single_use": "Ważne przez {duration}. Jednorazowe — traktuj jak hasło.", + "console.version": "Wersja", + "console.via": "przez {via}", + "console.wakes_on": "Budzi się na", + "console.warnings_and_errors": "ostrzeżenia i błędy", + "console.watch_for_new_versions": "Obserwuj nowe wersje", + "console.what_changed": "co się zmieniło", + "console.what_is_kept_is_dropped_recording": "To, co przechowano, jest usuwane; nagrywanie trwa.", + "console.what_is_running": "Co działa", + "console.what_it_does": "Co robi", + "console.what_it_is": "Czym jest", + "console.what_the_applications_and_the_core": "Co zgłosiły aplikacje i rdzeń", + "console.what_the_lines_mean": "Co oznaczają linie", + "console.what_this_key_is_for": "do czego służy ten klucz", + "console.what_this_node_actually_sends_and": "Co ten węzeł faktycznie wysyła i odbiera, według typu wiadomości", + "console.what_this_node_is_called": "Jak nazywa się ten węzeł", + "console.what_this_node_noticed_about_itself": "Co ten węzeł zauważył o sobie i o maszynach, z którymi się komunikuje. Jeden wiersz na problem, z liczbą wystąpień", + "console.what_this_node_says_about_itself": "Co ten węzeł mówi o sobie — przechowywane tylko wtedy, gdy ktoś o to prosi", + "console.what_this_node_tells_other_nodes": "Co ten węzeł mówi innym węzłom o sobie", + "console.what_you_are_watching": "Co obserwujesz", + "console.when_neither_node_can_reach_the": "Gdy żaden węzeł nie może dotrzeć do drugiego", + "console.when_this_node_looks": "Kiedy ten węzeł sprawdza", + "console.where_it_came_from": "Skąd pochodzi", + "console.whether_other_nodes_can_open_a_link": "Czy inne węzły mogą otworzyć łącze do tego", + "console.which_endpoints": "Które punkty końcowe", + "console.while_nobody_is_here": "Gdy nikogo nie ma", + "console.who_receives_it": "kto go odbiera", + "console.who_this_node_is_connected_to_how_it": "Z kim ten węzeł jest połączony, jak można do niego dotrzeć i jak dołączyć kolejny węzeł.", + "console.whole_or_partial_best_match_first": "Pełna lub częściowa — najlepsze dopasowanie najpierw", + "console.why": "Dlaczego", + "console.with_nothing_happening_no_more_often": "Gdy nic się nie dzieje, nie częściej niż co tyle.", + "console.yes": "tak", + "console.yours_chosen_here_never_theirs": "Twoja, wybrana tutaj. Nigdy ich.", + "console.yours_to_unlock_the_key_here_it_is": "Twoja, do odblokowania klucza tutaj. Nie jest wysyłana.", + "console.zoom": "Powiększenie", + "console.zoom_in": "Powiększ", + "console.zoom_out": "Pomniejsz", + "count.container": { + "one": "{count} kontener", + "few": "{count} kontenery", + "many": "{count} kontenerów", + "other": "{count} kontenery" + }, + "count.environment": { + "one": "{count} środowisko", + "few": "{count} środowiska", + "many": "{count} środowisk", + "other": "{count} środowiska" + }, + "count.file": { + "one": "{count} plik", + "few": "{count} pliki", + "many": "{count} plików", + "other": "{count} pliki" + }, + "count.hour": { + "one": "{count} godzina", + "few": "{count} godziny", + "many": "{count} godzin", + "other": "{count} godziny" + }, + "count.line": { + "one": "{count} linia", + "few": "{count} linie", + "many": "{count} linii", + "other": "{count} linie" + }, "count.link": { "one": "{count} łącze", "few": "{count} łącza", "many": "{count} łączy", "other": "{count} łącza" }, + "count.listener": { + "one": "{count} nasłuch", + "few": "{count} nasłuchy", + "many": "{count} nasłuchów", + "other": "{count} nasłuchy" + }, + "count.member": { + "one": "{count} członek", + "few": "{count} członkowie", + "many": "{count} członków", + "other": "{count} członkowie" + }, "count.message": { "one": "{count} wiadomość", "few": "{count} wiadomości", "many": "{count} wiadomości", "other": "{count} wiadomości" }, + "count.minute": { + "one": "{count} minuta", + "few": "{count} minuty", + "many": "{count} minut", + "other": "{count} minuty" + }, "count.node": { "one": "{count} węzeł", "few": "{count} węzły", "many": "{count} węzłów", "other": "{count} węzła" }, + "count.older_line": { + "one": "{count} starsza linia", + "few": "{count} starsze linie", + "many": "{count} starszych linii", + "other": "{count} starsze linie" + }, + "count.permission": { + "one": "{count} uprawnienie", + "few": "{count} uprawnienia", + "many": "{count} uprawnień", + "other": "{count} uprawnienia" + }, + "count.stack": { + "one": "{count} stos", + "few": "{count} stosy", + "many": "{count} stosów", + "other": "{count} stosy" + }, + "count.unread_message": { + "one": "{count} nieprzeczytana wiadomość", + "few": "{count} nieprzeczytane wiadomości", + "many": "{count} nieprzeczytanych wiadomości", + "other": "{count} nieprzeczytane wiadomości" + }, + "fleet.1_scan": "1 · Skanuj", + "fleet.2_install": "2 · Zainstaluj", + "fleet.a_group_needs_a_name": "Grupa wymaga nazwy.", + "fleet.a_lowercase_name_and_a_compose_file": "Wymagana jest nazwa z małych liter i plik compose.", + "fleet.a_node_id_is_40_hexadecimal": "Identyfikator węzła to 40 znaków szesnastkowych.", + "fleet.a_subnet_a_machine_or_nothing_to": "Podsieć, maszyna lub nic, by przeszukać każdą dołączoną sieć.", + "fleet.a_system_install_needs_root_tick": "Instalacja systemowa wymaga roota: zaznacz sudo, podaj konto sudo lub zainstaluj pod użytkownikiem.", + "fleet.accept": "Przyjąć {id}?", + "fleet.access": "Dostęp", + "fleet.access_granted": "Dostęp nadany", + "fleet.access_token": "Token dostępu", + "fleet.activity": "Aktywność", + "fleet.address": "Adres", + "fleet.address_as_that_machine_reaches_it": "Adres, pod którym ta maszyna go osiąga", + "fleet.address_here": "Adres tutaj", + "fleet.always": "always", + "fleet.always_follow": "Zawsze śledź", + "fleet.an_address_and_a_token_are_needed": "Wymagany jest adres i token.", + "fleet.an_address_is_needed": "Wymagany jest adres.", + "fleet.an_image_is_required": "Wymagany jest obraz.", + "fleet.an_ssh_user_is_required": "Wymagany jest użytkownik SSH.", + "fleet.ask_for_at_least_one_capability": "Zażądaj co najmniej jednego uprawnienia.", + "fleet.ask_this_machine_now": "Zapytaj tę maszynę teraz", + "fleet.asked_for_its_log": "Poproszono {node} o jego dziennik", + "fleet.asking": "Pytanie {who}…", + "fleet.auto_or_192_168_1_0_24_10_0_0_5_nas": "auto — lub 192.168.1.0/24, 10.0.0.5, nas.lan:2222", + "fleet.auto_refresh_in_seconds_0_turns_it": "Automatyczne odświeżanie, w sekundach (0 wyłącza)", + "fleet.back_to_console": "Wróć do konsoli", + "fleet.capabilities_the_new_machines_grant": "Uprawnienia, które nowe maszyny Ci nadają", + "fleet.capabilities_to_ask_for": "Uprawnienia do zażądania", + "fleet.choose_a_machine_first": "Najpierw wybierz maszynę", + "fleet.collected_logs_dropped": "Zebrane dzienniki usunięte", + "fleet.collection": "Zbieranie", + "fleet.console_of": "Konsola {id}", + "fleet.containers": "Kontenery", + "fleet.could_not_be_updated": "Nie udało się zaktualizować {name}", + "fleet.create": "Utwórz", + "fleet.created": "Utworzono", + "fleet.credentials_are_held_in_memory_for": "Poświadczenia są trzymane w pamięci tylko na czas przebiegu", + "fleet.debug_and_above": "debug i wyżej", + "fleet.default_behaviour": "Zachowanie domyślne", + "fleet.delete_group": "Usuń grupę", + "fleet.deploy": "Wdróż", + "fleet.deploy_a_stack": "Wdróż stos", + "fleet.deployed_by": "Wdrożone przez", + "fleet.deploying_watch_activity": "Wdrażanie… obserwuj Aktywność.", + "fleet.deployment_failed_to_start": "Wdrożenie nie wystartowało.", + "fleet.discover_deploy": "Wykryj i wdróż", + "fleet.docker": "Docker", + "fleet.docker_2": "docker", + "fleet.docker_compose_yml": "docker-compose.yml", + "fleet.docker_views": "Widoki Docker", + "fleet.done_succeeded": "Gotowe: {good}/{length} udanych.", + "fleet.driver": "Sterownik", + "fleet.each_container_whose_image_changed": "Każdy kontener, którego obraz się zmienił, jest tworzony ponownie.", + "fleet.each_of_these_accepted_a_request": "Każdy z nich przyjął prośbę od tego węzła i nadał dokładnie pokazane uprawnienia. Nic tu nie zostało zabrane; wszystko zostało dane.", + "fleet.encrypted": "zaszyfrowany", + "fleet.enter": "Wejdź", + "fleet.environment": "Środowisko", + "fleet.every_machine": "Każda maszyna", + "fleet.every_node_listed_here_can_act_on": "Każdy wymieniony tu węzeł może działać na tej maszynie. Prawo dodaje się wyłącznie stąd — węzeł może o nie poprosić, ale ktoś przy tej maszynie musi się zgodzić.", + "fleet.filter_containers": "Filtruj kontenery", + "fleet.filter_stacks": "Filtruj stosy", + "fleet.fleet": "Fleet", + "fleet.fleet_sections": "Sekcje Fleet", + "fleet.fleet_uses_the_console_password_of": "Fleet używa hasła konsoli tego węzła.", + "fleet.forget": "Zapomnij", + "fleet.forget_everything_collected": "Zapomnij wszystko, co zebrano", + "fleet.full_screen": "Pełny ekran", + "fleet.ghcr_io_owner_image_tag": "ghcr.io/owner/image:tag", + "fleet.give_a_password_a_key_or_both": "Podaj hasło, klucz lub oba.", + "fleet.give_a_password_a_key_or_both_both": "Podaj hasło, klucz lub oba — oba będą wypróbowane.", + "fleet.grant_access": "Nadaj dostęp", + "fleet.group_deleted": "Grupa usunięta", + "fleet.group_saved": "Grupa zapisana", + "fleet.groups_for": "Grupy dla {id}", + "fleet.groups_updated": "Grupy zaktualizowane", + "fleet.history": "Historia", + "fleet.host_container_one_per_line_add_udp": "host:kontener, po jednym w wierszu; dodaj :udp dla UDP", + "fleet.host_path_or_volume_name_container": "ścieżka hosta lub nazwa woluminu : ścieżka kontenera, :ro tylko do odczytu", + "fleet.image": "Obraz", + "fleet.images": "Obrazy", + "fleet.inbound": "Przychodzące", + "fleet.install_directory": "Katalog instalacji", + "fleet.install_options": "Opcje instalacji", + "fleet.invite_somebody_to_s_mesh": "Zaproś kogoś do sieci kratowej {who}", + "fleet.is_running": "{image} działa", + "fleet.its_password": "Jego hasło", + "fleet.keep_them_updated_from_the": "Aktualizuj je od wydawców, których ten węzeł akceptuje", + "fleet.key_passphrase": "Fraza dostępu klucza", + "fleet.key_removed": "Klucz usunięty", + "fleet.key_value_one_per_line": "KLUCZ=wartość, po jednym w wierszu", + "fleet.label_optional": "Etykieta (opcjonalnie)", + "fleet.let_it_run_its_own_system_updates": "Pozwól jej uruchamiać własne aktualizacje systemu (jedno stałe polecenie roota)", + "fleet.line": "Wiersz", + "fleet.lines_collected_from_the_machines": "Wiersze zebrane z maszyn zarządzanych przez ten węzeł — co się na nich działo, gdy nikt nie patrzył. Przechowywane tutaj, w pamięci, jeden ograniczony bufor na maszynę.", + "fleet.log_collection_for": "Zbieranie dzienników dla {node}: {value}", + "fleet.logs": "Dzienniki", + "fleet.logs_2": "Dzienniki · {id}", + "fleet.lowercase_letters_digits_and": "małe litery, cyfry, - i _", + "fleet.machine": "Maszyna", + "fleet.managed": "Zarządzane", + "fleet.mark_all_read": "Oznacz wszystko jako przeczytane", + "fleet.megabytes_kept_per_machine": "Megabajty przechowywane na maszynę", + "fleet.name": "Nazwa", + "fleet.networks": "Sieci", + "fleet.never_ask_when_needed": "Nigdy — pytaj w razie potrzeby", + "fleet.new_group": "Nowa grupa", + "fleet.newest_first_by_the_time_this_node": "Od najnowszych, według czasu odebrania przez ten węzeł.", + "fleet.nmesh_fleet": "NMesh Fleet", + "fleet.no_group_yet_name_one_below": "Brak jeszcze grupy — nazwij ją poniżej.", + "fleet.no_status_yet": "Brak jeszcze stanu.", + "fleet.node": "Węzeł {id}", + "fleet.node_id": "Identyfikator węzła", + "fleet.nodes": "Węzły", + "fleet.nodes_you_control": "Węzły, które kontrolujesz", + "fleet.nothing_of_it_runs_on_this_machine": "Nic z tego nie działa na tej maszynie.", + "fleet.nothing_waiting_jobs_and_access": "Nic nie czeka. Zadania i prośby o dostęp pojawią się tutaj.", + "fleet.notifications": "Powiadomienia", + "fleet.on_failure": "on-failure", + "fleet.only_while_a_page_is_open_on_it": "Tylko gdy otwarta jest strona tej maszyny", + "fleet.open_shell": "Otwórz powłokę", + "fleet.opt_nmesh": "/opt/nmesh", + "fleet.optional": "opcjonalnie", + "fleet.or_a_new_group": "Lub nowa grupa", + "fleet.or_type_a_whole_line_here_and_press": "…lub wpisz tu cały wiersz i naciśnij Enter", + "fleet.otherwise_an_account_that_can": "W przeciwnym razie konto, które może", + "fleet.outside_a_stack": "Poza stosem", + "fleet.password": "Hasło", + "fleet.portainer_connected_environments": { + "one": "Portainer połączony — widoczne środowisko: {count}", + "few": "Portainer połączony — widoczne środowiska: {count}", + "many": "Portainer połączony — widoczne środowiska: {count}", + "other": "Portainer połączony — widoczne środowiska: {count}" + }, + "fleet.portainer_did_not_answer": "Portainer nie odpowiedział", + "fleet.portainer_forgotten": "Portainer zapomniany", + "fleet.ports": "Porty", + "fleet.pull": "Pobierz", + "fleet.pulled": "Pobrano {image}", + "fleet.pulling": "Pobieranie {image}…", + "fleet.reachable_at": "Osiągalny pod", + "fleet.read_its_certificate": "Odczytaj jego certyfikat", + "fleet.recommended": "Zalecane.", + "fleet.relationship_revoked": "Relacja cofnięta", + "fleet.reload": "Wczytaj ponownie", + "fleet.request_access_to_a_node": "Poproś o dostęp do węzła", + "fleet.request_denied": "Prośba odrzucona", + "fleet.request_sent_it_is_theirs_to_accept": "Prośba wysłana — to oni muszą ją przyjąć", + "fleet.restart_policy": "Polityka restartu", + "fleet.rights_on": "Prawa na {id}", + "fleet.root": "root", + "fleet.run": "Uruchom", + "fleet.run_a_container": "Uruchom kontener", + "fleet.running_on_the_remote_node": "Działa na zdalnym węźle…", + "fleet.scan": "Skanuj", + "fleet.scan_failed": "Skan nie powiódł się.", + "fleet.scan_from": "Skanuj z", + "fleet.scan_running_on_the_remote_node": "Skan działa na zdalnym węźle…", + "fleet.scanning_this_takes_a_moment": "Skanowanie… to chwilę potrwa.", + "fleet.send_a_whole_line": "Wyślij cały wiersz", + "fleet.send_request": "Wyślij prośbę", + "fleet.service": "Usługa", + "fleet.service_name": "Nazwa usługi", + "fleet.shell": "Powłoka", + "fleet.sign_in": "Zaloguj", + "fleet.since": "Od", + "fleet.size": "Rozmiar", + "fleet.srv_data_data": "/srv/data:/data", + "fleet.ssh_key": "Klucz SSH", + "fleet.ssh_user": "Użytkownik SSH", + "fleet.stack_deployed": "Stos {name} wdrożony", + "fleet.stack_failed": "Stos {name} zawiódł", + "fleet.start_the_fleet_app_on_it_so_it_can": "Uruchom na niej aplikację Fleet, by można było nią zarządzać i by mogła wdrażać dalej", + "fleet.state_directory": "Katalog stanu", + "fleet.stays_live_for": "Pozostaje aktywny przez", + "fleet.subnet": "Podsieć", + "fleet.sudo_account": "konto sudo", + "fleet.system": "System", + "fleet.targets": "Cele", + "fleet.that_could_not_be_changed": "Nie udało się tego zmienić", + "fleet.that_does_not_look_like_a_private": "To nie wygląda na klucz prywatny.", + "fleet.that_file_is_too_large_for_a_key": "Ten plik jest za duży na klucz.", + "fleet.that_group_name_was_refused": "Ta nazwa grupy została odrzucona.", + "fleet.that_machine_could_not_be_asked": "Nie udało się zapytać tej maszyny", + "fleet.that_machine_did_not_answer": "Ta maszyna nie odpowiedziała", + "fleet.that_machine_has_no_docker_compose": "Ta maszyna nie ma docker compose: najpierw zainstaluj go tam.", + "fleet.that_request_was_refused": "Ta prośba została odrzucona.", + "fleet.the_daemon_refuses_while_a_container": "Demon odmawia, dopóki używa go kontener.", + "fleet.the_default_could_not_be_changed": "Nie udało się zmienić wartości domyślnej", + "fleet.the_new_machines_pin_the_same": "Nowe maszyny przypinają tych samych wydawców wersji co ten węzeł (oraz sam ten węzeł) i instalują ich podpisane wersje samodzielnie. Ustawia się to tu albo nigdzie: maszyna bez interfejsu nie ma kogo, kto wklei klucz wydawcy do konsoli, i na zawsze nie przyjęłaby niczego z sieci kratowej.", + "fleet.the_size_could_not_be_changed": "Nie udało się zmienić rozmiaru", + "fleet.the_stacks_and_containers_of_one": "Stosy i kontenery jednej maszyny, znalezione na podstawie tego, co uruchamia — niezależnie od tego, czy wdrożył je compose, czy Portainer — i aktualizowane tak, jak zrobiłby to ich właściciel.", + "fleet.this_node_s_id": "Identyfikator tego węzła", + "fleet.tz_europe_paris": "TZ=Europe/Paris", + "fleet.unless_stopped": "unless-stopped", + "fleet.until": "Do", + "fleet.update": "Aktualizuj", + "fleet.update_all": "Aktualizuj wszystko", + "fleet.update_stacks": { + "one": "Zaktualizuj {count} stos", + "few": "Zaktualizuj {count} stosy", + "many": "Zaktualizuj {count} stosów", + "other": "Zaktualizuj {count} stosu" + }, + "fleet.update_started_on_nodes": { + "one": "Aktualizacja rozpoczęta na {count} węźle", + "few": "Aktualizacja rozpoczęta na {count} węzłach", + "many": "Aktualizacja rozpoczęta na {count} węzłach", + "other": "Aktualizacja rozpoczęta na {count} węzła" + }, + "fleet.update_started_progress_shows_on_the": "Aktualizacja rozpoczęta — postęp widać na karcie węzła", + "fleet.upload_a_key": "Wyślij klucz…", + "fleet.user": "Użytkownik", + "fleet.var_lib_nmesh": "/var/lib/nmesh", + "fleet.volumes": "Woluminy", + "fleet.volumes_networks": "Woluminy i sieci", + "fleet.what_is_followed_and_how_much_of_it": "Co jest śledzone i ile z tego jest przechowywane.", + "fleet.what_the_machines_said": "Co powiedziały maszyny", + "fleet.what_this_node_asked_what_it_was": "O co ten węzeł pytał, o co go pytano i jak każde z tego się skończyło.", + "fleet.when": "Kiedy", + "fleet.where_nmesh_goes_on_each_machine": "Gdzie trafia NMesh na każdej maszynie", + "fleet.which_containers": "Które kontenery", + "fleet.who_controls_this_node": "Kto kontroluje ten węzeł", "language.auto": "Automatycznie (jak przeglądarka)", "language.help": "Język konsoli i aplikacji. Automatycznie podąża za przeglądarką.", "language.label": "Język", @@ -46,8 +882,83 @@ "language.name.ru": "Русский", "language.name.sk": "Slovenčina", "language.name.zh": "中文", + "node.1_hour": "1 godzina", + "node.5_minutes": "5 minut", + "node.6_hours": "6 godzin", + "node.access_requested": "Dostęp zażądany", + "node.added_to_contacts": "Dodano do kontaktów", + "node.nmesh_node": "Węzeł NMesh", + "node.node": "Węzeł", + "node.node_actions": "Działania węzła", + "node.node_forgotten": "Węzeł zapomniany", + "node.open_in_fleet": "Otwórz w Fleet", + "node.request_access": "Poproś o dostęp", + "node.request_sent_someone_there_has_to": "Prośba wysłana — ktoś tam musi ją przyjąć", + "node.s_of_at_most": "{seconds} s z maksymalnie {speed_seconds}", + "node.speed_test": "Test szybkości", + "node.state": "Stan", + "node.this_page_reads_the_console_of_this": "Ta strona czyta konsolę tego węzła, więc potrzebuje hasła konsoli.", + "node.tried": "Próbowano", + "pkg.downloaded": "Pobrano {path}.", + "pkg.fetching_and_verifying": "Pobieranie i weryfikacja…", + "pkg.fetching_the_package": "Pobieranie pakietu…", + "pkg.installed": "Zainstalowano {name} {version}", + "pkg.nmesh_package": "Pakiet NMesh", + "pkg.no_longer_watching": "Już nie obserwujesz {name}", + "pkg.not_stated_here": "nie podano tutaj", + "pkg.open_on_its_own": "Otwórz osobno", + "pkg.package": "Pakiet", + "pkg.pin_the_signing_key": "Przypnij klucz podpisu", + "pkg.pinned": "Przypięto {signer_id}", + "pkg.signing_key": "Klucz podpisu", + "pkg.signing_keys_that_must_agree": "Klucze podpisu, które muszą być zgodne", + "pkg.that_package_is_empty": "Ten pakiet jest pusty.", + "pkg.watching": "Obserwujesz {name}", + "pkg.what_it_says_about_itself": "Co mówi o sobie", "state.connected": "Połączono", "state.disconnected": "Rozłączono", "state.offline": "Offline", - "state.online": "Online" + "state.online": "Online", + "term.back_to_the_bottom": "z powrotem na dół", + "term.back_to_the_fleet": "Wróć do Fleet", + "term.fetching": "Pobieranie {name}…", + "term.files": "Pliki", + "term.folder_name": "Nazwa folderu", + "term.folder_name_2": "nazwa folderu", + "term.idle": "bezczynny", + "term.keyboard": "Klawiatura", + "term.link": "łącze", + "term.new_folder": "Nowy folder", + "term.nmesh_terminal": "Terminal NMesh", + "term.no_node_has_granted_a_shell": "Żaden węzeł nie nadał powłoki", + "term.nothing_to_copy": "Nie ma czego kopiować", + "term.open": "Otwórz", + "term.paste": "Wklej", + "term.paste_into_the_terminal": "Wklej do terminala", + "term.pick_a_node_first": "Najpierw wybierz węzeł.", + "term.reading": "Odczyt…", + "term.remote_shell": "Zdalna powłoka", + "term.saved": "Zapisano {name} ({size}).", + "term.sending": "Wysyłanie {name}…", + "term.terminal": "Terminal", + "term.terminal_keys": "Klawisze terminala", + "term.text": "×", + "term.text_to_send": "Tekst do wysłania", + "term.that_file_could_not_be_fetched": "Nie udało się pobrać tego pliku.", + "term.that_node_could_not_be_reached": "Nie udało się dotrzeć do tego węzła.", + "term.that_upload_could_not_be_sent": "Nie udało się wysłać tego pliku.", + "term.the_terminal_uses_the_console": "Terminal używa hasła konsoli tego węzła.", + "term.this_browser_did_not_hand_over_the": "Ta przeglądarka nie udostępniła schowka, więc wklej tutaj i wyślij. Nic nie jest zapisywane.", + "term.up": "W górę", + "term.upload": "Wyślij", + "ui.back_to_this_node": "Wróć do tego węzła", + "ui.copied_to_clipboard": "Skopiowano do schowka", + "ui.could_not_copy_select_and_copy_by": "Nie udało się skopiować — zaznacz i skopiuj ręcznie", + "ui.dismiss": "Odrzuć", + "ui.is_no_longer_reachable_back_on_this": "{name} nie jest już osiągalny — powrót do tego węzła", + "ui.not_answering": "nie odpowiada", + "ui.nothing_matches_that": "Nic nie pasuje.", + "ui.switch_to_the_dark_theme": "Przełącz na ciemny motyw", + "ui.switch_to_the_light_theme": "Przełącz na jasny motyw", + "ui.this_node_was_updated_reloading": "Ten węzeł został zaktualizowany — ponowne wczytywanie" } diff --git a/src/locales/ru.json b/src/locales/ru.json index 3b023d3..634943c 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -18,24 +18,860 @@ "common.send": "Отправить", "common.unknown": "Неизвестно", "config.saved": "Конфигурация сохранена", + "console.100_rows": "100 строк", + "console.10_minutes": "10 минут", + "console.10_rows": "10 строк", + "console.1_create_request": "1 · Создать запрос", + "console.1_minute": "1 минута", + "console.20_rows": "20 строк", + "console.2_make_invite": "2 · Создать приглашение", + "console.3_paste_their_reply_block": "3 · Вставьте их блок ответа", + "console.40_character_content_id": "40-символьный идентификатор содержимого", + "console.50_rows": "50 строк", + "console.6_hours_maximum": "6 часов (максимум)", + "console.a_few_lines_this_is_all_anybody_sees": "несколько строк — это всё, что кто-либо видит до загрузки", + "console.a_key_made_before_this_node_had": "Ключ, созданный до того, как у этого узла появилось место для их хранения, — файл, который ничто не может назвать, а называние его по идентификатору позволяет подписать им релиз или предложить его кому-то. Укажите путь и парольную фразу выше.", + "console.a_line_is_an_authenticated_direct": "Линия — это аутентифицированное прямое соединение: янтарная, пока теряет пробы; красная и пунктирная, когда отказывает; двойная, когда MLO объединяет её; точечная рядом, пока MLO ищет второе соединение. Бледная пунктирная линия — сеанс, маршрутизируемый через первый переход: всё, что глубже, этому узлу намеренно не видно.", + "console.a_membership_is_issued_for_a_year": "Членство выдаётся на год и автоматически продлевается за месяц до истечения узлом, который принял этот. Это единственный сбой доверия, который узел видит заранее: когда цепочка истечёт, ничто её не аутентифицирует, и вернуться можно только по новому приглашению.", + "console.a_name_and_at_least_one_file_are": "Нужны имя и хотя бы один файл.", + "console.a_name_and_files_are_required": "Нужны имя и файлы.", + "console.a_name_you_choose_beside_the_id_you": "Имя, которое выбираете вы, рядом с идентификатором, который выбрать нельзя", + "console.a_node_drops_anything_it_cannot": "Узел отбрасывает всё, что не может проверить, — в этом смысл, — но ячеистая сеть, которая не подключается, снаружи выглядит так же, как сеть, которой никто не звонит. Здесь проверки, которые не прошли, сначала новые. Ничто здесь само по себе не ошибка: посторонний, стучащийся в закрытую дверь, тоже окажется здесь.", + "console.a_node_id_is_required": "Нужен идентификатор узла.", + "console.a_passphrase_to_keep_it_under": "Парольная фраза для его защиты", + "console.a_password_is_needed": "Нужен пароль.", + "console.a_publisher_key_is_the_safer_choice": "Ключ издателя — более безопасный выбор: он разблокируется для этой одной подписи. Идентификационный ключ узла уже разблокирован и останется таким всегда.", + "console.accept_failed": "Не удалось принять", + "console.accept_someone": "Принять кого-то", + "console.accepted_for": "Принимается для", + "console.accusers": "Обвинители", + "console.add_a_node": "Добавить узел", + "console.address_preference_updated": "Предпочтение адреса обновлено", + "console.addressing": "Адресация", + "console.advanced": "Дополнительно", + "console.after_a_restart": "После перезапуска", + "console.agreeing": "Совпадают", + "console.alice": "alice", + "console.all": "Все", + "console.already_have_a_key_file": "Уже есть файл ключа?", + "console.also_ask_the_network_for_this_exact": "Также спросить сеть про именно это имя", + "console.always_on_no": "Всегда включено: нет", + "console.always_on_yes": "Всегда включено: да", + "console.an_address_and_an_invite_code_are": "Нужны адрес и код приглашения.", + "console.an_app_needs": "Приложению нужно", + "console.anchors_and_taking_a_membership_back": "Якоря и отзыв членства", + "console.anchors_this_node_trusts": "Якоря, которым доверяет этот узел", + "console.any_app": "любое приложение", + "console.app": "Приложение", + "console.app_name": "Имя приложения", + "console.app_pages": "Страницы приложений", + "console.app_views": "Виды приложений", + "console.applications": "Приложения", + "console.applies_now": "применяется сразу", + "console.applies_now_2": "Применяется сразу", + "console.apply": "Применить", + "console.apply_now_at_restart": "{live} применяются сразу · {live2} при перезапуске", + "console.apply_size": "Применить размер", + "console.applying": "Применение…", + "console.apps": "Приложения", + "console.apps_signed_by_it": "приложения с его подписью", + "console.ask_the_network": "Спросить сеть", + "console.ask_the_network_not_just_what_this": "Спросить сеть, а не только то, что этот узел уже хранит", + "console.asked": "запрошено", + "console.asking_github": "Запрос к GitHub…", + "console.authenticated_and_open_a_node": "Аутентифицированные и открытые. Узел с несколькими соединениями раскрывается на них", + "console.auto_refresh": "Автообновление", + "console.automatic": "Автоматически", + "console.balance": "Баланс", + "console.being_in_the_network_is_not_being": "Быть в сети — не значит пользоваться доверием. Каждое приложение само решает, что считать чрезмерным — только Chat знает, сколько сообщений слишком много, — и сообщает об отправителе; что значит сумма сообщений, решает этот узел. Узел, перешедший первый порог, перестаёт обслуживаться молча: ему ничего не сообщается, и он узнаёт об этом как можно позже. Жалобы затухают сами, так что узел, однажды нарушивший правила и затем ведущий себя нормально, возвращается без чьего-либо участия.", + "console.beyond_this_node": "За пределами этого узла", + "console.beyond_this_striping_is_not_worth_it": "Дальше распределение для этого узла не имеет смысла.", + "console.both_the_current_and_the_new": "Нужны и текущий, и новый пароль.", + "console.built_in_applications_on_this_node": "Встроенные приложения этого узла и способ найти приложение в ячеистой сети. Каталога для просмотра нет: вы запрашиваете имя, и приходят подписанные записи.", + "console.bytes": "Байт", + "console.certificate_unavailable": "Сертификат недоступен", + "console.change_password": "Сменить пароль", + "console.changing": "Изменение…", + "console.check_for_updates": "Проверить обновления", + "console.choose_a_passphrase_first": "Сначала выберите парольную фразу", + "console.choose_a_passphrase_to_keep_it_under": "Выберите парольную фразу для его защиты", + "console.choosing_between_a_node_s_addresses": "Выбор между адресами узла", + "console.clear": "Очистить", + "console.clear_all": "Очистить всё", + "console.clear_view": "Очистить вид", + "console.coming_soon_the_node_moves_along_the": "Скоро: узел будет сам двигаться по шкале в зависимости от того, чем занят, — от батареи или от сети, занят или простаивает. Вы задаёте тенденцию, он держится в её рамках.", + "console.command_palette": "Палитра команд", + "console.configuration": "Конфигурация", + "console.configuration_file": "Файл конфигурации", + "console.confirm": "Подтвердить", + "console.confirm_reachability": "Подтвердить достижимость", + "console.connect": "Подключить", + "console.connect_failed": "Не удалось подключиться", + "console.connect_two_nodes_by_hand": "Соединить два узла вручную", + "console.connected_apps": "Подключённые приложения", + "console.connected_nodes_click_to_open_the": "Подключённые узлы — нажмите, чтобы открыть полную карту", + "console.connecting": "Подключение…", + "console.connecting_over_the_mesh": "Подключение через ячеистую сеть…", + "console.connector_token": "Токен коннектора", + "console.console": "Консоль", + "console.console_is_not_reachable": "Консоль недоступна", + "console.console_password": "Пароль консоли", + "console.console_password_changed": "Пароль консоли изменён", + "console.console_sections": "Разделы консоли", + "console.contains": "Содержит", + "console.content_addressed_transfer": "Передача по содержимому", + "console.content_id": "Идентификатор содержимого", + "console.content_published": "Содержимое опубликовано.", + "console.control_action_failed": "Действие управления не удалось", + "console.could_not_change_the_password": "Не удалось изменить пароль", + "console.could_not_check_for_updates": "Не удалось проверить обновления.", + "console.could_not_create_a_request": "Не удалось создать запрос", + "console.could_not_create_an_invitation": "Не удалось создать приглашение", + "console.could_not_read_the_configuration": "Не удалось прочитать конфигурацию.", + "console.could_not_read_the_keys_held_here": "Не удалось прочитать хранимые здесь ключи.", + "console.could_not_read_what_this_node_can": "Не удалось прочитать, до чего этот узел может обновиться.", + "console.could_not_save_that": "Не удалось сохранить", + "console.could_not_save_the_balance": "Не удалось сохранить баланс", + "console.counts_towards_a_quorum": "Учитывается в кворуме", + "console.create_invitation": "Создать приглашение", + "console.create_one": "Создать", + "console.creating": "Создание…", + "console.current_password": "Текущий пароль", + "console.dark": "Тёмная", + "console.decide_by_screen_size": "По размеру экрана", + "console.diagnostics": "Диагностика", + "console.does": "Делает", + "console.does_not_apply": "не применяется", + "console.done": "Готово", + "console.download": "Скачать", + "console.downloading_and_installing": "Загрузка и установка {update_offer}…", + "console.drag_to_move_pinch_or_scroll_to_zoom": "Перетащите для перемещения · сведите пальцы или прокрутите для масштаба", + "console.drop_share_that_benches_a_link": "Доля потерь, отключающая соединение", + "console.drop_what_was_reported": "Удалить сообщённое", + "console.dropped_whatever_is_still_true_will": "Удалено — всё, что остаётся верным, будет сообщено снова", + "console.dynamic_addressing_off": "Динамическая адресация: выключена", + "console.dynamic_addressing_on": "Динамическая адресация: включена", + "console.each_key_and_what_its_signature_is": "Каждый ключ и для чего принимается его подпись", + "console.endpoint": "Конечная точка", + "console.energy_and_performance": "Энергия и производительность", + "console.energy_bar": "шкала энергии", + "console.enter_a_content_id": "Введите идентификатор содержимого.", + "console.enter_a_listener_uri": "Введите URI прослушивателя", + "console.enter_a_valid_udp_port": "Введите допустимый порт UDP", + "console.errors_only": "только ошибки", + "console.every_background_job_this_node_keeps": "Все фоновые задачи этого узла и что их пробуждает", + "console.every_number_and_every_setting": "Каждое число и каждая настройка, а не решения, к которым они сводятся. Меняет только то, что показывает этот браузер, — узел ведёт себя одинаково.", + "console.every_option_this_node_reads_from": "Все параметры, которые этот узел читает из своего файла", + "console.everything": "Всё", + "console.everything_that_changes_how_this": "Всё, что меняет работу этого узла. Отделено от текущего состояния, чтобы ничто здесь не было в одном клике от графика, который вы просто смотрели.", + "console.expand": "Развернуть", + "console.expert_mode": "Режим эксперта", + "console.expert_mode_shows_every_setting_in": "Режим эксперта показывает все настройки из файла конфигурации узла, включая те, из которых состоит эта шкала.", + "console.failed": "Не удалось выполнить: {action}", + "console.fastest_ever": "Самое быстрое из возможных", + "console.fastest_measured": "Самый быстрый по измерениям", + "console.fastest_when_idle": "Самое быстрое в простое", + "console.fetch": "Получить", + "console.fetch_failed": "Не удалось получить", + "console.fetched": "{name} {version} загружен.", + "console.fetched_from_the_mesh_and_unpacked": "Получены из ячеистой сети и распакованы на этом узле", + "console.fetching_content": "Получение содержимого…", + "console.find_a_node_by_name": "Найти узел по имени", + "console.find_a_package_by_name_or_by_the": "Найти пакет по имени или по узлу, который его публикует", + "console.find_an_app": "Найти приложение", + "console.fit_the_whole_mesh": "Показать всю ячеистую сеть", + "console.follow_the_system": "Как в системе", + "console.following_a_link_into_chat_or_fleet": "Переход по ссылке в Chat или Fleet — например, написать узлу из его сведений. Окно сохраняет в виду то, чем вы занимались; на телефоне в любом случае откроется вкладка.", + "console.for_nodes_that_cannot_see_each_other": "Для узлов, которые пока не видят друг друга: три блока текста, передаваемые любым каналом, которому вы уже доверяете.", + "console.forget_this_app": "Забыть это приложение", + "console.from": "От", + "console.from_the_mesh": "Из ячеистой сети", + "console.from_the_project": "От проекта", + "console.further_apart_than_this_and_they_are": "Если разница больше, соединения не объединяются: распределение по быстрому и медленному соединениям доставляет половину пакетов с опозданием.", + "console.generate_invite_code": "Сгенерировать код приглашения", + "console.getting_an_update": "Получение обновления", + "console.give_the_path_to_the_key_file": "Укажите путь к файлу ключа", + "console.giving_one": "Передача ключа", + "console.handing_one_to_somebody_else_and": "Передать ключ другому и принять предложенный им", + "console.happening_now": "Происходит сейчас", + "console.health_throughput_and_the_links_this": "Состояние, пропускная способность и соединения, которые этот узел аутентифицировал.", + "console.holding": "хранит", + "console.host_port": "host:port", + "console.how_much_this_node_may_spend_to_stay": "Сколько этот узел может тратить, чтобы оставаться быстрым", + "console.how_often_it_goes_checking_and": "Как часто он проверяет и стоит ли делать это в простое", + "console.how_often_the_changing_numbers_are": "Как часто перечитываются меняющиеся числа, в секундах (0 отключает)", + "console.how_the_balance_is_chosen": "Как выбирается баланс", + "console.how_this_node_trades_energy_for": "Как этот узел обменивает энергию на скорость — один параметр в Настройки → Конфигурация. Режим эксперта показывает здесь числа, из которых он состоит.", + "console.id": "Идентификатор", + "console.identity": "Идентичность", + "console.idle": "Простой", + "console.in_a_new_tab": "В новой вкладке", + "console.in_a_separate_window": "В отдельном окне", + "console.inbound_and_outbound_bytes_per": "Входящие и исходящие байты в секунду", + "console.info_and_above": "info и выше", + "console.install": "Установить", + "console.install_2": "Установить {latest}", + "console.install_automatically": "Устанавливать автоматически", + "console.installed": "Установленные", + "console.internal_api": "Внутренний API", + "console.into_which_node_s_network": "В сеть какого узла", + "console.invitation": "Приглашение", + "console.invite_a_node": "Пригласить узел", + "console.invite_code": "Код приглашения", + "console.invite_codes_and_certificates": "Коды приглашений и сертификаты", + "console.invite_generation_failed": "Не удалось создать приглашение", + "console.is": "это", + "console.is_available_but_this_install_cannot": "Доступна {latest}{where}, но эта установка не может обновить себя: {blocked}", + "console.is_available_you_run": "Доступна {latest}{where} (у вас {current}).", + "console.it_listens_beyond_this_machine": "Оно слушает за пределами этой машины. Любой, кто может достучаться до этого адреса и имеет токен, может делать всё, что разрешено приложению MCP.", + "console.it_never_leaves_this_machine_lose_it": "Она никогда не покидает эту машину. Потеряете её — ключ утрачен, восстановления нет, поэтому скопированный файл бесполезен.", + "console.its_passphrase": "Его парольная фраза", + "console.job": "Задача", + "console.join": "Присоединиться", + "console.join_or_invite": "Присоединиться или пригласить", + "console.join_someone": "Присоединиться к кому-то", + "console.joined_node": "Подключено к {node}.", + "console.joined_the_network": "Вы присоединились к сети", + "console.joined_through_a_relay": "Подключение через ретранслятор выполнено.", + "console.joining_the_handshake_is_post": "Присоединение — рукопожатие постквантовое, подождите немного…", + "console.jump_to_a_section_or_run_an_action": "Перейти к разделу или выполнить действие…", + "console.key": "Ключ", + "console.key_compromised": "Ключ скомпрометирован", + "console.key_to_share": "Ключ для передачи", + "console.keys_are_pinned_from_the_package": "Ключи закрепляются по пакету, который они подписали: одно нажатие и подтверждение. Ключ приходит внутри записи и проверяется по созданной им подписи, так что ничего не нужно копировать откуда-то ещё и не в чем ошибиться.", + "console.keys_this_node_can_sign_a_release": "Ключи, которыми этот узел может подписать релиз", + "console.last": "Последнее", + "console.left_the_network": "Покинул сеть", + "console.level": "Уровень", + "console.light": "Светлая", + "console.link": "Соединение", + "console.links": "Соединения", + "console.links_open_in_a_new_tab": "Ссылки будут открываться в новой вкладке", + "console.links_open_in_a_separate_window": "Ссылки будут открываться в отдельном окне", + "console.links_open_to_suit_the_screen": "Ссылки будут открываться в зависимости от экрана", + "console.links_that_reached_this_node_and": "Соединения, дошедшие до этого узла и получившие отказ, и причины", + "console.listen_elsewhere": "Слушать в другом месте", + "console.listener_added": "Прослушиватель добавлен", + "console.listener_removed": "Прослушиватель удалён", + "console.listener_uri": "URI прослушивателя", + "console.listening_on": "Прослушивает", + "console.live": "Вживую", + "console.load_older": "Загрузить более старые", + "console.local_management_plane": "Локальная плоскость управления", + "console.log_dropped": "вытеснено, чтобы освободить место: {older}", + "console.log_held": "Хранится для: {who}. Записей: {lines}, занято {used} из {size} МБ", + "console.log_ratio": "(сжато в {ratio}×)", + "console.log_stop_not_yours": "Остановить отсюда нельзя: запись прекратится, когда прекратит {who}.", + "console.looking_for_a_relay_that_can_reach": "Ищем ретранслятор, который сможет до них дотянуться — следите за Сеть → Пиры.", + "console.loss": "Потери", + "console.made_here": "создан здесь", + "console.make_a_key": "Создать ключ", + "console.manage": "Управление: {name}", + "console.managing": "Управление: {name}", + "console.manual": "Вручную", + "console.mcp_server": "Сервер MCP", + "console.mcp_tool": "Инструмент MCP", + "console.measures": "измеряет", + "console.medium": "среда", + "console.membership": "Членство", + "console.mesh": "Ячеистая сеть", + "console.mesh_map": "Карта ячеистой сети", + "console.mesh_map_draggable_and_zoomable": "Карта ячеистой сети с перетаскиванием и масштабом", + "console.message": "Сообщение", + "console.mlo_ready": "MLO готов", + "console.more": "Ещё", + "console.multi_link_operation": "Многосоединительный режим", + "console.multi_link_operation_updated": "Многосоединительный режим обновлён", + "console.name_the_node_that_receives_it": "Укажите узел, который его получит", + "console.network": "Сеть", + "console.network_views": "Сетевые виды", + "console.neutral": "Нейтрально", + "console.new_password": "Новый пароль", + "console.new_token": "Новый токен", + "console.nm": "NM", + "console.nmesh": "nmesh", + "console.nmesh_console": "Консоль NMesh", + "console.nmesh_packet_bytes_excluding": "Байты пакетов NMesh без учёта накладных расходов транспорта", + "console.no": "нет", + "console.no_camera_available_it_needs_your": "Камера недоступна. Нужно ваше разрешение и защищённая страница (HTTPS или localhost).", + "console.no_key_pinned_this_node_installs": "Ключ не закреплён — этот узел ничего не устанавливает из ячеистой сети сам. Найдите пакет выше и закрепите ключ, которым он подписан.", + "console.no_links_yet": "соединений пока нет", + "console.no_node_is_reached_over_two_mlo": "Сейчас ни один узел не доступен по двум соединениям, готовым к MLO.", + "console.no_other_address_on_an_mlo_ready": "— нет другого адреса в среде, готовой к MLO", + "console.no_payload_is_ever_recorded": "Полезная нагрузка не записывается никогда", + "console.no_publisher_key_here_this_node": "Ключа издателя здесь нет — этот узел подписывает релизы своей идентичностью.", + "console.no_publisher_key_on_this_node": "на этом узле нет ключа издателя", + "console.node_being_managed": "Управляемый узел", + "console.node_controls": "Управление узлом", + "console.node_peers_app": "node, peers, app:…", + "console.nodes_linked_directly_and_nodes": "Узлы с прямым соединением и узлы, достижимые через них", + "console.nodes_under_suspicion": "Узлы под подозрением", + "console.none_yet_this_node_trusts_only": "Пока нет — этот узел доверяет только себе.", + "console.not_recording_nothing_is_kept_until": "Запись не ведётся. Ничего не сохраняется, пока кто-нибудь её не запустит — здесь, запустив трассировку или следя за ней из другой консоли.", + "console.not_restarting": "Перезапуск не выполняется", + "console.nothing_held_against_that_node": "Против этого узла ничего не зафиксировано.", + "console.nothing_is_kept_until_it_is_started": "Ничего не хранится, пока запись не запущена, а сохранённое удаляется, когда останавливается последний, кто его удерживал: оператор здесь, работающая трассировка или консоль, следящая за этим журналом откуда-то ещё. Оно живёт только в памяти, сжатое, и ограничено размером ниже.", + "console.nothing_on_the_mesh_changes_it_can": "В ячеистой сети ничего не меняется — его можно найти и установить снова.", + "console.nothing_registered_the_node_is_not": "Ничего не зарегистрировано — узел не запущен.", + "console.nothing_to_download_yet": "Пока нечего скачивать", + "console.noticed_not_judged": "Замечено, но не оценено", + "console.off": "Выкл.", + "console.off_2": "выкл.", + "console.offer_refused": "Предложение отклонено", + "console.offer_this_key": "Предложить этот ключ", + "console.oldest_at_the_top_follows_the_end_as": "Старое сверху, следует за концом по мере записи строк", + "console.one_block_per_medium_what_is_bound": "По блоку на среду: что привязано, что она несёт, что принимает", + "console.one_invitation_both_ways_round": "Одно приглашение, в обе стороны", + "console.one_link_short_of_a_bundle": "Не хватает одного соединения до связки:", + "console.one_short_string_where_to_connect_a": "Одна короткая строка: куда подключаться, обходной путь через чужой узел на случай неудачи и одноразовый код", + "console.open_console": "Открыть консоль", + "console.opening_another_app": "Открытие другого приложения", + "console.other_sessions_signed_out": { + "one": "Завершён {count} другой сеанс.", + "few": "Завершено {count} других сеанса.", + "many": "Завершено {count} других сеансов.", + "other": "Завершено {count} других сеанса." + }, + "console.overview": "Обзор", + "console.package_name": "Имя пакета", + "console.packages_this_node_checks_on_and": "Пакеты, которые этот узел проверяет, и что он может установить сам", + "console.packets": "Пакетов", + "console.packets_spread_over_two_links_arrive": "Пакеты, распределённые по двум соединениям, приходят не по порядку примерно с удвоенным измеренным перекосом. Приложения должны это учитывать в любом случае: ячеистая сеть маршрутизирует, и маршрутизируемый ответ никогда не обязан приходить после предыдущего.", + "console.passes": "Проходов", + "console.passphrase": "Парольная фраза", + "console.password_changed": "Пароль изменён.", + "console.past_this_the_link_stops_being": "Дальше соединению перестают верить. Остаётся ниже собственного тайм-аута среды, что бы ни было согласовано.", + "console.paste_a_certificate": "Вставьте сертификат.", + "console.paste_a_request_first": "Сначала вставьте запрос.", + "console.paste_a_root_certificate_to_trust": "Вставьте корневой сертификат для доверия", + "console.paste_or_scan_an_invitation": "Вставьте или отсканируйте приглашение…", + "console.paste_or_scan_an_invitation_first": "Сначала вставьте или отсканируйте приглашение.", + "console.paste_the_reply_first": "Сначала вставьте ответ.", + "console.paste_their_request_block": "Вставьте их блок запроса", + "console.path_on_this_machine": "Путь на этой машине", + "console.path_to_publisher_key": "/path/to/publisher.key", + "console.pause": "Пауза", + "console.peers": "Пиры", + "console.percent_of_its_last_50_probes_it": "Процент от последних 50 проб. Возврат — при половине этого значения, чтобы соединение на пороге не прыгало туда-сюда из-за одной пробы.", + "console.performance": "Производительность", + "console.permissions": "Разрешения", + "console.permissions_2": "{name} — разрешения", + "console.ping_active_nodes": "Пинг активных узлов", + "console.ping_failed": "Пинг не удался", + "console.point_the_camera_at_the_ticket_s_qr": "Наведите камеру на QR-код билета.", + "console.port": "Порт", + "console.preferences_about_this_screen_kept": "Предпочтения для этого экрана, хранятся здесь и больше нигде", + "console.preferred_medium": "Предпочитаемая среда", + "console.probe_failed": "Проверка не удалась", + "console.problems_in_the_file": "Проблемы в файле: {problems}", + "console.protocol_trace": "Трассировка протокола", + "console.publish": "Опубликовать", + "console.publish_a_signed_release": "Опубликовать подписанный релиз", + "console.publish_content": "Опубликовать содержимое", + "console.publish_this_node_s_code": "Опубликовать код этого узла", + "console.published": "Опубликовано: {name} {version}", + "console.published_and_filed_under_its_name": "Опубликовано и внесено под своим именем — теперь любой может найти его, введя имя.", + "console.publisher_keys_held_here": "Ключи издателя на этом узле", + "console.publishing_did_not_finish_the_node": "Публикация не завершилась — узел, возможно, ещё работает. Проверьте Настройки → Обновления снова через минуту.", + "console.publishing_under_a_key": "Публикация под ключом", + "console.rate": "Скорость", + "console.raw_dht_package_exchange_not_the": "Обмен «сырыми» пакетами DHT — не подписанный магазин приложений", + "console.re_check_network": "Перепроверить сеть", + "console.reachability": "Достижимость", + "console.reading_files": "Чтение файлов…", + "console.reading_hashing_and_signing_this_can": "Чтение, хеширование и подпись — в загруженной ячеистой сети это может занять некоторое время…", + "console.reading_node_status": "Чтение состояния узла…", + "console.reason": "Причина", + "console.receiving_node": "Принимающий узел", + "console.recording": "Запись", + "console.refresh_now": "Обновить сейчас", + "console.refused": "отклонено", + "console.refused_handshakes": "Отклонённые рукопожатия", + "console.release_notes": "Примечания к релизу", + "console.reload_from_file": "Перезагрузить из файла", + "console.remove_the_name": "Удалить имя", + "console.reordering": "Перестановка", + "console.repeat_new_password": "Повторите новый пароль", + "console.restart_this_node": "Перезапустить этот узел", + "console.restarting": "Перезапуск: {who}", + "console.revoke": "Отозвать", + "console.ring_size_in_megabytes": "Размер кольца в мегабайтах", + "console.round_trip": "Время обращения", + "console.rows_per_page": "Строк на странице", + "console.rtt": "RTT", + "console.said_by": "сказал(а) {from}", + "console.same": "то же", + "console.save_configuration": "Сохранить конфигурацию", + "console.save_energy": "Экономить энергию", + "console.save_failed": "Не удалось сохранить", + "console.save_name": "Сохранить имя", + "console.saves_energy": "Экономит энергию", + "console.saving": "Сохранение…", + "console.says_which_version_it_runs": "Сообщает, какую версию запускает", + "console.scan_with_camera": "Сканировать камерой", + "console.score": "Оценка", + "console.search_active_nodes": "Поиск активных узлов", + "console.search_commands": "Поиск и команды", + "console.search_endpoints": "Поиск конечных точек", + "console.search_endpoints_2": "Поиск конечных точек…", + "console.search_installed": "Поиск установленных…", + "console.search_installed_apps": "Поиск установленных приложений", + "console.search_known_nodes": "Поиск известных узлов", + "console.search_name_id_address_transport": "Поиск по имени, идентификатору, адресу, транспорту…", + "console.search_name_id_or_address": "Поиск по имени, идентификатору или адресу…", + "console.seconds": "Секунд", + "console.seconds_to_record": "Секунд записи", + "console.security": "Безопасность", + "console.seen": "Замечен", + "console.send_this_block_to_the_other_side": "Отправьте этот блок другой стороне.", + "console.send_this_invite_block_back": "Отправьте этот блок приглашения обратно.", + "console.send_this_invite_block_back_2": "Отправьте этот блок приглашения обратно", + "console.send_this_request_block": "Отправьте этот блок запроса", + "console.sent_probe_s": "Отправлено проб: {sent}", + "console.settings": "Настройки", + "console.settings_applied": "Настройки {scheme} применены", + "console.settings_apply_to_the_running_node": "Настройки применяются к работающему узлу сразу, если не указано иное, затем записываются в файл конфигурации и переживают перезапуск. Значение, которое транспорт отвергает, в файл не попадает.", + "console.settings_sections": "Разделы настроек", + "console.sharing_a_key": "Передача ключа", + "console.show_our_root_certificate": "Показать наш корневой сертификат", + "console.show_the_client_configuration": "Показать конфигурацию клиента", + "console.show_this_node_s_details": "Показать сведения об этом узле", + "console.sign_out": "Выйти", + "console.sign_what_is_installed_here_and": "Подписать установленное здесь и предложить ячеистой сети", + "console.sign_with": "Подписать", + "console.signed_by": "Подписан", + "console.signing_keys_you_accept": "Принимаемые ключи подписи", + "console.size_mb": "Размер, МБ", + "console.sketchpad": "черновик", + "console.skew_two_links_may_differ_by": "Допустимый перекос двух соединений", + "console.skip_to_content": "Перейти к содержимому", + "console.slowest_still_fast": "Самое медленное, всё ещё «быстрое»", + "console.slowest_when_idle": "Самое медленное в простое", + "console.software": "Программы", + "console.soon": "Скоро", + "console.source": "Источник", + "console.standing": "Репутация", + "console.start_recording": "Начать запись", + "console.stop": "Стоп", + "console.stop_camera": "Остановить камеру", + "console.superseded": "Заменён", + "console.sweep": "Обход", + "console.switch_theme": "Сменить тему", + "console.take_back_a_membership": "Отозвать членство", + "console.take_it_in": "Принять", + "console.team": "команда", + "console.tendency": "Тенденция", + "console.text_or_a_field_value": "текст или значение поля", + "console.that_could_not_be_dropped": "Не удалось удалить", + "console.that_step_could_not_be_applied": "Не удалось применить этот шаг", + "console.the_certificate_chain_this_node": "Цепочка сертификатов, которую этот узел предъявляет, подтверждая принадлежность", + "console.the_console_stopped_answering_while": "Консоль перестала отвечать во время присоединения. Проверьте Сеть → Пиры, прежде чем пробовать снова — присоединение могло пройти.", + "console.the_fastest_this_node_will_be_probed": "Самое частое зондирование этого узла, с распределением или без.", + "console.the_last_things_this_node_did_or_was": "Последние действия этого узла или полученные им команды", + "console.the_mcp_app_is_off_enable_it_on_the": "Приложение MCP выключено. Включите его на вкладке «Установленные», затем выдайте, что ему можно читать и делать — его инструменты строятся из этого.", + "console.the_node_did_not_answer": "Узел не ответил.", + "console.the_only_credential_between_the": "Единственные учётные данные между сетью и управлением этим узлом", + "console.the_other_direction_nothing_here": "Обратное направление. Здесь ничто не добавляет узел — это два способа отозвать доверие, и это не одно и то же действие.", + "console.the_password_is_checked_on_this": "Пароль проверяется на этой машине и никогда её не покидает. Он защищает все действия управления, включая те, что могут перезапустить или обновить узел.", + "console.the_primitives": "Примитивы", + "console.the_routing_table_reachable_not": "Таблица маршрутизации — достижимые, не обязательно соединённые", + "console.the_secret_is_sealed_to_a_key_the": "Секрет запечатывается ключом, который другая сторона создаёт при принятии, поэтому он не может уйти, пока кто-то не согласится его получить, и открыть его может только она. Она выбирает свою парольную фразу — никогда не вашу.", + "console.the_trace_could_not_be_read": "Не удалось прочитать трассу", + "console.the_two_new_passwords_do_not_match": "Два новых пароля не совпадают.", + "console.theme": "Тема", + "console.theme_updated": "Тема обновлена", + "console.there_is_no_key_to_share": "Нет ключа для передачи", + "console.these_are_not_settings_of_the_node": "Это не настройки узла: они живут в этом браузере, поэтому другая машина, вошедшая в ту же консоль, хранит свои. Ничего отсюда никуда не отправляется.", + "console.these_settings_were_tuned_by_hand": "Эти настройки подобраны вручную и не соответствуют ни одному шагу. Перемещение шкалы заменяет их выбранным шагом.", + "console.they": "они", + "console.things_this_node_saw_and_will_not": "То, что этот узел увидел и о чём не будет решать, потому что честное объяснение обычно — вы: пир, чей трафик вдруг похож на другую машину (вы его обновили), или участник сети, принявший гораздо больше узлов сразу, чем когда-либо (вы развернули несколько). Узел не отличит это от украденного ключа или созданной толпы, поэтому сообщает, а не действует. Здесь ничто не вменяется в вину: подтверждение лишь делает их нынешнее поведение новой нормой.", + "console.this_app_connects_to_with_the_token": "Это приложение подключается к {host}:{port} с токеном ниже. Он подтверждает, что это именно это приложение — не включайте его ни во что, чем делитесь.", + "console.this_browser": "Этот браузер", + "console.this_browser_cannot_scan_qr_codes": "Этот браузер не умеет сканировать QR-коды. Вставьте билет.", + "console.this_field_takes_any_of_them_an": "Это поле принимает любой из них — приглашение или блок, вставленный со старого узла. Выбирать между ними не нужно.", + "console.this_medium_declares_no_setting": "Эта среда не объявляет настроек.", + "console.this_node": "Этот узел", + "console.this_node_could_not_build": "Этот узел не смог собрать: {names}", + "console.this_node_has_no_configuration_file": "У этого узла нет файла конфигурации: шаг применяется сейчас и забывается при перезапуске.", + "console.this_node_s": "этого узла", + "console.this_node_s_identity_key": "Идентификационный ключ этого узла", + "console.this_project_s_published_releases_on": "Опубликованные релизы этого проекта на GitHub", + "console.throughput": "Пропускная способность", + "console.ticket_scanned_check_it_then_press": "Билет отсканирован — проверьте его и нажмите «Присоединиться».", + "console.times": "Раз", + "console.tools_right_now": "Инструменты сейчас", + "console.topology": "Топология", + "console.trace_command_failed": "Команда трассировки не удалась", + "console.transport": "Транспорт", + "console.transports": "Транспорты", + "console.trust_already_given": "Уже выданное доверие", + "console.trust_certificate": "Доверять сертификату", + "console.two_channels_can_replace_that_and": "Это могут заменить два канала, и они независимы", + "console.two_links_to_one_node_carrying_its": "Два соединения с одним узлом, несущие его трафик вместе", + "console.type_a_name_the_mesh_answers_nothing": "Введите имя — ячеистая сеть ответит, список не показывается", + "console.type_its_passphrase_in_the_field": "Введите его парольную фразу в поле выше", + "console.type_the_key_s_passphrase": "Введите парольную фразу ключа", + "console.udp_port": "Порт UDP", + "console.unavailable": "недоступно", + "console.unlock_this_node": "Разблокировать этот узел", + "console.unnamed": "без имени", + "console.unspecified": "Не указано", + "console.up_to_date_running_latest_is": "Работает актуальная версия — запущена {current}, последняя {latest}{where}.", + "console.update_failed": "Не удалось обновить.", + "console.updates": "Обновления", + "console.use_one": "Использовать", + "console.valid_for": "Действует", + "console.valid_for_single_use": "Действует {duration}. Одноразовый — обращайтесь с ним как с паролем.", + "console.version": "Версия", + "console.via": "через {via}", + "console.wakes_on": "Пробуждается по", + "console.warnings_and_errors": "предупреждения и ошибки", + "console.watch_for_new_versions": "Следить за новыми версиями", + "console.what_changed": "что изменилось", + "console.what_is_kept_is_dropped_recording": "Сохранённое удаляется; запись продолжается.", + "console.what_is_running": "Что запущено", + "console.what_it_does": "Что оно делает", + "console.what_it_is": "Что это", + "console.what_the_applications_and_the_core": "О чём сообщили приложения и ядро", + "console.what_the_lines_mean": "Что означают линии", + "console.what_this_key_is_for": "для чего этот ключ", + "console.what_this_node_actually_sends_and": "Что этот узел реально отправляет и получает, по типам сообщений", + "console.what_this_node_is_called": "Как называется этот узел", + "console.what_this_node_noticed_about_itself": "Что этот узел заметил о себе и о машинах, с которыми общается. Одна строка на проблему, с указанием частоты", + "console.what_this_node_says_about_itself": "Что этот узел говорит о себе — хранится, только пока кто-то спрашивает", + "console.what_this_node_tells_other_nodes": "Что этот узел сообщает о себе другим узлам", + "console.what_you_are_watching": "За чем вы следите", + "console.when_neither_node_can_reach_the": "Когда ни один узел не может достучаться до другого", + "console.when_this_node_looks": "Когда этот узел проверяет", + "console.where_it_came_from": "Откуда он взялся", + "console.whether_other_nodes_can_open_a_link": "Могут ли другие узлы открыть соединение с этим", + "console.which_endpoints": "Какие конечные точки", + "console.while_nobody_is_here": "Пока здесь никого нет", + "console.who_receives_it": "кто его получает", + "console.who_this_node_is_connected_to_how_it": "С кем соединён этот узел, как до него добраться и как подключить другой узел.", + "console.whole_or_partial_best_match_first": "Целиком или частично — лучшее совпадение первым", + "console.why": "Почему", + "console.with_nothing_happening_no_more_often": "Когда ничего не происходит — не чаще этого.", + "console.yes": "да", + "console.yours_chosen_here_never_theirs": "Ваша, выбранная здесь. Никогда не их.", + "console.yours_to_unlock_the_key_here_it_is": "Ваша, чтобы разблокировать ключ здесь. Не отправляется.", + "console.zoom": "Масштаб", + "console.zoom_in": "Приблизить", + "console.zoom_out": "Отдалить", + "count.container": { + "one": "{count} контейнер", + "few": "{count} контейнера", + "many": "{count} контейнеров", + "other": "{count} контейнера" + }, + "count.environment": { + "one": "{count} окружение", + "few": "{count} окружения", + "many": "{count} окружений", + "other": "{count} окружения" + }, + "count.file": { + "one": "{count} файл", + "few": "{count} файла", + "many": "{count} файлов", + "other": "{count} файла" + }, + "count.hour": { + "one": "{count} час", + "few": "{count} часа", + "many": "{count} часов", + "other": "{count} часа" + }, + "count.line": { + "one": "{count} строка", + "few": "{count} строки", + "many": "{count} строк", + "other": "{count} строки" + }, "count.link": { "one": "{count} соединение", "few": "{count} соединения", "many": "{count} соединений", "other": "{count} соединения" }, + "count.listener": { + "one": "{count} прослушиватель", + "few": "{count} прослушивателя", + "many": "{count} прослушивателей", + "other": "{count} прослушивателя" + }, + "count.member": { + "one": "{count} участник", + "few": "{count} участника", + "many": "{count} участников", + "other": "{count} участника" + }, "count.message": { "one": "{count} сообщение", "few": "{count} сообщения", "many": "{count} сообщений", "other": "{count} сообщения" }, + "count.minute": { + "one": "{count} минута", + "few": "{count} минуты", + "many": "{count} минут", + "other": "{count} минуты" + }, "count.node": { "one": "{count} узел", "few": "{count} узла", "many": "{count} узлов", "other": "{count} узла" }, + "count.older_line": { + "one": "{count} более старая строка", + "few": "{count} более старые строки", + "many": "{count} более старых строк", + "other": "{count} более старые строки" + }, + "count.permission": { + "one": "{count} разрешение", + "few": "{count} разрешения", + "many": "{count} разрешений", + "other": "{count} разрешения" + }, + "count.stack": { + "one": "{count} стек", + "few": "{count} стека", + "many": "{count} стеков", + "other": "{count} стека" + }, + "count.unread_message": { + "one": "{count} непрочитанное сообщение", + "few": "{count} непрочитанных сообщения", + "many": "{count} непрочитанных сообщений", + "other": "{count} непрочитанных сообщения" + }, + "fleet.1_scan": "1 · Сканирование", + "fleet.2_install": "2 · Установка", + "fleet.a_group_needs_a_name": "Группе нужно имя.", + "fleet.a_lowercase_name_and_a_compose_file": "Нужны имя строчными буквами и файл compose.", + "fleet.a_node_id_is_40_hexadecimal": "Идентификатор узла — 40 шестнадцатеричных символов.", + "fleet.a_subnet_a_machine_or_nothing_to": "Подсеть, машина или пусто — чтобы обойти все подключённые сети.", + "fleet.a_system_install_needs_root_tick": "Для системной установки нужен root: отметьте sudo, укажите учётную запись sudo или установите под пользователем.", + "fleet.accept": "Принять {id}?", + "fleet.access": "Доступ", + "fleet.access_granted": "Доступ выдан", + "fleet.access_token": "Токен доступа", + "fleet.activity": "Активность", + "fleet.address": "Адрес", + "fleet.address_as_that_machine_reaches_it": "Адрес, как его видит та машина", + "fleet.address_here": "Адрес здесь", + "fleet.always": "always", + "fleet.always_follow": "Всегда следить", + "fleet.an_address_and_a_token_are_needed": "Нужны адрес и токен.", + "fleet.an_address_is_needed": "Нужен адрес.", + "fleet.an_image_is_required": "Нужен образ.", + "fleet.an_ssh_user_is_required": "Нужен пользователь SSH.", + "fleet.ask_for_at_least_one_capability": "Запросите хотя бы одно право.", + "fleet.ask_this_machine_now": "Спросить эту машину сейчас", + "fleet.asked_for_its_log": "У {node} запрошен журнал", + "fleet.asking": "Запрос к {who}…", + "fleet.auto_or_192_168_1_0_24_10_0_0_5_nas": "auto — или 192.168.1.0/24, 10.0.0.5, nas.lan:2222", + "fleet.auto_refresh_in_seconds_0_turns_it": "Автообновление, в секундах (0 отключает)", + "fleet.back_to_console": "Назад в консоль", + "fleet.capabilities_the_new_machines_grant": "Права, которые новые машины выдают вам", + "fleet.capabilities_to_ask_for": "Запрашиваемые права", + "fleet.choose_a_machine_first": "Сначала выберите машину", + "fleet.collected_logs_dropped": "Собранные журналы удалены", + "fleet.collection": "Сбор", + "fleet.console_of": "Консоль {id}", + "fleet.containers": "Контейнеры", + "fleet.could_not_be_updated": "Не удалось обновить {name}", + "fleet.create": "Создать", + "fleet.created": "Создан", + "fleet.credentials_are_held_in_memory_for": "Учётные данные хранятся в памяти только на время запуска", + "fleet.debug_and_above": "debug и выше", + "fleet.default_behaviour": "Поведение по умолчанию", + "fleet.delete_group": "Удалить группу", + "fleet.deploy": "Развернуть", + "fleet.deploy_a_stack": "Развернуть стек", + "fleet.deployed_by": "Развернул", + "fleet.deploying_watch_activity": "Развёртывание… следите за разделом «Активность».", + "fleet.deployment_failed_to_start": "Не удалось запустить развёртывание.", + "fleet.discover_deploy": "Поиск и развёртывание", + "fleet.docker": "Docker", + "fleet.docker_2": "docker", + "fleet.docker_compose_yml": "docker-compose.yml", + "fleet.docker_views": "Виды Docker", + "fleet.done_succeeded": "Готово: успешно {good}/{length}.", + "fleet.driver": "Драйвер", + "fleet.each_container_whose_image_changed": "Каждый контейнер, чей образ изменился, пересоздаётся.", + "fleet.each_of_these_accepted_a_request": "Каждый из них принял запрос от этого узла и выдал ровно показанные права. Ничего здесь не отнято; всё дано.", + "fleet.encrypted": "зашифровано", + "fleet.enter": "Войти", + "fleet.environment": "Окружение", + "fleet.every_machine": "Каждая машина", + "fleet.every_node_listed_here_can_act_on": "Каждый перечисленный здесь узел может действовать на этой машине. Право добавляется только отсюда: узел может попросить, но согласиться должен тот, кто находится за этой машиной.", + "fleet.filter_containers": "Фильтр контейнеров", + "fleet.filter_stacks": "Фильтр стеков", + "fleet.fleet": "Fleet", + "fleet.fleet_sections": "Разделы Fleet", + "fleet.fleet_uses_the_console_password_of": "Fleet использует пароль консоли этого узла.", + "fleet.forget": "Забыть", + "fleet.forget_everything_collected": "Забыть всё собранное", + "fleet.full_screen": "На весь экран", + "fleet.ghcr_io_owner_image_tag": "ghcr.io/owner/image:tag", + "fleet.give_a_password_a_key_or_both": "Укажите пароль, ключ или оба.", + "fleet.give_a_password_a_key_or_both_both": "Укажите пароль, ключ или оба — пробуются оба.", + "fleet.grant_access": "Выдать доступ", + "fleet.group_deleted": "Группа удалена", + "fleet.group_saved": "Группа сохранена", + "fleet.groups_for": "Группы для {id}", + "fleet.groups_updated": "Группы обновлены", + "fleet.history": "История", + "fleet.host_container_one_per_line_add_udp": "host:container, по одному на строку; добавьте :udp для UDP", + "fleet.host_path_or_volume_name_container": "путь на хосте или имя тома : путь в контейнере, :ro только для чтения", + "fleet.image": "Образ", + "fleet.images": "Образы", + "fleet.inbound": "Входящие", + "fleet.install_directory": "Каталог установки", + "fleet.install_options": "Параметры установки", + "fleet.invite_somebody_to_s_mesh": "Пригласить в ячеистую сеть {who}", + "fleet.is_running": "{image} запущен", + "fleet.its_password": "Её пароль", + "fleet.keep_them_updated_from_the": "Обновлять их от издателей, которых принимает этот узел", + "fleet.key_passphrase": "Парольная фраза ключа", + "fleet.key_removed": "Ключ удалён", + "fleet.key_value_one_per_line": "KEY=value, по одному на строку", + "fleet.label_optional": "Метка (необязательно)", + "fleet.let_it_run_its_own_system_updates": "Разрешить собственные системные обновления (одна фиксированная команда root)", + "fleet.line": "Строка", + "fleet.lines_collected_from_the_machines": "Строки, собранные с машин, которыми управляет этот узел, — что на них происходило, пока никто не смотрел. Хранятся здесь, в памяти, по одному ограниченному кольцу на машину.", + "fleet.log_collection_for": "Сбор журнала для {node}: {value}", + "fleet.logs": "Журналы", + "fleet.logs_2": "Журналы · {id}", + "fleet.lowercase_letters_digits_and": "строчные буквы, цифры, - и _", + "fleet.machine": "Машина", + "fleet.managed": "Управляемые", + "fleet.mark_all_read": "Отметить все прочитанными", + "fleet.megabytes_kept_per_machine": "Мегабайт на машину", + "fleet.name": "Имя", + "fleet.networks": "Сети", + "fleet.never_ask_when_needed": "Никогда — спрашивать при необходимости", + "fleet.new_group": "Новая группа", + "fleet.newest_first_by_the_time_this_node": "Сначала новые, по времени получения этим узлом.", + "fleet.nmesh_fleet": "NMesh Fleet", + "fleet.no_group_yet_name_one_below": "Групп пока нет — укажите имя ниже.", + "fleet.no_status_yet": "Статуса пока нет.", + "fleet.node": "Узел {id}", + "fleet.node_id": "Идентификатор узла", + "fleet.nodes": "Узлы", + "fleet.nodes_you_control": "Узлы под вашим управлением", + "fleet.nothing_of_it_runs_on_this_machine": "Ничего из этого не запущено на этой машине.", + "fleet.nothing_waiting_jobs_and_access": "Ничего не ожидает. Здесь появляются задания и запросы доступа.", + "fleet.notifications": "Уведомления", + "fleet.on_failure": "on-failure", + "fleet.only_while_a_page_is_open_on_it": "Только пока на ней открыта страница", + "fleet.open_shell": "Открыть оболочку", + "fleet.opt_nmesh": "/opt/nmesh", + "fleet.optional": "необязательно", + "fleet.or_a_new_group": "Или новая группа", + "fleet.or_type_a_whole_line_here_and_press": "…или введите здесь всю строку и нажмите Enter", + "fleet.otherwise_an_account_that_can": "Иначе — учётная запись, которая может", + "fleet.outside_a_stack": "Вне стека", + "fleet.password": "Пароль", + "fleet.portainer_connected_environments": { + "one": "Portainer подключён — виден {count} environment", + "few": "Portainer подключён — видно {count} environment", + "many": "Portainer подключён — видно {count} environment", + "other": "Portainer подключён — видно {count} environment" + }, + "fleet.portainer_did_not_answer": "Portainer не ответил", + "fleet.portainer_forgotten": "Portainer забыт", + "fleet.ports": "Порты", + "fleet.pull": "Загрузить", + "fleet.pulled": "Загружен {image}", + "fleet.pulling": "Загрузка {image}…", + "fleet.reachable_at": "Доступен по адресу", + "fleet.read_its_certificate": "Прочитать его сертификат", + "fleet.recommended": "Рекомендуется.", + "fleet.relationship_revoked": "Связь отозвана", + "fleet.reload": "Перезагрузить", + "fleet.request_access_to_a_node": "Запросить доступ к узлу", + "fleet.request_denied": "Запрос отклонён", + "fleet.request_sent_it_is_theirs_to_accept": "Запрос отправлен — решение за ними", + "fleet.restart_policy": "Политика перезапуска", + "fleet.rights_on": "Права на {id}", + "fleet.root": "root", + "fleet.run": "Запустить", + "fleet.run_a_container": "Запустить контейнер", + "fleet.running_on_the_remote_node": "Выполняется на удалённом узле…", + "fleet.scan": "Сканировать", + "fleet.scan_failed": "Сканирование не удалось.", + "fleet.scan_from": "Сканировать с", + "fleet.scan_running_on_the_remote_node": "Сканирование выполняется на удалённом узле…", + "fleet.scanning_this_takes_a_moment": "Сканирование… это займёт немного времени.", + "fleet.send_a_whole_line": "Отправить всю строку", + "fleet.send_request": "Отправить запрос", + "fleet.service": "Служба", + "fleet.service_name": "Имя службы", + "fleet.shell": "Оболочка", + "fleet.sign_in": "Войти", + "fleet.since": "С", + "fleet.size": "Размер", + "fleet.srv_data_data": "/srv/data:/data", + "fleet.ssh_key": "Ключ SSH", + "fleet.ssh_user": "Пользователь SSH", + "fleet.stack_deployed": "Стек {name} развёрнут", + "fleet.stack_failed": "Сбой стека {name}", + "fleet.start_the_fleet_app_on_it_so_it_can": "Запустить на ней приложение Fleet, чтобы ею можно было управлять и разворачивать дальше", + "fleet.state_directory": "Каталог состояния", + "fleet.stays_live_for": "Действует в течение", + "fleet.subnet": "Подсеть", + "fleet.sudo_account": "учётная запись sudo", + "fleet.system": "Система", + "fleet.targets": "Цели", + "fleet.that_could_not_be_changed": "Не удалось изменить", + "fleet.that_does_not_look_like_a_private": "Это не похоже на закрытый ключ.", + "fleet.that_file_is_too_large_for_a_key": "Файл слишком велик для ключа.", + "fleet.that_group_name_was_refused": "Это имя группы отклонено.", + "fleet.that_machine_could_not_be_asked": "Не удалось опросить эту машину", + "fleet.that_machine_did_not_answer": "Эта машина не ответила", + "fleet.that_machine_has_no_docker_compose": "На этой машине нет docker compose: сначала установите его.", + "fleet.that_request_was_refused": "Этот запрос был отклонён.", + "fleet.the_daemon_refuses_while_a_container": "Демон откажет, пока его использует контейнер.", + "fleet.the_default_could_not_be_changed": "Не удалось изменить значение по умолчанию", + "fleet.the_new_machines_pin_the_same": "Новые машины закрепляют тех же издателей релизов, что и этот узел (и сам этот узел), и сами устанавливают их подписанные релизы. Это задаётся здесь или нигде: на безголовой машине некому вставить ключ издателя в консоль, и она навсегда ничего не приняла бы из ячеистой сети.", + "fleet.the_size_could_not_be_changed": "Не удалось изменить размер", + "fleet.the_stacks_and_containers_of_one": "Стеки и контейнеры одной машины, найденные по тому, что на ней запущено, — развёрнуты ли они через compose или Portainer, — и обновляемые так, как это сделал бы их владелец.", + "fleet.this_node_s_id": "Идентификатор этого узла", + "fleet.tz_europe_paris": "TZ=Europe/Paris", + "fleet.unless_stopped": "unless-stopped", + "fleet.until": "По", + "fleet.update": "Обновить", + "fleet.update_all": "Обновить все", + "fleet.update_stacks": { + "one": "Обновить {count} стек", + "few": "Обновить {count} стека", + "many": "Обновить {count} стеков", + "other": "Обновить {count} стека" + }, + "fleet.update_started_on_nodes": { + "one": "Обновление запущено на {count} узле", + "few": "Обновление запущено на {count} узлах", + "many": "Обновление запущено на {count} узлах", + "other": "Обновление запущено на {count} узла" + }, + "fleet.update_started_progress_shows_on_the": "Обновление запущено — ход отображается на карточке узла", + "fleet.upload_a_key": "Загрузить ключ…", + "fleet.user": "Пользователь", + "fleet.var_lib_nmesh": "/var/lib/nmesh", + "fleet.volumes": "Тома", + "fleet.volumes_networks": "Тома и сети", + "fleet.what_is_followed_and_how_much_of_it": "За чем следят и сколько из этого хранится.", + "fleet.what_the_machines_said": "Что сказали машины", + "fleet.what_this_node_asked_what_it_was": "Что этот узел спрашивал, что спрашивали у него и чем всё закончилось.", + "fleet.when": "Когда", + "fleet.where_nmesh_goes_on_each_machine": "Куда NMesh устанавливается на каждой машине", + "fleet.which_containers": "Какие контейнеры", + "fleet.who_controls_this_node": "Кто управляет этим узлом", "language.auto": "Автоматически (как в браузере)", "language.help": "Язык консоли и приложений. Автоматический режим следует языку браузера.", "language.label": "Язык", @@ -46,8 +882,83 @@ "language.name.ru": "Русский", "language.name.sk": "Slovenčina", "language.name.zh": "中文", + "node.1_hour": "1 час", + "node.5_minutes": "5 минут", + "node.6_hours": "6 часов", + "node.access_requested": "Доступ запрошен", + "node.added_to_contacts": "Добавлено в контакты", + "node.nmesh_node": "Узел NMesh", + "node.node": "Узел", + "node.node_actions": "Действия с узлом", + "node.node_forgotten": "Узел забыт", + "node.open_in_fleet": "Открыть в Fleet", + "node.request_access": "Запросить доступ", + "node.request_sent_someone_there_has_to": "Запрос отправлен — кто-то там должен его принять", + "node.s_of_at_most": "{seconds} с из максимум {speed_seconds}", + "node.speed_test": "Тест скорости", + "node.state": "Состояние", + "node.this_page_reads_the_console_of_this": "Эта страница читает консоль этого узла, поэтому нужен пароль консоли.", + "node.tried": "Пробовали", + "pkg.downloaded": "Скачано: {path}.", + "pkg.fetching_and_verifying": "Получение и проверка…", + "pkg.fetching_the_package": "Получение пакета…", + "pkg.installed": "Установлено: {name} {version}", + "pkg.nmesh_package": "Пакет NMesh", + "pkg.no_longer_watching": "Больше не отслеживается: {name}", + "pkg.not_stated_here": "здесь не указано", + "pkg.open_on_its_own": "Открыть отдельно", + "pkg.package": "Пакет", + "pkg.pin_the_signing_key": "Закрепить ключ подписи", + "pkg.pinned": "Закреплено: {signer_id}", + "pkg.signing_key": "Ключ подписи", + "pkg.signing_keys_that_must_agree": "Ключи подписи, которые должны совпадать", + "pkg.that_package_is_empty": "Этот пакет пуст.", + "pkg.watching": "Отслеживается: {name}", + "pkg.what_it_says_about_itself": "Что он сообщает о себе", "state.connected": "Подключено", "state.disconnected": "Отключено", "state.offline": "Не в сети", - "state.online": "В сети" + "state.online": "В сети", + "term.back_to_the_bottom": "вниз", + "term.back_to_the_fleet": "Назад в Fleet", + "term.fetching": "Получение {name}…", + "term.files": "Файлы", + "term.folder_name": "Имя папки", + "term.folder_name_2": "имя папки", + "term.idle": "простой", + "term.keyboard": "Клавиатура", + "term.link": "соединение", + "term.new_folder": "Новая папка", + "term.nmesh_terminal": "Терминал NMesh", + "term.no_node_has_granted_a_shell": "Ни один узел не выдал оболочку", + "term.nothing_to_copy": "Нечего копировать", + "term.open": "Открыть", + "term.paste": "Вставить", + "term.paste_into_the_terminal": "Вставить в терминал", + "term.pick_a_node_first": "Сначала выберите узел.", + "term.reading": "Чтение…", + "term.remote_shell": "Удалённая оболочка", + "term.saved": "Сохранено: {name} ({size}).", + "term.sending": "Отправка {name}…", + "term.terminal": "Терминал", + "term.terminal_keys": "Клавиши терминала", + "term.text": "×", + "term.text_to_send": "Текст для отправки", + "term.that_file_could_not_be_fetched": "Не удалось получить этот файл.", + "term.that_node_could_not_be_reached": "Не удалось связаться с этим узлом.", + "term.that_upload_could_not_be_sent": "Не удалось отправить эту загрузку.", + "term.the_terminal_uses_the_console": "Терминал использует пароль консоли этого узла.", + "term.this_browser_did_not_hand_over_the": "Этот браузер не передал буфер обмена, поэтому вставьте текст сюда и отправьте. Ничего не сохраняется.", + "term.up": "Вверх", + "term.upload": "Загрузить", + "ui.back_to_this_node": "Назад к этому узлу", + "ui.copied_to_clipboard": "Скопировано в буфер обмена", + "ui.could_not_copy_select_and_copy_by": "Не удалось скопировать — выделите и скопируйте вручную", + "ui.dismiss": "Скрыть", + "ui.is_no_longer_reachable_back_on_this": "{name} больше недоступен — снова на этом узле", + "ui.not_answering": "не отвечает", + "ui.nothing_matches_that": "Ничего не найдено.", + "ui.switch_to_the_dark_theme": "Переключить на тёмную тему", + "ui.switch_to_the_light_theme": "Переключить на светлую тему", + "ui.this_node_was_updated_reloading": "Этот узел обновлён — перезагрузка" } diff --git a/src/locales/sk.json b/src/locales/sk.json index 2649b55..4d9af16 100644 --- a/src/locales/sk.json +++ b/src/locales/sk.json @@ -18,24 +18,860 @@ "common.send": "Odoslať", "common.unknown": "Neznáme", "config.saved": "Konfigurácia uložená", + "console.100_rows": "100 riadkov", + "console.10_minutes": "10 minút", + "console.10_rows": "10 riadkov", + "console.1_create_request": "1 · Vytvoriť žiadosť", + "console.1_minute": "1 minúta", + "console.20_rows": "20 riadkov", + "console.2_make_invite": "2 · Vytvoriť pozvánku", + "console.3_paste_their_reply_block": "3 · Vložiť ich blok odpovede", + "console.40_character_content_id": "40-znakové ID obsahu", + "console.50_rows": "50 riadkov", + "console.6_hours_maximum": "6 hodín (maximum)", + "console.a_few_lines_this_is_all_anybody_sees": "niekoľko riadkov — iba toto každý uvidí pred stiahnutím", + "console.a_key_made_before_this_node_had": "Kľúč vytvorený predtým, než mal tento uzol kde ich uchovávať, je súbor, ktorý nemá ako pomenovať — a pomenovanie podľa ID umožní podpísať ním verziu alebo ho niekomu ponúknuť. Zadajte cestu a prístupovú frázu vyššie.", + "console.a_line_is_an_authenticated_direct": "Čiara je overené priame spojenie: jantárová, kým stráca sondy, červená a prerušovaná, keď zlyháva, dvojitá, keď ho MLO zväzuje, bodkovaná vedľa neho, kým MLO hľadá druhé spojenie. Slabá prerušovaná čiara je relácia smerovaná cez prvý skok — čokoľvek hlbšie je pre tento uzol zámerne nepreniknuteľné.", + "console.a_membership_is_issued_for_a_year": "Členstvo sa vydáva na rok a automaticky sa obnovuje mesiac pred vypršaním, z uzla, ktorý tento uzol prijal. Je to jediné zlyhanie dôvery, ktoré uzol vie predvídať: po vypršaní reťazca sa nič neoverí a jediná cesta späť je nová pozvánka.", + "console.a_name_and_at_least_one_file_are": "Vyžaduje sa názov a aspoň jeden súbor.", + "console.a_name_and_files_are_required": "Vyžaduje sa názov a súbory.", + "console.a_name_you_choose_beside_the_id_you": "Názov, ktorý si zvolíte, vedľa ID, ktoré zvoliť nemôžete", + "console.a_node_drops_anything_it_cannot": "Uzol zahodí všetko, čo nevie overiť, čo je zámer — ale sieť mesh, ktorá sa nepripája, vyzerá zvonka rovnako ako sieť, ktorú nikto nevolá. Toto sú testy, ktoré zlyhali, najnovšie prvé. Nič tu nie je samo osebe chyba: aj cudzinec klopúci na zatvorené dvere skončí tu.", + "console.a_node_id_is_required": "Vyžaduje sa ID uzla.", + "console.a_passphrase_to_keep_it_under": "Prístupová fráza, ktorá ho chráni", + "console.a_password_is_needed": "Vyžaduje sa heslo.", + "console.a_publisher_key_is_the_safer_choice": "Kľúč vydavateľa je bezpečnejšia voľba: odomkne sa len na tento jeden podpis. Identita uzla je už odomknutá a vždy bude.", + "console.accept_failed": "Prijatie zlyhalo", + "console.accept_someone": "Prijať niekoho", + "console.accepted_for": "Akceptované pre", + "console.accusers": "Žalobcovia", + "console.add_a_node": "Pridať uzol", + "console.address_preference_updated": "Preferencia adries aktualizovaná", + "console.addressing": "Adresovanie", + "console.advanced": "Rozšírené", + "console.after_a_restart": "Po reštarte", + "console.agreeing": "Zhodujúce sa", + "console.alice": "alice", + "console.all": "Všetko", + "console.already_have_a_key_file": "Už máte súbor s kľúčom?", + "console.also_ask_the_network_for_this_exact": "Opýtať sa siete aj na tento presný názov", + "console.always_on_no": "Vždy zapnuté: nie", + "console.always_on_yes": "Vždy zapnuté: áno", + "console.an_address_and_an_invite_code_are": "Vyžaduje sa adresa a kód pozvánky.", + "console.an_app_needs": "Aplikácia potrebuje", + "console.anchors_and_taking_a_membership_back": "Kotvy a odobratie členstva", + "console.anchors_this_node_trusts": "Kotvy, ktorým tento uzol dôveruje", + "console.any_app": "ľubovoľná aplikácia", + "console.app": "Aplikácia", + "console.app_name": "Názov aplikácie", + "console.app_pages": "Stránky aplikácií", + "console.app_views": "Zobrazenia aplikácií", + "console.applications": "Aplikácie", + "console.applies_now": "použije sa hneď", + "console.applies_now_2": "Použije sa hneď", + "console.apply": "Použiť", + "console.apply_now_at_restart": "{live} sa použije hneď · {live2} pri reštarte", + "console.apply_size": "Použiť veľkosť", + "console.applying": "Používanie…", + "console.apps": "Aplikácie", + "console.apps_signed_by_it": "aplikácie ním podpísané", + "console.ask_the_network": "Opýtať sa siete", + "console.ask_the_network_not_just_what_this": "Opýtať sa siete, nielen na to, čo tento uzol už má", + "console.asked": "požadované", + "console.asking_github": "Dopytovanie GitHubu…", + "console.authenticated_and_open_a_node": "Overené a otvorené. Uzol s viacerými spojeniami sa rozbalí na ne", + "console.auto_refresh": "Automatická obnova", + "console.automatic": "Automaticky", + "console.balance": "Vyváženie", + "console.being_in_the_network_is_not_being": "Byť v sieti neznamená byť dôveryhodný. Každá aplikácia si určuje vlastnú mieru „príliš veľa“ — iba Chat vie, čo je príliš veľa správ — a nahlási odosielateľa; tento uzol rozhoduje, čo hlásenia dávajú dokopy. Uzol za prvým prahom sa prestane obsluhovať, ticho: nič sa mu nepovie, takže to zistí čo najneskôr. Sťažnosti samy vyblednú, takže uzol, ktorý sa raz previnil a potom sa správal slušne, sa vráti bez zásahu.", + "console.beyond_this_node": "Za týmto uzlom", + "console.beyond_this_striping_is_not_worth_it": "Nad túto hodnotu sa striping tomuto uzlu neoplatí.", + "console.both_the_current_and_the_new": "Vyžaduje sa aktuálne aj nové heslo.", + "console.built_in_applications_on_this_node": "Vstavané aplikácie tohto uzla a ako nájsť aplikáciu v sieti mesh. Neexistuje katalóg na prezeranie: požiadate o názov a vrátia sa podpísané záznamy.", + "console.bytes": "Bajty", + "console.certificate_unavailable": "Certifikát nie je k dispozícii", + "console.change_password": "Zmeniť heslo", + "console.changing": "Zmena…", + "console.check_for_updates": "Skontrolovať aktualizácie", + "console.choose_a_passphrase_first": "Najprv zvoľte prístupovú frázu", + "console.choose_a_passphrase_to_keep_it_under": "Zvoľte prístupovú frázu, ktorá ho ochráni", + "console.choosing_between_a_node_s_addresses": "Výber medzi adresami uzla", + "console.clear": "Vymazať", + "console.clear_all": "Vymazať všetko", + "console.clear_view": "Vymazať zobrazenie", + "console.coming_soon_the_node_moves_along_the": "Čoskoro: uzol sa bude po lište posúvať sám podľa toho, čo robí — na batériu alebo zo siete, zaneprázdnený alebo nečinný. Vy mu zadáte sklon a on sa ho bude držať.", + "console.command_palette": "Paleta príkazov", + "console.configuration": "Konfigurácia", + "console.configuration_file": "Konfiguračný súbor", + "console.confirm": "Potvrdiť", + "console.confirm_reachability": "Potvrdiť dostupnosť", + "console.connect": "Pripojiť", + "console.connect_failed": "Pripojenie zlyhalo", + "console.connect_two_nodes_by_hand": "Prepojiť dva uzly ručne", + "console.connected_apps": "Pripojené aplikácie", + "console.connected_nodes_click_to_open_the": "Pripojené uzly — kliknutím otvoríte celú mapu", + "console.connecting": "Pripájanie…", + "console.connecting_over_the_mesh": "Pripájanie cez sieť mesh…", + "console.connector_token": "Token konektora", + "console.console": "Konzola", + "console.console_is_not_reachable": "Konzola nie je dostupná", + "console.console_password": "Heslo konzoly", + "console.console_password_changed": "Heslo konzoly zmenené", + "console.console_sections": "Sekcie konzoly", + "console.contains": "Obsahuje", + "console.content_addressed_transfer": "Prenos adresovaný obsahom", + "console.content_id": "ID obsahu", + "console.content_published": "Obsah publikovaný.", + "console.control_action_failed": "Riadiaca akcia zlyhala", + "console.could_not_change_the_password": "Heslo sa nepodarilo zmeniť", + "console.could_not_check_for_updates": "Aktualizácie sa nepodarilo skontrolovať.", + "console.could_not_create_a_request": "Žiadosť sa nepodarilo vytvoriť", + "console.could_not_create_an_invitation": "Pozvánku sa nepodarilo vytvoriť", + "console.could_not_read_the_configuration": "Konfiguráciu sa nepodarilo načítať.", + "console.could_not_read_the_keys_held_here": "Kľúče uložené tu sa nepodarilo načítať.", + "console.could_not_read_what_this_node_can": "Nepodarilo sa zistiť, na čo sa môže tento uzol aktualizovať.", + "console.could_not_save_that": "Toto sa nepodarilo uložiť", + "console.could_not_save_the_balance": "Rovnováhu sa nepodarilo uložiť", + "console.counts_towards_a_quorum": "Počíta sa do kvóra", + "console.create_invitation": "Vytvoriť pozvánku", + "console.create_one": "Vytvoriť", + "console.creating": "Vytváranie…", + "console.current_password": "Súčasné heslo", + "console.dark": "Tmavá", + "console.decide_by_screen_size": "Podľa veľkosti obrazovky", + "console.diagnostics": "Diagnostika", + "console.does": "Robí", + "console.does_not_apply": "neplatí", + "console.done": "Hotovo", + "console.download": "Stiahnuť", + "console.downloading_and_installing": "Sťahovanie a inštalácia {update_offer}…", + "console.drag_to_move_pinch_or_scroll_to_zoom": "Presúvajte ťahaním · priblížte stiahnutím prstov alebo rolovaním", + "console.drop_share_that_benches_a_link": "Podiel strát, ktorý vyradí spojenie", + "console.drop_what_was_reported": "Zahodiť nahlásené", + "console.dropped_whatever_is_still_true_will": "Zahodené — čo je stále pravda, sa ohlási znova", + "console.dynamic_addressing_off": "Dynamické adresovanie: vypnuté", + "console.dynamic_addressing_on": "Dynamické adresovanie: zapnuté", + "console.each_key_and_what_its_signature_is": "Každý kľúč a na čo sa jeho podpis akceptuje", + "console.endpoint": "Koncový bod", + "console.energy_and_performance": "Energia a výkon", + "console.energy_bar": "ukazovateľ energie", + "console.enter_a_content_id": "Zadajte ID obsahu.", + "console.enter_a_listener_uri": "Zadajte URI počúvania", + "console.enter_a_valid_udp_port": "Zadajte platný port UDP", + "console.errors_only": "iba chyby", + "console.every_background_job_this_node_keeps": "Každá úloha na pozadí, ktorú tento uzol vedie, a čo ju prebúdza", + "console.every_number_and_every_setting": "Každé číslo a každé nastavenie namiesto rozhodnutí, ktoré z nich vyplývajú. Mení len to, čo zobrazuje tento prehliadač — uzol sa správa rovnako.", + "console.every_option_this_node_reads_from": "Každá možnosť, ktorú tento uzol číta zo súboru", + "console.everything": "Všetko", + "console.everything_that_changes_how_this": "Všetko, čo mení spôsob, akým tento uzol beží. Oddelené od živého stavu, aby nič z toho nebolo na jedno kliknutie od grafu, ktorý ste len čítali.", + "console.expand": "Rozbaliť", + "console.expert_mode": "Expertný režim", + "console.expert_mode_shows_every_setting_in": "Expertný režim zobrazuje každé nastavenie z konfiguračného súboru uzla vrátane tých, z ktorých sa skladá táto lišta.", + "console.failed": "{action} zlyhalo", + "console.fastest_ever": "Najrýchlejšie vôbec", + "console.fastest_measured": "Najrýchlejšie namerané", + "console.fastest_when_idle": "Najrýchlejšie v nečinnosti", + "console.fetch": "Stiahnuť", + "console.fetch_failed": "Stiahnutie zlyhalo", + "console.fetched": "{name} {version} stiahnuté.", + "console.fetched_from_the_mesh_and_unpacked": "Stiahnuté zo siete mesh a rozbalené na tomto uzle", + "console.fetching_content": "Sťahovanie obsahu…", + "console.find_a_node_by_name": "Nájsť uzol podľa názvu", + "console.find_a_package_by_name_or_by_the": "Nájsť balík podľa názvu alebo podľa uzla, ktorý ho zverejňuje", + "console.find_an_app": "Nájsť aplikáciu", + "console.fit_the_whole_mesh": "Zobraziť celú sieť mesh", + "console.follow_the_system": "Podľa systému", + "console.following_a_link_into_chat_or_fleet": "Prechod odkazom do Chatu alebo Fleet — napríklad správa uzlu z jeho podrobností. Okno necháva viditeľné, čo ste robili; telefón dostane kartu v oboch prípadoch.", + "console.for_nodes_that_cannot_see_each_other": "Pre uzly, ktoré sa zatiaľ nevidia: tri bloky textu, prenesené ľubovoľným kanálom, ktorému už dôverujete.", + "console.forget_this_app": "Zabudnúť túto aplikáciu", + "console.from": "Od", + "console.from_the_mesh": "Zo siete mesh", + "console.from_the_project": "Z projektu", + "console.further_apart_than_this_and_they_are": "Ak sú od seba vzdialenejšie, nezväzujú sa: striping cez rýchle a pomalé spojenie doručí polovicu paketov neskoro.", + "console.generate_invite_code": "Vygenerovať kód pozvánky", + "console.getting_an_update": "Získanie aktualizácie", + "console.give_the_path_to_the_key_file": "Zadajte cestu k súboru kľúča", + "console.giving_one": "Odovzdanie kľúča", + "console.handing_one_to_somebody_else_and": "Odovzdanie kľúča niekomu inému a prevzatie kľúča, ktorý ponúkne", + "console.happening_now": "Práve teraz", + "console.health_throughput_and_the_links_this": "Stav, priepustnosť a spojenia, ktoré tento uzol overil.", + "console.holding": "drží", + "console.host_port": "host:port", + "console.how_much_this_node_may_spend_to_stay": "Koľko môže tento uzol minúť, aby zostal rýchly", + "console.how_often_it_goes_checking_and": "Ako často kontroluje a či sa obťažuje pri nečinnosti", + "console.how_often_the_changing_numbers_are": "Ako často sa menia čísla načítavajú znova, v sekundách (0 vypne)", + "console.how_the_balance_is_chosen": "Ako sa vyváženie volí", + "console.how_this_node_trades_energy_for": "Ako tento uzol vymieňa energiu za rýchlosť, určuje jedno nastavenie v Nastavenia → Konfigurácia. Expertný režim tu zobrazí čísla, z ktorých sa skladá.", + "console.id": "ID", + "console.identity": "Identita", + "console.idle": "Nečinný", + "console.in_a_new_tab": "Na novej karte", + "console.in_a_separate_window": "V samostatnom okne", + "console.inbound_and_outbound_bytes_per": "Prichádzajúce a odchádzajúce bajty za sekundu", + "console.info_and_above": "info a vyššie", + "console.install": "Inštalovať", + "console.install_2": "Inštalovať {latest}", + "console.install_automatically": "Inštalovať automaticky", + "console.installed": "Nainštalované", + "console.internal_api": "Interné API", + "console.into_which_node_s_network": "Do siete ktorého uzla", + "console.invitation": "Pozvánka", + "console.invite_a_node": "Pozvať uzol", + "console.invite_code": "Kód pozvánky", + "console.invite_codes_and_certificates": "Kódy pozvánok a certifikáty", + "console.invite_generation_failed": "Vytvorenie pozvánky zlyhalo", + "console.is": "je", + "console.is_available_but_this_install_cannot": "{latest} je k dispozícii{where}, ale táto inštalácia sa nevie aktualizovať sama: {blocked}", + "console.is_available_you_run": "{latest} je k dispozícii{where} (používate {current}).", + "console.it_listens_beyond_this_machine": "Počúva aj mimo tohto počítača. Ktokoľvek, kto sa dostane na túto adresu a má token, môže robiť všetko, čo bolo aplikácii MCP udelené.", + "console.it_never_leaves_this_machine_lose_it": "Nikdy neopustí tento počítač. Ak ju stratíte, kľúč je preč — neexistuje obnova, vďaka čomu je skopírovaný súbor zbytočný.", + "console.its_passphrase": "Jeho prístupová fráza", + "console.job": "Úloha", + "console.join": "Pripojiť sa", + "console.join_or_invite": "Pripojiť sa alebo pozvať", + "console.join_someone": "Pripojiť sa k niekomu", + "console.joined_node": "Pripojené k {node}.", + "console.joined_the_network": "Pripojené k sieti", + "console.joined_through_a_relay": "Pripojené cez prenášač.", + "console.joining_the_handshake_is_post": "Pripájanie — handshake je postkvantový, chvíľu to potrvá…", + "console.jump_to_a_section_or_run_an_action": "Prejdite do sekcie alebo spustite akciu…", + "console.key": "Kľúč", + "console.key_compromised": "Kľúč kompromitovaný", + "console.key_to_share": "Kľúč na zdieľanie", + "console.keys_are_pinned_from_the_package": "Kľúče sa pripínajú z balíka, ktorý podpísali, jedným stlačením a potvrdením: kľúč prichádza v samotnom zázname a overuje sa voči podpisu, ktorý vytvoril, takže nie je čo odniekiaľ kopírovať ani čo pokaziť.", + "console.keys_this_node_can_sign_a_release": "Kľúče, ktorými môže tento uzol podpísať verziu", + "console.last": "Posledné", + "console.left_the_network": "Opustil sieť", + "console.level": "Úroveň", + "console.light": "Svetlá", + "console.link": "Spojenie", + "console.links": "Spojenia", + "console.links_open_in_a_new_tab": "Odkazy sa otvoria na novej karte", + "console.links_open_in_a_separate_window": "Odkazy sa otvoria v samostatnom okne", + "console.links_open_to_suit_the_screen": "Odkazy sa otvoria podľa obrazovky", + "console.links_that_reached_this_node_and": "Spojenia, ktoré dorazili k tomuto uzlu a boli odmietnuté, a prečo", + "console.listen_elsewhere": "Počúvať inde", + "console.listener_added": "Počúvanie pridané", + "console.listener_removed": "Počúvanie odstránené", + "console.listener_uri": "URI počúvania", + "console.listening_on": "Počúva na", + "console.live": "Naživo", + "console.load_older": "Načítať staršie", + "console.local_management_plane": "Lokálna správa", + "console.log_dropped": "vytlačené, aby sa uvoľnilo miesto: {older}", + "console.log_held": "Uchovávané pre: {who}. Uložené: {lines}, {used} z {size} MB", + "console.log_ratio": "(stlačené {ratio}×)", + "console.log_stop_not_yours": "Zastaviť to odtiaľto nemôžete: skončí, keď skončí {who}.", + "console.looking_for_a_relay_that_can_reach": "Hľadá sa prenášač, ktorý k nim dosiahne — sledujte Sieť → Peery.", + "console.loss": "Strata", + "console.made_here": "vytvorený tu", + "console.make_a_key": "Vytvoriť kľúč", + "console.manage": "Spravovať {name}", + "console.managing": "Správa {name}", + "console.manual": "Ručne", + "console.mcp_server": "Server MCP", + "console.mcp_tool": "Nástroj MCP", + "console.measures": "meria", + "console.medium": "médium", + "console.membership": "Členstvo", + "console.mesh": "Sieť mesh", + "console.mesh_map": "Mapa siete mesh", + "console.mesh_map_draggable_and_zoomable": "Mapa siete mesh, posúvateľná a priblížiteľná", + "console.message": "Správa", + "console.mlo_ready": "pripravené na MLO", + "console.more": "Viac", + "console.multi_link_operation": "Prevádzka s viacerými spojeniami", + "console.multi_link_operation_updated": "Prevádzka s viacerými spojeniami aktualizovaná", + "console.name_the_node_that_receives_it": "Pomenujte uzol, ktorý ho prijme", + "console.network": "Sieť", + "console.network_views": "Zobrazenia siete", + "console.neutral": "Neutrálne", + "console.new_password": "Nové heslo", + "console.new_token": "Nový token", + "console.nm": "NM", + "console.nmesh": "nmesh", + "console.nmesh_console": "Konzola NMesh", + "console.nmesh_packet_bytes_excluding": "Bajty paketov NMesh bez réžie prenosu", + "console.no": "nie", + "console.no_camera_available_it_needs_your": "Kamera nie je k dispozícii. Vyžaduje vaše povolenie a zabezpečenú stránku (HTTPS alebo localhost).", + "console.no_key_pinned_this_node_installs": "Žiadny pripnutý kľúč — tento uzol sám nenainštaluje nič zo siete mesh. Nájdite vyššie balík a pripnite kľúč, ktorý ho podpísal.", + "console.no_links_yet": "zatiaľ žiadne spojenia", + "console.no_node_is_reached_over_two_mlo": "Žiadny uzol sa teraz nedosahuje cez dve spojenia pripravené na MLO.", + "console.no_other_address_on_an_mlo_ready": "— žiadna ďalšia adresa na médiu pripravenom na MLO", + "console.no_payload_is_ever_recorded": "Žiadny obsah sa nikdy nezaznamenáva", + "console.no_publisher_key_here_this_node": "Tu nie je kľúč vydavateľa — tento uzol podpisuje verzie vlastnou identitou.", + "console.no_publisher_key_on_this_node": "na tomto uzle nie je kľúč vydavateľa", + "console.node_being_managed": "Spravovaný uzol", + "console.node_controls": "Ovládanie uzla", + "console.node_peers_app": "uzol, peery, aplikácia:…", + "console.nodes_linked_directly_and_nodes": "Priamo prepojené uzly a uzly dosiahnuté cez ne", + "console.nodes_under_suspicion": "Uzly pod podozrením", + "console.none_yet_this_node_trusts_only": "Zatiaľ žiadne — tento uzol dôveruje len sebe.", + "console.not_recording_nothing_is_kept_until": "Nezaznamenáva sa. Nič sa neuchováva, kým to niekto nespustí — tu spustením záznamu alebo jeho sledovaním z inej konzoly.", + "console.not_restarting": "Nereštartuje sa", + "console.nothing_held_against_that_node": "Voči tomuto uzlu sa nič neeviduje.", + "console.nothing_is_kept_until_it_is_started": "Nič sa neuchováva, kým sa to nespustí, a čo sa uchovalo, zahodí sa, keď prestane posledný, kto to uchovával: operátor tu, bežiace trasovanie alebo konzola, ktorá sleduje tento záznam odinakiaľ. Žije len v pamäti, stlačené, a je obmedzené veľkosťou nižšie.", + "console.nothing_on_the_mesh_changes_it_can": "V sieti mesh sa nič nemení — dá sa znova nájsť a nainštalovať.", + "console.nothing_registered_the_node_is_not": "Nič nie je zaregistrované — uzol nie je spustený.", + "console.nothing_to_download_yet": "Zatiaľ nie je čo stiahnuť", + "console.noticed_not_judged": "Zaznamenané, nie posúdené", + "console.off": "Vypnuté", + "console.off_2": "vypnuté", + "console.offer_refused": "Ponuka odmietnutá", + "console.offer_this_key": "Ponúknuť tento kľúč", + "console.oldest_at_the_top_follows_the_end_as": "Najstaršie hore, sleduje koniec, ako sa píšu riadky", + "console.one_block_per_medium_what_is_bound": "Jeden blok na médium: čo je viazané, čo prenáša, čo prijíma", + "console.one_invitation_both_ways_round": "Jedna pozvánka, obojsmerne", + "console.one_link_short_of_a_bundle": "Chýba jedno spojenie do zväzku:", + "console.one_short_string_where_to_connect_a": "Jeden krátky reťazec: kam sa pripojiť, cesta cez niekoho iného, keď to zlyhá, a jednorazový kód", + "console.open_console": "Otvoriť konzolu", + "console.opening_another_app": "Otváranie inej aplikácie", + "console.other_sessions_signed_out": { + "one": "Odhlásená {count} iná relácia.", + "few": "Odhlásené {count} iné relácie.", + "other": "Odhlásených {count} iných relácií.", + "many": "Odhlásenej {count} inej relácie." + }, + "console.overview": "Prehľad", + "console.package_name": "Názov balíka", + "console.packages_this_node_checks_on_and": "Balíky, ktoré tento uzol kontroluje, a čo smie nainštalovať sám", + "console.packets": "Pakety", + "console.packets_spread_over_two_links_arrive": "Pakety rozložené na dve spojenia prichádzajú v inom poradí zhruba o dvojnásobok nameraného rozdielu. Aplikácie s tým musia počítať, s týmto nastavením aj bez neho: sieť mesh smeruje a smerovaná odpoveď nikdy nemusela doraziť po tej predchádzajúcej.", + "console.passes": "Prechody", + "console.passphrase": "Prístupová fráza", + "console.password_changed": "Heslo bolo zmenené.", + "console.past_this_the_link_stops_being": "Po prekročení tejto hodnoty spojenie prestáva byť dôveryhodné. Drží sa pod vlastným časovým limitom média, nech sa dohodne čokoľvek.", + "console.paste_a_certificate": "Vložte certifikát.", + "console.paste_a_request_first": "Najprv vložte žiadosť.", + "console.paste_a_root_certificate_to_trust": "Vložte koreňový certifikát, ktorému sa má dôverovať", + "console.paste_or_scan_an_invitation": "Vložte alebo naskenujte pozvánku…", + "console.paste_or_scan_an_invitation_first": "Najprv vložte alebo naskenujte pozvánku.", + "console.paste_the_reply_first": "Najprv vložte odpoveď.", + "console.paste_their_request_block": "Vložte ich blok žiadosti", + "console.path_on_this_machine": "Cesta na tomto počítači", + "console.path_to_publisher_key": "/path/to/publisher.key", + "console.pause": "Pozastaviť", + "console.peers": "Peery", + "console.percent_of_its_last_50_probes_it": "Percento z jeho posledných 50 sond. Vráti sa pri polovici tejto hodnoty, aby spojenie na prahu nekolísalo pri jedinej sonde.", + "console.performance": "Výkon", + "console.permissions": "Oprávnenia", + "console.permissions_2": "{name} — povolenia", + "console.ping_active_nodes": "Ping aktívnych uzlov", + "console.ping_failed": "Ping zlyhal", + "console.point_the_camera_at_the_ticket_s_qr": "Namierte kameru na kód QR lístka.", + "console.port": "Port", + "console.preferences_about_this_screen_kept": "Predvoľby tejto obrazovky, uložené tu a nikde inde", + "console.preferred_medium": "Preferované médium", + "console.probe_failed": "Sonda zlyhala", + "console.problems_in_the_file": "Problémy v súbore: {problems}", + "console.protocol_trace": "Trasovanie protokolu", + "console.publish": "Zverejniť", + "console.publish_a_signed_release": "Zverejniť podpísanú verziu", + "console.publish_content": "Zverejniť obsah", + "console.publish_this_node_s_code": "Zverejniť kód tohto uzla", + "console.published": "Publikované {name} {version}", + "console.published_and_filed_under_its_name": "Publikované a zaradené pod svojím názvom — kto ho zadá, môže ho teraz nájsť.", + "console.publisher_keys_held_here": "Kľúče vydavateľa uložené tu", + "console.publishing_did_not_finish_the_node": "Publikovanie sa nedokončilo — uzol môže stále pracovať. Skontrolujte Nastavenia → Aktualizácie o minútu znova.", + "console.publishing_under_a_key": "Zverejňovanie pod kľúčom", + "console.rate": "Rýchlosť", + "console.raw_dht_package_exchange_not_the": "Surová výmena balíkov cez DHT — nie podpísaný obchod s aplikáciami", + "console.re_check_network": "Znova skontrolovať sieť", + "console.reachability": "Dostupnosť", + "console.reading_files": "Načítanie súborov…", + "console.reading_hashing_and_signing_this_can": "Načítanie, hashovanie a podpisovanie — na vyťaženej sieti mesh to môže chvíľu trvať…", + "console.reading_node_status": "Načítanie stavu uzla…", + "console.reason": "Dôvod", + "console.receiving_node": "Prijímajúci uzol", + "console.recording": "Nahrávanie", + "console.refresh_now": "Obnoviť teraz", + "console.refused": "odmietnuté", + "console.refused_handshakes": "Odmietnuté handshaky", + "console.release_notes": "Poznámky k verzii", + "console.reload_from_file": "Načítať znova zo súboru", + "console.remove_the_name": "Odstrániť názov", + "console.reordering": "Zmena poradia", + "console.repeat_new_password": "Zopakujte nové heslo", + "console.restart_this_node": "Reštartovať tento uzol", + "console.restarting": "Reštartuje sa {who}", + "console.revoke": "Odvolať", + "console.ring_size_in_megabytes": "Veľkosť kruhovej pamäte v megabajtoch", + "console.round_trip": "Odozva", + "console.rows_per_page": "Riadkov na stránku", + "console.rtt": "RTT", + "console.said_by": "uviedol {from}", + "console.same": "rovnaké", + "console.save_configuration": "Uložiť konfiguráciu", + "console.save_energy": "Šetriť energiu", + "console.save_failed": "Uloženie zlyhalo", + "console.save_name": "Uložiť názov", + "console.saves_energy": "Šetrí energiu", + "console.saving": "Ukladanie…", + "console.says_which_version_it_runs": "Uvádza, ktorú verziu používa", + "console.scan_with_camera": "Skenovať kamerou", + "console.score": "Skóre", + "console.search_active_nodes": "Hľadať aktívne uzly", + "console.search_commands": "Hľadanie a príkazy", + "console.search_endpoints": "Hľadať koncové body", + "console.search_endpoints_2": "Hľadať koncové body…", + "console.search_installed": "Hľadať nainštalované…", + "console.search_installed_apps": "Hľadať nainštalované aplikácie", + "console.search_known_nodes": "Hľadať známe uzly", + "console.search_name_id_address_transport": "Hľadať názov, ID, adresu, prenos…", + "console.search_name_id_or_address": "Hľadať názov, ID alebo adresu…", + "console.seconds": "Sekundy", + "console.seconds_to_record": "Sekundy nahrávania", + "console.security": "Zabezpečenie", + "console.seen": "Videné", + "console.send_this_block_to_the_other_side": "Pošlite tento blok druhej strane.", + "console.send_this_invite_block_back": "Pošlite tento blok pozvánky späť.", + "console.send_this_invite_block_back_2": "Pošlite tento blok pozvánky späť", + "console.send_this_request_block": "Pošlite tento blok žiadosti", + "console.sent_probe_s": "Odoslaných sond: {sent}", + "console.settings": "Nastavenia", + "console.settings_applied": "Nastavenia {scheme} použité", + "console.settings_apply_to_the_running_node": "Nastavenia sa použijú na bežiaci uzol okamžite, pokiaľ nie je uvedené inak, a potom sa zapíšu do konfiguračného súboru, aby prežili reštart. Hodnota, ktorú prenos odmietne, sa do súboru nikdy nedostane.", + "console.settings_sections": "Sekcie nastavení", + "console.sharing_a_key": "Zdieľanie kľúča", + "console.show_our_root_certificate": "Zobraziť náš koreňový certifikát", + "console.show_the_client_configuration": "Zobraziť konfiguráciu klienta", + "console.show_this_node_s_details": "Zobraziť podrobnosti tohto uzla", + "console.sign_out": "Odhlásiť sa", + "console.sign_what_is_installed_here_and": "Podpísať, čo je tu nainštalované, a ponúknuť to sieti mesh", + "console.sign_with": "Podpísať kľúčom", + "console.signed_by": "Podpísal", + "console.signing_keys_you_accept": "Podpisové kľúče, ktoré prijímate", + "console.size_mb": "Veľkosť, MB", + "console.sketchpad": "sketchpad", + "console.skew_two_links_may_differ_by": "Rozdiel, o ktorý sa môžu dve spojenia líšiť", + "console.skip_to_content": "Preskočiť na obsah", + "console.slowest_still_fast": "Najpomalšie ešte „rýchle“", + "console.slowest_when_idle": "Najpomalšie v nečinnosti", + "console.software": "Softvér", + "console.soon": "Čoskoro", + "console.source": "Zdroj", + "console.standing": "Postavenie", + "console.start_recording": "Spustiť nahrávanie", + "console.stop": "Zastaviť", + "console.stop_camera": "Zastaviť kameru", + "console.superseded": "Nahradené", + "console.sweep": "Prehľadávanie", + "console.switch_theme": "Prepnúť motív", + "console.take_back_a_membership": "Odobrať členstvo", + "console.take_it_in": "Prevziať", + "console.team": "tím", + "console.tendency": "Sklon", + "console.text_or_a_field_value": "text alebo hodnota poľa", + "console.that_could_not_be_dropped": "Toto sa nepodarilo zahodiť", + "console.that_step_could_not_be_applied": "Tento krok sa nepodarilo použiť", + "console.the_certificate_chain_this_node": "Reťazec certifikátov, ktorým tento uzol dokazuje, že patrí do siete", + "console.the_console_stopped_answering_while": "Konzola prestala pri pripájaní odpovedať. Pred ďalším pokusom skontrolujte Sieť → Peery — pripojenie mohlo prebehnúť.", + "console.the_fastest_this_node_will_be_probed": "Najrýchlejšie, ako bude tento uzol sondovaný, so stripingom aj bez neho.", + "console.the_last_things_this_node_did_or_was": "Posledné veci, ktoré tento uzol urobil alebo mu boli zadané", + "console.the_mcp_app_is_off_enable_it_on_the": "Aplikácia MCP je vypnutá. Zapnite ju na karte Nainštalované a potom jej udeľte, čo smie čítať a robiť — jej nástroje sa generujú z toho.", + "console.the_node_did_not_answer": "Uzol neodpovedal.", + "console.the_only_credential_between_the": "Jediné poverenie medzi sieťou a ovládaním tohto uzla", + "console.the_other_direction_nothing_here": "Opačný smer. Nič tu nepridáva uzol — toto sú dva spôsoby, ako sa dôvera sťahuje, a nie sú to to isté.", + "console.the_password_is_checked_on_this": "Heslo sa overuje na tomto počítači a nikdy ho neopustí. Chráni každú správcovskú akciu vrátane tých, ktoré môžu uzol reštartovať alebo aktualizovať.", + "console.the_primitives": "Základné prvky", + "console.the_routing_table_reachable_not": "Smerovacia tabuľka — dostupné, nie nutne pripojené", + "console.the_secret_is_sealed_to_a_key_the": "Tajomstvo je zapečatené kľúčom, ktorý druhá strana vygeneruje pri prijatí, takže sa nemôže prenášať, kým s prijatím niekto nesúhlasí, a otvoriť ho môže iba ona. Zvolí si vlastnú prístupovú frázu — nikdy nie vašu.", + "console.the_trace_could_not_be_read": "Záznam sa nepodarilo načítať", + "console.the_two_new_passwords_do_not_match": "Obe nové heslá sa nezhodujú.", + "console.theme": "Téma", + "console.theme_updated": "Motív aktualizovaný", + "console.there_is_no_key_to_share": "Nie je kľúč na zdieľanie", + "console.these_are_not_settings_of_the_node": "Nie sú to nastavenia uzla: žijú v tomto prehliadači, takže iný počítač prihlásený do tej istej konzoly má vlastné. Nič odtiaľto sa nikam neodosiela.", + "console.these_settings_were_tuned_by_hand": "Tieto nastavenia boli ladené ručne a nezodpovedajú žiadnemu kroku. Posunutím lišty sa nahradia zvoleným krokom.", + "console.they": "oni", + "console.things_this_node_saw_and_will_not": "Veci, ktoré tento uzol videl a nebude o nich rozhodovať, pretože úprimné vysvetlenie je zvyčajne vo vás: peer, ktorého prevádzka zrazu vyzerá ako iný počítač (aktualizovali ste ho), alebo člen siete, ktorý prijal naraz oveľa viac uzlov než kedykoľvek predtým (nasadili ste ich). Uzol nevie rozlíšiť ani jedno od ukradnutého kľúča či vyrobeného davu, preto to len oznámi namiesto konania. Nič tu nie je nikomu na ťarchu: potvrdením sa len to, čo robia teraz, stane novou normou.", + "console.this_app_connects_to_with_the_token": "Táto aplikácia sa pripája k {host}:{port} s tokenom nižšie. Dokazuje, že ide o túto aplikáciu — nezdieľajte ho.", + "console.this_browser": "Tento prehliadač", + "console.this_browser_cannot_scan_qr_codes": "Tento prehliadač nevie skenovať kódy QR. Vložte namiesto toho lístok.", + "console.this_field_takes_any_of_them_an": "Toto pole prijme ktorúkoľvek z nich — pozvánku alebo blok vložený zo staršieho uzla. Nie je z čoho vyberať.", + "console.this_medium_declares_no_setting": "Toto médium nedeklaruje žiadne nastavenie.", + "console.this_node": "Tento uzol", + "console.this_node_could_not_build": "Tento uzol nedokázal zostaviť: {names}", + "console.this_node_has_no_configuration_file": "Tento uzol nemá konfiguračný súbor: krok sa použije hneď a po reštarte sa zabudne.", + "console.this_node_s": "tohto uzla", + "console.this_node_s_identity_key": "Identitný kľúč tohto uzla", + "console.this_project_s_published_releases_on": "Zverejnené verzie tohto projektu na GitHube", + "console.throughput": "Priepustnosť", + "console.ticket_scanned_check_it_then_press": "Lístok naskenovaný — skontrolujte ho a stlačte Pripojiť sa.", + "console.times": "Počet", + "console.tools_right_now": "Nástroje práve teraz", + "console.topology": "Topológia", + "console.trace_command_failed": "Príkaz záznamu zlyhal", + "console.transport": "Prenos", + "console.transports": "Prenosy", + "console.trust_already_given": "Dôvera už udelená", + "console.trust_certificate": "Dôverovať certifikátu", + "console.two_channels_can_replace_that_and": "Môžu to nahradiť dva kanály a sú nezávislé", + "console.two_links_to_one_node_carrying_its": "Dve spojenia k jednému uzlu, ktoré spoločne prenášajú jeho prevádzku", + "console.type_a_name_the_mesh_answers_nothing": "Zadajte názov — sieť mesh odpovie, nič sa nevypisuje", + "console.type_its_passphrase_in_the_field": "Zadajte jeho prístupovú frázu do poľa vyššie", + "console.type_the_key_s_passphrase": "Zadajte prístupovú frázu kľúča", + "console.udp_port": "Port UDP", + "console.unavailable": "nedostupné", + "console.unlock_this_node": "Odomknúť tento uzol", + "console.unnamed": "bez názvu", + "console.unspecified": "Neurčené", + "console.up_to_date_running_latest_is": "Aktuálne — beží {current}, najnovšia je {latest}{where}.", + "console.update_failed": "Aktualizácia zlyhala.", + "console.updates": "Aktualizácie", + "console.use_one": "Použiť", + "console.valid_for": "Platné po dobu", + "console.valid_for_single_use": "Platné {duration}. Jednorazové — zaobchádzajte s ním ako s heslom.", + "console.version": "Verzia", + "console.via": "cez {via}", + "console.wakes_on": "Prebúdza ju", + "console.warnings_and_errors": "varovania a chyby", + "console.watch_for_new_versions": "Sledovať nové verzie", + "console.what_changed": "čo sa zmenilo", + "console.what_is_kept_is_dropped_recording": "Čo sa uchováva, sa zahodí; zaznamenávanie pokračuje.", + "console.what_is_running": "Čo beží", + "console.what_it_does": "Čo robí", + "console.what_it_is": "Čo to je", + "console.what_the_applications_and_the_core": "Čo nahlásili aplikácie a jadro", + "console.what_the_lines_mean": "Čo znamenajú čiary", + "console.what_this_key_is_for": "na čo tento kľúč slúži", + "console.what_this_node_actually_sends_and": "Čo tento uzol skutočne odosiela a prijíma, podľa typu správy", + "console.what_this_node_is_called": "Ako sa tento uzol volá", + "console.what_this_node_noticed_about_itself": "Čo si tento uzol všimol o sebe a o počítačoch, s ktorými komunikuje. Jeden riadok na problém, s počtom výskytov", + "console.what_this_node_says_about_itself": "Čo tento uzol hovorí o sebe — uchováva sa len, kým sa niekto pýta", + "console.what_this_node_tells_other_nodes": "Čo tento uzol oznamuje ostatným uzlom o sebe", + "console.what_you_are_watching": "Čo sledujete", + "console.when_neither_node_can_reach_the": "Keď sa ani jeden uzol nedostane k druhému", + "console.when_this_node_looks": "Kedy sa tento uzol pozerá", + "console.where_it_came_from": "Odkiaľ pochádza", + "console.whether_other_nodes_can_open_a_link": "Či môžu iné uzly otvoriť spojenie k tomuto", + "console.which_endpoints": "Ktoré koncové body", + "console.while_nobody_is_here": "Kým tu nikto nie je", + "console.who_receives_it": "kto ho prijme", + "console.who_this_node_is_connected_to_how_it": "S kým je tento uzol spojený, ako ho možno dosiahnuť a ako doňho zapojiť ďalší uzol.", + "console.whole_or_partial_best_match_first": "Celý alebo čiastočný — najlepšia zhoda prvá", + "console.why": "Prečo", + "console.with_nothing_happening_no_more_often": "Pri nečinnosti nie častejšie ako toto.", + "console.yes": "áno", + "console.yours_chosen_here_never_theirs": "Vaša, zvolená tu. Nikdy nie ich.", + "console.yours_to_unlock_the_key_here_it_is": "Vaša, na odomknutie kľúča tu. Neodosiela sa.", + "console.zoom": "Priblíženie", + "console.zoom_in": "Priblížiť", + "console.zoom_out": "Oddialiť", + "count.container": { + "one": "{count} kontajner", + "few": "{count} kontajnery", + "other": "{count} kontajnerov", + "many": "{count} kontajnery" + }, + "count.environment": { + "one": "{count} prostredie", + "few": "{count} prostredia", + "other": "{count} prostredí", + "many": "{count} prostredia" + }, + "count.file": { + "one": "{count} súbor", + "few": "{count} súbory", + "other": "{count} súborov", + "many": "{count} súbory" + }, + "count.hour": { + "one": "{count} hodina", + "few": "{count} hodiny", + "other": "{count} hodín", + "many": "{count} hodiny" + }, + "count.line": { + "one": "{count} riadok", + "few": "{count} riadky", + "other": "{count} riadkov", + "many": "{count} riadky" + }, "count.link": { "one": "{count} spojenie", "few": "{count} spojenia", "other": "{count} spojení", "many": "{count} spojenia" }, + "count.listener": { + "one": "{count} počúvanie", + "few": "{count} počúvania", + "other": "{count} počúvaní", + "many": "{count} počúvania" + }, + "count.member": { + "one": "{count} člen", + "few": "{count} členovia", + "other": "{count} členov", + "many": "{count} členovia" + }, "count.message": { "one": "{count} správa", "few": "{count} správy", "other": "{count} správ", "many": "{count} správy" }, + "count.minute": { + "one": "{count} minúta", + "few": "{count} minúty", + "other": "{count} minút", + "many": "{count} minúty" + }, "count.node": { "one": "{count} uzol", "few": "{count} uzly", "other": "{count} uzlov", "many": "{count} uzla" }, + "count.older_line": { + "one": "{count} starší riadok", + "few": "{count} staršie riadky", + "other": "{count} starších riadkov", + "many": "{count} staršie riadky" + }, + "count.permission": { + "one": "{count} oprávnenie", + "few": "{count} oprávnenia", + "other": "{count} oprávnení", + "many": "{count} oprávnenia" + }, + "count.stack": { + "one": "{count} stack", + "few": "{count} stacky", + "other": "{count} stackov", + "many": "{count} stacky" + }, + "count.unread_message": { + "one": "{count} neprečítaná správa", + "few": "{count} neprečítané správy", + "other": "{count} neprečítaných správ", + "many": "{count} neprečítané správy" + }, + "fleet.1_scan": "1 · Skenovať", + "fleet.2_install": "2 · Inštalovať", + "fleet.a_group_needs_a_name": "Skupina potrebuje názov.", + "fleet.a_lowercase_name_and_a_compose_file": "Vyžaduje sa názov malými písmenami a súbor compose.", + "fleet.a_node_id_is_40_hexadecimal": "ID uzla má 40 hexadecimálnych znakov.", + "fleet.a_subnet_a_machine_or_nothing_to": "Podsieť, počítač alebo nič na prehľadanie všetkých pripojených sietí.", + "fleet.a_system_install_needs_root_tick": "Systémová inštalácia vyžaduje root: zaškrtnite sudo, uveďte účet sudo alebo inštalujte pod používateľa.", + "fleet.accept": "Prijať {id}?", + "fleet.access": "Prístup", + "fleet.access_granted": "Prístup udelený", + "fleet.access_token": "Prístupový token", + "fleet.activity": "Aktivita", + "fleet.address": "Adresa", + "fleet.address_as_that_machine_reaches_it": "Adresa, ako ju vidí ten počítač", + "fleet.address_here": "Adresa tu", + "fleet.always": "always", + "fleet.always_follow": "Vždy sledovať", + "fleet.an_address_and_a_token_are_needed": "Vyžaduje sa adresa a token.", + "fleet.an_address_is_needed": "Vyžaduje sa adresa.", + "fleet.an_image_is_required": "Vyžaduje sa image.", + "fleet.an_ssh_user_is_required": "Vyžaduje sa používateľ SSH.", + "fleet.ask_for_at_least_one_capability": "Požiadajte aspoň o jedno oprávnenie.", + "fleet.ask_this_machine_now": "Opýtať sa tohto počítača teraz", + "fleet.asked_for_its_log": "Uzol {node} bol požiadaný o svoj log", + "fleet.asking": "Dopytovanie {who}…", + "fleet.auto_or_192_168_1_0_24_10_0_0_5_nas": "auto — alebo 192.168.1.0/24, 10.0.0.5, nas.lan:2222", + "fleet.auto_refresh_in_seconds_0_turns_it": "Automatická obnova, v sekundách (0 vypne)", + "fleet.back_to_console": "Späť na konzolu", + "fleet.capabilities_the_new_machines_grant": "Oprávnenia, ktoré vám nové počítače udelia", + "fleet.capabilities_to_ask_for": "Oprávnenia, o ktoré požiadať", + "fleet.choose_a_machine_first": "Najprv zvoľte počítač", + "fleet.collected_logs_dropped": "Zozbierané logy zahodené", + "fleet.collection": "Zhromažďovanie", + "fleet.console_of": "Konzola {id}", + "fleet.containers": "Kontajnery", + "fleet.could_not_be_updated": "{name} sa nepodarilo aktualizovať", + "fleet.create": "Vytvoriť", + "fleet.created": "Vytvorené", + "fleet.credentials_are_held_in_memory_for": "Poverenia sa držia v pamäti iba počas behu", + "fleet.debug_and_above": "debug a vyššie", + "fleet.default_behaviour": "Predvolené správanie", + "fleet.delete_group": "Odstrániť skupinu", + "fleet.deploy": "Nasadiť", + "fleet.deploy_a_stack": "Nasadiť stack", + "fleet.deployed_by": "Nasadil", + "fleet.deploying_watch_activity": "Nasadzovanie… sledujte Aktivitu.", + "fleet.deployment_failed_to_start": "Nasadenie sa nepodarilo spustiť.", + "fleet.discover_deploy": "Objaviť a nasadiť", + "fleet.docker": "Docker", + "fleet.docker_2": "docker", + "fleet.docker_compose_yml": "docker-compose.yml", + "fleet.docker_views": "Zobrazenia Docker", + "fleet.done_succeeded": "Hotovo: {good}/{length} úspešných.", + "fleet.driver": "Ovládač", + "fleet.each_container_whose_image_changed": "Každý kontajner, ktorého image sa zmenil, sa vytvorí znova.", + "fleet.each_of_these_accepted_a_request": "Každý z nich prijal žiadosť od tohto uzla a udelil presne zobrazené oprávnenia. Nič tu nebolo zobraté; všetko bolo dané.", + "fleet.encrypted": "šifrované", + "fleet.enter": "Vstúpiť", + "fleet.environment": "Prostredie", + "fleet.every_machine": "Každý počítač", + "fleet.every_node_listed_here_can_act_on": "Každý tu uvedený uzol môže konať na tomto počítači. Právo sa pridáva iba odtiaľto — uzol môže požiadať, ale niekto pri tomto počítači musí súhlasiť.", + "fleet.filter_containers": "Filtrovať kontajnery", + "fleet.filter_stacks": "Filtrovať stacky", + "fleet.fleet": "Fleet", + "fleet.fleet_sections": "Sekcie Fleet", + "fleet.fleet_uses_the_console_password_of": "Fleet používa heslo konzoly tohto uzla.", + "fleet.forget": "Zabudnúť", + "fleet.forget_everything_collected": "Zabudnúť všetko zhromaždené", + "fleet.full_screen": "Celá obrazovka", + "fleet.ghcr_io_owner_image_tag": "ghcr.io/owner/image:tag", + "fleet.give_a_password_a_key_or_both": "Zadajte heslo, kľúč alebo oboje.", + "fleet.give_a_password_a_key_or_both_both": "Zadajte heslo, kľúč alebo oboje — vyskúšajú sa obe.", + "fleet.grant_access": "Udeliť prístup", + "fleet.group_deleted": "Skupina odstránená", + "fleet.group_saved": "Skupina uložená", + "fleet.groups_for": "Skupiny pre {id}", + "fleet.groups_updated": "Skupiny aktualizované", + "fleet.history": "História", + "fleet.host_container_one_per_line_add_udp": "host:kontajner, jeden na riadok; pridajte :udp pre UDP", + "fleet.host_path_or_volume_name_container": "cesta na hostiteľovi alebo názov zväzku : cesta v kontajneri, :ro pre len na čítanie", + "fleet.image": "Image", + "fleet.images": "Images", + "fleet.inbound": "Prichádzajúce", + "fleet.install_directory": "Inštalačný adresár", + "fleet.install_options": "Možnosti inštalácie", + "fleet.invite_somebody_to_s_mesh": "Pozvať niekoho do siete mesh uzla {who}", + "fleet.is_running": "{image} beží", + "fleet.its_password": "Jeho heslo", + "fleet.keep_them_updated_from_the": "Aktualizovať ich od vydavateľov, ktorých tento uzol akceptuje", + "fleet.key_passphrase": "Prístupová fráza kľúča", + "fleet.key_removed": "Kľúč odstránený", + "fleet.key_value_one_per_line": "KĽÚČ=hodnota, jedna na riadok", + "fleet.label_optional": "Označenie (voliteľné)", + "fleet.let_it_run_its_own_system_updates": "Nechať ho spúšťať vlastné systémové aktualizácie (jeden pevný príkaz root)", + "fleet.line": "Riadok", + "fleet.lines_collected_from_the_machines": "Riadky zhromaždené z počítačov, ktoré tento uzol spravuje — čo sa na nich stalo, keď sa nikto nepozeral. Uložené tu, v pamäti, jeden ohraničený kruh na počítač.", + "fleet.log_collection_for": "Zber logov pre {node}: {value}", + "fleet.logs": "Logy", + "fleet.logs_2": "Logy · {id}", + "fleet.lowercase_letters_digits_and": "malé písmená, číslice, - a _", + "fleet.machine": "Počítač", + "fleet.managed": "Spravované", + "fleet.mark_all_read": "Označiť všetko ako prečítané", + "fleet.megabytes_kept_per_machine": "Megabajtov uchovaných na počítač", + "fleet.name": "Názov", + "fleet.networks": "Siete", + "fleet.never_ask_when_needed": "Nikdy — opýtať sa, keď treba", + "fleet.new_group": "Nová skupina", + "fleet.newest_first_by_the_time_this_node": "Najnovšie prvé, podľa času, kedy ich tento uzol prijal.", + "fleet.nmesh_fleet": "NMesh Fleet", + "fleet.no_group_yet_name_one_below": "Zatiaľ žiadna skupina — pomenujte ju nižšie.", + "fleet.no_status_yet": "Zatiaľ žiadny stav.", + "fleet.node": "Uzol {id}", + "fleet.node_id": "ID uzla", + "fleet.nodes": "Uzly", + "fleet.nodes_you_control": "Uzly, ktoré ovládate", + "fleet.nothing_of_it_runs_on_this_machine": "Nič z toho nebeží na tomto počítači.", + "fleet.nothing_waiting_jobs_and_access": "Nič nečaká. Úlohy a žiadosti o prístup sa zobrazia tu.", + "fleet.notifications": "Upozornenia", + "fleet.on_failure": "on-failure", + "fleet.only_while_a_page_is_open_on_it": "Iba kým je na ňom otvorená stránka", + "fleet.open_shell": "Otvoriť shell", + "fleet.opt_nmesh": "/opt/nmesh", + "fleet.optional": "voliteľné", + "fleet.or_a_new_group": "Alebo nová skupina", + "fleet.or_type_a_whole_line_here_and_press": "…alebo sem napíšte celý riadok a stlačte Enter", + "fleet.otherwise_an_account_that_can": "Inak účet, ktorý môže", + "fleet.outside_a_stack": "Mimo stacku", + "fleet.password": "Heslo", + "fleet.portainer_connected_environments": { + "one": "Portainer pripojený — viditeľné prostredie: {count}", + "few": "Portainer pripojený — viditeľné prostredia: {count}", + "other": "Portainer pripojený — viditeľné prostredia: {count}", + "many": "Portainer pripojený — viditeľné prostredia: {count}" + }, + "fleet.portainer_did_not_answer": "Portainer neodpovedal", + "fleet.portainer_forgotten": "Portainer zabudnutý", + "fleet.ports": "Porty", + "fleet.pull": "Stiahnuť", + "fleet.pulled": "Stiahnuté {image}", + "fleet.pulling": "Sťahovanie {image}…", + "fleet.reachable_at": "Dostupné na", + "fleet.read_its_certificate": "Načítať jeho certifikát", + "fleet.recommended": "Odporúčané.", + "fleet.relationship_revoked": "Vzťah odvolaný", + "fleet.reload": "Načítať znova", + "fleet.request_access_to_a_node": "Požiadať o prístup k uzlu", + "fleet.request_denied": "Žiadosť zamietnutá", + "fleet.request_sent_it_is_theirs_to_accept": "Žiadosť odoslaná — je na nich, či ju prijmú", + "fleet.restart_policy": "Politika reštartu", + "fleet.rights_on": "Práva na {id}", + "fleet.root": "root", + "fleet.run": "Spustiť", + "fleet.run_a_container": "Spustiť kontajner", + "fleet.running_on_the_remote_node": "Beží na vzdialenom uzle…", + "fleet.scan": "Skenovať", + "fleet.scan_failed": "Skenovanie zlyhalo.", + "fleet.scan_from": "Skenovať z", + "fleet.scan_running_on_the_remote_node": "Skenovanie beží na vzdialenom uzle…", + "fleet.scanning_this_takes_a_moment": "Skenovanie… chvíľu to potrvá.", + "fleet.send_a_whole_line": "Odoslať celý riadok", + "fleet.send_request": "Odoslať žiadosť", + "fleet.service": "Služba", + "fleet.service_name": "Názov služby", + "fleet.shell": "Shell", + "fleet.sign_in": "Prihlásiť sa", + "fleet.since": "Od", + "fleet.size": "Veľkosť", + "fleet.srv_data_data": "/srv/data:/data", + "fleet.ssh_key": "Kľúč SSH", + "fleet.ssh_user": "Používateľ SSH", + "fleet.stack_deployed": "Stack {name} nasadený", + "fleet.stack_failed": "Stack {name} zlyhal", + "fleet.start_the_fleet_app_on_it_so_it_can": "Spustiť na ňom aplikáciu Fleet, aby sa dal spravovať a mohol nasadzovať ďalej", + "fleet.state_directory": "Adresár stavu", + "fleet.stays_live_for": "Zostáva aktívne", + "fleet.subnet": "Podsieť", + "fleet.sudo_account": "účet sudo", + "fleet.system": "Systém", + "fleet.targets": "Ciele", + "fleet.that_could_not_be_changed": "Toto sa nepodarilo zmeniť", + "fleet.that_does_not_look_like_a_private": "Toto nevyzerá ako súkromný kľúč.", + "fleet.that_file_is_too_large_for_a_key": "Ten súbor je na kľúč príliš veľký.", + "fleet.that_group_name_was_refused": "Tento názov skupiny bol odmietnutý.", + "fleet.that_machine_could_not_be_asked": "Ten počítač sa nepodarilo dopytovať", + "fleet.that_machine_did_not_answer": "Ten počítač neodpovedal", + "fleet.that_machine_has_no_docker_compose": "Ten počítač nemá docker compose: najprv ho tam nainštalujte.", + "fleet.that_request_was_refused": "Táto žiadosť bola odmietnutá.", + "fleet.the_daemon_refuses_while_a_container": "Démon odmietne, kým ho používa kontajner.", + "fleet.the_default_could_not_be_changed": "Predvolenú hodnotu sa nepodarilo zmeniť", + "fleet.the_new_machines_pin_the_same": "Nové počítače pripnú tých istých vydavateľov verzií ako tento uzol (a samotný tento uzol) a svoje podpísané verzie inštalujú samy. Nastavuje sa tu alebo nikde: bezhlavý počítač nemá kto vložiť kľúč vydavateľa do konzoly a navždy by zo siete mesh neprijal nič.", + "fleet.the_size_could_not_be_changed": "Veľkosť sa nepodarilo zmeniť", + "fleet.the_stacks_and_containers_of_one": "Stacky a kontajnery jedného počítača, nájdené podľa toho, čo beží — či ich nasadil compose alebo Portainer — a aktualizované tak, ako by to urobil ich vlastník.", + "fleet.this_node_s_id": "ID tohto uzla", + "fleet.tz_europe_paris": "TZ=Europe/Paris", + "fleet.unless_stopped": "unless-stopped", + "fleet.until": "Do", + "fleet.update": "Aktualizovať", + "fleet.update_all": "Aktualizovať všetko", + "fleet.update_stacks": { + "one": "Aktualizovať {count} stack", + "few": "Aktualizovať {count} stacky", + "other": "Aktualizovať {count} stackov", + "many": "Aktualizovať {count} stacku" + }, + "fleet.update_started_on_nodes": { + "one": "Aktualizácia spustená na {count} uzle", + "few": "Aktualizácia spustená na {count} uzloch", + "other": "Aktualizácia spustená na {count} uzloch", + "many": "Aktualizácia spustená na {count} uzla" + }, + "fleet.update_started_progress_shows_on_the": "Aktualizácia spustená — priebeh sa zobrazí na karte uzla", + "fleet.upload_a_key": "Nahrať kľúč…", + "fleet.user": "Používateľ", + "fleet.var_lib_nmesh": "/var/lib/nmesh", + "fleet.volumes": "Zväzky", + "fleet.volumes_networks": "Zväzky a siete", + "fleet.what_is_followed_and_how_much_of_it": "Čo sa sleduje a koľko z toho sa uchováva.", + "fleet.what_the_machines_said": "Čo počítače povedali", + "fleet.what_this_node_asked_what_it_was": "Čo sa tento uzol pýtal, čo sa pýtali jeho a ako každé skončilo.", + "fleet.when": "Kedy", + "fleet.where_nmesh_goes_on_each_machine": "Kam NMesh na každom počítači príde", + "fleet.which_containers": "Ktoré kontajnery", + "fleet.who_controls_this_node": "Kto ovláda tento uzol", "language.auto": "Automaticky (podľa prehliadača)", "language.help": "Jazyk konzoly a aplikácií. Automaticky sleduje prehliadač.", "language.label": "Jazyk", @@ -46,8 +882,83 @@ "language.name.ru": "Русский", "language.name.sk": "Slovenčina", "language.name.zh": "中文", + "node.1_hour": "1 hodina", + "node.5_minutes": "5 minút", + "node.6_hours": "6 hodín", + "node.access_requested": "Prístup vyžiadaný", + "node.added_to_contacts": "Pridané do kontaktov", + "node.nmesh_node": "Uzol NMesh", + "node.node": "Uzol", + "node.node_actions": "Akcie uzla", + "node.node_forgotten": "Uzol zabudnutý", + "node.open_in_fleet": "Otvoriť vo Fleet", + "node.request_access": "Požiadať o prístup", + "node.request_sent_someone_there_has_to": "Žiadosť odoslaná — niekto tam ju musí prijať", + "node.s_of_at_most": "{seconds} s z najviac {speed_seconds}", + "node.speed_test": "Test rýchlosti", + "node.state": "Stav", + "node.this_page_reads_the_console_of_this": "Táto stránka číta konzolu tohto uzla, preto vyžaduje heslo konzoly.", + "node.tried": "Vyskúšané", + "pkg.downloaded": "Stiahnuté {path}.", + "pkg.fetching_and_verifying": "Sťahovanie a overovanie…", + "pkg.fetching_the_package": "Sťahovanie balíka…", + "pkg.installed": "Nainštalované {name} {version}", + "pkg.nmesh_package": "Balík NMesh", + "pkg.no_longer_watching": "{name} sa už nesleduje", + "pkg.not_stated_here": "tu neuvedené", + "pkg.open_on_its_own": "Otvoriť samostatne", + "pkg.package": "Balík", + "pkg.pin_the_signing_key": "Pripnúť podpisový kľúč", + "pkg.pinned": "Pripnuté {signer_id}", + "pkg.signing_key": "Podpisový kľúč", + "pkg.signing_keys_that_must_agree": "Podpisové kľúče, ktoré sa musia zhodovať", + "pkg.that_package_is_empty": "Ten balík je prázdny.", + "pkg.watching": "Sleduje sa {name}", + "pkg.what_it_says_about_itself": "Čo o sebe tvrdí", "state.connected": "Pripojené", "state.disconnected": "Odpojené", "state.offline": "Offline", - "state.online": "Online" + "state.online": "Online", + "term.back_to_the_bottom": "späť na koniec", + "term.back_to_the_fleet": "Späť na Fleet", + "term.fetching": "Sťahovanie {name}…", + "term.files": "Súbory", + "term.folder_name": "Názov priečinka", + "term.folder_name_2": "názov priečinka", + "term.idle": "nečinný", + "term.keyboard": "Klávesnica", + "term.link": "spojenie", + "term.new_folder": "Nový priečinok", + "term.nmesh_terminal": "Terminál NMesh", + "term.no_node_has_granted_a_shell": "Žiadny uzol neudelil shell", + "term.nothing_to_copy": "Nie je čo kopírovať", + "term.open": "Otvoriť", + "term.paste": "Vložiť", + "term.paste_into_the_terminal": "Vložiť do terminálu", + "term.pick_a_node_first": "Najprv vyberte uzol.", + "term.reading": "Načítanie…", + "term.remote_shell": "Vzdialený shell", + "term.saved": "Uložené {name} ({size}).", + "term.sending": "Odosielanie {name}…", + "term.terminal": "Terminál", + "term.terminal_keys": "Klávesy terminálu", + "term.text": "×", + "term.text_to_send": "Text na odoslanie", + "term.that_file_could_not_be_fetched": "Ten súbor sa nepodarilo stiahnuť.", + "term.that_node_could_not_be_reached": "Ten uzol sa nepodarilo dosiahnuť.", + "term.that_upload_could_not_be_sent": "To nahranie sa nepodarilo odoslať.", + "term.the_terminal_uses_the_console": "Terminál používa heslo konzoly tohto uzla.", + "term.this_browser_did_not_hand_over_the": "Tento prehliadač nepredal schránku, preto vložte text sem a odošlite ho. Nič sa neukladá.", + "term.up": "Hore", + "term.upload": "Nahrať", + "ui.back_to_this_node": "Späť na tento uzol", + "ui.copied_to_clipboard": "Skopírované do schránky", + "ui.could_not_copy_select_and_copy_by": "Kopírovanie zlyhalo — označte a skopírujte ručne", + "ui.dismiss": "Zavrieť", + "ui.is_no_longer_reachable_back_on_this": "{name} už nie je dostupný — späť na tomto uzle", + "ui.not_answering": "neodpovedá", + "ui.nothing_matches_that": "Nič nezodpovedá.", + "ui.switch_to_the_dark_theme": "Prepnúť na tmavú tému", + "ui.switch_to_the_light_theme": "Prepnúť na svetlú tému", + "ui.this_node_was_updated_reloading": "Tento uzol bol aktualizovaný — načítava sa znova" } diff --git a/src/locales/zh.json b/src/locales/zh.json index 40563e7..f55a917 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -18,15 +18,803 @@ "common.send": "发送", "common.unknown": "未知", "config.saved": "配置已保存", + "console.100_rows": "100 行", + "console.10_minutes": "10 分钟", + "console.10_rows": "10 行", + "console.1_create_request": "1 · 创建请求", + "console.1_minute": "1 分钟", + "console.20_rows": "20 行", + "console.2_make_invite": "2 · 生成邀请", + "console.3_paste_their_reply_block": "3 · 粘贴对方的回复文本块", + "console.40_character_content_id": "40 个字符的内容 ID", + "console.50_rows": "50 行", + "console.6_hours_maximum": "6 小时(最长)", + "console.a_few_lines_this_is_all_anybody_sees": "几行文字——这是任何人在获取之前能看到的全部内容", + "console.a_key_made_before_this_node_had": "在此节点有地方保管密钥之前创建的密钥只是一个无法命名的文件——而通过 ID 命名才能用它签署版本,或将其提供给他人。请填写上方的路径和口令。", + "console.a_line_is_an_authenticated_direct": "一条线代表一条已认证的直接链路:丢失探测时为琥珀色,出现故障后为红色虚线,被 MLO 捆绑时为双线,MLO 寻找第二条链路时旁边显示点线。淡色虚线表示经由第一跳路由的会话——更深的部分按设计对此节点不可见。", + "console.a_membership_is_issued_for_a_year": "成员资格有效期为一年,并在到期前一个月由接纳此节点的节点自动续期。这是节点能预见到的唯一信任故障:证书链过期后,任何内容都无法对其认证,唯一的回归途径是重新获得邀请。", + "console.a_name_and_at_least_one_file_are": "需要名称和至少一个文件。", + "console.a_name_and_files_are_required": "需要名称和文件。", + "console.a_name_you_choose_beside_the_id_you": "你自选的名称,与无法更改的 ID 并列", + "console.a_node_drops_anything_it_cannot": "节点会丢弃一切无法验证的内容,这正是其意义所在——但从外部看,无法连接的网状网络与无人呼叫的网络并无区别。以下是失败的检查,最新的在前。其中任何一项本身都不是错误:陌生人敲一扇关着的门也会出现在这里。", + "console.a_node_id_is_required": "需要节点 ID。", + "console.a_passphrase_to_keep_it_under": "用于保护它的口令", + "console.a_password_is_needed": "需要密码。", + "console.a_publisher_key_is_the_safer_choice": "发布者密钥更安全:仅为这一次签名解锁。而节点身份已解锁,并将始终保持解锁。", + "console.accept_failed": "接受失败", + "console.accept_someone": "接纳他人", + "console.accepted_for": "接受范围", + "console.accusers": "举报者", + "console.add_a_node": "添加节点", + "console.address_preference_updated": "地址偏好已更新", + "console.addressing": "寻址", + "console.advanced": "高级", + "console.after_a_restart": "重启后", + "console.agreeing": "一致", + "console.alice": "alice", + "console.all": "全部", + "console.already_have_a_key_file": "已有密钥文件?", + "console.also_ask_the_network_for_this_exact": "同时向网络查询这个确切名称", + "console.always_on_no": "始终开启:否", + "console.always_on_yes": "始终开启:是", + "console.an_address_and_an_invite_code_are": "需要地址和邀请码。", + "console.an_app_needs": "应用需要", + "console.anchors_and_taking_a_membership_back": "锚点,以及收回成员资格", + "console.anchors_this_node_trusts": "此节点信任的锚点", + "console.any_app": "任何应用", + "console.app": "应用", + "console.app_name": "应用名称", + "console.app_pages": "应用页面", + "console.app_views": "应用视图", + "console.applications": "应用程序", + "console.applies_now": "立即生效", + "console.applies_now_2": "立即生效", + "console.apply": "应用", + "console.apply_now_at_restart": "{live} 项立即生效 · {live2} 项重启后生效", + "console.apply_size": "应用大小", + "console.applying": "应用中…", + "console.apps": "应用", + "console.apps_signed_by_it": "由其签名的应用", + "console.ask_the_network": "询问网络", + "console.ask_the_network_not_just_what_this": "询问网络,而不仅限于此节点已有的内容", + "console.asked": "已请求", + "console.asking_github": "正在询问 GitHub…", + "console.authenticated_and_open_a_node": "已认证且已打开。持有多条链路的节点可展开查看", + "console.auto_refresh": "自动刷新", + "console.automatic": "自动", + "console.balance": "均衡", + "console.being_in_the_network_is_not_being": "身在网络中并不等于被信任。每个应用自行设定“过多”的标准——只有 Chat 知道多少消息算过多——并上报发送者;这些上报累积的结果由此节点决定。超过第一个阈值的节点将不再获得服务,且是静默的:不会通知它任何信息,使其尽可能晚才察觉。投诉会自行淡化,因此曾行为不当而后恢复正常的节点无需任何人操作即可回归。", + "console.beyond_this_node": "此节点之外", + "console.beyond_this_striping_is_not_worth_it": "超过此值,对此节点而言拆分不再值得。", + "console.both_the_current_and_the_new": "需要同时提供当前密码和新密码。", + "console.built_in_applications_on_this_node": "此节点上的内置应用,以及如何在网状网络中查找应用。没有可浏览的目录:你输入名称,便会返回已签名的记录。", + "console.bytes": "字节", + "console.certificate_unavailable": "证书不可用", + "console.change_password": "更改密码", + "console.changing": "更改中…", + "console.check_for_updates": "检查更新", + "console.choose_a_passphrase_first": "请先选择口令", + "console.choose_a_passphrase_to_keep_it_under": "请选择用于保护它的口令", + "console.choosing_between_a_node_s_addresses": "在节点的多个地址之间选择", + "console.clear": "清除", + "console.clear_all": "全部清除", + "console.clear_view": "清除视图", + "console.coming_soon_the_node_moves_along_the": "即将推出:节点将根据自身状况——使用电池或市电、忙碌或空闲——自行沿滑杆移动。你给出倾向,它在其范围内运行。", + "console.command_palette": "命令面板", + "console.configuration": "配置", + "console.configuration_file": "配置文件", + "console.confirm": "确认", + "console.confirm_reachability": "确认可达性", + "console.connect": "连接", + "console.connect_failed": "连接失败", + "console.connect_two_nodes_by_hand": "手动连接两个节点", + "console.connected_apps": "已连接的应用", + "console.connected_nodes_click_to_open_the": "已连接的节点——点击打开完整地图", + "console.connecting": "连接中…", + "console.connecting_over_the_mesh": "正在通过网状网络连接…", + "console.connector_token": "连接器令牌", + "console.console": "控制台", + "console.console_is_not_reachable": "无法访问控制台", + "console.console_password": "控制台密码", + "console.console_password_changed": "控制台密码已更改", + "console.console_sections": "控制台分区", + "console.contains": "包含", + "console.content_addressed_transfer": "内容寻址传输", + "console.content_id": "内容 ID", + "console.content_published": "内容已发布。", + "console.control_action_failed": "控制操作失败", + "console.could_not_change_the_password": "无法更改密码", + "console.could_not_check_for_updates": "无法检查更新。", + "console.could_not_create_a_request": "无法创建请求", + "console.could_not_create_an_invitation": "无法创建邀请", + "console.could_not_read_the_configuration": "无法读取配置。", + "console.could_not_read_the_keys_held_here": "无法读取此处持有的密钥。", + "console.could_not_read_what_this_node_can": "无法读取此节点可更新到的版本。", + "console.could_not_save_that": "无法保存", + "console.could_not_save_the_balance": "无法保存均衡设置", + "console.counts_towards_a_quorum": "计入法定人数", + "console.create_invitation": "创建邀请", + "console.create_one": "创建", + "console.creating": "创建中…", + "console.current_password": "当前密码", + "console.dark": "深色", + "console.decide_by_screen_size": "按屏幕尺寸决定", + "console.diagnostics": "诊断", + "console.does": "作用", + "console.does_not_apply": "不适用", + "console.done": "完成", + "console.download": "下载", + "console.downloading_and_installing": "正在下载并安装 {update_offer}…", + "console.drag_to_move_pinch_or_scroll_to_zoom": "拖动以移动 · 捏合或滚动以缩放", + "console.drop_share_that_benches_a_link": "使链路被搁置的丢包比例", + "console.drop_what_was_reported": "丢弃已上报的内容", + "console.dropped_whatever_is_still_true_will": "已丢弃——仍然成立的内容将会再次上报", + "console.dynamic_addressing_off": "动态寻址:关", + "console.dynamic_addressing_on": "动态寻址:开", + "console.each_key_and_what_its_signature_is": "每个密钥,以及其签名被接受的范围", + "console.endpoint": "端点", + "console.energy_and_performance": "能耗与性能", + "console.energy_bar": "电量条", + "console.enter_a_content_id": "请输入内容 ID。", + "console.enter_a_listener_uri": "请输入监听器 URI", + "console.enter_a_valid_udp_port": "请输入有效的 UDP 端口", + "console.errors_only": "仅错误", + "console.every_background_job_this_node_keeps": "此节点维持的每个后台任务,以及唤醒它的条件", + "console.every_number_and_every_setting": "显示每个数值和每项设置,而非它们汇总出的结论。只改变此浏览器的显示——节点的行为不变。", + "console.every_option_this_node_reads_from": "此节点从其文件中读取的每个选项", + "console.everything": "全部", + "console.everything_that_changes_how_this": "所有会改变此节点运行方式的内容。与实时状态分开放置,因此这里没有任何操作与你正在查看的图表只有一次点击之遥。", + "console.expand": "展开", + "console.expert_mode": "专家模式", + "console.expert_mode_shows_every_setting_in": "专家模式会显示节点配置文件中的每项设置,包括构成此滑杆的设置。", + "console.failed": "{action}失败", + "console.fastest_ever": "最快速度上限", + "console.fastest_measured": "测得最快", + "console.fastest_when_idle": "空闲时最快", + "console.fetch": "获取", + "console.fetch_failed": "获取失败", + "console.fetched": "已获取 {name} {version}。", + "console.fetched_from_the_mesh_and_unpacked": "从网状网络获取并在此节点上解包", + "console.fetching_content": "正在获取内容…", + "console.find_a_node_by_name": "按名称查找节点", + "console.find_a_package_by_name_or_by_the": "按名称或按发布它的节点查找软件包", + "console.find_an_app": "查找应用", + "console.fit_the_whole_mesh": "适应整个网状网络", + "console.follow_the_system": "跟随系统", + "console.following_a_link_into_chat_or_fleet": "从链接进入 Chat 或 Fleet——例如从详情页向节点发消息。窗口可让你保持当前操作可见;手机无论如何都使用标签页。", + "console.for_nodes_that_cannot_see_each_other": "适用于尚无法互相看到的节点:三段文本,通过你已信任的任意渠道传递。", + "console.forget_this_app": "忘记此应用", + "console.from": "来自", + "console.from_the_mesh": "来自网状网络", + "console.from_the_project": "来自项目", + "console.further_apart_than_this_and_they_are": "差距超过此值则不会被捆绑:在快慢链路之间拆分会使一半数据包迟到。", + "console.generate_invite_code": "生成邀请码", + "console.getting_an_update": "获取更新", + "console.give_the_path_to_the_key_file": "请提供密钥文件的路径", + "console.giving_one": "赠出", + "console.handing_one_to_somebody_else_and": "交给他人,并接收他人提供的密钥", + "console.happening_now": "正在发生", + "console.health_throughput_and_the_links_this": "健康状况、吞吐量,以及此节点已认证的链路。", + "console.holding": "持有", + "console.host_port": "host:port", + "console.how_much_this_node_may_spend_to_stay": "此节点为保持快速可消耗多少资源", + "console.how_often_it_goes_checking_and": "检查频率,以及空闲时是否检查", + "console.how_often_the_changing_numbers_are": "变化数值的重新读取间隔,单位为秒(0 为关闭)", + "console.how_the_balance_is_chosen": "均衡的选择方式", + "console.how_this_node_trades_energy_for": "此节点如何在能耗与速度之间权衡,由设置 → 配置中的一项设置决定。专家模式会在此显示其构成数值。", + "console.id": "ID", + "console.identity": "身份", + "console.idle": "空闲", + "console.in_a_new_tab": "在新标签页中", + "console.in_a_separate_window": "在单独窗口中", + "console.inbound_and_outbound_bytes_per": "每秒入站和出站字节数", + "console.info_and_above": "info 及以上", + "console.install": "安装", + "console.install_2": "安装 {latest}", + "console.install_automatically": "自动安装", + "console.installed": "已安装", + "console.internal_api": "内部 API", + "console.into_which_node_s_network": "加入哪个节点的网络", + "console.invitation": "邀请", + "console.invite_a_node": "邀请节点", + "console.invite_code": "邀请码", + "console.invite_codes_and_certificates": "邀请码与证书", + "console.invite_generation_failed": "邀请生成失败", + "console.is": "是", + "console.is_available_but_this_install_cannot": "{latest} 可用{where},但此安装无法自行更新:{blocked}", + "console.is_available_you_run": "{latest} 可用{where}(您运行的是 {current})。", + "console.it_listens_beyond_this_machine": "它监听本机以外的地址。任何能访问该地址并持有令牌的人,都可执行 MCP 应用被授予的一切操作。", + "console.it_never_leaves_this_machine_lose_it": "它绝不会离开本机。丢失后密钥即告作废——无法恢复,这正是复制文件毫无用处的原因。", + "console.its_passphrase": "其口令", + "console.job": "任务", + "console.join": "加入", + "console.join_or_invite": "加入或邀请", + "console.join_someone": "加入他人", + "console.joined_node": "已加入 {node}。", + "console.joined_the_network": "已加入网络", + "console.joined_through_a_relay": "已通过中继加入。", + "console.joining_the_handshake_is_post": "加入中——握手为后量子级别,请稍候…", + "console.jump_to_a_section_or_run_an_action": "跳转到分区,或执行操作…", + "console.key": "密钥", + "console.key_compromised": "密钥已泄露", + "console.key_to_share": "要共享的密钥", + "console.keys_are_pinned_from_the_package": "密钥从其签名的软件包中固定,一次点击加一次确认:密钥随记录一并到达,并以其自身生成的签名校验,因此无需从任何地方复制,也不会出错。", + "console.keys_this_node_can_sign_a_release": "此节点可用于签署版本的密钥", + "console.last": "最近", + "console.left_the_network": "已离开网络", + "console.level": "级别", + "console.light": "浅色", + "console.link": "链路", + "console.links": "链路", + "console.links_open_in_a_new_tab": "链接将在新标签页中打开", + "console.links_open_in_a_separate_window": "链接将在单独的窗口中打开", + "console.links_open_to_suit_the_screen": "链接将根据屏幕自动选择打开方式", + "console.links_that_reached_this_node_and": "到达此节点但被拒绝的链路,及原因", + "console.listen_elsewhere": "改在别处监听", + "console.listener_added": "监听器已添加", + "console.listener_removed": "监听器已移除", + "console.listener_uri": "监听器 URI", + "console.listening_on": "监听于", + "console.live": "实时", + "console.load_older": "加载更早内容", + "console.local_management_plane": "本地管理平面", + "console.log_dropped": "为腾出空间已丢弃 {older}", + "console.log_held": "为 {who} 保留。已保存 {lines},占用 {used} / {size} MB", + "console.log_ratio": "(压缩 {ratio} 倍)", + "console.log_stop_not_yours": "此处无法停止:{who} 停止时才会结束。", + "console.looking_for_a_relay_that_can_reach": "正在寻找可到达对方的中继——请查看 网络 → 对等节点。", + "console.loss": "丢包", + "console.made_here": "在此创建", + "console.make_a_key": "创建密钥", + "console.manage": "管理 {name}", + "console.managing": "正在管理 {name}", + "console.manual": "手动", + "console.mcp_server": "MCP 服务器", + "console.mcp_tool": "MCP 工具", + "console.measures": "测量值", + "console.medium": "介质", + "console.membership": "成员资格", + "console.mesh": "网状网络", + "console.mesh_map": "网状网络地图", + "console.mesh_map_draggable_and_zoomable": "网状网络地图,可拖动和缩放", + "console.message": "消息", + "console.mlo_ready": "MLO 就绪", + "console.more": "更多", + "console.multi_link_operation": "多链路操作", + "console.multi_link_operation_updated": "多链路操作已更新", + "console.name_the_node_that_receives_it": "请指定接收它的节点", + "console.network": "网络", + "console.network_views": "网络视图", + "console.neutral": "中性", + "console.new_password": "新密码", + "console.new_token": "新令牌", + "console.nm": "NM", + "console.nmesh": "nmesh", + "console.nmesh_console": "NMesh 控制台", + "console.nmesh_packet_bytes_excluding": "NMesh 数据包字节数,不含传输开销", + "console.no": "否", + "console.no_camera_available_it_needs_your": "没有可用的摄像头。需要您的许可,并且需要安全页面(HTTPS 或 localhost)。", + "console.no_key_pinned_this_node_installs": "未固定任何密钥——此节点不会自行从网状网络安装任何内容。请在上方查找软件包,并固定为其签名的密钥。", + "console.no_links_yet": "暂无链路", + "console.no_node_is_reached_over_two_mlo": "目前没有节点通过两条支持 MLO 的链路到达。", + "console.no_other_address_on_an_mlo_ready": "— 在支持 MLO 的介质上没有其他地址", + "console.no_payload_is_ever_recorded": "从不记录任何载荷", + "console.no_publisher_key_here_this_node": "此处没有发布者密钥——此节点使用自身身份签署版本。", + "console.no_publisher_key_on_this_node": "此节点上没有发布者密钥", + "console.node_being_managed": "受管理的节点", + "console.node_controls": "节点控制", + "console.node_peers_app": "node, peers, app:…", + "console.nodes_linked_directly_and_nodes": "直接相连的节点,以及经由它们到达的节点", + "console.nodes_under_suspicion": "受怀疑的节点", + "console.none_yet_this_node_trusts_only": "暂无——此节点只信任自己。", + "console.not_recording_nothing_is_kept_until": "未在记录。除非有人启动,否则不会保留任何内容——此处可通过启动追踪,或从其他控制台跟随追踪来启动。", + "console.not_restarting": "未重启", + "console.nothing_held_against_that_node": "没有针对该节点的记录。", + "console.nothing_is_kept_until_it_is_started": "启动之前不保留任何内容,最后一个使用者停止后,已保留的内容即被丢弃:此处的操作员、正在运行的追踪,或从别处跟踪此日志的控制台。它仅存在于内存中,经过压缩,并受下方大小限制。", + "console.nothing_on_the_mesh_changes_it_can": "网状网络上不会有任何变化——它可以被再次找到并安装。", + "console.nothing_registered_the_node_is_not": "没有已注册的内容——节点未启动。", + "console.nothing_to_download_yet": "暂无可下载内容", + "console.noticed_not_judged": "已注意,未裁决", + "console.off": "关闭", + "console.off_2": "关闭", + "console.offer_refused": "提议被拒绝", + "console.offer_this_key": "提供此密钥", + "console.oldest_at_the_top_follows_the_end_as": "最旧的在顶部,随新行写入跟随末尾", + "console.one_block_per_medium_what_is_bound": "每种介质一个区块:已绑定的内容、承载的内容、接受的内容", + "console.one_invitation_both_ways_round": "一份邀请,双向通用", + "console.one_link_short_of_a_bundle": "差一条链路即可组成捆绑:", + "console.one_short_string_where_to_connect_a": "一段简短字符串:连接位置、失败时经由他人的途径,以及一次性代码", + "console.open_console": "打开控制台", + "console.opening_another_app": "打开其他应用", + "console.other_sessions_signed_out": { + "other": "已退出其他 {count} 个会话。" + }, + "console.overview": "概览", + "console.package_name": "软件包名称", + "console.packages_this_node_checks_on_and": "此节点检查的软件包,以及它可自行安装的内容", + "console.packets": "数据包", + "console.packets_spread_over_two_links_arrive": "分散在两条链路上的数据包会以约两倍于测得偏差的幅度乱序到达。无论是否启用此功能,应用都必须预期这一点:网状网络是路由的,路由回复本就不保证晚于前一个到达。", + "console.passes": "次数", + "console.passphrase": "口令", + "console.password_changed": "密码已更改。", + "console.past_this_the_link_stops_being": "超过此值,链路不再可信。无论协商结果如何,都保持在介质自身的超时之内。", + "console.paste_a_certificate": "请粘贴证书。", + "console.paste_a_request_first": "请先粘贴请求。", + "console.paste_a_root_certificate_to_trust": "粘贴要信任的根证书", + "console.paste_or_scan_an_invitation": "粘贴或扫描邀请…", + "console.paste_or_scan_an_invitation_first": "请先粘贴或扫描邀请。", + "console.paste_the_reply_first": "请先粘贴回复。", + "console.paste_their_request_block": "粘贴对方的请求文本块", + "console.path_on_this_machine": "本机上的路径", + "console.path_to_publisher_key": "/path/to/publisher.key", + "console.pause": "暂停", + "console.peers": "对等节点", + "console.percent_of_its_last_50_probes_it": "占最近 50 次探测的百分比。降到此值的一半时链路重新加入,因此处于阈值的链路不会因一次探测而反复进出。", + "console.performance": "性能", + "console.permissions": "权限", + "console.permissions_2": "{name} — 权限", + "console.ping_active_nodes": "Ping 活跃节点", + "console.ping_failed": "Ping 失败", + "console.point_the_camera_at_the_ticket_s_qr": "请将摄像头对准票据的 QR 码。", + "console.port": "端口", + "console.preferences_about_this_screen_kept": "关于此界面的偏好设置,仅保存在此处", + "console.preferred_medium": "首选介质", + "console.probe_failed": "探测失败", + "console.problems_in_the_file": "文件中的问题:{problems}", + "console.protocol_trace": "协议追踪", + "console.publish": "发布", + "console.publish_a_signed_release": "发布已签名的版本", + "console.publish_content": "发布内容", + "console.publish_this_node_s_code": "发布此节点的代码", + "console.published": "已发布 {name} {version}", + "console.published_and_filed_under_its_name": "已发布并以其名称归档——现在任何人输入该名称即可找到。", + "console.publisher_keys_held_here": "此处持有的发布者密钥", + "console.publishing_did_not_finish_the_node": "发布未完成——节点可能仍在工作。请稍后在 设置 → 更新 中再次检查。", + "console.publishing_under_a_key": "使用密钥发布", + "console.rate": "速率", + "console.raw_dht_package_exchange_not_the": "原始 DHT 软件包交换——不是已签名的应用商店", + "console.re_check_network": "重新检查网络", + "console.reachability": "可达性", + "console.reading_files": "正在读取文件…", + "console.reading_hashing_and_signing_this_can": "正在读取、哈希和签名——在繁忙的网状网络中可能需要一些时间…", + "console.reading_node_status": "正在读取节点状态…", + "console.reason": "原因", + "console.receiving_node": "接收节点", + "console.recording": "记录中", + "console.refresh_now": "立即刷新", + "console.refused": "已拒绝", + "console.refused_handshakes": "被拒绝的握手", + "console.release_notes": "版本说明", + "console.reload_from_file": "从文件重新加载", + "console.remove_the_name": "移除名称", + "console.reordering": "乱序", + "console.repeat_new_password": "重复新密码", + "console.restart_this_node": "重启此节点", + "console.restarting": "正在重启 {who}", + "console.revoke": "撤销", + "console.ring_size_in_megabytes": "环形缓冲区大小(MB)", + "console.round_trip": "往返", + "console.rows_per_page": "每页行数", + "console.rtt": "RTT", + "console.said_by": "{from} 说", + "console.same": "相同", + "console.save_configuration": "保存配置", + "console.save_energy": "节能", + "console.save_failed": "保存失败", + "console.save_name": "保存名称", + "console.saves_energy": "节能", + "console.saving": "保存中…", + "console.says_which_version_it_runs": "声明其运行的版本", + "console.scan_with_camera": "用摄像头扫描", + "console.score": "得分", + "console.search_active_nodes": "搜索活跃节点", + "console.search_commands": "搜索与命令", + "console.search_endpoints": "搜索端点", + "console.search_endpoints_2": "搜索端点…", + "console.search_installed": "搜索已安装…", + "console.search_installed_apps": "搜索已安装的应用", + "console.search_known_nodes": "搜索已知节点", + "console.search_name_id_address_transport": "搜索名称、ID、地址、传输…", + "console.search_name_id_or_address": "搜索名称、ID 或地址…", + "console.seconds": "秒数", + "console.seconds_to_record": "记录秒数", + "console.security": "安全", + "console.seen": "最近出现", + "console.send_this_block_to_the_other_side": "请将此文本块发送给对方。", + "console.send_this_invite_block_back": "请将此邀请文本块发回。", + "console.send_this_invite_block_back_2": "将此邀请文本块发回", + "console.send_this_request_block": "发送此请求文本块", + "console.sent_probe_s": "已发送 {sent} 个探测", + "console.settings": "设置", + "console.settings_applied": "{scheme} 设置已应用", + "console.settings_apply_to_the_running_node": "除非另有说明,设置会立即应用到运行中的节点,然后写入配置文件以便重启后保留。传输拒绝的值绝不会写入文件。", + "console.settings_sections": "设置分区", + "console.sharing_a_key": "共享密钥", + "console.show_our_root_certificate": "显示我方根证书", + "console.show_the_client_configuration": "显示客户端配置", + "console.show_this_node_s_details": "显示此节点的详情", + "console.sign_out": "退出登录", + "console.sign_what_is_installed_here_and": "对此处已安装的内容签名,并提供给网状网络", + "console.sign_with": "签名使用", + "console.signed_by": "签名者", + "console.signing_keys_you_accept": "你接受的签名密钥", + "console.size_mb": "大小(MB)", + "console.sketchpad": "sketchpad", + "console.skew_two_links_may_differ_by": "两条链路允许的偏差", + "console.skip_to_content": "跳到内容", + "console.slowest_still_fast": "仍算“快”的最慢值", + "console.slowest_when_idle": "空闲时最慢", + "console.software": "软件", + "console.soon": "即将推出", + "console.source": "来源", + "console.standing": "状态", + "console.start_recording": "开始记录", + "console.stop": "停止", + "console.stop_camera": "停止摄像头", + "console.superseded": "已被取代", + "console.sweep": "扫描", + "console.switch_theme": "切换主题", + "console.take_back_a_membership": "收回成员资格", + "console.take_it_in": "导入", + "console.team": "团队", + "console.tendency": "倾向", + "console.text_or_a_field_value": "文本或字段值", + "console.that_could_not_be_dropped": "无法丢弃", + "console.that_step_could_not_be_applied": "无法应用该步骤", + "console.the_certificate_chain_this_node": "此节点用于证明自己属于网络的证书链", + "console.the_console_stopped_answering_while": "加入期间控制台停止应答。请先检查 网络 → 对等节点,再重试——加入可能已经成功。", + "console.the_fastest_this_node_will_be_probed": "此节点被探测的最快频率,无论是否拆分。", + "console.the_last_things_this_node_did_or_was": "此节点最近执行或收到的操作", + "console.the_mcp_app_is_off_enable_it_on_the": "MCP 应用已关闭。请在“已安装”选项卡中启用,然后授予它可读取和可执行的权限——其工具由此生成。", + "console.the_node_did_not_answer": "节点没有应答。", + "console.the_only_credential_between_the": "网络与此节点控制功能之间的唯一凭据", + "console.the_other_direction_nothing_here": "反方向。这里不会添加任何节点——这是撤回信任的两种方式,二者不是同一种操作。", + "console.the_password_is_checked_on_this": "密码在本机校验,绝不外传。它保护所有管理操作,包括可重启或更新节点的操作。", + "console.the_primitives": "基础组件", + "console.the_routing_table_reachable_not": "路由表——可到达,但不一定已连接", + "console.the_secret_is_sealed_to_a_key_the": "密钥被封装给对方接受时生成的密钥,因此在有人同意接收之前无法传输,且只有对方能打开。对方自选口令——绝不是你的。", + "console.the_trace_could_not_be_read": "无法读取追踪", + "console.the_two_new_passwords_do_not_match": "两次输入的新密码不一致。", + "console.theme": "主题", + "console.theme_updated": "主题已更新", + "console.there_is_no_key_to_share": "没有可共享的密钥", + "console.these_are_not_settings_of_the_node": "这些不是节点的设置:它们保存在此浏览器中,因此登录同一控制台的另一台机器有各自的设置。此处的内容不会发送到任何地方。", + "console.these_settings_were_tuned_by_hand": "这些设置经手动调整,与任何档位都不匹配。移动滑杆将以你选择的档位替换它们。", + "console.they": "对方", + "console.things_this_node_saw_and_will_not": "此节点看到但不会裁决的事项,因为诚实的解释通常是你自己所为:某个对等节点的流量突然像换了一台机器(你升级了它),或网络中某个成员一次接纳了远超以往的节点数(你部署了一批)。节点无法将这些与密钥被盗或伪造出大批节点区分开,所以只是说明而不采取行动。这里不会对任何人有所追究:确认只是把他们当前的行为视为新的常态。", + "console.this_app_connects_to_with_the_token": "此应用使用下方令牌连接到 {host}:{port}。它证明该应用就是此应用——请勿将其放入任何会被共享的内容中。", + "console.this_browser": "此浏览器", + "console.this_browser_cannot_scan_qr_codes": "此浏览器无法扫描 QR 码。请改为粘贴票据。", + "console.this_field_takes_any_of_them_an": "此字段接受其中任意一种——邀请,或从旧节点粘贴的文本块。无需选择。", + "console.this_medium_declares_no_setting": "此介质未声明任何设置。", + "console.this_node": "此节点", + "console.this_node_could_not_build": "此节点无法构建:{names}", + "console.this_node_has_no_configuration_file": "此节点没有配置文件:步骤会立即生效,重启后即被遗忘。", + "console.this_node_s": "此节点的", + "console.this_node_s_identity_key": "此节点的身份密钥", + "console.this_project_s_published_releases_on": "本项目在 GitHub 上发布的版本", + "console.throughput": "吞吐量", + "console.ticket_scanned_check_it_then_press": "票据已扫描——请检查,然后点击“加入”。", + "console.times": "次数", + "console.tools_right_now": "当前工具", + "console.topology": "拓扑", + "console.trace_command_failed": "追踪命令失败", + "console.transport": "传输", + "console.transports": "传输", + "console.trust_already_given": "已给予的信任", + "console.trust_certificate": "信任证书", + "console.two_channels_can_replace_that_and": "可由两个渠道取代,且二者相互独立", + "console.two_links_to_one_node_carrying_its": "通往同一节点的两条链路,共同承载其流量", + "console.type_a_name_the_mesh_answers_nothing": "输入名称——网状网络会应答,不会列出任何内容", + "console.type_its_passphrase_in_the_field": "请在上方字段输入其口令", + "console.type_the_key_s_passphrase": "请输入密钥的口令", + "console.udp_port": "UDP 端口", + "console.unavailable": "不可用", + "console.unlock_this_node": "解锁此节点", + "console.unnamed": "未命名", + "console.unspecified": "未指定", + "console.up_to_date_running_latest_is": "已是最新——正在运行 {current},最新为 {latest}{where}。", + "console.update_failed": "更新失败。", + "console.updates": "更新", + "console.use_one": "使用", + "console.valid_for": "有效期", + "console.valid_for_single_use": "有效期 {duration}。仅可使用一次 — 请像密码一样保管。", + "console.version": "版本", + "console.via": "经由 {via}", + "console.wakes_on": "唤醒条件", + "console.warnings_and_errors": "警告和错误", + "console.watch_for_new_versions": "关注新版本", + "console.what_changed": "变更内容", + "console.what_is_kept_is_dropped_recording": "已保留的内容将被丢弃;记录继续进行。", + "console.what_is_running": "正在运行的内容", + "console.what_it_does": "功能", + "console.what_it_is": "简介", + "console.what_the_applications_and_the_core": "应用和核心已上报的内容", + "console.what_the_lines_mean": "线条含义", + "console.what_this_key_is_for": "此密钥的用途", + "console.what_this_node_actually_sends_and": "此节点实际发送和接收的内容,按消息类型统计", + "console.what_this_node_is_called": "此节点的名称", + "console.what_this_node_noticed_about_itself": "此节点对自身及其通信机器的观察。每个问题一行,并注明出现次数", + "console.what_this_node_says_about_itself": "此节点的自述——仅在有人查看时保留", + "console.what_this_node_tells_other_nodes": "此节点向其他节点公布的自身信息", + "console.what_you_are_watching": "你关注的内容", + "console.when_neither_node_can_reach_the": "当两个节点都无法到达对方时", + "console.when_this_node_looks": "此节点检查的时机", + "console.where_it_came_from": "来源", + "console.whether_other_nodes_can_open_a_link": "其他节点是否能向此节点建立链路", + "console.which_endpoints": "哪些端点", + "console.while_nobody_is_here": "无人时", + "console.who_receives_it": "接收者", + "console.who_this_node_is_connected_to_how_it": "此节点与谁相连、如何被访问,以及如何接入另一个节点。", + "console.whole_or_partial_best_match_first": "全名或部分均可——最佳匹配在前", + "console.why": "原因", + "console.with_nothing_happening_no_more_often": "无事发生时,频率不高于此值。", + "console.yes": "是", + "console.yours_chosen_here_never_theirs": "由你在此选择,绝不是对方的。", + "console.yours_to_unlock_the_key_here_it_is": "你的口令,用于在此解锁密钥。不会被发送。", + "console.zoom": "缩放", + "console.zoom_in": "放大", + "console.zoom_out": "缩小", + "count.container": { + "other": "{count} 个容器" + }, + "count.environment": { + "other": "{count} 个环境" + }, + "count.file": { + "other": "{count} 个文件" + }, + "count.hour": { + "other": "{count} 小时" + }, + "count.line": { + "other": "{count} 行" + }, "count.link": { "other": "{count} 条链路" }, + "count.listener": { + "other": "{count} 个监听器" + }, + "count.member": { + "other": "{count} 名成员" + }, "count.message": { "other": "{count} 条消息" }, + "count.minute": { + "other": "{count} 分钟" + }, "count.node": { "other": "{count} 个节点" }, + "count.older_line": { + "other": "{count} 行较旧记录" + }, + "count.permission": { + "other": "{count} 项权限" + }, + "count.stack": { + "other": "{count} 个堆栈" + }, + "count.unread_message": { + "other": "{count} 条未读消息" + }, + "fleet.1_scan": "1 · 扫描", + "fleet.2_install": "2 · 安装", + "fleet.a_group_needs_a_name": "分组需要名称。", + "fleet.a_lowercase_name_and_a_compose_file": "需要小写名称和 compose 文件。", + "fleet.a_node_id_is_40_hexadecimal": "节点 ID 为 40 个十六进制字符。", + "fleet.a_subnet_a_machine_or_nothing_to": "子网、某台机器,或留空以扫描所有已连接的网络。", + "fleet.a_system_install_needs_root_tick": "系统级安装需要 root:请勾选 sudo、指定 sudo 账户,或安装到用户目录下。", + "fleet.accept": "接受 {id}?", + "fleet.access": "访问", + "fleet.access_granted": "已授予访问权限", + "fleet.access_token": "访问令牌", + "fleet.activity": "活动", + "fleet.address": "地址", + "fleet.address_as_that_machine_reaches_it": "该机器访问它所用的地址", + "fleet.address_here": "此处的地址", + "fleet.always": "always", + "fleet.always_follow": "始终跟踪", + "fleet.an_address_and_a_token_are_needed": "需要地址和令牌。", + "fleet.an_address_is_needed": "需要地址。", + "fleet.an_image_is_required": "需要镜像。", + "fleet.an_ssh_user_is_required": "需要 SSH 用户。", + "fleet.ask_for_at_least_one_capability": "请至少申请一项权限。", + "fleet.ask_this_machine_now": "立即询问这台机器", + "fleet.asked_for_its_log": "已向 {node} 请求其日志", + "fleet.asking": "正在询问 {who}…", + "fleet.auto_or_192_168_1_0_24_10_0_0_5_nas": "自动 — 或 192.168.1.0/24, 10.0.0.5, nas.lan:2222", + "fleet.auto_refresh_in_seconds_0_turns_it": "自动刷新,单位为秒(0 为关闭)", + "fleet.back_to_console": "返回控制台", + "fleet.capabilities_the_new_machines_grant": "新机器授予你的权限", + "fleet.capabilities_to_ask_for": "要申请的权限", + "fleet.choose_a_machine_first": "请先选择机器", + "fleet.collected_logs_dropped": "已丢弃收集的日志", + "fleet.collection": "收集", + "fleet.console_of": "{id} 的控制台", + "fleet.containers": "容器", + "fleet.could_not_be_updated": "无法更新 {name}", + "fleet.create": "创建", + "fleet.created": "创建时间", + "fleet.credentials_are_held_in_memory_for": "凭据仅在本次运行期间保存在内存中", + "fleet.debug_and_above": "debug 及以上", + "fleet.default_behaviour": "默认行为", + "fleet.delete_group": "删除分组", + "fleet.deploy": "部署", + "fleet.deploy_a_stack": "部署堆栈", + "fleet.deployed_by": "部署者", + "fleet.deploying_watch_activity": "部署中…请查看“活动”。", + "fleet.deployment_failed_to_start": "部署启动失败。", + "fleet.discover_deploy": "发现与部署", + "fleet.docker": "Docker", + "fleet.docker_2": "docker", + "fleet.docker_compose_yml": "docker-compose.yml", + "fleet.docker_views": "Docker 视图", + "fleet.done_succeeded": "完成:{good}/{length} 成功。", + "fleet.driver": "驱动", + "fleet.each_container_whose_image_changed": "镜像发生变化的每个容器都会被重新创建。", + "fleet.each_of_these_accepted_a_request": "其中每个节点都接受了来自此节点的请求,并恰好授予了所示权限。这里没有任何东西是夺取的;一切都是被授予的。", + "fleet.encrypted": "已加密", + "fleet.enter": "进入", + "fleet.environment": "环境变量", + "fleet.every_machine": "每台机器", + "fleet.every_node_listed_here_can_act_on": "此处列出的每个节点都能对这台机器执行操作。权限只能从这里添加——节点可以提出申请,但必须有人在这台机器前同意。", + "fleet.filter_containers": "筛选容器", + "fleet.filter_stacks": "筛选堆栈", + "fleet.fleet": "Fleet", + "fleet.fleet_sections": "Fleet 分区", + "fleet.fleet_uses_the_console_password_of": "Fleet 使用此节点的控制台密码。", + "fleet.forget": "忘记", + "fleet.forget_everything_collected": "忘记所有已收集内容", + "fleet.full_screen": "全屏", + "fleet.ghcr_io_owner_image_tag": "ghcr.io/owner/image:tag", + "fleet.give_a_password_a_key_or_both": "请提供密码、密钥或两者。", + "fleet.give_a_password_a_key_or_both_both": "提供密码、密钥或两者——两者都会尝试。", + "fleet.grant_access": "授予访问权限", + "fleet.group_deleted": "分组已删除", + "fleet.group_saved": "分组已保存", + "fleet.groups_for": "{id} 的分组", + "fleet.groups_updated": "分组已更新", + "fleet.history": "历史", + "fleet.host_container_one_per_line_add_udp": "host:container,每行一个;UDP 请加 :udp", + "fleet.host_path_or_volume_name_container": "主机路径或卷名 : 容器路径,只读请加 :ro", + "fleet.image": "镜像", + "fleet.images": "镜像", + "fleet.inbound": "入站", + "fleet.install_directory": "安装目录", + "fleet.install_options": "安装选项", + "fleet.invite_somebody_to_s_mesh": "邀请他人加入 {who} 的网状网络", + "fleet.is_running": "{image} 正在运行", + "fleet.its_password": "其密码", + "fleet.keep_them_updated_from_the": "通过此节点接受的发布者保持更新", + "fleet.key_passphrase": "密钥口令", + "fleet.key_removed": "密钥已移除", + "fleet.key_value_one_per_line": "KEY=value,每行一个", + "fleet.label_optional": "标签(可选)", + "fleet.let_it_run_its_own_system_updates": "允许其自行运行系统更新(一条固定的 root 命令)", + "fleet.line": "行", + "fleet.lines_collected_from_the_machines": "从此节点所管理机器收集的日志行——无人查看时它们上面发生了什么。保存在此处内存中,每台机器一个有界环形缓冲区。", + "fleet.log_collection_for": "{node} 的日志收集:{value}", + "fleet.logs": "日志", + "fleet.logs_2": "日志 · {id}", + "fleet.lowercase_letters_digits_and": "小写字母、数字、- 和 _", + "fleet.machine": "机器", + "fleet.managed": "受管理", + "fleet.mark_all_read": "全部标为已读", + "fleet.megabytes_kept_per_machine": "每台机器保留的 MB 数", + "fleet.name": "名称", + "fleet.networks": "网络", + "fleet.never_ask_when_needed": "从不——需要时再询问", + "fleet.new_group": "新建分组", + "fleet.newest_first_by_the_time_this_node": "最新的在前,按此节点收到的时间排序。", + "fleet.nmesh_fleet": "NMesh Fleet", + "fleet.no_group_yet_name_one_below": "暂无分组——请在下方命名一个。", + "fleet.no_status_yet": "暂无状态。", + "fleet.node": "节点 {id}", + "fleet.node_id": "节点 ID", + "fleet.nodes": "节点", + "fleet.nodes_you_control": "你控制的节点", + "fleet.nothing_of_it_runs_on_this_machine": "其中没有任何内容在这台机器上运行。", + "fleet.nothing_waiting_jobs_and_access": "没有待处理项。任务和访问请求会显示在此。", + "fleet.notifications": "通知", + "fleet.on_failure": "on-failure", + "fleet.only_while_a_page_is_open_on_it": "仅在其页面打开时", + "fleet.open_shell": "打开 Shell", + "fleet.opt_nmesh": "/opt/nmesh", + "fleet.optional": "可选", + "fleet.or_a_new_group": "或新建分组", + "fleet.or_type_a_whole_line_here_and_press": "…或在此输入整行并按 Enter", + "fleet.otherwise_an_account_that_can": "否则,需要一个可以执行以下操作的账户", + "fleet.outside_a_stack": "堆栈之外", + "fleet.password": "密码", + "fleet.portainer_connected_environments": { + "other": "Portainer 已连接 — 可见 {count} 个环境" + }, + "fleet.portainer_did_not_answer": "Portainer 没有应答", + "fleet.portainer_forgotten": "已忘记 Portainer", + "fleet.ports": "端口", + "fleet.pull": "拉取", + "fleet.pulled": "已拉取 {image}", + "fleet.pulling": "正在拉取 {image}…", + "fleet.reachable_at": "可通过以下地址访问", + "fleet.read_its_certificate": "读取其证书", + "fleet.recommended": "推荐。", + "fleet.relationship_revoked": "关系已撤销", + "fleet.reload": "重新加载", + "fleet.request_access_to_a_node": "申请访问节点", + "fleet.request_denied": "请求已拒绝", + "fleet.request_sent_it_is_theirs_to_accept": "请求已发送——由对方决定是否接受", + "fleet.restart_policy": "重启策略", + "fleet.rights_on": "{id} 的权限", + "fleet.root": "root", + "fleet.run": "运行", + "fleet.run_a_container": "运行容器", + "fleet.running_on_the_remote_node": "正在远程节点上运行…", + "fleet.scan": "扫描", + "fleet.scan_failed": "扫描失败。", + "fleet.scan_from": "扫描来源", + "fleet.scan_running_on_the_remote_node": "扫描正在远程节点上运行…", + "fleet.scanning_this_takes_a_moment": "扫描中…需要一些时间。", + "fleet.send_a_whole_line": "发送整行", + "fleet.send_request": "发送请求", + "fleet.service": "服务", + "fleet.service_name": "服务名称", + "fleet.shell": "Shell", + "fleet.sign_in": "登录", + "fleet.since": "起始", + "fleet.size": "大小", + "fleet.srv_data_data": "/srv/data:/data", + "fleet.ssh_key": "SSH 密钥", + "fleet.ssh_user": "SSH 用户", + "fleet.stack_deployed": "堆栈 {name} 已部署", + "fleet.stack_failed": "堆栈 {name} 失败", + "fleet.start_the_fleet_app_on_it_so_it_can": "在其上启动 Fleet 应用,使其可被管理并能继续向外部署", + "fleet.state_directory": "状态目录", + "fleet.stays_live_for": "保持有效时长", + "fleet.subnet": "子网", + "fleet.sudo_account": "sudo 账户", + "fleet.system": "系统", + "fleet.targets": "目标", + "fleet.that_could_not_be_changed": "无法更改", + "fleet.that_does_not_look_like_a_private": "这看起来不是私钥。", + "fleet.that_file_is_too_large_for_a_key": "该文件对于密钥而言过大。", + "fleet.that_group_name_was_refused": "该分组名称被拒绝。", + "fleet.that_machine_could_not_be_asked": "无法询问该机器", + "fleet.that_machine_did_not_answer": "该机器没有应答", + "fleet.that_machine_has_no_docker_compose": "该机器没有 docker compose:请先在其上安装。", + "fleet.that_request_was_refused": "该请求被拒绝。", + "fleet.the_daemon_refuses_while_a_container": "只要有容器在使用,守护进程就会拒绝。", + "fleet.the_default_could_not_be_changed": "无法更改默认值", + "fleet.the_new_machines_pin_the_same": "新机器会固定与此节点相同的版本发布者(以及此节点本身),并自行安装其已签名的版本。只能在此处设置:无头机器无人可在控制台中粘贴发布者密钥,将永远不会接受来自网状网络的任何内容。", + "fleet.the_size_could_not_be_changed": "无法更改大小", + "fleet.the_stacks_and_containers_of_one": "一台机器的堆栈和容器,依据其运行内容发现——无论是 compose 还是 Portainer 部署的——并以其所有者的方式更新。", + "fleet.this_node_s_id": "此节点的 ID", + "fleet.tz_europe_paris": "TZ=Europe/Paris", + "fleet.unless_stopped": "unless-stopped", + "fleet.until": "截止", + "fleet.update": "更新", + "fleet.update_all": "全部更新", + "fleet.update_stacks": { + "other": "更新 {count} 个堆栈" + }, + "fleet.update_started_on_nodes": { + "other": "已在 {count} 个节点上开始更新" + }, + "fleet.update_started_progress_shows_on_the": "更新已开始——进度显示在节点卡片上", + "fleet.upload_a_key": "上传密钥…", + "fleet.user": "用户", + "fleet.var_lib_nmesh": "/var/lib/nmesh", + "fleet.volumes": "卷", + "fleet.volumes_networks": "卷与网络", + "fleet.what_is_followed_and_how_much_of_it": "跟踪的内容,以及保留多少。", + "fleet.what_the_machines_said": "机器的自述", + "fleet.what_this_node_asked_what_it_was": "此节点发出的请求、收到的请求,以及各自的结果。", + "fleet.when": "时间", + "fleet.where_nmesh_goes_on_each_machine": "NMesh 在每台机器上的安装位置", + "fleet.which_containers": "哪些容器", + "fleet.who_controls_this_node": "谁在控制此节点", "language.auto": "自动(跟随浏览器)", "language.help": "控制台和应用使用的语言。自动模式跟随浏览器。", "language.label": "语言", @@ -37,8 +825,83 @@ "language.name.ru": "Русский", "language.name.sk": "Slovenčina", "language.name.zh": "中文", + "node.1_hour": "1 小时", + "node.5_minutes": "5 分钟", + "node.6_hours": "6 小时", + "node.access_requested": "已申请访问", + "node.added_to_contacts": "已添加到联系人", + "node.nmesh_node": "NMesh 节点", + "node.node": "节点", + "node.node_actions": "节点操作", + "node.node_forgotten": "节点已忘记", + "node.open_in_fleet": "在 Fleet 中打开", + "node.request_access": "申请访问", + "node.request_sent_someone_there_has_to": "请求已发送——对方需要接受", + "node.s_of_at_most": "{seconds} 秒,上限 {speed_seconds}", + "node.speed_test": "速度测试", + "node.state": "状态", + "node.this_page_reads_the_console_of_this": "此页面读取本节点的控制台,因此需要控制台密码。", + "node.tried": "已尝试", + "pkg.downloaded": "已下载 {path}。", + "pkg.fetching_and_verifying": "正在获取并验证…", + "pkg.fetching_the_package": "正在获取软件包…", + "pkg.installed": "已安装 {name} {version}", + "pkg.nmesh_package": "NMesh 软件包", + "pkg.no_longer_watching": "不再关注 {name}", + "pkg.not_stated_here": "此处未说明", + "pkg.open_on_its_own": "单独打开", + "pkg.package": "软件包", + "pkg.pin_the_signing_key": "固定签名密钥", + "pkg.pinned": "已固定 {signer_id}", + "pkg.signing_key": "签名密钥", + "pkg.signing_keys_that_must_agree": "必须一致的签名密钥", + "pkg.that_package_is_empty": "该软件包为空。", + "pkg.watching": "正在关注 {name}", + "pkg.what_it_says_about_itself": "其自我声明", "state.connected": "已连接", "state.disconnected": "已断开", "state.offline": "离线", - "state.online": "在线" + "state.online": "在线", + "term.back_to_the_bottom": "回到底部", + "term.back_to_the_fleet": "返回 Fleet", + "term.fetching": "正在获取 {name}…", + "term.files": "文件", + "term.folder_name": "文件夹名称", + "term.folder_name_2": "文件夹名称", + "term.idle": "空闲", + "term.keyboard": "键盘", + "term.link": "链路", + "term.new_folder": "新建文件夹", + "term.nmesh_terminal": "NMesh 终端", + "term.no_node_has_granted_a_shell": "没有节点授予 Shell 权限", + "term.nothing_to_copy": "没有可复制的内容", + "term.open": "打开", + "term.paste": "粘贴", + "term.paste_into_the_terminal": "粘贴到终端", + "term.pick_a_node_first": "请先选择节点。", + "term.reading": "读取中…", + "term.remote_shell": "远程 Shell", + "term.saved": "已保存 {name}({size})。", + "term.sending": "正在发送 {name}…", + "term.terminal": "终端", + "term.terminal_keys": "终端按键", + "term.text": "×", + "term.text_to_send": "要发送的文本", + "term.that_file_could_not_be_fetched": "无法获取该文件。", + "term.that_node_could_not_be_reached": "无法连接该节点。", + "term.that_upload_could_not_be_sent": "无法发送该上传。", + "term.the_terminal_uses_the_console": "终端使用此节点的控制台密码。", + "term.this_browser_did_not_hand_over_the": "此浏览器未提供剪贴板,请在此粘贴后发送。不会保存任何内容。", + "term.up": "上一级", + "term.upload": "上传", + "ui.back_to_this_node": "返回此节点", + "ui.copied_to_clipboard": "已复制到剪贴板", + "ui.could_not_copy_select_and_copy_by": "无法复制 — 请手动选择并复制", + "ui.dismiss": "关闭", + "ui.is_no_longer_reachable_back_on_this": "{name} 不再可达——已回到此节点", + "ui.not_answering": "无响应", + "ui.nothing_matches_that": "没有匹配项。", + "ui.switch_to_the_dark_theme": "切换到深色主题", + "ui.switch_to_the_light_theme": "切换到浅色主题", + "ui.this_node_was_updated_reloading": "此节点已更新 — 正在重新加载" } diff --git a/src/version.py b/src/version.py index a59b193..5b8914c 100644 --- a/src/version.py +++ b/src/version.py @@ -10,7 +10,7 @@ import re -__version__ = "0.4.117" +__version__ = "0.4.118" # Releases are tagged ``vX.Y.Z`` (see .github/workflows/release.yml). Anything # after the numbers (``-rc1``, ``+build``) is kept but only used to break ties diff --git a/src/webassets/console.py b/src/webassets/console.py index d2b9d6e..1da30f7 100644 --- a/src/webassets/console.py +++ b/src/webassets/console.py @@ -16,7 +16,7 @@ -NMesh Console +NMesh Console @@ -26,39 +26,39 @@
- +
-

Local management plane

-

Unlock this node

+

Local management plane

+

Unlock this node

-

The password is checked on this machine and never leaves it. It +

The password is checked on this machine and never leaves it. It protects every management action, including the ones that can restart or update the node.

-
- +
    -
    +
    -

    Throughput

    -
    NMesh packet bytes, excluding transport overhead
    +

    Throughput

    +
    NMesh packet bytes, excluding transport overhead
    - +
    Inbound Outbound @@ -158,15 +158,15 @@
    -

    Topology

    -
    Nodes linked directly, and nodes reached through them
    +

    Topology

    +
    Nodes linked directly, and nodes reached through them
    -
    +
    -
    What the lines mean -

    A line is an authenticated direct link: amber while it + aria-label="Connected nodes — click to open the full map" data-i18n-attr="aria-label:console.connected_nodes_click_to_open_the"> +

    What the lines mean +

    A line is an authenticated direct link: amber while it loses probes, red and dashed once it is failing, doubled when MLO bundles it, dotted beside it while MLO looks for a second link. A faint dashed line is a session routed through a first hop — anything deeper is opaque @@ -177,8 +177,8 @@

    @@ -186,43 +186,43 @@

    Known nodes

    -
    The routing table — reachable, not necessarily connected
    - - +
    - +
    NodeStateTransportRTTSeen
    NodeStateTransportRTTSeen
    @@ -230,112 +230,112 @@ @@ -509,31 +509,31 @@