From 32be58cb247f9b4636ba4b148e59a20c267abfbb Mon Sep 17 00:00:00 2001 From: Eduard Gert Date: Tue, 9 Jun 2026 11:33:54 +0200 Subject: [PATCH] add description to translations --- client/ui/CLAUDE.md | 2 + client/ui/frontend/CLAUDE.md | 2 +- client/ui/frontend/src/lib/i18n.ts | 15 +- client/ui/i18n/bundle.go | 22 +- client/ui/i18n/bundle_test.go | 14 +- client/ui/i18n/locales/de/common.json | 1712 ++++++++++++++------ client/ui/i18n/locales/en/common.json | 2134 +++++++++++++++++++------ client/ui/i18n/locales/hu/common.json | 1712 ++++++++++++++------ 8 files changed, 4243 insertions(+), 1370 deletions(-) diff --git a/client/ui/CLAUDE.md b/client/ui/CLAUDE.md index 62b9d6eb7..33eb8f8a0 100644 --- a/client/ui/CLAUDE.md +++ b/client/ui/CLAUDE.md @@ -110,6 +110,8 @@ The main window is **hidden** on close (the `WindowClosing` hook calls `e.Cancel The locale tree under `client/ui/i18n/locales/` is the single source of truth for both Go (tray, OS notifications) and React (every user-facing string). It sits next to the Go `i18n` package (the tray's consumer) so a single JSON tree drives both surfaces. Layout: `_index.json` lists shipped languages (`code` / `displayName` / `englishName`); `/common.json` per language. `en/common.json` must exist (the `Bundle` loader hard-fails without it); languages listed in `_index.json` without a bundle are skipped with a warning. Placeholders are single-braced (`"Install version {version}"`) — Go substitutes via `Bundle.Translate(lang, key, "name", value, ...)`; React uses i18next with `interpolation: { prefix: "{", suffix: "}" }`. +**Bundle shape is Chrome-extension JSON**: each key maps to `{ "message": "...", "description": "..." }`, not a bare string. `description` is **translator context for Crowdin** (which reads it natively from the source file) and is ignored at runtime — only `en/common.json` needs descriptions; target bundles carry just `message`. Both loaders strip back to a flat `key→message` map: Go's `loadBundle` (`bundle.go`) unmarshals into `map[string]bundleEntry` and flattens (so `BundleFor`/`Translate` signatures are unchanged); `frontend/src/lib/i18n.ts` maps each entry's `message` into the i18next `resources`. When editing a string, edit `message`; when a key's purpose isn't obvious from its name, add/update its `description` so translators (and screenshots auto-tagging) have context. + Adding a language: drop a `/common.json` under `client/ui/i18n/locales/`, append a row to `_index.json`, rebuild. Go reads the tree via `//go:embed all:i18n/locales` in `client/ui/main.go`; Vite reads it via the `../../../i18n/locales/*/common.json` glob in `frontend/src/lib/i18n.ts`, with `server.fs.allow` in `vite.config.ts` whitelisting the parent dir so the dev server can serve files outside `frontend/`. Package layout: diff --git a/client/ui/frontend/CLAUDE.md b/client/ui/frontend/CLAUDE.md index 8dbffd5bb..1d89f8f78 100644 --- a/client/ui/frontend/CLAUDE.md +++ b/client/ui/frontend/CLAUDE.md @@ -151,7 +151,7 @@ if (result !== confirmLabel) return; Compare against the variable, never against an English literal. -**Bundle files.** Keys live in `client/ui/i18n/locales//common.json` as a flat key→string map (`"settings.tabs.general": "General"`). Placeholders use single braces: `"Install version {version}"`. Adding a key: add to `en/common.json` first (the fallback), then every other locale. Missing keys fall back to English; if even that misses, i18next returns the key itself so the gap is visible in the UI rather than blank. +**Bundle files.** Keys live in `client/ui/i18n/locales//common.json` in Chrome-extension JSON shape: each key maps to `{ "message": "General", "description": "..." }` (not a bare string). `description` is translator context for Crowdin (read natively from the source file, ignored at runtime); only `en/common.json` carries descriptions, target bundles carry just `message`. `lib/i18n.ts` strips each entry down to its `message` when building the i18next `resources`, so `t()` lookups are unchanged. Placeholders use single braces: `"Install version {version}"`. Adding a key: add `{ "message": "…", "description": "…" }` to `en/common.json` first (the fallback), then `{ "message": "…" }` to every other locale. Missing keys fall back to English; if even that misses, i18next returns the key itself so the gap is visible in the UI rather than blank. **Adding a language.** Drop `client/ui/i18n/locales//common.json` and append the row to `client/ui/i18n/locales/_index.json`. Also drop the matching `.svg` into `src/assets/flags/1x1/` — source those from the NetBird dashboard repo's same-name folder so the icon set stays consistent: https://github.com/netbirdio/dashboard/tree/main/public/assets/flags/1x1 . **Only check in flags for languages we actually ship** — `LanguagePicker.tsx` eager-globs that directory at build time, so every SVG in it gets bundled into the Wails app whether referenced or not. `src/lib/i18n.ts` discovers bundles via `import.meta.glob('../../../i18n/locales/*/common.json', { eager: true })` (the locales tree lives outside `frontend/`, so `vite.config.ts` whitelists the parent dir under `server.fs.allow`), so no code change is needed to wire the new locale in. Vite still inlines each bundle at build time, same chunk shape as static imports. The Go side reads the same tree (embedded via `client/ui/main.go`'s `embed.FS`), so the tray menu localises automatically off the same files. diff --git a/client/ui/frontend/src/lib/i18n.ts b/client/ui/frontend/src/lib/i18n.ts index 6756a52be..d1fbb0e19 100644 --- a/client/ui/frontend/src/lib/i18n.ts +++ b/client/ui/frontend/src/lib/i18n.ts @@ -15,7 +15,13 @@ import { LanguageCode } from "@bindings/i18n/models.js"; // empty match in some Vite dev-mode setups. `server.fs.allow` in // `vite.config.ts` whitelists the parent directory so the dev server // serves the JSON. -const bundleModules = import.meta.glob>( +// +// Each bundle is Chrome-extension JSON: every key maps to +// `{ message, description? }`. `description` exists only so Crowdin can +// show translator context — it's stripped here and i18next sees a flat +// key->message map exactly as before. +type BundleEntry = { message: string; description?: string }; +const bundleModules = import.meta.glob>( "../../../i18n/locales/*/common.json", { eager: true, import: "default" }, ); @@ -24,7 +30,12 @@ const resources: Record }> = {}; for (const path in bundleModules) { const match = path.match(/locales\/([^/]+)\/common\.json$/); if (match) { - resources[match[1]] = { common: bundleModules[path] }; + const entries = bundleModules[path]; + const messages: Record = {}; + for (const key in entries) { + messages[key] = entries[key].message; + } + resources[match[1]] = { common: messages }; } } diff --git a/client/ui/i18n/bundle.go b/client/ui/i18n/bundle.go index 047cddc96..42d6369ef 100644 --- a/client/ui/i18n/bundle.go +++ b/client/ui/i18n/bundle.go @@ -33,6 +33,12 @@ const ( // commonBundleFile is the per-language translation bundle. Single // namespace for now ("common") — split later if the key set grows // enough to warrant per-screen bundles. + // + // Shape is Chrome-extension JSON (each key maps to an object with a + // "message" and an optional "description") so Crowdin reads the + // description as translator context straight from the source file. + // Only the source bundle (en) needs descriptions; target bundles carry + // just "message". loadBundle flattens both back to key->message. commonBundleFile = "common.json" ) @@ -195,15 +201,27 @@ func loadLocaleIndex(localesFS fs.FS) (*localeIndex, error) { return &idx, nil } +// bundleEntry is the on-disk shape of one translation key: a Chrome-JSON +// object carrying the translatable "message" plus an optional translator +// "description" (consumed by Crowdin, ignored at runtime). +type bundleEntry struct { + Message string `json:"message"` + Description string `json:"description,omitempty"` +} + func loadBundle(localesFS fs.FS, code LanguageCode) (map[string]string, error) { p := path.Join(string(code), commonBundleFile) data, err := fs.ReadFile(localesFS, p) if err != nil { return nil, err } - var bundle map[string]string - if err := json.Unmarshal(data, &bundle); err != nil { + var entries map[string]bundleEntry + if err := json.Unmarshal(data, &entries); err != nil { return nil, fmt.Errorf("parse %s: %w", p, err) } + bundle := make(map[string]string, len(entries)) + for k, e := range entries { + bundle[k] = e.Message + } return bundle, nil } diff --git a/client/ui/i18n/bundle_test.go b/client/ui/i18n/bundle_test.go index 0c3e5f612..d0b0d24d7 100644 --- a/client/ui/i18n/bundle_test.go +++ b/client/ui/i18n/bundle_test.go @@ -23,13 +23,13 @@ func fakeLocales() fstest.MapFS { ] }`)}, "en/common.json": {Data: []byte(`{ - "tray.menu.connect": "Connect", - "tray.menu.installVersion": "Install version {version}", - "notify.update.body": "NetBird {version} is available." + "tray.menu.connect": {"message": "Connect", "description": "Tray menu item"}, + "tray.menu.installVersion": {"message": "Install version {version}"}, + "notify.update.body": {"message": "NetBird {version} is available."} }`)}, "hu/common.json": {Data: []byte(`{ - "tray.menu.connect": "Csatlakozás", - "tray.menu.installVersion": "{version} telepítése" + "tray.menu.connect": {"message": "Csatlakozás"}, + "tray.menu.installVersion": {"message": "{version} telepítése"} }`)}, } } @@ -118,7 +118,7 @@ func TestBundle_MissingDefaultBundleFails(t *testing.T) { // English locale. fs := fstest.MapFS{ "_index.json": {Data: []byte(`{"languages":[{"code":"hu","displayName":"Magyar","englishName":"Hungarian"}]}`)}, - "hu/common.json": {Data: []byte(`{"k":"v"}`)}, + "hu/common.json": {Data: []byte(`{"k":{"message":"v"}}`)}, } _, err := NewBundle(fs) require.Error(t, err) @@ -134,7 +134,7 @@ func TestBundle_MissingBundleSkipsLanguage(t *testing.T) { {"code":"en","displayName":"English","englishName":"English"}, {"code":"de","displayName":"Deutsch","englishName":"German"} ]}`)}, - "en/common.json": {Data: []byte(`{"k":"v"}`)}, + "en/common.json": {Data: []byte(`{"k":{"message":"v"}}`)}, } b, err := NewBundle(fs) require.NoError(t, err) diff --git a/client/ui/i18n/locales/de/common.json b/client/ui/i18n/locales/de/common.json index d37f0f865..4cf31358e 100644 --- a/client/ui/i18n/locales/de/common.json +++ b/client/ui/i18n/locales/de/common.json @@ -1,454 +1,1262 @@ { - "tray.tooltip": "NetBird", - "tray.status.disconnected": "Getrennt", - "tray.status.daemonUnavailable": "Nicht aktiv", - "tray.status.error": "Fehler", - "tray.status.connected": "Verbunden", - "tray.status.connecting": "Verbinde", - "tray.status.needsLogin": "Anmeldung erforderlich", - "tray.status.loginFailed": "Anmeldung fehlgeschlagen", - "tray.status.sessionExpired": "Sitzung abgelaufen", - "tray.session.expiresIn": "Sitzung läuft ab in {remaining}", - "tray.session.unit.lessThanMinute": "weniger als einer Minute", - "tray.session.unit.minute": "1 Minute", - "tray.session.unit.minutes": "{count} Minuten", - "tray.session.unit.hour": "1 Stunde", - "tray.session.unit.hours": "{count} Stunden", - "tray.session.unit.day": "1 Tag", - "tray.session.unit.days": "{count} Tagen", - - "tray.menu.open": "NetBird öffnen", - "tray.menu.connect": "Verbinden", - "tray.menu.disconnect": "Trennen", - "tray.menu.exitNode": "Exit-Node", - "tray.menu.networks": "Ressourcen", - "tray.menu.profiles": "Profile", - "tray.menu.manageProfiles": "Profile verwalten", - "tray.menu.settings": "Einstellungen...", - "tray.menu.debugBundle": "Debug-Paket erstellen", - "tray.menu.about": "Hilfe & Support", - "tray.menu.github": "GitHub", - "tray.menu.documentation": "Dokumentation", - "tray.menu.troubleshoot": "Fehlerbehebung", - "tray.menu.downloadLatest": "Neueste Version herunterladen", - "tray.menu.installVersion": "Version {version} installieren", - "tray.menu.guiVersion": "Oberfläche: {version}", - "tray.menu.daemonVersion": "Daemon: {version}", - "tray.menu.versionUnknown": "—", - "tray.menu.quit": "NetBird beenden", - - "notify.update.title": "NetBird-Update verfügbar", - "notify.update.body": "NetBird {version} ist verfügbar.", - "notify.update.enforcedSuffix": " Ihr Administrator verlangt dieses Update.", - "notify.error.title": "Fehler", - "notify.error.connect": "Verbindung fehlgeschlagen", - "notify.error.disconnect": "Trennen fehlgeschlagen", - "notify.error.switchProfile": "Wechsel zu {profile} fehlgeschlagen", - "notify.error.exitNode": "Exit-Node {name} konnte nicht aktualisiert werden", - "notify.sessionExpired.title": "NetBird-Sitzung abgelaufen", - "notify.sessionExpired.body": "Ihre NetBird-Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.", - "notify.sessionWarning.title": "Sitzung läuft bald ab", - "notify.sessionWarning.body": "Ihre NetBird-Sitzung läuft in {remaining} ab. Klicken Sie auf Jetzt verlängern, um zu erneuern.", - "notify.sessionWarning.bodyGeneric": "Ihre NetBird-Sitzung läuft bald ab. Klicken Sie auf Jetzt verlängern, um zu erneuern.", - "notify.sessionWarning.extend": "Jetzt verlängern", - "notify.sessionWarning.dismiss": "Verwerfen", - "notify.sessionWarning.failed": "NetBird-Sitzung konnte nicht verlängert werden", - "notify.sessionWarning.successTitle": "NetBird-Sitzung verlängert", - "notify.sessionWarning.successBody": "Ihre Sitzung wurde erneuert.", - "notify.sessionDeadlineRejected.title": "Sitzungsfrist abgelehnt", - "notify.sessionDeadlineRejected.body": "Der Server hat eine ungültige Sitzungsfrist übermittelt. Bitte melden Sie sich erneut an.", - - "common.cancel": "Abbrechen", - "common.save": "Speichern", - "common.saveChanges": "Änderungen speichern", - "common.saving": "Speichert…", - "common.close": "Schließen", - "common.copy": "Kopieren", - "common.togglePasswordVisibility": "Passwortsichtbarkeit umschalten", - "common.increase": "Erhöhen", - "common.decrease": "Verringern", - "common.delete": "Löschen", - "common.create": "Erstellen", - "common.add": "Hinzufügen", - "common.remove": "Entfernen", - "common.refresh": "Aktualisieren", - "common.loading": "Lädt…", - "common.netbird": "NetBird", - "common.noResults.title": "Keine Ergebnisse gefunden", - "common.noResults.description": "Es konnten keine Ergebnisse gefunden werden. Bitte versuchen Sie es mit einem anderen Suchbegriff oder ändern Sie Ihre Filter.", - "notConnected.title": "Getrennt", - "notConnected.description": "Verbinden Sie sich zuerst mit NetBird, um detaillierte Informationen zu Ihren Peers, Netzwerkressourcen und Exit Nodes einzusehen.", - - "connect.status.disconnected": "Getrennt", - "connect.status.connecting": "Verbindet…", - "connect.status.connected": "Verbunden", - "connect.status.disconnecting": "Trennt…", - "connect.status.daemonUnavailable": "Daemon nicht verfügbar", - "connect.status.loginRequired": "Anmeldung erforderlich", - - "connect.error.loginTitle": "Anmeldung fehlgeschlagen", - "connect.error.connectTitle": "Verbindung fehlgeschlagen", - "connect.error.disconnectTitle": "Trennen fehlgeschlagen", - - "nav.peers.title": "Peers", - "nav.peers.description": "{connected} von {total} verbunden", - "nav.resources.title": "Ressourcen", - "nav.resources.description": "{active} von {total} aktiv", - "nav.exitNode.title": "Exit-Nodes", - "nav.exitNode.none": "Nicht aktiv", - "nav.exitNode.using": "Über {name}", - - "header.openSettings": "Einstellungen öffnen", - "header.togglePanel": "Seitenleiste umschalten", - "header.menu.settings": "Einstellungen …", - "header.menu.defaultView": "Standardansicht", - "header.menu.advancedView": "Erweiterte Ansicht", - "header.menu.updateAvailable": "Update verfügbar", - - "profile.selector.loading": "Lädt…", - "profile.selector.noProfile": "Kein Profil", - "profile.selector.searchPlaceholder": "Profil nach Namen suchen…", - "profile.selector.emptyTitle": "Keine Profile gefunden", - "profile.selector.emptyDescription": "Versuchen Sie einen anderen Suchbegriff oder erstellen Sie ein neues Profil.", - "profile.selector.newProfile": "Neues Profil", - "profile.selector.moreOptions": "Weitere Optionen", - "profile.selector.deregister": "Abmelden", - "profile.selector.delete": "Profil löschen", - "profile.selector.switchTo": "Zu diesem Profil wechseln", - "profile.dropdown.activeProfile": "Aktives Profil", - "profile.dropdown.switchProfile": "Profil wechseln", - "profile.dropdown.noEmail": "Andere", - "profile.dropdown.addProfile": "Profil hinzufügen", - "profile.dropdown.manageProfiles": "Profile verwalten", - "profile.dropdown.settings": "Einstellungen", - - "profile.dialog.title": "Neues Profil", - "profile.dialog.nameLabel": "Profilname", - "profile.dialog.description": "Legen Sie einen leicht erkennbaren Namen für Ihr Profil fest.", - "profile.dialog.placeholder": "z. B. Arbeit", - "profile.dialog.required": "Bitte geben Sie einen Profilnamen ein, z. B. Arbeit, Privat", - "profile.dialog.submit": "Profil hinzufügen", - "profile.dialog.managementHelp": "NetBird Cloud oder Ihr eigener Server.", - "profile.dialog.urlUnreachable": "Server nicht erreichbar. Überprüfen Sie die URL, oder fügen Sie das Profil trotzdem hinzu, wenn Sie sicher sind, dass sie korrekt ist.", - - "profile.switch.title": "Zu Profil \"{name}\" wechseln?", - "profile.switch.message": "Sind Sie sicher, dass Sie das Profil wechseln möchten?\nIhr aktuelles Profil wird getrennt.", - "profile.switch.confirm": "Bestätigen", - "profile.deregister.title": "Profil \"{name}\" abmelden?", - "profile.deregister.message": "Sind Sie sicher, dass Sie dieses Profil abmelden möchten?\nSie müssen sich erneut anmelden, um es zu nutzen.", - "profile.deregister.confirm": "Abmelden", - "profile.delete.title": "Profil \"{name}\" löschen?", - "profile.delete.message": "Sind Sie sicher, dass Sie dieses Profil löschen möchten?\nDiese Aktion kann nicht rückgängig gemacht werden.", - "profile.delete.disabledActive": "Aktive Profile können nicht gelöscht werden. Wechseln Sie zu einem anderen Profil, bevor Sie dieses löschen.", - "profile.delete.disabledDefault": "Das Standardprofil kann nicht gelöscht werden.", - "profile.error.switchTitle": "Profilwechsel fehlgeschlagen", - "profile.error.deregisterTitle": "Abmeldung fehlgeschlagen", - "profile.error.deleteTitle": "Löschen des Profils fehlgeschlagen", - "profile.error.createTitle": "Erstellen des Profils fehlgeschlagen", - "profile.error.loadTitle": "Laden der Profile fehlgeschlagen", - - "settings.error.loadTitle": "Laden der Einstellungen fehlgeschlagen", - "settings.error.saveTitle": "Speichern der Einstellungen fehlgeschlagen", - "settings.error.debugBundleTitle": "Debug-Paket fehlgeschlagen", - - "settings.tabs.general": "Allgemein", - "settings.tabs.network": "Netzwerk", - "settings.tabs.security": "Sicherheit", - "settings.tabs.ssh": "SSH", - "settings.tabs.profiles": "Profile", - "settings.tabs.advanced": "Erweitert", - "settings.tabs.troubleshooting": "Fehlerbehebung", - "settings.tabs.about": "Über", - "settings.tabs.updateAvailable": "Update verfügbar", - - "settings.profiles.section.profiles": "Profile", - "settings.profiles.intro": "Halten Sie separate NetBird-Identitäten nebeneinander, zum Beispiel berufliche und private Konten oder verschiedene Management-Server. Fügen Sie unten Profile hinzu, melden Sie sie ab oder löschen Sie sie.", - "settings.profiles.addProfile": "Profil hinzufügen", - "settings.profiles.active": "Aktiv", - "settings.profiles.emptyTitle": "Keine Profile", - "settings.profiles.emptyDescription": "Erstellen Sie ein Profil, um sich mit einem NetBird-Management-Server zu verbinden.", - - "settings.general.section.general": "Allgemein", - "settings.general.section.connection": "Verbindung", - "settings.general.connectOnStartup.label": "Beim Start verbinden", - "settings.general.connectOnStartup.help": "Beim Start des Dienstes automatisch eine Verbindung herstellen.", - "settings.general.notifications.label": "Desktop-Benachrichtigungen", - "settings.general.notifications.help": "Desktop-Benachrichtigungen für neue Updates und Verbindungsereignisse anzeigen.", - "settings.general.autostart.label": "NetBird-UI beim Anmelden starten", - "settings.general.autostart.help": "Die NetBird-Oberfläche beim Anmelden automatisch starten. Dies betrifft nur die grafische Oberfläche, nicht den Hintergrunddienst.", - "settings.general.autostart.errorTitle": "Ändern des Autostarts fehlgeschlagen", - "settings.general.language.label": "Anzeigesprache", - "settings.general.language.help": "Wählen Sie die Sprache der NetBird-Oberfläche.", - "settings.general.language.search": "Sprache suchen…", - "settings.general.language.empty": "Keine Sprachen gefunden.", - "settings.general.management.label": "Management-Server", - "settings.general.management.help": "Mit NetBird Cloud oder Ihrem eigenen self-hosted Management-Server verbinden. Änderungen lösen eine Neuverbindung des Clients aus.", - "settings.general.management.cloud": "Cloud", - "settings.general.management.selfHosted": "Self-hosted", - "settings.general.management.urlPlaceholder": "https://netbird.selfhosted.com:443", - "settings.general.management.urlError": "Bitte geben Sie eine gültige URL ein, z. B. https://netbird.selfhosted.com:443", - "settings.general.management.urlUnreachable": "Server nicht erreichbar. Überprüfen Sie die URL, oder speichern Sie trotzdem, wenn Sie sicher sind, dass sie korrekt ist.", - "settings.general.management.switchCloudTitle": "Zu NetBird Cloud wechseln?", - "settings.general.management.switchCloudMessage": "Dies trennt die Verbindung zu Ihrem self-hosted Server.\nMöglicherweise müssen Sie sich erneut anmelden.", - "settings.general.management.switchCloudConfirm": "Zu Cloud wechseln", - - "settings.network.section.connectivity": "Konnektivität", - "settings.network.section.routingDns": "Routing & DNS", - "settings.network.lazy.label": "Verzögerte Verbindungen", - "settings.network.lazy.help": "Statt durchgehend aktive Verbindungen zu halten, aktiviert NetBird sie bei Bedarf anhand von Aktivität oder Signalisierung.", - "settings.network.monitor.label": "Bei Netzwerkwechsel neu verbinden", - "settings.network.monitor.help": "Das Netzwerk überwachen und bei Änderungen (z. B. WLAN-Wechsel, Ethernet-Änderungen oder Rückkehr aus dem Ruhezustand) automatisch neu verbinden.", - "settings.network.dns.label": "DNS aktivieren", - "settings.network.dns.help": "NetBird-verwaltete DNS-Einstellungen auf den Host-Resolver anwenden.", - "settings.network.clientRoutes.label": "Client-Routen aktivieren", - "settings.network.clientRoutes.help": "Routen von anderen Peers übernehmen, um deren Netzwerke zu erreichen.", - "settings.network.serverRoutes.label": "Server-Routen aktivieren", - "settings.network.serverRoutes.help": "Lokale Routen dieses Hosts an andere Peers ankündigen.", - "settings.network.ipv6.label": "IPv6 aktivieren", - "settings.network.ipv6.help": "IPv6-Adressierung für das NetBird-Overlay-Netzwerk verwenden.", - - "settings.security.section.firewall": "Firewall", - "settings.security.section.encryption": "Verschlüsselung", - "settings.security.blockInbound.label": "Eingehenden Verkehr blockieren", - "settings.security.blockInbound.help": "Unaufgeforderte Verbindungen von Peers zu diesem Gerät und den von ihm gerouteten Netzwerken ablehnen. Ausgehender Verkehr ist nicht betroffen.", - "settings.security.blockLan.label": "LAN-Zugriff blockieren", - "settings.security.blockLan.help": "Verhindert, dass Peers Ihr lokales Netzwerk oder dessen Geräte erreichen, wenn dieses Gerät deren Verkehr routet.", - "settings.security.rosenpass.label": "Quantenresistenz aktivieren", - "settings.security.rosenpass.help": "Einen post-quanten Schlüsselaustausch via Rosenpass zusätzlich zu WireGuard® hinzufügen.", - "settings.security.rosenpassPermissive.label": "Permissiven Modus aktivieren", - "settings.security.rosenpassPermissive.help": "Verbindungen zu Peers ohne Quantenresistenz-Unterstützung erlauben.", - - "settings.ssh.section.server": "Server", - "settings.ssh.section.capabilities": "Funktionen", - "settings.ssh.section.authentication": "Authentifizierung", - "settings.ssh.server.label": "SSH-Server aktivieren", - "settings.ssh.server.help": "Den NetBird SSH-Server auf diesem Host ausführen, damit andere Peers sich verbinden können.", - "settings.ssh.root.label": "Root-Login erlauben", - "settings.ssh.root.help": "Peers dürfen sich als root anmelden. Deaktivieren, um ein nicht-privilegiertes Konto zu erfordern.", - "settings.ssh.sftp.label": "SFTP erlauben", - "settings.ssh.sftp.help": "Dateien sicher über native SFTP- oder SCP-Clients übertragen.", - "settings.ssh.localForward.label": "Lokale Portweiterleitung", - "settings.ssh.localForward.help": "Verbundene Peers können lokale Ports zu von diesem Host erreichbaren Diensten tunneln.", - "settings.ssh.remoteForward.label": "Remote-Portweiterleitung", - "settings.ssh.remoteForward.help": "Verbundene Peers können Ports dieses Hosts an ihren eigenen Rechner weitergeben.", - "settings.ssh.jwt.label": "JWT-Authentifizierung aktivieren", - "settings.ssh.jwt.help": "Jede SSH-Sitzung gegen Ihren IdP für Identität und Audit prüfen. Deaktivieren, um sich nur auf Netzwerk-ACL-Richtlinien zu verlassen — sinnvoll, wenn kein IdP verfügbar ist.", - "settings.ssh.jwtTtl.label": "JWT-Cache-TTL", - "settings.ssh.jwtTtl.help": "Wie lange dieser Client ein JWT zwischenspeichert, bevor bei ausgehenden SSH-Verbindungen erneut nachgefragt wird. Auf 0 setzen, um den Cache zu deaktivieren und bei jeder Verbindung zu authentifizieren.", - "settings.ssh.jwtTtl.suffix": "Sekunde(n)", - - "settings.advanced.section.interface": "Schnittstelle", - "settings.advanced.section.security": "Sicherheit", - "settings.advanced.interfaceName.label": "Name", - "settings.advanced.interfaceName.error": "Verwende 1–15 Buchstaben, Ziffern, Punkt, Bindestrich oder Unterstrich.", - "settings.advanced.interfaceName.errorMac": "Muss mit „utun“ und einer Zahl beginnen (z. B. utun100).", - "settings.advanced.port.label": "Port", - "settings.advanced.port.error": "Gib einen Port zwischen {min} und {max} ein.", - "settings.advanced.port.help": "Wenn auf 0 gesetzt, wird ein zufälliger freier Port verwendet.", - "settings.advanced.mtu.label": "MTU", - "settings.advanced.mtu.error": "Gib eine MTU zwischen {min} und {max} ein.", - "settings.advanced.psk.label": "Pre-shared Key", - "settings.advanced.psk.help": "Optionaler WireGuard-PSK für zusätzliche symmetrische Verschlüsselung. Nicht identisch mit einem NetBird Setup Key. Sie kommunizieren nur mit Peers, die denselben Pre-shared Key verwenden.", - - "settings.troubleshooting.section.title": "Debug-Paket", - "settings.troubleshooting.intro": "Ein Debug-Paket hilft dem NetBird-Support bei der Untersuchung von Verbindungsproblemen.
Es ist eine .zip-Datei mit Logs, Systemdetails und Debug-Informationen Ihres Geräts.", - "settings.troubleshooting.anonymize.label": "Sensible Informationen anonymisieren", - "settings.troubleshooting.anonymize.help": "Versteckt öffentliche IP-Adressen und nicht-NetBird-Domains in Logs.", - "settings.troubleshooting.systemInfo.label": "Systeminformationen einschließen", - "settings.troubleshooting.systemInfo.help": "OS, Kernel, Netzwerkschnittstellen und Routing-Tabellen einschließen.", - "settings.troubleshooting.upload.label": "Paket an NetBird-Server hochladen", - "settings.troubleshooting.upload.help": "Lädt das Paket sicher hoch und gibt einen Upload-Schlüssel zurück. Teilen Sie den Schlüssel über GitHub oder Slack mit dem NetBird-Support, anstatt die Datei direkt anzuhängen.", - "settings.troubleshooting.trace.label": "Trace-Logs erfassen", - "settings.troubleshooting.trace.help": "Erhöht das Logging auf TRACE und schaltet NetBird kurz aus und wieder ein, um Verbindungs-Logs zu erfassen. Das vorherige Level wird nach Erstellung des Pakets wiederhergestellt.", - "settings.troubleshooting.duration.label": "Aufzeichnungsdauer", - "settings.troubleshooting.duration.help": "Wie lange Trace-Logs vor der Paketerstellung erfasst werden sollen.", - "settings.troubleshooting.duration.suffix": "Minute(n)", - "settings.troubleshooting.create": "Paket erstellen", - "settings.troubleshooting.progress.description": "Logs, Systemdetails und Verbindungszustand werden gesammelt. Dies dauert in der Regel einen Moment — lassen Sie dieses Fenster geöffnet, bis es abgeschlossen ist.", - "settings.troubleshooting.cancelling": "Wird abgebrochen…", - "settings.troubleshooting.done.uploadedTitle": "Debug-Paket erfolgreich hochgeladen!", - "settings.troubleshooting.done.savedTitle": "Paket gespeichert", - "settings.troubleshooting.done.uploadedDescription": "Teilen Sie den unten angezeigten Upload-Schlüssel mit dem NetBird-Support. Eine lokale Kopie wurde ebenfalls auf Ihrem Gerät gespeichert.", - "settings.troubleshooting.done.savedDescription": "Ihr Debug-Paket wurde lokal gespeichert.", - "settings.troubleshooting.done.copyKey": "Schlüssel kopieren", - "settings.troubleshooting.done.openFolder": "Ordner öffnen", - "settings.troubleshooting.done.openFileLocation": "Speicherort öffnen", - "settings.troubleshooting.uploadFailedWithReason": "Upload fehlgeschlagen: {reason} Das Paket wurde trotzdem lokal gespeichert.", - "settings.troubleshooting.uploadFailed": "Upload fehlgeschlagen. Das Paket wurde trotzdem lokal gespeichert.", - "settings.troubleshooting.stage.preparingTrace": "Wechsel zu Trace-Logging…", - "settings.troubleshooting.stage.reconnecting": "NetBird wird neu verbunden…", - "settings.troubleshooting.stage.capturing": "Logs werden erfasst — {elapsed} / {total}", - "settings.troubleshooting.stage.restoring": "Vorheriges Log-Level wird wiederhergestellt…", - "settings.troubleshooting.stage.bundling": "Debug-Paket wird erstellt…", - "settings.troubleshooting.stage.uploading": "Wird zu NetBird hochgeladen…", - "settings.troubleshooting.stage.cancelling": "Wird abgebrochen…", - - "settings.about.client": "NetBird Client v{version}", - "settings.about.clientName": "NetBird Client", - "settings.about.development": "[Entwicklung]", - "settings.about.gui": "Oberfläche v{version}", - "settings.about.guiName": "Oberfläche", - "settings.about.copyright": "© {year} NetBird. Alle Rechte vorbehalten.", - "settings.about.links.imprint": "Impressum", - "settings.about.links.privacy": "Datenschutz", - "settings.about.links.cla": "CLA", - "settings.about.links.terms": "Nutzungsbedingungen", - "settings.about.community.github": "GitHub", - "settings.about.community.slack": "Slack", - "settings.about.community.forum": "Forum", - "settings.about.community.documentation": "Dokumentation", - "settings.about.community.feedback": "Feedback", - - "update.banner.message": "NetBird {version} ist installationsbereit.", - "update.banner.later": "Später", - "update.banner.installNow": "Jetzt installieren", - "update.card.versionAvailableDownload": "Version {version} ist zum Herunterladen verfügbar.", - "update.card.versionAvailableInstall": "Version {version} ist zur Installation verfügbar.", - "update.card.whatsNew": "Was ist neu?", - "update.card.installNow": "Jetzt installieren", - "update.card.getInstaller": "Herunterladen", - "update.card.autoCheckInterval": "NetBird sucht im Hintergrund nach Updates.", - "update.card.changelog": "Änderungsprotokoll", - "update.card.onLatestVersion": "Du verwendest die neueste Version", - "update.header.tooltip": "Update verfügbar", - "update.overlay.updatingVersion": "NetBird wird auf v{version} aktualisiert", - "update.overlay.updating": "NetBird wird aktualisiert", - "update.overlay.description": "Eine neuere Version ist verfügbar und wird installiert. NetBird startet nach Abschluss des Updates automatisch neu.", - "update.overlay.error.timeoutTitle": "Update dauert zu lange", - "update.overlay.error.timeoutDescription": "Die Installation von {target} hat zu lange gedauert und wurde nicht abgeschlossen.", - "update.overlay.error.canceledTitle": "Update wurde abgebrochen", - "update.overlay.error.canceledDescription": "Das Update auf {target} wurde vor dem Abschluss abgebrochen.", - "update.overlay.error.failTitle": "Update konnte nicht installiert werden", - "update.overlay.error.failDescription": "{target} konnte nicht installiert werden.", - "update.overlay.error.unknownMessage": "unbekannter Fehler", - "update.overlay.error.targetVersion": "v{version}", - "update.overlay.error.targetFallback": "die neue Version", - "update.error.loadStateTitle": "Laden des Update-Status fehlgeschlagen", - "update.error.triggerTitle": "Update-Start fehlgeschlagen", - - "update.page.versionLine": "Client wird aktualisiert auf: {version}.", - "update.page.versionLineGeneric": "Client wird aktualisiert.", - "update.page.outdated": "Ihre Client-Version ist älter als die im Management eingestellte Auto-Update-Version.", - "update.page.status.running": "Aktualisiert", - "update.page.status.timeout": "Zeitüberschreitung beim Update. Bitte erneut versuchen.", - "update.page.status.canceled": "Update abgebrochen.", - "update.page.status.failed": "Update fehlgeschlagen: {message}", - "update.page.status.unknownError": "unbekannter Update-Fehler", - "update.page.failedTitle": "Update fehlgeschlagen", - "update.page.timeoutMessage": "Zeitüberschreitung beim Update.", - "update.page.dontClose": "Bitte schließen Sie dieses Fenster nicht.", - "update.page.updating": "Aktualisiert…", - "update.page.complete": "Update abgeschlossen", - "update.page.failed": "Update fehlgeschlagen", - - "window.title.settings": "Einstellungen", - "window.title.signIn": "Anmeldung", - "window.title.sessionExpiration": "Sitzung läuft ab", - "window.title.updating": "Aktualisierung", - "window.title.welcome": "Willkommen bei NetBird", - "window.title.error": "Fehler", - - "welcome.title": "Suchen Sie NetBird in der Taskleiste", - "welcome.description": "NetBird läuft in Ihrer Taskleiste. Klicken Sie auf das Symbol, um sich zu verbinden, Profile zu wechseln oder die Einstellungen zu öffnen.", - "welcome.continue": "Weiter", - "welcome.back": "Zurück", - "welcome.management.title": "NetBird einrichten", - "welcome.management.description": "Klicken Sie auf „Weiter“, um loszulegen, oder wählen Sie Self-hosted, wenn Sie einen eigenen NetBird-Server haben.", - "welcome.management.cloud.title": "NetBird Cloud", - "welcome.management.cloud.description": "Nutzen Sie unseren gehosteten Dienst. Keine Einrichtung nötig.", - "welcome.management.selfHosted.title": "Selbst gehostet", - "welcome.management.selfHosted.description": "Verbindung zu Ihrem eigenen Management-Server.", - "welcome.management.urlLabel": "URL des Management-Servers", - "welcome.management.urlPlaceholder": "https://netbird.selfhosted.com:443", - "welcome.management.urlInvalid": "Bitte geben Sie eine gültige URL ein, z. B. https://netbird.selfhosted.com:443", - "welcome.management.urlUnreachable": "Server nicht erreichbar. Überprüfen Sie die URL oder Ihr Netzwerk und fahren Sie fort, wenn Sie sicher sind, dass sie korrekt ist.", - "welcome.management.checking": "Wird geprüft …", - - "browserLogin.title": "Setzen Sie den Anmeldevorgang im Browser fort", - "browserLogin.notSeeing": "Sehen Sie den Browser-Tab nicht?", - "browserLogin.tryAgain": "Erneut versuchen", - "browserLogin.openFailedTitle": "Browser konnte nicht geöffnet werden", - - "sessionExpiration.title": "Sitzung läuft bald ab", - "sessionExpiration.titleLater": "Ihre Sitzung läuft ab", - "sessionExpiration.description": "Dieses Gerät wird bald getrennt. Browser-Anmeldung zum Erneuern erforderlich.", - "sessionExpiration.descriptionLater": "Eine Browser-Anmeldung hält dieses Gerät mit Ihrem Netzwerk verbunden.", - "sessionExpiration.stay": "Sitzung erneuern", - "sessionExpiration.authenticate": "Anmelden", - "sessionExpiration.logout": "Abmelden", - "sessionExpiration.expired": "Sitzung abgelaufen", - "sessionExpiration.expiredDescription": "Gerät getrennt. Mit Browser-Anmeldung authentifizieren, um erneut zu verbinden.", - "sessionExpiration.close": "Schließen", - "sessionExpiration.extendFailedTitle": "Sitzungsverlängerung fehlgeschlagen", - "sessionExpiration.logoutFailedTitle": "Abmeldung fehlgeschlagen", - - "peers.search.placeholder": "Nach Name oder IP suchen", - "peers.filter.all": "Alle", - "peers.filter.online": "Online", - "peers.filter.offline": "Offline", - "peers.empty.title": "Keine Peers verfügbar", - "peers.empty.description": "Sie haben entweder keine Peers verfügbar oder keinen Zugriff auf einen davon.", - "peers.details.domain": "Domain", - "peers.details.netbirdIp": "NetBird-IP", - "peers.details.netbirdIpv6": "NetBird-IPv6", - "peers.details.publicKey": "Öffentlicher Schlüssel", - "peers.details.connection": "Verbindung", - "peers.details.latency": "Latenz", - "peers.details.lastHandshake": "Letzter Handshake", - "peers.details.statusSince": "Letzte Verbindungsaktualisierung", - "peers.details.bytes": "Bytes", - "peers.details.bytesSent": "Gesendet", - "peers.details.bytesReceived": "Empfangen", - "peers.details.localIce": "Lokales ICE", - "peers.details.remoteIce": "Remote ICE", - "peers.details.never": "Nie", - "peers.details.justNow": "Gerade eben", - "peers.details.refresh": "Aktualisieren", - "peers.status.connected": "Verbunden", - "peers.status.connecting": "Verbinde", - "peers.status.disconnected": "Getrennt", - "peers.details.relayAddress": "Relay", - "peers.details.networks": "Ressourcen", - "peers.details.relayed": "Relayed", - "peers.details.p2p": "P2P", - "peers.details.rosenpass": "Rosenpass aktiviert", - - "networks.search.placeholder": "Nach Netzwerk oder Domain suchen", - "networks.filter.all": "Alle", - "networks.filter.active": "Aktiv", - "networks.filter.overlapping": "Überlappend", - "networks.empty.title": "Keine Ressourcen verfügbar", - "networks.empty.description": "Sie haben entweder keine Netzwerkressourcen verfügbar oder keinen Zugriff auf eine davon.", - "networks.selected": "Ausgewählt", - "networks.unselected": "Nicht ausgewählt", - "networks.ips.heading": "Aufgelöste IPs", - "networks.bulk.selectionCount": "{selected} von {total} aktiv", - "networks.bulk.enableAll": "Alle aktivieren", - "networks.bulk.disableAll": "Alle deaktivieren", - - "exitNodes.search.placeholder": "Exit Nodes suchen", - "exitNodes.none": "Keiner", - "exitNodes.empty.title": "Keine Exit Nodes verfügbar", - "exitNodes.empty.description": "Für diesen Peer wurden keine Exit Nodes freigegeben.", - "exitNodes.card.title": "Exit Node", - "exitNodes.card.statusActive": "Aktiv", - "exitNodes.card.statusInactive": "Inaktiv", - "exitNodes.dropdown.noneTitle": "Keiner", - "exitNodes.dropdown.noneDescription": "Direkte Verbindung ohne Exit Node", - - "quickActions.connect": "Verbinden", - "quickActions.disconnect": "Trennen", - - "daemon.unavailable.title": "NetBird-Dienst läuft nicht", - "daemon.unavailable.description": "Die App stellt automatisch die Verbindung wieder her, sobald der Dienst läuft.", - "daemon.unavailable.docsLink": "Dokumentation", - - "error.jwt_clock_skew": "Anmeldung fehlgeschlagen: Die Uhr dieses Geräts ist nicht mit dem Server synchron. Bitte synchronisieren Sie die Systemuhr und versuchen Sie es erneut.", - "error.jwt_expired": "Ihr Anmeldetoken ist abgelaufen. Bitte melden Sie sich erneut an.", - "error.jwt_signature_invalid": "Anmeldung fehlgeschlagen: Die Token-Signatur ist ungültig. Bitte wenden Sie sich an Ihren Administrator.", - "error.session_expired": "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.", - "error.invalid_setup_key": "Der Setup-Schlüssel fehlt oder ist ungültig.", - "error.permission_denied": "Die Anmeldung wurde vom Server abgelehnt.", - "error.daemon_unreachable": "Der NetBird-Dienst antwortet nicht. Bitte prüfen Sie, ob der Dienst läuft.", - "error.unknown": "Vorgang fehlgeschlagen." + "tray.tooltip": { + "message": "NetBird" + }, + "tray.status.disconnected": { + "message": "Getrennt" + }, + "tray.status.daemonUnavailable": { + "message": "Nicht aktiv" + }, + "tray.status.error": { + "message": "Fehler" + }, + "tray.status.connected": { + "message": "Verbunden" + }, + "tray.status.connecting": { + "message": "Verbinde" + }, + "tray.status.needsLogin": { + "message": "Anmeldung erforderlich" + }, + "tray.status.loginFailed": { + "message": "Anmeldung fehlgeschlagen" + }, + "tray.status.sessionExpired": { + "message": "Sitzung abgelaufen" + }, + "tray.session.expiresIn": { + "message": "Sitzung läuft ab in {remaining}" + }, + "tray.session.unit.lessThanMinute": { + "message": "weniger als einer Minute" + }, + "tray.session.unit.minute": { + "message": "1 Minute" + }, + "tray.session.unit.minutes": { + "message": "{count} Minuten" + }, + "tray.session.unit.hour": { + "message": "1 Stunde" + }, + "tray.session.unit.hours": { + "message": "{count} Stunden" + }, + "tray.session.unit.day": { + "message": "1 Tag" + }, + "tray.session.unit.days": { + "message": "{count} Tagen" + }, + "tray.menu.open": { + "message": "NetBird öffnen" + }, + "tray.menu.connect": { + "message": "Verbinden" + }, + "tray.menu.disconnect": { + "message": "Trennen" + }, + "tray.menu.exitNode": { + "message": "Exit-Node" + }, + "tray.menu.networks": { + "message": "Ressourcen" + }, + "tray.menu.profiles": { + "message": "Profile" + }, + "tray.menu.manageProfiles": { + "message": "Profile verwalten" + }, + "tray.menu.settings": { + "message": "Einstellungen..." + }, + "tray.menu.debugBundle": { + "message": "Debug-Paket erstellen" + }, + "tray.menu.about": { + "message": "Hilfe & Support" + }, + "tray.menu.github": { + "message": "GitHub" + }, + "tray.menu.documentation": { + "message": "Dokumentation" + }, + "tray.menu.troubleshoot": { + "message": "Fehlerbehebung" + }, + "tray.menu.downloadLatest": { + "message": "Neueste Version herunterladen" + }, + "tray.menu.installVersion": { + "message": "Version {version} installieren" + }, + "tray.menu.guiVersion": { + "message": "Oberfläche: {version}" + }, + "tray.menu.daemonVersion": { + "message": "Daemon: {version}" + }, + "tray.menu.versionUnknown": { + "message": "—" + }, + "tray.menu.quit": { + "message": "NetBird beenden" + }, + "notify.update.title": { + "message": "NetBird-Update verfügbar" + }, + "notify.update.body": { + "message": "NetBird {version} ist verfügbar." + }, + "notify.update.enforcedSuffix": { + "message": " Ihr Administrator verlangt dieses Update." + }, + "notify.error.title": { + "message": "Fehler" + }, + "notify.error.connect": { + "message": "Verbindung fehlgeschlagen" + }, + "notify.error.disconnect": { + "message": "Trennen fehlgeschlagen" + }, + "notify.error.switchProfile": { + "message": "Wechsel zu {profile} fehlgeschlagen" + }, + "notify.error.exitNode": { + "message": "Exit-Node {name} konnte nicht aktualisiert werden" + }, + "notify.sessionExpired.title": { + "message": "NetBird-Sitzung abgelaufen" + }, + "notify.sessionExpired.body": { + "message": "Ihre NetBird-Sitzung ist abgelaufen. Bitte melden Sie sich erneut an." + }, + "notify.sessionWarning.title": { + "message": "Sitzung läuft bald ab" + }, + "notify.sessionWarning.body": { + "message": "Ihre NetBird-Sitzung läuft in {remaining} ab. Klicken Sie auf Jetzt verlängern, um zu erneuern." + }, + "notify.sessionWarning.bodyGeneric": { + "message": "Ihre NetBird-Sitzung läuft bald ab. Klicken Sie auf Jetzt verlängern, um zu erneuern." + }, + "notify.sessionWarning.extend": { + "message": "Jetzt verlängern" + }, + "notify.sessionWarning.dismiss": { + "message": "Verwerfen" + }, + "notify.sessionWarning.failed": { + "message": "NetBird-Sitzung konnte nicht verlängert werden" + }, + "notify.sessionWarning.successTitle": { + "message": "NetBird-Sitzung verlängert" + }, + "notify.sessionWarning.successBody": { + "message": "Ihre Sitzung wurde erneuert." + }, + "notify.sessionDeadlineRejected.title": { + "message": "Sitzungsfrist abgelehnt" + }, + "notify.sessionDeadlineRejected.body": { + "message": "Der Server hat eine ungültige Sitzungsfrist übermittelt. Bitte melden Sie sich erneut an." + }, + "common.cancel": { + "message": "Abbrechen" + }, + "common.save": { + "message": "Speichern" + }, + "common.saveChanges": { + "message": "Änderungen speichern" + }, + "common.saving": { + "message": "Speichert…" + }, + "common.close": { + "message": "Schließen" + }, + "common.copy": { + "message": "Kopieren" + }, + "common.togglePasswordVisibility": { + "message": "Passwortsichtbarkeit umschalten" + }, + "common.increase": { + "message": "Erhöhen" + }, + "common.decrease": { + "message": "Verringern" + }, + "common.delete": { + "message": "Löschen" + }, + "common.create": { + "message": "Erstellen" + }, + "common.add": { + "message": "Hinzufügen" + }, + "common.remove": { + "message": "Entfernen" + }, + "common.refresh": { + "message": "Aktualisieren" + }, + "common.loading": { + "message": "Lädt…" + }, + "common.netbird": { + "message": "NetBird" + }, + "common.noResults.title": { + "message": "Keine Ergebnisse gefunden" + }, + "common.noResults.description": { + "message": "Es konnten keine Ergebnisse gefunden werden. Bitte versuchen Sie es mit einem anderen Suchbegriff oder ändern Sie Ihre Filter." + }, + "notConnected.title": { + "message": "Getrennt" + }, + "notConnected.description": { + "message": "Verbinden Sie sich zuerst mit NetBird, um detaillierte Informationen zu Ihren Peers, Netzwerkressourcen und Exit Nodes einzusehen." + }, + "connect.status.disconnected": { + "message": "Getrennt" + }, + "connect.status.connecting": { + "message": "Verbindet…" + }, + "connect.status.connected": { + "message": "Verbunden" + }, + "connect.status.disconnecting": { + "message": "Trennt…" + }, + "connect.status.daemonUnavailable": { + "message": "Daemon nicht verfügbar" + }, + "connect.status.loginRequired": { + "message": "Anmeldung erforderlich" + }, + "connect.error.loginTitle": { + "message": "Anmeldung fehlgeschlagen" + }, + "connect.error.connectTitle": { + "message": "Verbindung fehlgeschlagen" + }, + "connect.error.disconnectTitle": { + "message": "Trennen fehlgeschlagen" + }, + "nav.peers.title": { + "message": "Peers" + }, + "nav.peers.description": { + "message": "{connected} von {total} verbunden" + }, + "nav.resources.title": { + "message": "Ressourcen" + }, + "nav.resources.description": { + "message": "{active} von {total} aktiv" + }, + "nav.exitNode.title": { + "message": "Exit-Nodes" + }, + "nav.exitNode.none": { + "message": "Nicht aktiv" + }, + "nav.exitNode.using": { + "message": "Über {name}" + }, + "header.openSettings": { + "message": "Einstellungen öffnen" + }, + "header.togglePanel": { + "message": "Seitenleiste umschalten" + }, + "header.menu.settings": { + "message": "Einstellungen …" + }, + "header.menu.defaultView": { + "message": "Standardansicht" + }, + "header.menu.advancedView": { + "message": "Erweiterte Ansicht" + }, + "header.menu.updateAvailable": { + "message": "Update verfügbar" + }, + "profile.selector.loading": { + "message": "Lädt…" + }, + "profile.selector.noProfile": { + "message": "Kein Profil" + }, + "profile.selector.searchPlaceholder": { + "message": "Profil nach Namen suchen…" + }, + "profile.selector.emptyTitle": { + "message": "Keine Profile gefunden" + }, + "profile.selector.emptyDescription": { + "message": "Versuchen Sie einen anderen Suchbegriff oder erstellen Sie ein neues Profil." + }, + "profile.selector.newProfile": { + "message": "Neues Profil" + }, + "profile.selector.moreOptions": { + "message": "Weitere Optionen" + }, + "profile.selector.deregister": { + "message": "Abmelden" + }, + "profile.selector.delete": { + "message": "Profil löschen" + }, + "profile.selector.switchTo": { + "message": "Zu diesem Profil wechseln" + }, + "profile.dropdown.activeProfile": { + "message": "Aktives Profil" + }, + "profile.dropdown.switchProfile": { + "message": "Profil wechseln" + }, + "profile.dropdown.noEmail": { + "message": "Andere" + }, + "profile.dropdown.addProfile": { + "message": "Profil hinzufügen" + }, + "profile.dropdown.manageProfiles": { + "message": "Profile verwalten" + }, + "profile.dropdown.settings": { + "message": "Einstellungen" + }, + "profile.dialog.title": { + "message": "Neues Profil" + }, + "profile.dialog.nameLabel": { + "message": "Profilname" + }, + "profile.dialog.description": { + "message": "Legen Sie einen leicht erkennbaren Namen für Ihr Profil fest." + }, + "profile.dialog.placeholder": { + "message": "z. B. Arbeit" + }, + "profile.dialog.required": { + "message": "Bitte geben Sie einen Profilnamen ein, z. B. Arbeit, Privat" + }, + "profile.dialog.submit": { + "message": "Profil hinzufügen" + }, + "profile.dialog.managementHelp": { + "message": "NetBird Cloud oder Ihr eigener Server." + }, + "profile.dialog.urlUnreachable": { + "message": "Server nicht erreichbar. Überprüfen Sie die URL, oder fügen Sie das Profil trotzdem hinzu, wenn Sie sicher sind, dass sie korrekt ist." + }, + "profile.switch.title": { + "message": "Zu Profil \"{name}\" wechseln?" + }, + "profile.switch.message": { + "message": "Sind Sie sicher, dass Sie das Profil wechseln möchten?\nIhr aktuelles Profil wird getrennt." + }, + "profile.switch.confirm": { + "message": "Bestätigen" + }, + "profile.deregister.title": { + "message": "Profil \"{name}\" abmelden?" + }, + "profile.deregister.message": { + "message": "Sind Sie sicher, dass Sie dieses Profil abmelden möchten?\nSie müssen sich erneut anmelden, um es zu nutzen." + }, + "profile.deregister.confirm": { + "message": "Abmelden" + }, + "profile.delete.title": { + "message": "Profil \"{name}\" löschen?" + }, + "profile.delete.message": { + "message": "Sind Sie sicher, dass Sie dieses Profil löschen möchten?\nDiese Aktion kann nicht rückgängig gemacht werden." + }, + "profile.delete.disabledActive": { + "message": "Aktive Profile können nicht gelöscht werden. Wechseln Sie zu einem anderen Profil, bevor Sie dieses löschen." + }, + "profile.delete.disabledDefault": { + "message": "Das Standardprofil kann nicht gelöscht werden." + }, + "profile.error.switchTitle": { + "message": "Profilwechsel fehlgeschlagen" + }, + "profile.error.deregisterTitle": { + "message": "Abmeldung fehlgeschlagen" + }, + "profile.error.deleteTitle": { + "message": "Löschen des Profils fehlgeschlagen" + }, + "profile.error.createTitle": { + "message": "Erstellen des Profils fehlgeschlagen" + }, + "profile.error.loadTitle": { + "message": "Laden der Profile fehlgeschlagen" + }, + "settings.error.loadTitle": { + "message": "Laden der Einstellungen fehlgeschlagen" + }, + "settings.error.saveTitle": { + "message": "Speichern der Einstellungen fehlgeschlagen" + }, + "settings.error.debugBundleTitle": { + "message": "Debug-Paket fehlgeschlagen" + }, + "settings.tabs.general": { + "message": "Allgemein" + }, + "settings.tabs.network": { + "message": "Netzwerk" + }, + "settings.tabs.security": { + "message": "Sicherheit" + }, + "settings.tabs.ssh": { + "message": "SSH" + }, + "settings.tabs.profiles": { + "message": "Profile" + }, + "settings.tabs.advanced": { + "message": "Erweitert" + }, + "settings.tabs.troubleshooting": { + "message": "Fehlerbehebung" + }, + "settings.tabs.about": { + "message": "Über" + }, + "settings.tabs.updateAvailable": { + "message": "Update verfügbar" + }, + "settings.profiles.section.profiles": { + "message": "Profile" + }, + "settings.profiles.intro": { + "message": "Halten Sie separate NetBird-Identitäten nebeneinander, zum Beispiel berufliche und private Konten oder verschiedene Management-Server. Fügen Sie unten Profile hinzu, melden Sie sie ab oder löschen Sie sie." + }, + "settings.profiles.addProfile": { + "message": "Profil hinzufügen" + }, + "settings.profiles.active": { + "message": "Aktiv" + }, + "settings.profiles.emptyTitle": { + "message": "Keine Profile" + }, + "settings.profiles.emptyDescription": { + "message": "Erstellen Sie ein Profil, um sich mit einem NetBird-Management-Server zu verbinden." + }, + "settings.general.section.general": { + "message": "Allgemein" + }, + "settings.general.section.connection": { + "message": "Verbindung" + }, + "settings.general.connectOnStartup.label": { + "message": "Beim Start verbinden" + }, + "settings.general.connectOnStartup.help": { + "message": "Beim Start des Dienstes automatisch eine Verbindung herstellen." + }, + "settings.general.notifications.label": { + "message": "Desktop-Benachrichtigungen" + }, + "settings.general.notifications.help": { + "message": "Desktop-Benachrichtigungen für neue Updates und Verbindungsereignisse anzeigen." + }, + "settings.general.autostart.label": { + "message": "NetBird-UI beim Anmelden starten" + }, + "settings.general.autostart.help": { + "message": "Die NetBird-Oberfläche beim Anmelden automatisch starten. Dies betrifft nur die grafische Oberfläche, nicht den Hintergrunddienst." + }, + "settings.general.autostart.errorTitle": { + "message": "Ändern des Autostarts fehlgeschlagen" + }, + "settings.general.language.label": { + "message": "Anzeigesprache" + }, + "settings.general.language.help": { + "message": "Wählen Sie die Sprache der NetBird-Oberfläche." + }, + "settings.general.language.search": { + "message": "Sprache suchen…" + }, + "settings.general.language.empty": { + "message": "Keine Sprachen gefunden." + }, + "settings.general.management.label": { + "message": "Management-Server" + }, + "settings.general.management.help": { + "message": "Mit NetBird Cloud oder Ihrem eigenen self-hosted Management-Server verbinden. Änderungen lösen eine Neuverbindung des Clients aus." + }, + "settings.general.management.cloud": { + "message": "Cloud" + }, + "settings.general.management.selfHosted": { + "message": "Self-hosted" + }, + "settings.general.management.urlPlaceholder": { + "message": "https://netbird.selfhosted.com:443" + }, + "settings.general.management.urlError": { + "message": "Bitte geben Sie eine gültige URL ein, z. B. https://netbird.selfhosted.com:443" + }, + "settings.general.management.urlUnreachable": { + "message": "Server nicht erreichbar. Überprüfen Sie die URL, oder speichern Sie trotzdem, wenn Sie sicher sind, dass sie korrekt ist." + }, + "settings.general.management.switchCloudTitle": { + "message": "Zu NetBird Cloud wechseln?" + }, + "settings.general.management.switchCloudMessage": { + "message": "Dies trennt die Verbindung zu Ihrem self-hosted Server.\nMöglicherweise müssen Sie sich erneut anmelden." + }, + "settings.general.management.switchCloudConfirm": { + "message": "Zu Cloud wechseln" + }, + "settings.network.section.connectivity": { + "message": "Konnektivität" + }, + "settings.network.section.routingDns": { + "message": "Routing & DNS" + }, + "settings.network.lazy.label": { + "message": "Verzögerte Verbindungen" + }, + "settings.network.lazy.help": { + "message": "Statt durchgehend aktive Verbindungen zu halten, aktiviert NetBird sie bei Bedarf anhand von Aktivität oder Signalisierung." + }, + "settings.network.monitor.label": { + "message": "Bei Netzwerkwechsel neu verbinden" + }, + "settings.network.monitor.help": { + "message": "Das Netzwerk überwachen und bei Änderungen (z. B. WLAN-Wechsel, Ethernet-Änderungen oder Rückkehr aus dem Ruhezustand) automatisch neu verbinden." + }, + "settings.network.dns.label": { + "message": "DNS aktivieren" + }, + "settings.network.dns.help": { + "message": "NetBird-verwaltete DNS-Einstellungen auf den Host-Resolver anwenden." + }, + "settings.network.clientRoutes.label": { + "message": "Client-Routen aktivieren" + }, + "settings.network.clientRoutes.help": { + "message": "Routen von anderen Peers übernehmen, um deren Netzwerke zu erreichen." + }, + "settings.network.serverRoutes.label": { + "message": "Server-Routen aktivieren" + }, + "settings.network.serverRoutes.help": { + "message": "Lokale Routen dieses Hosts an andere Peers ankündigen." + }, + "settings.network.ipv6.label": { + "message": "IPv6 aktivieren" + }, + "settings.network.ipv6.help": { + "message": "IPv6-Adressierung für das NetBird-Overlay-Netzwerk verwenden." + }, + "settings.security.section.firewall": { + "message": "Firewall" + }, + "settings.security.section.encryption": { + "message": "Verschlüsselung" + }, + "settings.security.blockInbound.label": { + "message": "Eingehenden Verkehr blockieren" + }, + "settings.security.blockInbound.help": { + "message": "Unaufgeforderte Verbindungen von Peers zu diesem Gerät und den von ihm gerouteten Netzwerken ablehnen. Ausgehender Verkehr ist nicht betroffen." + }, + "settings.security.blockLan.label": { + "message": "LAN-Zugriff blockieren" + }, + "settings.security.blockLan.help": { + "message": "Verhindert, dass Peers Ihr lokales Netzwerk oder dessen Geräte erreichen, wenn dieses Gerät deren Verkehr routet." + }, + "settings.security.rosenpass.label": { + "message": "Quantenresistenz aktivieren" + }, + "settings.security.rosenpass.help": { + "message": "Einen post-quanten Schlüsselaustausch via Rosenpass zusätzlich zu WireGuard® hinzufügen." + }, + "settings.security.rosenpassPermissive.label": { + "message": "Permissiven Modus aktivieren" + }, + "settings.security.rosenpassPermissive.help": { + "message": "Verbindungen zu Peers ohne Quantenresistenz-Unterstützung erlauben." + }, + "settings.ssh.section.server": { + "message": "Server" + }, + "settings.ssh.section.capabilities": { + "message": "Funktionen" + }, + "settings.ssh.section.authentication": { + "message": "Authentifizierung" + }, + "settings.ssh.server.label": { + "message": "SSH-Server aktivieren" + }, + "settings.ssh.server.help": { + "message": "Den NetBird SSH-Server auf diesem Host ausführen, damit andere Peers sich verbinden können." + }, + "settings.ssh.root.label": { + "message": "Root-Login erlauben" + }, + "settings.ssh.root.help": { + "message": "Peers dürfen sich als root anmelden. Deaktivieren, um ein nicht-privilegiertes Konto zu erfordern." + }, + "settings.ssh.sftp.label": { + "message": "SFTP erlauben" + }, + "settings.ssh.sftp.help": { + "message": "Dateien sicher über native SFTP- oder SCP-Clients übertragen." + }, + "settings.ssh.localForward.label": { + "message": "Lokale Portweiterleitung" + }, + "settings.ssh.localForward.help": { + "message": "Verbundene Peers können lokale Ports zu von diesem Host erreichbaren Diensten tunneln." + }, + "settings.ssh.remoteForward.label": { + "message": "Remote-Portweiterleitung" + }, + "settings.ssh.remoteForward.help": { + "message": "Verbundene Peers können Ports dieses Hosts an ihren eigenen Rechner weitergeben." + }, + "settings.ssh.jwt.label": { + "message": "JWT-Authentifizierung aktivieren" + }, + "settings.ssh.jwt.help": { + "message": "Jede SSH-Sitzung gegen Ihren IdP für Identität und Audit prüfen. Deaktivieren, um sich nur auf Netzwerk-ACL-Richtlinien zu verlassen — sinnvoll, wenn kein IdP verfügbar ist." + }, + "settings.ssh.jwtTtl.label": { + "message": "JWT-Cache-TTL" + }, + "settings.ssh.jwtTtl.help": { + "message": "Wie lange dieser Client ein JWT zwischenspeichert, bevor bei ausgehenden SSH-Verbindungen erneut nachgefragt wird. Auf 0 setzen, um den Cache zu deaktivieren und bei jeder Verbindung zu authentifizieren." + }, + "settings.ssh.jwtTtl.suffix": { + "message": "Sekunde(n)" + }, + "settings.advanced.section.interface": { + "message": "Schnittstelle" + }, + "settings.advanced.section.security": { + "message": "Sicherheit" + }, + "settings.advanced.interfaceName.label": { + "message": "Name" + }, + "settings.advanced.interfaceName.error": { + "message": "Verwende 1–15 Buchstaben, Ziffern, Punkt, Bindestrich oder Unterstrich." + }, + "settings.advanced.interfaceName.errorMac": { + "message": "Muss mit „utun“ und einer Zahl beginnen (z. B. utun100)." + }, + "settings.advanced.port.label": { + "message": "Port" + }, + "settings.advanced.port.error": { + "message": "Gib einen Port zwischen {min} und {max} ein." + }, + "settings.advanced.port.help": { + "message": "Wenn auf 0 gesetzt, wird ein zufälliger freier Port verwendet." + }, + "settings.advanced.mtu.label": { + "message": "MTU" + }, + "settings.advanced.mtu.error": { + "message": "Gib eine MTU zwischen {min} und {max} ein." + }, + "settings.advanced.psk.label": { + "message": "Pre-shared Key" + }, + "settings.advanced.psk.help": { + "message": "Optionaler WireGuard-PSK für zusätzliche symmetrische Verschlüsselung. Nicht identisch mit einem NetBird Setup Key. Sie kommunizieren nur mit Peers, die denselben Pre-shared Key verwenden." + }, + "settings.troubleshooting.section.title": { + "message": "Debug-Paket" + }, + "settings.troubleshooting.intro": { + "message": "Ein Debug-Paket hilft dem NetBird-Support bei der Untersuchung von Verbindungsproblemen.
Es ist eine .zip-Datei mit Logs, Systemdetails und Debug-Informationen Ihres Geräts." + }, + "settings.troubleshooting.anonymize.label": { + "message": "Sensible Informationen anonymisieren" + }, + "settings.troubleshooting.anonymize.help": { + "message": "Versteckt öffentliche IP-Adressen und nicht-NetBird-Domains in Logs." + }, + "settings.troubleshooting.systemInfo.label": { + "message": "Systeminformationen einschließen" + }, + "settings.troubleshooting.systemInfo.help": { + "message": "OS, Kernel, Netzwerkschnittstellen und Routing-Tabellen einschließen." + }, + "settings.troubleshooting.upload.label": { + "message": "Paket an NetBird-Server hochladen" + }, + "settings.troubleshooting.upload.help": { + "message": "Lädt das Paket sicher hoch und gibt einen Upload-Schlüssel zurück. Teilen Sie den Schlüssel über GitHub oder Slack mit dem NetBird-Support, anstatt die Datei direkt anzuhängen." + }, + "settings.troubleshooting.trace.label": { + "message": "Trace-Logs erfassen" + }, + "settings.troubleshooting.trace.help": { + "message": "Erhöht das Logging auf TRACE und schaltet NetBird kurz aus und wieder ein, um Verbindungs-Logs zu erfassen. Das vorherige Level wird nach Erstellung des Pakets wiederhergestellt." + }, + "settings.troubleshooting.duration.label": { + "message": "Aufzeichnungsdauer" + }, + "settings.troubleshooting.duration.help": { + "message": "Wie lange Trace-Logs vor der Paketerstellung erfasst werden sollen." + }, + "settings.troubleshooting.duration.suffix": { + "message": "Minute(n)" + }, + "settings.troubleshooting.create": { + "message": "Paket erstellen" + }, + "settings.troubleshooting.progress.description": { + "message": "Logs, Systemdetails und Verbindungszustand werden gesammelt. Dies dauert in der Regel einen Moment — lassen Sie dieses Fenster geöffnet, bis es abgeschlossen ist." + }, + "settings.troubleshooting.cancelling": { + "message": "Wird abgebrochen…" + }, + "settings.troubleshooting.done.uploadedTitle": { + "message": "Debug-Paket erfolgreich hochgeladen!" + }, + "settings.troubleshooting.done.savedTitle": { + "message": "Paket gespeichert" + }, + "settings.troubleshooting.done.uploadedDescription": { + "message": "Teilen Sie den unten angezeigten Upload-Schlüssel mit dem NetBird-Support. Eine lokale Kopie wurde ebenfalls auf Ihrem Gerät gespeichert." + }, + "settings.troubleshooting.done.savedDescription": { + "message": "Ihr Debug-Paket wurde lokal gespeichert." + }, + "settings.troubleshooting.done.copyKey": { + "message": "Schlüssel kopieren" + }, + "settings.troubleshooting.done.openFolder": { + "message": "Ordner öffnen" + }, + "settings.troubleshooting.done.openFileLocation": { + "message": "Speicherort öffnen" + }, + "settings.troubleshooting.uploadFailedWithReason": { + "message": "Upload fehlgeschlagen: {reason} Das Paket wurde trotzdem lokal gespeichert." + }, + "settings.troubleshooting.uploadFailed": { + "message": "Upload fehlgeschlagen. Das Paket wurde trotzdem lokal gespeichert." + }, + "settings.troubleshooting.stage.preparingTrace": { + "message": "Wechsel zu Trace-Logging…" + }, + "settings.troubleshooting.stage.reconnecting": { + "message": "NetBird wird neu verbunden…" + }, + "settings.troubleshooting.stage.capturing": { + "message": "Logs werden erfasst — {elapsed} / {total}" + }, + "settings.troubleshooting.stage.restoring": { + "message": "Vorheriges Log-Level wird wiederhergestellt…" + }, + "settings.troubleshooting.stage.bundling": { + "message": "Debug-Paket wird erstellt…" + }, + "settings.troubleshooting.stage.uploading": { + "message": "Wird zu NetBird hochgeladen…" + }, + "settings.troubleshooting.stage.cancelling": { + "message": "Wird abgebrochen…" + }, + "settings.about.client": { + "message": "NetBird Client v{version}" + }, + "settings.about.clientName": { + "message": "NetBird Client" + }, + "settings.about.development": { + "message": "[Entwicklung]" + }, + "settings.about.gui": { + "message": "Oberfläche v{version}" + }, + "settings.about.guiName": { + "message": "Oberfläche" + }, + "settings.about.copyright": { + "message": "© {year} NetBird. Alle Rechte vorbehalten." + }, + "settings.about.links.imprint": { + "message": "Impressum" + }, + "settings.about.links.privacy": { + "message": "Datenschutz" + }, + "settings.about.links.cla": { + "message": "CLA" + }, + "settings.about.links.terms": { + "message": "Nutzungsbedingungen" + }, + "settings.about.community.github": { + "message": "GitHub" + }, + "settings.about.community.slack": { + "message": "Slack" + }, + "settings.about.community.forum": { + "message": "Forum" + }, + "settings.about.community.documentation": { + "message": "Dokumentation" + }, + "settings.about.community.feedback": { + "message": "Feedback" + }, + "update.banner.message": { + "message": "NetBird {version} ist installationsbereit." + }, + "update.banner.later": { + "message": "Später" + }, + "update.banner.installNow": { + "message": "Jetzt installieren" + }, + "update.card.versionAvailableDownload": { + "message": "Version {version} ist zum Herunterladen verfügbar." + }, + "update.card.versionAvailableInstall": { + "message": "Version {version} ist zur Installation verfügbar." + }, + "update.card.whatsNew": { + "message": "Was ist neu?" + }, + "update.card.installNow": { + "message": "Jetzt installieren" + }, + "update.card.getInstaller": { + "message": "Herunterladen" + }, + "update.card.autoCheckInterval": { + "message": "NetBird sucht im Hintergrund nach Updates." + }, + "update.card.changelog": { + "message": "Änderungsprotokoll" + }, + "update.card.onLatestVersion": { + "message": "Du verwendest die neueste Version" + }, + "update.header.tooltip": { + "message": "Update verfügbar" + }, + "update.overlay.updatingVersion": { + "message": "NetBird wird auf v{version} aktualisiert" + }, + "update.overlay.updating": { + "message": "NetBird wird aktualisiert" + }, + "update.overlay.description": { + "message": "Eine neuere Version ist verfügbar und wird installiert. NetBird startet nach Abschluss des Updates automatisch neu." + }, + "update.overlay.error.timeoutTitle": { + "message": "Update dauert zu lange" + }, + "update.overlay.error.timeoutDescription": { + "message": "Die Installation von {target} hat zu lange gedauert und wurde nicht abgeschlossen." + }, + "update.overlay.error.canceledTitle": { + "message": "Update wurde abgebrochen" + }, + "update.overlay.error.canceledDescription": { + "message": "Das Update auf {target} wurde vor dem Abschluss abgebrochen." + }, + "update.overlay.error.failTitle": { + "message": "Update konnte nicht installiert werden" + }, + "update.overlay.error.failDescription": { + "message": "{target} konnte nicht installiert werden." + }, + "update.overlay.error.unknownMessage": { + "message": "unbekannter Fehler" + }, + "update.overlay.error.targetVersion": { + "message": "v{version}" + }, + "update.overlay.error.targetFallback": { + "message": "die neue Version" + }, + "update.error.loadStateTitle": { + "message": "Laden des Update-Status fehlgeschlagen" + }, + "update.error.triggerTitle": { + "message": "Update-Start fehlgeschlagen" + }, + "update.page.versionLine": { + "message": "Client wird aktualisiert auf: {version}." + }, + "update.page.versionLineGeneric": { + "message": "Client wird aktualisiert." + }, + "update.page.outdated": { + "message": "Ihre Client-Version ist älter als die im Management eingestellte Auto-Update-Version." + }, + "update.page.status.running": { + "message": "Aktualisiert" + }, + "update.page.status.timeout": { + "message": "Zeitüberschreitung beim Update. Bitte erneut versuchen." + }, + "update.page.status.canceled": { + "message": "Update abgebrochen." + }, + "update.page.status.failed": { + "message": "Update fehlgeschlagen: {message}" + }, + "update.page.status.unknownError": { + "message": "unbekannter Update-Fehler" + }, + "update.page.failedTitle": { + "message": "Update fehlgeschlagen" + }, + "update.page.timeoutMessage": { + "message": "Zeitüberschreitung beim Update." + }, + "update.page.dontClose": { + "message": "Bitte schließen Sie dieses Fenster nicht." + }, + "update.page.updating": { + "message": "Aktualisiert…" + }, + "update.page.complete": { + "message": "Update abgeschlossen" + }, + "update.page.failed": { + "message": "Update fehlgeschlagen" + }, + "window.title.settings": { + "message": "Einstellungen" + }, + "window.title.signIn": { + "message": "Anmeldung" + }, + "window.title.sessionExpiration": { + "message": "Sitzung läuft ab" + }, + "window.title.updating": { + "message": "Aktualisierung" + }, + "window.title.welcome": { + "message": "Willkommen bei NetBird" + }, + "window.title.error": { + "message": "Fehler" + }, + "welcome.title": { + "message": "Suchen Sie NetBird in der Taskleiste" + }, + "welcome.description": { + "message": "NetBird läuft in Ihrer Taskleiste. Klicken Sie auf das Symbol, um sich zu verbinden, Profile zu wechseln oder die Einstellungen zu öffnen." + }, + "welcome.continue": { + "message": "Weiter" + }, + "welcome.back": { + "message": "Zurück" + }, + "welcome.management.title": { + "message": "NetBird einrichten" + }, + "welcome.management.description": { + "message": "Klicken Sie auf „Weiter“, um loszulegen, oder wählen Sie Self-hosted, wenn Sie einen eigenen NetBird-Server haben." + }, + "welcome.management.cloud.title": { + "message": "NetBird Cloud" + }, + "welcome.management.cloud.description": { + "message": "Nutzen Sie unseren gehosteten Dienst. Keine Einrichtung nötig." + }, + "welcome.management.selfHosted.title": { + "message": "Selbst gehostet" + }, + "welcome.management.selfHosted.description": { + "message": "Verbindung zu Ihrem eigenen Management-Server." + }, + "welcome.management.urlLabel": { + "message": "URL des Management-Servers" + }, + "welcome.management.urlPlaceholder": { + "message": "https://netbird.selfhosted.com:443" + }, + "welcome.management.urlInvalid": { + "message": "Bitte geben Sie eine gültige URL ein, z. B. https://netbird.selfhosted.com:443" + }, + "welcome.management.urlUnreachable": { + "message": "Server nicht erreichbar. Überprüfen Sie die URL oder Ihr Netzwerk und fahren Sie fort, wenn Sie sicher sind, dass sie korrekt ist." + }, + "welcome.management.checking": { + "message": "Wird geprüft …" + }, + "browserLogin.title": { + "message": "Setzen Sie den Anmeldevorgang im Browser fort" + }, + "browserLogin.notSeeing": { + "message": "Sehen Sie den Browser-Tab nicht?" + }, + "browserLogin.tryAgain": { + "message": "Erneut versuchen" + }, + "browserLogin.openFailedTitle": { + "message": "Browser konnte nicht geöffnet werden" + }, + "sessionExpiration.title": { + "message": "Sitzung läuft bald ab" + }, + "sessionExpiration.titleLater": { + "message": "Ihre Sitzung läuft ab" + }, + "sessionExpiration.description": { + "message": "Dieses Gerät wird bald getrennt. Browser-Anmeldung zum Erneuern erforderlich." + }, + "sessionExpiration.descriptionLater": { + "message": "Eine Browser-Anmeldung hält dieses Gerät mit Ihrem Netzwerk verbunden." + }, + "sessionExpiration.stay": { + "message": "Sitzung erneuern" + }, + "sessionExpiration.authenticate": { + "message": "Anmelden" + }, + "sessionExpiration.logout": { + "message": "Abmelden" + }, + "sessionExpiration.expired": { + "message": "Sitzung abgelaufen" + }, + "sessionExpiration.expiredDescription": { + "message": "Gerät getrennt. Mit Browser-Anmeldung authentifizieren, um erneut zu verbinden." + }, + "sessionExpiration.close": { + "message": "Schließen" + }, + "sessionExpiration.extendFailedTitle": { + "message": "Sitzungsverlängerung fehlgeschlagen" + }, + "sessionExpiration.logoutFailedTitle": { + "message": "Abmeldung fehlgeschlagen" + }, + "peers.search.placeholder": { + "message": "Nach Name oder IP suchen" + }, + "peers.filter.all": { + "message": "Alle" + }, + "peers.filter.online": { + "message": "Online" + }, + "peers.filter.offline": { + "message": "Offline" + }, + "peers.empty.title": { + "message": "Keine Peers verfügbar" + }, + "peers.empty.description": { + "message": "Sie haben entweder keine Peers verfügbar oder keinen Zugriff auf einen davon." + }, + "peers.details.domain": { + "message": "Domain" + }, + "peers.details.netbirdIp": { + "message": "NetBird-IP" + }, + "peers.details.netbirdIpv6": { + "message": "NetBird-IPv6" + }, + "peers.details.publicKey": { + "message": "Öffentlicher Schlüssel" + }, + "peers.details.connection": { + "message": "Verbindung" + }, + "peers.details.latency": { + "message": "Latenz" + }, + "peers.details.lastHandshake": { + "message": "Letzter Handshake" + }, + "peers.details.statusSince": { + "message": "Letzte Verbindungsaktualisierung" + }, + "peers.details.bytes": { + "message": "Bytes" + }, + "peers.details.bytesSent": { + "message": "Gesendet" + }, + "peers.details.bytesReceived": { + "message": "Empfangen" + }, + "peers.details.localIce": { + "message": "Lokales ICE" + }, + "peers.details.remoteIce": { + "message": "Remote ICE" + }, + "peers.details.never": { + "message": "Nie" + }, + "peers.details.justNow": { + "message": "Gerade eben" + }, + "peers.details.refresh": { + "message": "Aktualisieren" + }, + "peers.status.connected": { + "message": "Verbunden" + }, + "peers.status.connecting": { + "message": "Verbinde" + }, + "peers.status.disconnected": { + "message": "Getrennt" + }, + "peers.details.relayAddress": { + "message": "Relay" + }, + "peers.details.networks": { + "message": "Ressourcen" + }, + "peers.details.relayed": { + "message": "Relayed" + }, + "peers.details.p2p": { + "message": "P2P" + }, + "peers.details.rosenpass": { + "message": "Rosenpass aktiviert" + }, + "networks.search.placeholder": { + "message": "Nach Netzwerk oder Domain suchen" + }, + "networks.filter.all": { + "message": "Alle" + }, + "networks.filter.active": { + "message": "Aktiv" + }, + "networks.filter.overlapping": { + "message": "Überlappend" + }, + "networks.empty.title": { + "message": "Keine Ressourcen verfügbar" + }, + "networks.empty.description": { + "message": "Sie haben entweder keine Netzwerkressourcen verfügbar oder keinen Zugriff auf eine davon." + }, + "networks.selected": { + "message": "Ausgewählt" + }, + "networks.unselected": { + "message": "Nicht ausgewählt" + }, + "networks.ips.heading": { + "message": "Aufgelöste IPs" + }, + "networks.bulk.selectionCount": { + "message": "{selected} von {total} aktiv" + }, + "networks.bulk.enableAll": { + "message": "Alle aktivieren" + }, + "networks.bulk.disableAll": { + "message": "Alle deaktivieren" + }, + "exitNodes.search.placeholder": { + "message": "Exit Nodes suchen" + }, + "exitNodes.none": { + "message": "Keiner" + }, + "exitNodes.empty.title": { + "message": "Keine Exit Nodes verfügbar" + }, + "exitNodes.empty.description": { + "message": "Für diesen Peer wurden keine Exit Nodes freigegeben." + }, + "exitNodes.card.title": { + "message": "Exit Node" + }, + "exitNodes.card.statusActive": { + "message": "Aktiv" + }, + "exitNodes.card.statusInactive": { + "message": "Inaktiv" + }, + "exitNodes.dropdown.noneTitle": { + "message": "Keiner" + }, + "exitNodes.dropdown.noneDescription": { + "message": "Direkte Verbindung ohne Exit Node" + }, + "quickActions.connect": { + "message": "Verbinden" + }, + "quickActions.disconnect": { + "message": "Trennen" + }, + "daemon.unavailable.title": { + "message": "NetBird-Dienst läuft nicht" + }, + "daemon.unavailable.description": { + "message": "Die App stellt automatisch die Verbindung wieder her, sobald der Dienst läuft." + }, + "daemon.unavailable.docsLink": { + "message": "Dokumentation" + }, + "error.jwt_clock_skew": { + "message": "Anmeldung fehlgeschlagen: Die Uhr dieses Geräts ist nicht mit dem Server synchron. Bitte synchronisieren Sie die Systemuhr und versuchen Sie es erneut." + }, + "error.jwt_expired": { + "message": "Ihr Anmeldetoken ist abgelaufen. Bitte melden Sie sich erneut an." + }, + "error.jwt_signature_invalid": { + "message": "Anmeldung fehlgeschlagen: Die Token-Signatur ist ungültig. Bitte wenden Sie sich an Ihren Administrator." + }, + "error.session_expired": { + "message": "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an." + }, + "error.invalid_setup_key": { + "message": "Der Setup-Schlüssel fehlt oder ist ungültig." + }, + "error.permission_denied": { + "message": "Die Anmeldung wurde vom Server abgelehnt." + }, + "error.daemon_unreachable": { + "message": "Der NetBird-Dienst antwortet nicht. Bitte prüfen Sie, ob der Dienst läuft." + }, + "error.unknown": { + "message": "Vorgang fehlgeschlagen." + } } diff --git a/client/ui/i18n/locales/en/common.json b/client/ui/i18n/locales/en/common.json index 0f146bc7b..e85016873 100644 --- a/client/ui/i18n/locales/en/common.json +++ b/client/ui/i18n/locales/en/common.json @@ -1,456 +1,1682 @@ { - "tray.tooltip": "NetBird", - "tray.status.disconnected": "Disconnected", - "tray.status.daemonUnavailable": "Not running", - "tray.status.error": "Error", - "tray.status.connected": "Connected", - "tray.status.connecting": "Connecting", - "tray.status.needsLogin": "Login required", - "tray.status.loginFailed": "Login failed", - "tray.status.sessionExpired": "Session expired", - "tray.session.expiresIn": "Session expires in {remaining}", - "tray.session.unit.lessThanMinute": "less than a minute", - "tray.session.unit.minute": "1 minute", - "tray.session.unit.minutes": "{count} minutes", - "tray.session.unit.hour": "1 hour", - "tray.session.unit.hours": "{count} hours", - "tray.session.unit.day": "1 day", - "tray.session.unit.days": "{count} days", - - "tray.menu.open": "Open NetBird", - "tray.menu.connect": "Connect", - "tray.menu.disconnect": "Disconnect", - "tray.menu.exitNode": "Exit Node", - "tray.menu.networks": "Resources", - "tray.menu.profiles": "Profiles", - "tray.menu.manageProfiles": "Manage Profiles", - "tray.menu.settings": "Settings...", - "tray.menu.debugBundle": "Create Debug Bundle", - "tray.menu.about": "Help & Support", - "tray.menu.github": "GitHub", - "tray.menu.documentation": "Documentation", - "tray.menu.troubleshoot": "Troubleshoot", - "tray.menu.downloadLatest": "Download latest version", - "tray.menu.installVersion": "Install version {version}", - "tray.menu.guiVersion": "GUI: {version}", - "tray.menu.daemonVersion": "Daemon: {version}", - "tray.menu.versionUnknown": "—", - "tray.menu.quit": "Quit NetBird", - - "notify.update.title": "NetBird update available", - "notify.update.body": "NetBird {version} is available.", - "notify.update.enforcedSuffix": " Your administrator requires this update.", - "notify.error.title": "Error", - "notify.error.connect": "Failed to connect", - "notify.error.disconnect": "Failed to disconnect", - "notify.error.switchProfile": "Failed to switch to {profile}", - "notify.error.exitNode": "Failed to update exit node {name}", - "notify.sessionExpired.title": "NetBird session expired", - "notify.sessionExpired.body": "Your NetBird session has expired. Please log in again.", - "notify.sessionWarning.title": "Session expires soon", - "notify.sessionWarning.body": "Your NetBird session expires in {remaining}. Click Extend now to renew.", - "notify.sessionWarning.bodyGeneric": "Your NetBird session is about to expire. Click Extend now to renew.", - "notify.sessionWarning.extend": "Extend now", - "notify.sessionWarning.dismiss": "Dismiss", - "notify.sessionWarning.failed": "Failed to extend NetBird session", - "notify.sessionWarning.successTitle": "NetBird session extended", - "notify.sessionWarning.successBody": "Your session has been refreshed.", - "notify.sessionDeadlineRejected.title": "Session deadline rejected", - "notify.sessionDeadlineRejected.body": "The server sent an invalid session deadline. Please sign in again.", - - "common.cancel": "Cancel", - "common.save": "Save", - "common.saveChanges": "Save Changes", - "common.saving": "Saving…", - "common.close": "Close", - "common.copy": "Copy", - "common.togglePasswordVisibility": "Toggle password visibility", - "common.increase": "Increase", - "common.decrease": "Decrease", - "common.delete": "Delete", - "common.create": "Create", - "common.add": "Add", - "common.remove": "Remove", - "common.refresh": "Refresh", - "common.loading": "Loading…", - "common.netbird": "NetBird", - "common.noResults.title": "Could not find any results", - "common.noResults.description": "We couldn't find any results. Please try a different search term or change your filters.", - "notConnected.title": "Disconnected", - "notConnected.description": "Connect to NetBird first to view detailed information about your peers, network resources, and exit nodes.", - - "connect.status.disconnected": "Disconnected", - "connect.status.connecting": "Connecting...", - "connect.status.connected": "Connected", - "connect.status.disconnecting": "Disconnecting...", - "connect.status.daemonUnavailable": "Daemon unavailable", - "connect.status.loginRequired": "Login required", - - "connect.error.loginTitle": "Login Failed", - "connect.error.connectTitle": "Connect Failed", - "connect.error.disconnectTitle": "Disconnect Failed", - - "nav.peers.title": "Peers", - "nav.peers.description": "{connected} of {total} connected", - "nav.resources.title": "Resources", - "nav.resources.description": "{active} of {total} active", - "nav.exitNode.title": "Exit Nodes", - "nav.exitNode.none": "Not active", - "nav.exitNode.using": "Via {name}", - - "header.openSettings": "Open settings", - "header.togglePanel": "Toggle side panel", - - "profile.selector.loading": "Loading...", - "profile.selector.noProfile": "No profile", - "profile.selector.searchPlaceholder": "Search profile by name...", - "profile.selector.emptyTitle": "No Profiles Found", - "profile.selector.emptyDescription": "Try a different search term or create a new profile.", - "profile.selector.newProfile": "New Profile", - "profile.selector.moreOptions": "More options", - "profile.selector.deregister": "Deregister", - "profile.selector.delete": "Delete", - "profile.selector.switchTo": "Switch to this profile", - - "profile.dialog.title": "Enter Profile Name", - "profile.dialog.nameLabel": "Profile Name", - "profile.dialog.description": "Set an easily identifiable name for your profile.", - "profile.dialog.placeholder": "e.g. work", - "profile.dialog.submit": "Add Profile", - "profile.dialog.required": "Please enter a profile name, e.g. work, home", - "profile.dialog.managementHelp": "Use NetBird Cloud or your own server.", - "profile.dialog.urlUnreachable": "Couldn't reach this server. Check the URL, or add the profile anyway if you're sure it's correct.", - - "header.menu.settings": "Settings...", - "header.menu.defaultView": "Default View", - "header.menu.advancedView": "Advanced View", - "header.menu.updateAvailable": "Update Available", - - "profile.switch.title": "Switch Profile to \"{name}\"?", - "profile.switch.message": "Are you sure you want to switch profiles?\nYour current profile will be disconnected.", - "profile.switch.confirm": "Confirm", - "profile.deregister.title": "Deregister Profile \"{name}\"?", - "profile.deregister.message": "Are you sure you want to deregister this profile?\nYou will need to log in again to use it.", - "profile.deregister.confirm": "Deregister", - "profile.delete.title": "Delete Profile \"{name}\"?", - "profile.delete.message": "Are you sure you want to delete this profile?\nThis action cannot be undone.", - "profile.delete.disabledActive": "Active profiles cannot be deleted. Switch to a different one before deleting this profile.", - "profile.delete.disabledDefault": "The default profile cannot be deleted.", - "profile.error.switchTitle": "Switch Profile Failed", - "profile.error.deregisterTitle": "Deregister Profile Failed", - "profile.error.deleteTitle": "Delete Profile Failed", - "profile.error.createTitle": "Create Profile Failed", - "profile.error.loadTitle": "Load Profiles Failed", - - "profile.dropdown.activeProfile": "Active profile", - "profile.dropdown.switchProfile": "Switch Profile", - "profile.dropdown.noEmail": "Other", - "profile.dropdown.addProfile": "Add Profile", - "profile.dropdown.manageProfiles": "Manage Profiles", - "profile.dropdown.settings": "Settings", - - "settings.profiles.section.profiles": "Profiles", - "settings.profiles.intro": "Keep separate NetBird identities side by side, for example work and personal accounts, or different management servers. Add, deregister, or delete profiles below.", - "settings.profiles.addProfile": "Add Profile", - "settings.profiles.active": "Active", - "settings.profiles.emptyTitle": "No Profiles", - "settings.profiles.emptyDescription": "Create a profile to connect to a NetBird management server.", - - "settings.error.loadTitle": "Load Settings Failed", - "settings.error.saveTitle": "Save Settings Failed", - "settings.error.debugBundleTitle": "Debug Bundle Failed", - - "settings.tabs.general": "General", - "settings.tabs.network": "Network", - "settings.tabs.security": "Security", - "settings.tabs.profiles": "Profiles", - "settings.tabs.ssh": "SSH", - "settings.tabs.advanced": "Advanced", - "settings.tabs.troubleshooting": "Troubleshoot", - "settings.tabs.about": "About", - "settings.tabs.updateAvailable": "Update Available", - - "settings.general.section.general": "General", - "settings.general.section.connection": "Connection", - "settings.general.connectOnStartup.label": "Connect on Startup", - "settings.general.connectOnStartup.help": "Automatically establish a connection when the service starts.", - "settings.general.notifications.label": "Desktop Notifications", - "settings.general.notifications.help": "Show desktop notifications for new updates and connection events.", - "settings.general.autostart.label": "Launch NetBird UI at Login", - "settings.general.autostart.help": "Start the NetBird interface automatically when you log in. This affects the graphical interface only, not the background service.", - "settings.general.autostart.errorTitle": "Autostart Change Failed", - "settings.general.language.label": "Display Language", - "settings.general.language.help": "Choose the language for the NetBird interface.", - "settings.general.language.search": "Search language…", - "settings.general.language.empty": "No languages match.", - "settings.general.management.label": "Management Server", - "settings.general.management.help": "Connect to NetBird Cloud or your own self-hosted management server. Changes will reconnect the client.", - "settings.general.management.cloud": "Cloud", - "settings.general.management.selfHosted": "Self-hosted", - "settings.general.management.urlPlaceholder": "https://netbird.selfhosted.com:443", - "settings.general.management.urlError": "Please enter a valid URL, e.g., https://netbird.selfhosted.com:443", - "settings.general.management.urlUnreachable": "Couldn't reach this server. Check the URL, or save anyway if you're sure it's correct.", - "settings.general.management.switchCloudTitle": "Switch to NetBird Cloud?", - "settings.general.management.switchCloudMessage": "This disconnects your self-hosted server.\nYou may need to log in again.", - "settings.general.management.switchCloudConfirm": "Switch to Cloud", - - "settings.network.section.connectivity": "Connectivity", - "settings.network.section.routingDns": "Routing & DNS", - "settings.network.lazy.label": "Lazy Connections", - "settings.network.lazy.help": "Instead of maintaining always-on connections, NetBird activates them on-demand based on activity or signaling.", - "settings.network.monitor.label": "Reconnect on Network Change", - "settings.network.monitor.help": "Monitor the network and automatically reconnect on changes such as Wi-Fi switching, Ethernet changes, or resume from sleep.", - "settings.network.dns.label": "Enable DNS", - "settings.network.dns.help": "Apply NetBird-managed DNS settings to the host resolver.", - "settings.network.clientRoutes.label": "Enable Client Routes", - "settings.network.clientRoutes.help": "Accept routes from other peers to reach their networks.", - "settings.network.serverRoutes.label": "Enable Server Routes", - "settings.network.serverRoutes.help": "Advertise this host's local routes to other peers.", - "settings.network.ipv6.label": "Enable IPv6", - "settings.network.ipv6.help": "Use IPv6 addressing for the NetBird overlay network.", - - "settings.security.section.firewall": "Firewall", - "settings.security.section.encryption": "Encryption", - "settings.security.blockInbound.label": "Block Inbound Traffic", - "settings.security.blockInbound.help": "Reject unsolicited connections from peers to this device and any networks it routes. Outbound traffic is unaffected.", - "settings.security.blockLan.label": "Block LAN Access", - "settings.security.blockLan.help": "Prevent peers from reaching your local network or its devices when this device routes their traffic.", - "settings.security.rosenpass.label": "Enable Quantum-Resistance", - "settings.security.rosenpass.help": "Add a post-quantum key exchange via Rosenpass on top of WireGuard®.", - "settings.security.rosenpassPermissive.label": "Enable Permissive Mode", - "settings.security.rosenpassPermissive.help": "Allow connections to peers without quantum-resistance support.", - - "settings.ssh.section.server": "Server", - "settings.ssh.section.capabilities": "Capabilities", - "settings.ssh.section.authentication": "Authentication", - "settings.ssh.server.label": "Enable SSH Server", - "settings.ssh.server.help": "Run the NetBird SSH server on this host so other peers can connect to it.", - "settings.ssh.root.label": "Allow Root Login", - "settings.ssh.root.help": "Let peers sign in as the root user. Disable to require a non-privileged account.", - "settings.ssh.sftp.label": "Allow SFTP", - "settings.ssh.sftp.help": "Transfer files securely using native SFTP or SCP clients.", - "settings.ssh.localForward.label": "Local Port Forwarding", - "settings.ssh.localForward.help": "Let connecting peers tunnel local ports to services reachable from this host.", - "settings.ssh.remoteForward.label": "Remote Port Forwarding", - "settings.ssh.remoteForward.help": "Let connecting peers expose ports on this host back to their own machine.", - "settings.ssh.jwt.label": "Enable JWT Authentication", - "settings.ssh.jwt.help": "Verify each SSH session against your IdP for user identity and audit. Disable to rely on network ACL policies only, useful when no IdP is available.", - "settings.ssh.jwtTtl.label": "JWT Cache TTL", - "settings.ssh.jwtTtl.help": "How long this client caches a JWT before prompting again on outgoing SSH connections. Set to 0 to disable caching and authenticate on every connection.", - "settings.ssh.jwtTtl.suffix": "Second(s)", - - "settings.advanced.section.interface": "Interface", - "settings.advanced.section.security": "Security", - "settings.advanced.interfaceName.label": "Name", - "settings.advanced.interfaceName.error": "Use 1-15 letters, digits, dots, hyphens, or underscores.", - "settings.advanced.interfaceName.errorMac": "Must start with \"utun\" followed by a number (e.g. utun100).", - "settings.advanced.port.label": "Port", - "settings.advanced.port.error": "Enter a port between {min} and {max}.", - "settings.advanced.port.help": "If set to 0, a random free port will be used.", - "settings.advanced.mtu.label": "MTU", - "settings.advanced.mtu.error": "Enter an MTU value between {min} and {max}.", - "settings.advanced.psk.label": "Pre-shared Key", - "settings.advanced.psk.help": "Optional WireGuard PSK for extra symmetric encryption. Not the same as a NetBird Setup Key. You will only communicate with peers that use the same pre-shared key.", - - "settings.troubleshooting.section.title": "Debug bundle", - "settings.troubleshooting.intro": "A debug bundle helps NetBird support investigate connection problems.
It's a .zip file with logs, system details and debug information from your device.", - "settings.troubleshooting.anonymize.label": "Anonymize Sensitive Information", - "settings.troubleshooting.anonymize.help": "Hides public IP addresses and non-NetBird domains from logs.", - "settings.troubleshooting.systemInfo.label": "Include System Information", - "settings.troubleshooting.systemInfo.help": "Include OS, kernel, network interfaces, and routing tables.", - "settings.troubleshooting.upload.label": "Upload Bundle to NetBird Servers", - "settings.troubleshooting.upload.help": "Securely uploads the bundle and returns an upload key. Share the key with NetBird support over GitHub or Slack instead of attaching the file directly.", - "settings.troubleshooting.trace.label": "Capture Trace Logs", - "settings.troubleshooting.trace.help": "Raises logging to TRACE and cycles NetBird up and down to capture connection logs. The previous level is restored after the bundle is built.", - "settings.troubleshooting.duration.label": "Capture Duration", - "settings.troubleshooting.duration.help": "How long to capture trace logs before generating the bundle.", - "settings.troubleshooting.duration.suffix": "Minute(s)", - "settings.troubleshooting.create": "Create Bundle", - "settings.troubleshooting.progress.description": "Collecting logs, system details, and connection state. This usually takes a moment — keep this window open until it completes.", - "settings.troubleshooting.cancelling": "Canceling…", - "settings.troubleshooting.done.uploadedTitle": "Debug bundle successfully uploaded!", - "settings.troubleshooting.done.savedTitle": "Bundle saved", - "settings.troubleshooting.done.uploadedDescription": "Share the upload key below with NetBird support. A local copy was also saved on your device.", - "settings.troubleshooting.done.savedDescription": "Your debug bundle has been saved locally.", - "settings.troubleshooting.done.copyKey": "Copy Key", - "settings.troubleshooting.done.openFolder": "Open Folder", - "settings.troubleshooting.done.openFileLocation": "Open file location", - "settings.troubleshooting.uploadFailedWithReason": "Upload failed: {reason} The bundle is still saved locally.", - "settings.troubleshooting.uploadFailed": "Upload failed. The bundle is still saved locally.", - "settings.troubleshooting.stage.preparingTrace": "Switching to trace logging…", - "settings.troubleshooting.stage.reconnecting": "Reconnecting NetBird…", - "settings.troubleshooting.stage.capturing": "Capturing logs — {elapsed} / {total}", - "settings.troubleshooting.stage.restoring": "Restoring previous log level…", - "settings.troubleshooting.stage.bundling": "Generating debug bundle…", - "settings.troubleshooting.stage.uploading": "Uploading to NetBird…", - "settings.troubleshooting.stage.cancelling": "Canceling…", - - "settings.about.client": "NetBird Client v{version}", - "settings.about.clientName": "NetBird Client", - "settings.about.development": "[Development]", - "settings.about.gui": "GUI v{version}", - "settings.about.guiName": "GUI", - "settings.about.copyright": "© {year} NetBird. All Rights Reserved.", - "settings.about.links.imprint": "Imprint", - "settings.about.links.privacy": "Privacy", - "settings.about.links.cla": "CLA", - "settings.about.links.terms": "Terms of Service", - "settings.about.community.github": "GitHub", - "settings.about.community.slack": "Slack", - "settings.about.community.forum": "Forum", - "settings.about.community.documentation": "Documentation", - "settings.about.community.feedback": "Feedback", - - "update.banner.message": "NetBird {version} is ready to install.", - "update.banner.later": "Later", - "update.banner.installNow": "Install now", - "update.card.versionAvailableDownload": "Version {version} is available for download.", - "update.card.versionAvailableInstall": "Version {version} is available for install.", - "update.card.whatsNew": "What's new?", - "update.card.installNow": "Install Now", - "update.card.getInstaller": "Download", - "update.card.autoCheckInterval": "NetBird checks for updates in the background.", - "update.card.changelog": "Changelog", - "update.card.onLatestVersion": "You're on the latest version", - "update.header.tooltip": "Update Available", - "update.overlay.updatingVersion": "Updating NetBird to v{version}", - "update.overlay.updating": "Updating NetBird", - "update.overlay.description": "A newer version is available and is being installed. NetBird will restart automatically once the update is finished.", - "update.overlay.error.timeoutTitle": "Update Is Taking Too Long", - "update.overlay.error.timeoutDescription": "Installing {target} took too long and didn't finish.", - "update.overlay.error.canceledTitle": "Update Was Stopped", - "update.overlay.error.canceledDescription": "The update to {target} was canceled before it finished.", - "update.overlay.error.failTitle": "Couldn't Install the Update", - "update.overlay.error.failDescription": "{target} couldn't be installed.", - "update.overlay.error.unknownMessage": "unknown error", - "update.overlay.error.targetVersion": "v{version}", - "update.overlay.error.targetFallback": "the new version", - "update.error.loadStateTitle": "Load Update State Failed", - "update.error.triggerTitle": "Start Update Failed", - - "update.page.versionLine": "Updating client to: {version}.", - "update.page.versionLineGeneric": "Updating client.", - "update.page.outdated": "Your client version is older than the auto-update version set in Management.", - "update.page.status.running": "Updating", - "update.page.status.timeout": "Update timed out. Please try again.", - "update.page.status.canceled": "Update canceled.", - "update.page.status.failed": "Update failed: {message}", - "update.page.status.unknownError": "unknown update error", - "update.page.failedTitle": "Update Failed", - "update.page.timeoutMessage": "Update timed out.", - "update.page.dontClose": "Please don't close this window.", - "update.page.updating": "Updating…", - "update.page.complete": "Update complete", - "update.page.failed": "Update failed", - - "window.title.settings": "Settings", - "window.title.signIn": "Sign-in", - "window.title.sessionExpiration": "Session Expiring", - "window.title.updating": "Updating", - "window.title.welcome": "Welcome to NetBird", - "window.title.error": "Error", - - "welcome.title": "Look for NetBird in your tray", - "welcome.description": "NetBird lives in your tray. Click the icon to connect, switch profiles, or open settings.", - "welcome.continue": "Continue", - "welcome.back": "Back", - "welcome.management.title": "Set up NetBird", - "welcome.management.description": "Click Continue to get started, or pick Self-hosted if you have your own NetBird server.", - "welcome.management.cloud.title": "NetBird Cloud", - "welcome.management.cloud.description": "Use our hosted service. No setup required.", - "welcome.management.selfHosted.title": "Self-hosted", - "welcome.management.selfHosted.description": "Connect to your own management server.", - "welcome.management.urlLabel": "Management server URL", - "welcome.management.urlPlaceholder": "https://netbird.selfhosted.com:443", - "welcome.management.urlInvalid": "Please enter a valid URL, e.g., https://netbird.selfhosted.com:443", - "welcome.management.urlUnreachable": "Couldn't reach this server. Check the URL or your network, then continue if you're sure it's correct.", - "welcome.management.checking": "Checking…", - - "browserLogin.title": "Continue in your browser to complete the login", - "browserLogin.notSeeing": "Not seeing the browser tab?", - "browserLogin.tryAgain": "Try again", - "browserLogin.openFailedTitle": "Open Browser Failed", - - "sessionExpiration.title": "Session expiring soon", - "sessionExpiration.titleLater": "Your session will expire", - "sessionExpiration.description": "This device will disconnect soon. Renew with a browser sign-in.", - "sessionExpiration.descriptionLater": "A browser sign-in keeps this device connected to your network.", - "sessionExpiration.stay": "Renew session", - "sessionExpiration.authenticate": "Authenticate", - "sessionExpiration.logout": "Logout", - "sessionExpiration.expired": "Session expired", - "sessionExpiration.expiredDescription": "Device disconnected. Authenticate with a browser sign-in to reconnect.", - "sessionExpiration.close": "Close", - "sessionExpiration.extendFailedTitle": "Extend Session Failed", - "sessionExpiration.logoutFailedTitle": "Logout Failed", - - "peers.search.placeholder": "Search by name or IP", - "peers.filter.all": "All", - "peers.filter.online": "Online", - "peers.filter.offline": "Offline", - "peers.empty.title": "No peers available", - "peers.empty.description": "You either don't have any peers available or have no access to any of them.", - "peers.details.domain": "Domain", - "peers.details.netbirdIp": "NetBird IP", - "peers.details.netbirdIpv6": "NetBird IPv6", - "peers.details.publicKey": "Public key", - "peers.details.connection": "Connection", - "peers.details.latency": "Latency", - "peers.details.lastHandshake": "Last handshake", - "peers.details.statusSince": "Last connection update", - "peers.details.bytes": "Bytes", - "peers.details.bytesSent": "Sent", - "peers.details.bytesReceived": "Received", - "peers.details.localIce": "Local ICE", - "peers.details.remoteIce": "Remote ICE", - "peers.details.never": "Never", - "peers.details.justNow": "Just now", - "peers.details.refresh": "Refresh", - "peers.status.connected": "Connected", - "peers.status.connecting": "Connecting", - "peers.status.disconnected": "Disconnected", - "peers.details.relayAddress": "Relay", - "peers.details.networks": "Resources", - "peers.details.relayed": "Relayed", - "peers.details.p2p": "P2P", - "peers.details.rosenpass": "Rosenpass enabled", - - "networks.search.placeholder": "Search by network or domain", - "networks.filter.all": "All", - "networks.filter.active": "Active", - "networks.filter.overlapping": "Overlapping", - "networks.empty.title": "No resources available", - "networks.empty.description": "You either don't have any network resources available or have no access to any of them.", - "networks.selected": "Selected", - "networks.unselected": "Not selected", - "networks.ips.heading": "Resolved IPs", - "networks.bulk.selectionCount": "{selected} of {total} Active", - "networks.bulk.enableAll": "Enable all", - "networks.bulk.disableAll": "Disable all", - - "exitNodes.search.placeholder": "Search exit nodes", - "exitNodes.none": "None", - "exitNodes.empty.title": "No exit nodes available", - "exitNodes.empty.description": "No exit nodes have been shared with this peer.", - "exitNodes.card.title": "Exit Node", - "exitNodes.card.statusActive": "Active", - "exitNodes.card.statusInactive": "Inactive", - "exitNodes.dropdown.noneTitle": "None", - "exitNodes.dropdown.noneDescription": "Direct connection without an exit node", - - "quickActions.connect": "Connect", - "quickActions.disconnect": "Disconnect", - - "daemon.unavailable.title": "NetBird Service Is Not Running", - "daemon.unavailable.description": "The app will reconnect automatically once the service is running.", - "daemon.unavailable.docsLink": "Documentation", - - "error.jwt_clock_skew": "Sign-in failed: this device's clock is out of sync with the server. Please sync your system clock and try again.", - "error.jwt_expired": "Your sign-in token has expired. Please sign in again.", - "error.jwt_signature_invalid": "Sign-in failed: the token signature is invalid. Please contact your administrator.", - "error.session_expired": "Your session has expired. Please sign in again.", - "error.invalid_setup_key": "The setup key is missing or invalid.", - "error.permission_denied": "Sign-in was rejected by the server.", - "error.daemon_unreachable": "The NetBird daemon is not responding. Please check that the service is running.", - "error.unknown": "Operation failed." + "tray.tooltip": { + "message": "NetBird", + "description": "Hover tooltip on the system-tray / menu-bar icon. Brand name — do not translate." + }, + "tray.status.disconnected": { + "message": "Disconnected", + "description": "Connection status surfaced through the tray icon: the client is not connected to the network." + }, + "tray.status.daemonUnavailable": { + "message": "Not running", + "description": "Tray status: the background NetBird service (daemon) is not running." + }, + "tray.status.error": { + "message": "Error", + "description": "Tray status: the client is in an error state." + }, + "tray.status.connected": { + "message": "Connected", + "description": "Tray status: connected to the NetBird network." + }, + "tray.status.connecting": { + "message": "Connecting", + "description": "Tray status: a connection is being established." + }, + "tray.status.needsLogin": { + "message": "Login required", + "description": "Tray status: the user must sign in before connecting." + }, + "tray.status.loginFailed": { + "message": "Login failed", + "description": "Tray status: the last sign-in attempt failed." + }, + "tray.status.sessionExpired": { + "message": "Session expired", + "description": "Tray status: the authenticated session expired; the user must sign in again." + }, + "tray.session.expiresIn": { + "message": "Session expires in {remaining}", + "description": "Tray row showing time left before the session expires. {remaining} is a human-readable duration such as '5 minutes', built from the tray.session.unit.* strings. Keep {remaining} unchanged." + }, + "tray.session.unit.lessThanMinute": { + "message": "less than a minute", + "description": "Duration fragment substituted into {remaining} (see tray.session.expiresIn). Used when under one minute remains." + }, + "tray.session.unit.minute": { + "message": "1 minute", + "description": "Duration fragment for exactly one minute, substituted into {remaining}." + }, + "tray.session.unit.minutes": { + "message": "{count} minutes", + "description": "Duration fragment for several minutes, substituted into {remaining}. {count} is the number of minutes; keep {count}." + }, + "tray.session.unit.hour": { + "message": "1 hour", + "description": "Duration fragment for exactly one hour, substituted into {remaining}." + }, + "tray.session.unit.hours": { + "message": "{count} hours", + "description": "Duration fragment for several hours. {count} is the number of hours; keep {count}." + }, + "tray.session.unit.day": { + "message": "1 day", + "description": "Duration fragment for exactly one day, substituted into {remaining}." + }, + "tray.session.unit.days": { + "message": "{count} days", + "description": "Duration fragment for several days. {count} is the number of days; keep {count}." + }, + "tray.menu.open": { + "message": "Open NetBird", + "description": "Tray menu item that opens the main NetBird window. Keep short." + }, + "tray.menu.connect": { + "message": "Connect", + "description": "Tray menu item that connects to the network. Keep short." + }, + "tray.menu.disconnect": { + "message": "Disconnect", + "description": "Tray menu item that disconnects from the network. Keep short." + }, + "tray.menu.exitNode": { + "message": "Exit Node", + "description": "Tray submenu title for choosing an exit node (route all traffic through another peer)." + }, + "tray.menu.networks": { + "message": "Resources", + "description": "Tray submenu title listing network resources the user can reach. Labelled 'Resources' in the UI even though the key says networks." + }, + "tray.menu.profiles": { + "message": "Profiles", + "description": "Tray submenu title listing connection profiles." + }, + "tray.menu.manageProfiles": { + "message": "Manage Profiles", + "description": "Tray menu item that opens Settings → Profiles." + }, + "tray.menu.settings": { + "message": "Settings...", + "description": "Tray menu item that opens the Settings window. The trailing '...' signals that a window opens; keep it." + }, + "tray.menu.debugBundle": { + "message": "Create Debug Bundle", + "description": "Tray menu item that generates a diagnostic log bundle for support." + }, + "tray.menu.about": { + "message": "Help & Support", + "description": "Tray submenu title for help and support links." + }, + "tray.menu.github": { + "message": "GitHub", + "description": "Tray menu link to the GitHub repository. Brand name — do not translate." + }, + "tray.menu.documentation": { + "message": "Documentation", + "description": "Tray menu link to the online documentation." + }, + "tray.menu.troubleshoot": { + "message": "Troubleshoot", + "description": "Tray menu link to troubleshooting help." + }, + "tray.menu.downloadLatest": { + "message": "Download latest version", + "description": "Tray menu item to download the latest available version." + }, + "tray.menu.installVersion": { + "message": "Install version {version}", + "description": "Tray menu item to install a specific update. {version} is a version number like 0.30.1; keep {version}." + }, + "tray.menu.guiVersion": { + "message": "GUI: {version}", + "description": "Tray menu row showing the installed UI version. 'GUI' = the graphical app. {version} is a version number; keep it." + }, + "tray.menu.daemonVersion": { + "message": "Daemon: {version}", + "description": "Tray menu row showing the background-service version. 'Daemon' = the background NetBird service. {version} is a version number; keep it." + }, + "tray.menu.versionUnknown": { + "message": "—", + "description": "Placeholder shown in version rows when the version can't be determined. It is an em dash — leave as-is." + }, + "tray.menu.quit": { + "message": "Quit NetBird", + "description": "Tray menu item that fully exits the app and removes the tray icon. Keep short." + }, + "notify.update.title": { + "message": "NetBird update available", + "description": "Title of the OS desktop notification shown when an app update is available." + }, + "notify.update.body": { + "message": "NetBird {version} is available.", + "description": "Body of the update-available desktop notification. {version} is the new version number; keep it." + }, + "notify.update.enforcedSuffix": { + "message": " Your administrator requires this update.", + "description": "Sentence appended to the update notification body when the admin has made the update mandatory. Note the leading space — keep it." + }, + "notify.error.title": { + "message": "Error", + "description": "Title of a generic error desktop notification." + }, + "notify.error.connect": { + "message": "Failed to connect", + "description": "Error notification body shown when connecting failed." + }, + "notify.error.disconnect": { + "message": "Failed to disconnect", + "description": "Error notification body shown when disconnecting failed." + }, + "notify.error.switchProfile": { + "message": "Failed to switch to {profile}", + "description": "Error notification shown when switching profiles failed. {profile} is the target profile name; keep it." + }, + "notify.error.exitNode": { + "message": "Failed to update exit node {name}", + "description": "Error notification shown when updating the exit node failed. {name} is the exit node name; keep it." + }, + "notify.sessionExpired.title": { + "message": "NetBird session expired", + "description": "Title of the desktop notification shown when the session has expired." + }, + "notify.sessionExpired.body": { + "message": "Your NetBird session has expired. Please log in again.", + "description": "Body of the session-expired desktop notification." + }, + "notify.sessionWarning.title": { + "message": "Session expires soon", + "description": "Title of the desktop notification warning that the session will expire soon." + }, + "notify.sessionWarning.body": { + "message": "Your NetBird session expires in {remaining}. Click Extend now to renew.", + "description": "Body of the session-expiry warning notification. {remaining} is a human-readable duration (see tray.session.unit.*); keep it. 'Extend now' refers to the action button notify.sessionWarning.extend." + }, + "notify.sessionWarning.bodyGeneric": { + "message": "Your NetBird session is about to expire. Click Extend now to renew.", + "description": "Generic session-expiry warning body used when the exact remaining time isn't known." + }, + "notify.sessionWarning.extend": { + "message": "Extend now", + "description": "Action button on the session-expiry notification that renews the session. Keep short." + }, + "notify.sessionWarning.dismiss": { + "message": "Dismiss", + "description": "Action button on the session-expiry notification that dismisses it. Keep short." + }, + "notify.sessionWarning.failed": { + "message": "Failed to extend NetBird session", + "description": "Notification shown when renewing the session failed." + }, + "notify.sessionWarning.successTitle": { + "message": "NetBird session extended", + "description": "Title of the notification confirming the session was renewed." + }, + "notify.sessionWarning.successBody": { + "message": "Your session has been refreshed.", + "description": "Body of the notification confirming the session was renewed." + }, + "notify.sessionDeadlineRejected.title": { + "message": "Session deadline rejected", + "description": "Title of the notification shown when the server sent an invalid session deadline." + }, + "notify.sessionDeadlineRejected.body": { + "message": "The server sent an invalid session deadline. Please sign in again.", + "description": "Body explaining the server sent an invalid session deadline and the user must sign in again." + }, + "common.cancel": { + "message": "Cancel", + "description": "Generic Cancel button label, reused across dialogs. Keep short." + }, + "common.save": { + "message": "Save", + "description": "Generic Save button label. Keep short." + }, + "common.saveChanges": { + "message": "Save Changes", + "description": "Button label to save edited settings. Keep short." + }, + "common.saving": { + "message": "Saving…", + "description": "Button label / status shown while a save is in progress. Ends with an ellipsis." + }, + "common.close": { + "message": "Close", + "description": "Generic Close button label. Keep short." + }, + "common.copy": { + "message": "Copy", + "description": "Generic Copy button label (copy to clipboard). Keep short." + }, + "common.togglePasswordVisibility": { + "message": "Toggle password visibility", + "description": "Accessibility label for the show/hide button inside a password field." + }, + "common.increase": { + "message": "Increase", + "description": "Accessibility label for the increment (+) button on a numeric stepper input." + }, + "common.decrease": { + "message": "Decrease", + "description": "Accessibility label for the decrement (−) button on a numeric stepper input." + }, + "common.delete": { + "message": "Delete", + "description": "Generic Delete button label. Keep short." + }, + "common.create": { + "message": "Create", + "description": "Generic Create button label. Keep short." + }, + "common.add": { + "message": "Add", + "description": "Generic Add button label. Keep short." + }, + "common.remove": { + "message": "Remove", + "description": "Generic Remove button label. Keep short." + }, + "common.refresh": { + "message": "Refresh", + "description": "Generic Refresh button label. Keep short." + }, + "common.loading": { + "message": "Loading…", + "description": "Generic loading indicator text. Ends with an ellipsis." + }, + "common.netbird": { + "message": "NetBird", + "description": "The product name. Brand — do not translate." + }, + "common.noResults.title": { + "message": "Could not find any results", + "description": "Title of the empty state shown when a search or filter returns nothing." + }, + "common.noResults.description": { + "message": "We couldn't find any results. Please try a different search term or change your filters.", + "description": "Body of the no-results empty state, suggesting a different search term or filters." + }, + "notConnected.title": { + "message": "Disconnected", + "description": "Title of the placeholder shown on data screens while disconnected." + }, + "notConnected.description": { + "message": "Connect to NetBird first to view detailed information about your peers, network resources, and exit nodes.", + "description": "Body explaining the user must connect to NetBird first to see peer, resource, and exit-node details." + }, + "connect.status.disconnected": { + "message": "Disconnected", + "description": "Label on the main-window connection toggle: not connected." + }, + "connect.status.connecting": { + "message": "Connecting...", + "description": "Connection toggle label while connecting. Ends with an ellipsis." + }, + "connect.status.connected": { + "message": "Connected", + "description": "Connection toggle label when connected." + }, + "connect.status.disconnecting": { + "message": "Disconnecting...", + "description": "Connection toggle label while disconnecting. Ends with an ellipsis." + }, + "connect.status.daemonUnavailable": { + "message": "Daemon unavailable", + "description": "Connection toggle label when the background service is unavailable. 'Daemon' = background service." + }, + "connect.status.loginRequired": { + "message": "Login required", + "description": "Connection toggle label when sign-in is required before connecting." + }, + "connect.error.loginTitle": { + "message": "Login Failed", + "description": "Error-dialog title shown when sign-in fails. The action-named '… Failed' style is intentional — keep it." + }, + "connect.error.connectTitle": { + "message": "Connect Failed", + "description": "Error-dialog title shown when connecting fails." + }, + "connect.error.disconnectTitle": { + "message": "Disconnect Failed", + "description": "Error-dialog title shown when disconnecting fails." + }, + "nav.peers.title": { + "message": "Peers", + "description": "Navigation label for the Peers section (other devices in the network)." + }, + "nav.peers.description": { + "message": "{connected} of {total} connected", + "description": "Sub-label under Peers showing how many are connected. {connected} and {total} are numbers; keep both." + }, + "nav.resources.title": { + "message": "Resources", + "description": "Navigation label for the Resources section (routed networks)." + }, + "nav.resources.description": { + "message": "{active} of {total} active", + "description": "Sub-label under Resources showing how many are active. {active} and {total} are numbers; keep both." + }, + "nav.exitNode.title": { + "message": "Exit Nodes", + "description": "Navigation label for the Exit Nodes section." + }, + "nav.exitNode.none": { + "message": "Not active", + "description": "Sub-label under Exit Nodes when no exit node is in use." + }, + "nav.exitNode.using": { + "message": "Via {name}", + "description": "Sub-label under Exit Nodes when one is active. {name} is the exit node's name; keep it." + }, + "header.openSettings": { + "message": "Open settings", + "description": "Accessibility label / tooltip for the gear icon that opens Settings." + }, + "header.togglePanel": { + "message": "Toggle side panel", + "description": "Accessibility label / tooltip for the button that shows or hides the side panel." + }, + "profile.selector.loading": { + "message": "Loading...", + "description": "Shown in the profile picker while profiles load. Ends with an ellipsis." + }, + "profile.selector.noProfile": { + "message": "No profile", + "description": "Shown in the profile picker when no profile is selected." + }, + "profile.selector.searchPlaceholder": { + "message": "Search profile by name...", + "description": "Placeholder text in the profile picker's search field." + }, + "profile.selector.emptyTitle": { + "message": "No Profiles Found", + "description": "Title shown in the profile picker when a search matches no profiles." + }, + "profile.selector.emptyDescription": { + "message": "Try a different search term or create a new profile.", + "description": "Body shown when no profiles match the search, suggesting a different term or creating one." + }, + "profile.selector.newProfile": { + "message": "New Profile", + "description": "Button in the profile picker to create a new profile. Keep short." + }, + "profile.selector.moreOptions": { + "message": "More options", + "description": "Accessibility label for the per-profile kebab (⋯) menu." + }, + "profile.selector.deregister": { + "message": "Deregister", + "description": "Per-profile menu action: deregister (sign out of the profile but keep it)." + }, + "profile.selector.delete": { + "message": "Delete", + "description": "Per-profile menu action: delete the profile." + }, + "profile.selector.switchTo": { + "message": "Switch to this profile", + "description": "Tooltip / label for the action that switches to a profile." + }, + "profile.dialog.title": { + "message": "Enter Profile Name", + "description": "Title of the dialog for naming a new profile." + }, + "profile.dialog.nameLabel": { + "message": "Profile Name", + "description": "Field label for the profile name." + }, + "profile.dialog.description": { + "message": "Set an easily identifiable name for your profile.", + "description": "Helper text under the profile-name field." + }, + "profile.dialog.placeholder": { + "message": "e.g. work", + "description": "Example placeholder shown in the profile-name field. 'work' is a sample value; translate it to a natural example." + }, + "profile.dialog.submit": { + "message": "Add Profile", + "description": "Submit button on the add-profile dialog. Keep short." + }, + "profile.dialog.required": { + "message": "Please enter a profile name, e.g. work, home", + "description": "Validation message shown when the profile name is empty. The examples (work, home) may be localized." + }, + "profile.dialog.managementHelp": { + "message": "Use NetBird Cloud or your own server.", + "description": "Helper text noting the profile can use NetBird Cloud or a self-hosted server." + }, + "profile.dialog.urlUnreachable": { + "message": "Couldn't reach this server. Check the URL, or add the profile anyway if you're sure it's correct.", + "description": "Soft warning when the entered server URL couldn't be reached; the user may add the profile anyway." + }, + "header.menu.settings": { + "message": "Settings...", + "description": "'More' menu item in the header that opens Settings. The trailing '...' signals a window opens." + }, + "header.menu.defaultView": { + "message": "Default View", + "description": "'More' menu item that switches the main window to the compact default view." + }, + "header.menu.advancedView": { + "message": "Advanced View", + "description": "'More' menu item that switches the main window to the wider advanced view." + }, + "header.menu.updateAvailable": { + "message": "Update Available", + "description": "'More' menu item / badge shown when an update is available." + }, + "profile.switch.title": { + "message": "Switch Profile to \"{name}\"?", + "description": "Confirmation-dialog title for switching profiles. {name} is the target profile name, shown in quotes; keep {name} and the surrounding quotes." + }, + "profile.switch.message": { + "message": "Are you sure you want to switch profiles?\nYour current profile will be disconnected.", + "description": "Confirmation body for switching profiles. Contains a line break (\\n) — keep it." + }, + "profile.switch.confirm": { + "message": "Confirm", + "description": "Confirm button on the switch-profile dialog. Keep short." + }, + "profile.deregister.title": { + "message": "Deregister Profile \"{name}\"?", + "description": "Confirmation-dialog title for deregistering a profile. {name} is the profile name; keep it and the quotes." + }, + "profile.deregister.message": { + "message": "Are you sure you want to deregister this profile?\nYou will need to log in again to use it.", + "description": "Confirmation body for deregistering; warns the user must sign in again. Contains a line break (\\n) — keep it." + }, + "profile.deregister.confirm": { + "message": "Deregister", + "description": "Confirm button on the deregister dialog. Keep short." + }, + "profile.delete.title": { + "message": "Delete Profile \"{name}\"?", + "description": "Confirmation-dialog title for deleting a profile. {name} is the profile name; keep it and the quotes." + }, + "profile.delete.message": { + "message": "Are you sure you want to delete this profile?\nThis action cannot be undone.", + "description": "Confirmation body for deleting; warns the action can't be undone. Contains a line break (\\n) — keep it." + }, + "profile.delete.disabledActive": { + "message": "Active profiles cannot be deleted. Switch to a different one before deleting this profile.", + "description": "Tooltip explaining the active profile can't be deleted until the user switches away." + }, + "profile.delete.disabledDefault": { + "message": "The default profile cannot be deleted.", + "description": "Tooltip explaining the default profile can't be deleted." + }, + "profile.error.switchTitle": { + "message": "Switch Profile Failed", + "description": "Error-dialog title when switching profiles fails." + }, + "profile.error.deregisterTitle": { + "message": "Deregister Profile Failed", + "description": "Error-dialog title when deregistering a profile fails." + }, + "profile.error.deleteTitle": { + "message": "Delete Profile Failed", + "description": "Error-dialog title when deleting a profile fails." + }, + "profile.error.createTitle": { + "message": "Create Profile Failed", + "description": "Error-dialog title when creating a profile fails." + }, + "profile.error.loadTitle": { + "message": "Load Profiles Failed", + "description": "Error-dialog title when loading profiles fails." + }, + "profile.dropdown.activeProfile": { + "message": "Active profile", + "description": "Section heading in the header profile dropdown for the current profile." + }, + "profile.dropdown.switchProfile": { + "message": "Switch Profile", + "description": "Section heading / action in the profile dropdown to switch profiles." + }, + "profile.dropdown.noEmail": { + "message": "Other", + "description": "Label shown for a profile that has no associated email address." + }, + "profile.dropdown.addProfile": { + "message": "Add Profile", + "description": "Profile dropdown action to add a profile." + }, + "profile.dropdown.manageProfiles": { + "message": "Manage Profiles", + "description": "Profile dropdown action that opens Settings → Profiles." + }, + "profile.dropdown.settings": { + "message": "Settings", + "description": "Profile dropdown action that opens Settings." + }, + "settings.profiles.section.profiles": { + "message": "Profiles", + "description": "Section heading on the Profiles settings tab." + }, + "settings.profiles.intro": { + "message": "Keep separate NetBird identities side by side, for example work and personal accounts, or different management servers. Add, deregister, or delete profiles below.", + "description": "Intro paragraph on the Profiles settings tab explaining what profiles are for." + }, + "settings.profiles.addProfile": { + "message": "Add Profile", + "description": "Button on the Profiles settings tab to add a profile." + }, + "settings.profiles.active": { + "message": "Active", + "description": "Badge marking the currently active profile in the profiles table." + }, + "settings.profiles.emptyTitle": { + "message": "No Profiles", + "description": "Title of the empty state when there are no profiles." + }, + "settings.profiles.emptyDescription": { + "message": "Create a profile to connect to a NetBird management server.", + "description": "Body of the no-profiles empty state." + }, + "settings.error.loadTitle": { + "message": "Load Settings Failed", + "description": "Error-dialog title when loading settings fails." + }, + "settings.error.saveTitle": { + "message": "Save Settings Failed", + "description": "Error-dialog title when saving settings fails." + }, + "settings.error.debugBundleTitle": { + "message": "Debug Bundle Failed", + "description": "Error-dialog title when creating the debug bundle fails." + }, + "settings.tabs.general": { + "message": "General", + "description": "Settings tab label: General. Keep short." + }, + "settings.tabs.network": { + "message": "Network", + "description": "Settings tab label: Network. Keep short." + }, + "settings.tabs.security": { + "message": "Security", + "description": "Settings tab label: Security. Keep short." + }, + "settings.tabs.profiles": { + "message": "Profiles", + "description": "Settings tab label: Profiles. Keep short." + }, + "settings.tabs.ssh": { + "message": "SSH", + "description": "Settings tab label: SSH. Acronym — keep as-is." + }, + "settings.tabs.advanced": { + "message": "Advanced", + "description": "Settings tab label: Advanced. Keep short." + }, + "settings.tabs.troubleshooting": { + "message": "Troubleshoot", + "description": "Settings tab label: Troubleshoot. Keep short." + }, + "settings.tabs.about": { + "message": "About", + "description": "Settings tab label: About. Keep short." + }, + "settings.tabs.updateAvailable": { + "message": "Update Available", + "description": "Settings tab label / badge shown when an update is available." + }, + "settings.general.section.general": { + "message": "General", + "description": "Section heading on the General settings tab." + }, + "settings.general.section.connection": { + "message": "Connection", + "description": "Section heading for connection-related options on the General tab." + }, + "settings.general.connectOnStartup.label": { + "message": "Connect on Startup", + "description": "Toggle label: connect automatically when the service starts." + }, + "settings.general.connectOnStartup.help": { + "message": "Automatically establish a connection when the service starts.", + "description": "Helper text for the connect-on-startup toggle." + }, + "settings.general.notifications.label": { + "message": "Desktop Notifications", + "description": "Toggle label: enable desktop notifications." + }, + "settings.general.notifications.help": { + "message": "Show desktop notifications for new updates and connection events.", + "description": "Helper text for the desktop-notifications toggle." + }, + "settings.general.autostart.label": { + "message": "Launch NetBird UI at Login", + "description": "Toggle label: launch the NetBird UI at login." + }, + "settings.general.autostart.help": { + "message": "Start the NetBird interface automatically when you log in. This affects the graphical interface only, not the background service.", + "description": "Helper text clarifying autostart affects only the UI, not the background service." + }, + "settings.general.autostart.errorTitle": { + "message": "Autostart Change Failed", + "description": "Error-dialog title when changing the autostart setting fails." + }, + "settings.general.language.label": { + "message": "Display Language", + "description": "Label for the display-language picker." + }, + "settings.general.language.help": { + "message": "Choose the language for the NetBird interface.", + "description": "Helper text for the language picker." + }, + "settings.general.language.search": { + "message": "Search language…", + "description": "Placeholder in the language picker's search field." + }, + "settings.general.language.empty": { + "message": "No languages match.", + "description": "Shown when no languages match the search." + }, + "settings.general.management.label": { + "message": "Management Server", + "description": "Label for the management-server selector." + }, + "settings.general.management.help": { + "message": "Connect to NetBird Cloud or your own self-hosted management server. Changes will reconnect the client.", + "description": "Helper text explaining Cloud vs self-hosted management server; warns that changes reconnect the client." + }, + "settings.general.management.cloud": { + "message": "Cloud", + "description": "Option label for using NetBird Cloud as the management server." + }, + "settings.general.management.selfHosted": { + "message": "Self-hosted", + "description": "Option label for using a self-hosted management server. 'Self-hosted' is a common technical term." + }, + "settings.general.management.urlPlaceholder": { + "message": "https://netbird.selfhosted.com:443", + "description": "Example URL placeholder for the self-hosted server field. It is a sample URL — do not translate the URL itself." + }, + "settings.general.management.urlError": { + "message": "Please enter a valid URL, e.g., https://netbird.selfhosted.com:443", + "description": "Validation message for an invalid management-server URL. The example URL stays as-is." + }, + "settings.general.management.urlUnreachable": { + "message": "Couldn't reach this server. Check the URL, or save anyway if you're sure it's correct.", + "description": "Soft warning when the management URL couldn't be reached; the user may save anyway." + }, + "settings.general.management.switchCloudTitle": { + "message": "Switch to NetBird Cloud?", + "description": "Confirmation-dialog title for switching to NetBird Cloud." + }, + "settings.general.management.switchCloudMessage": { + "message": "This disconnects your self-hosted server.\nYou may need to log in again.", + "description": "Confirmation body warning the self-hosted server will be disconnected. Contains a line break (\\n) — keep it." + }, + "settings.general.management.switchCloudConfirm": { + "message": "Switch to Cloud", + "description": "Confirm button for switching to Cloud. Keep short." + }, + "settings.network.section.connectivity": { + "message": "Connectivity", + "description": "Section heading for connectivity options on the Network tab." + }, + "settings.network.section.routingDns": { + "message": "Routing & DNS", + "description": "Section heading for routing and DNS options. 'DNS' is an acronym — keep it." + }, + "settings.network.lazy.label": { + "message": "Lazy Connections", + "description": "Toggle label: Lazy Connections (on-demand connections)." + }, + "settings.network.lazy.help": { + "message": "Instead of maintaining always-on connections, NetBird activates them on-demand based on activity or signaling.", + "description": "Helper text for lazy connections." + }, + "settings.network.monitor.label": { + "message": "Reconnect on Network Change", + "description": "Toggle label: reconnect automatically on network change." + }, + "settings.network.monitor.help": { + "message": "Monitor the network and automatically reconnect on changes such as Wi-Fi switching, Ethernet changes, or resume from sleep.", + "description": "Helper text for the network-change reconnect toggle." + }, + "settings.network.dns.label": { + "message": "Enable DNS", + "description": "Toggle label: enable DNS. 'DNS' — keep acronym." + }, + "settings.network.dns.help": { + "message": "Apply NetBird-managed DNS settings to the host resolver.", + "description": "Helper text for the enable-DNS toggle." + }, + "settings.network.clientRoutes.label": { + "message": "Enable Client Routes", + "description": "Toggle label: enable client routes." + }, + "settings.network.clientRoutes.help": { + "message": "Accept routes from other peers to reach their networks.", + "description": "Helper text for client routes (accept routes from other peers)." + }, + "settings.network.serverRoutes.label": { + "message": "Enable Server Routes", + "description": "Toggle label: enable server routes." + }, + "settings.network.serverRoutes.help": { + "message": "Advertise this host's local routes to other peers.", + "description": "Helper text for server routes (advertise this host's local routes to other peers)." + }, + "settings.network.ipv6.label": { + "message": "Enable IPv6", + "description": "Toggle label: enable IPv6. 'IPv6' — keep as-is." + }, + "settings.network.ipv6.help": { + "message": "Use IPv6 addressing for the NetBird overlay network.", + "description": "Helper text for the IPv6 toggle." + }, + "settings.security.section.firewall": { + "message": "Firewall", + "description": "Section heading: Firewall." + }, + "settings.security.section.encryption": { + "message": "Encryption", + "description": "Section heading: Encryption." + }, + "settings.security.blockInbound.label": { + "message": "Block Inbound Traffic", + "description": "Toggle label: block inbound traffic." + }, + "settings.security.blockInbound.help": { + "message": "Reject unsolicited connections from peers to this device and any networks it routes. Outbound traffic is unaffected.", + "description": "Helper text for blocking inbound traffic." + }, + "settings.security.blockLan.label": { + "message": "Block LAN Access", + "description": "Toggle label: block LAN access. 'LAN' — keep acronym." + }, + "settings.security.blockLan.help": { + "message": "Prevent peers from reaching your local network or its devices when this device routes their traffic.", + "description": "Helper text for blocking LAN access." + }, + "settings.security.rosenpass.label": { + "message": "Enable Quantum-Resistance", + "description": "Toggle label: enable quantum-resistance." + }, + "settings.security.rosenpass.help": { + "message": "Add a post-quantum key exchange via Rosenpass on top of WireGuard®.", + "description": "Helper text: adds a post-quantum key exchange via Rosenpass on top of WireGuard®. 'Rosenpass' and 'WireGuard®' are product names — do not translate; keep the ® symbol." + }, + "settings.security.rosenpassPermissive.label": { + "message": "Enable Permissive Mode", + "description": "Toggle label: enable permissive mode (for quantum-resistance)." + }, + "settings.security.rosenpassPermissive.help": { + "message": "Allow connections to peers without quantum-resistance support.", + "description": "Helper text for permissive mode (allow peers without quantum-resistance support)." + }, + "settings.ssh.section.server": { + "message": "Server", + "description": "Section heading: Server (SSH settings)." + }, + "settings.ssh.section.capabilities": { + "message": "Capabilities", + "description": "Section heading: Capabilities (SSH features)." + }, + "settings.ssh.section.authentication": { + "message": "Authentication", + "description": "Section heading: Authentication (SSH)." + }, + "settings.ssh.server.label": { + "message": "Enable SSH Server", + "description": "Toggle label: enable the SSH server." + }, + "settings.ssh.server.help": { + "message": "Run the NetBird SSH server on this host so other peers can connect to it.", + "description": "Helper text for the SSH server toggle." + }, + "settings.ssh.root.label": { + "message": "Allow Root Login", + "description": "Toggle label: allow root login over SSH. 'root' is the Unix superuser account — keep as-is." + }, + "settings.ssh.root.help": { + "message": "Let peers sign in as the root user. Disable to require a non-privileged account.", + "description": "Helper text for allowing root login." + }, + "settings.ssh.sftp.label": { + "message": "Allow SFTP", + "description": "Toggle label: allow SFTP. 'SFTP' — keep acronym." + }, + "settings.ssh.sftp.help": { + "message": "Transfer files securely using native SFTP or SCP clients.", + "description": "Helper text about SFTP/SCP file transfer. Keep the acronyms." + }, + "settings.ssh.localForward.label": { + "message": "Local Port Forwarding", + "description": "Toggle label: local port forwarding." + }, + "settings.ssh.localForward.help": { + "message": "Let connecting peers tunnel local ports to services reachable from this host.", + "description": "Helper text for local port forwarding." + }, + "settings.ssh.remoteForward.label": { + "message": "Remote Port Forwarding", + "description": "Toggle label: remote port forwarding." + }, + "settings.ssh.remoteForward.help": { + "message": "Let connecting peers expose ports on this host back to their own machine.", + "description": "Helper text for remote port forwarding." + }, + "settings.ssh.jwt.label": { + "message": "Enable JWT Authentication", + "description": "Toggle label: enable JWT authentication. 'JWT' — keep acronym." + }, + "settings.ssh.jwt.help": { + "message": "Verify each SSH session against your IdP for user identity and audit. Disable to rely on network ACL policies only, useful when no IdP is available.", + "description": "Helper text for JWT auth. 'IdP' (identity provider) and 'ACL' are acronyms — keep them." + }, + "settings.ssh.jwtTtl.label": { + "message": "JWT Cache TTL", + "description": "Label for the JWT cache time-to-live field. 'JWT' and 'TTL' — keep acronyms." + }, + "settings.ssh.jwtTtl.help": { + "message": "How long this client caches a JWT before prompting again on outgoing SSH connections. Set to 0 to disable caching and authenticate on every connection.", + "description": "Helper text for the JWT cache TTL; mentions setting 0 to disable caching." + }, + "settings.ssh.jwtTtl.suffix": { + "message": "Second(s)", + "description": "Unit suffix shown after the JWT TTL number field. The '(s)' marks an optional plural." + }, + "settings.advanced.section.interface": { + "message": "Interface", + "description": "Section heading: Interface (network-interface settings)." + }, + "settings.advanced.section.security": { + "message": "Security", + "description": "Section heading: Security (advanced)." + }, + "settings.advanced.interfaceName.label": { + "message": "Name", + "description": "Field label for the WireGuard interface name." + }, + "settings.advanced.interfaceName.error": { + "message": "Use 1-15 letters, digits, dots, hyphens, or underscores.", + "description": "Validation message for the interface name (allowed characters)." + }, + "settings.advanced.interfaceName.errorMac": { + "message": "Must start with \"utun\" followed by a number (e.g. utun100).", + "description": "Validation message specific to macOS, where the name must start with 'utun' followed by a number. Keep 'utun' and the example." + }, + "settings.advanced.port.label": { + "message": "Port", + "description": "Field label: Port." + }, + "settings.advanced.port.error": { + "message": "Enter a port between {min} and {max}.", + "description": "Validation message for the port range. {min} and {max} are numbers; keep them." + }, + "settings.advanced.port.help": { + "message": "If set to 0, a random free port will be used.", + "description": "Helper text: 0 means a random free port is used." + }, + "settings.advanced.mtu.label": { + "message": "MTU", + "description": "Field label: MTU. 'MTU' — keep acronym." + }, + "settings.advanced.mtu.error": { + "message": "Enter an MTU value between {min} and {max}.", + "description": "Validation message for the MTU range. {min} and {max} are numbers; keep them." + }, + "settings.advanced.psk.label": { + "message": "Pre-shared Key", + "description": "Field label: Pre-shared Key." + }, + "settings.advanced.psk.help": { + "message": "Optional WireGuard PSK for extra symmetric encryption. Not the same as a NetBird Setup Key. You will only communicate with peers that use the same pre-shared key.", + "description": "Helper text for the WireGuard PSK. 'WireGuard', 'PSK', and 'NetBird Setup Key' are product/technical terms — keep them." + }, + "settings.troubleshooting.section.title": { + "message": "Debug bundle", + "description": "Section heading: Debug bundle." + }, + "settings.troubleshooting.intro": { + "message": "A debug bundle helps NetBird support investigate connection problems.
It's a .zip file with logs, system details and debug information from your device.", + "description": "Intro paragraph on the Troubleshoot tab. Contains an HTML '
' line break — keep it exactly. '.zip' is a file extension — keep it." + }, + "settings.troubleshooting.anonymize.label": { + "message": "Anonymize Sensitive Information", + "description": "Toggle label: anonymize sensitive information in the bundle." + }, + "settings.troubleshooting.anonymize.help": { + "message": "Hides public IP addresses and non-NetBird domains from logs.", + "description": "Helper text for anonymizing logs (hides public IPs and non-NetBird domains)." + }, + "settings.troubleshooting.systemInfo.label": { + "message": "Include System Information", + "description": "Toggle label: include system information in the bundle." + }, + "settings.troubleshooting.systemInfo.help": { + "message": "Include OS, kernel, network interfaces, and routing tables.", + "description": "Helper text listing the system info included (OS, kernel, interfaces, routing tables)." + }, + "settings.troubleshooting.upload.label": { + "message": "Upload Bundle to NetBird Servers", + "description": "Toggle label: upload the bundle to NetBird servers." + }, + "settings.troubleshooting.upload.help": { + "message": "Securely uploads the bundle and returns an upload key. Share the key with NetBird support over GitHub or Slack instead of attaching the file directly.", + "description": "Helper text for uploading the bundle. 'GitHub' and 'Slack' are brands — keep them." + }, + "settings.troubleshooting.trace.label": { + "message": "Capture Trace Logs", + "description": "Toggle label: capture trace logs. 'TRACE' is a log level." + }, + "settings.troubleshooting.trace.help": { + "message": "Raises logging to TRACE and cycles NetBird up and down to capture connection logs. The previous level is restored after the bundle is built.", + "description": "Helper text explaining trace capture restarts NetBird briefly. 'TRACE' — keep as-is." + }, + "settings.troubleshooting.duration.label": { + "message": "Capture Duration", + "description": "Label for the trace-capture duration field." + }, + "settings.troubleshooting.duration.help": { + "message": "How long to capture trace logs before generating the bundle.", + "description": "Helper text for the capture duration." + }, + "settings.troubleshooting.duration.suffix": { + "message": "Minute(s)", + "description": "Unit suffix after the duration field. The '(s)' marks an optional plural." + }, + "settings.troubleshooting.create": { + "message": "Create Bundle", + "description": "Button to create the debug bundle. Keep short." + }, + "settings.troubleshooting.progress.description": { + "message": "Collecting logs, system details, and connection state. This usually takes a moment — keep this window open until it completes.", + "description": "Status text shown while the bundle is being collected; asks the user to keep the window open." + }, + "settings.troubleshooting.cancelling": { + "message": "Canceling…", + "description": "Status shown while cancelling bundle creation. Ends with an ellipsis." + }, + "settings.troubleshooting.done.uploadedTitle": { + "message": "Debug bundle successfully uploaded!", + "description": "Success title after the bundle was uploaded." + }, + "settings.troubleshooting.done.savedTitle": { + "message": "Bundle saved", + "description": "Title shown when the bundle was saved locally (not uploaded)." + }, + "settings.troubleshooting.done.uploadedDescription": { + "message": "Share the upload key below with NetBird support. A local copy was also saved on your device.", + "description": "Body after upload, telling the user to share the upload key with support." + }, + "settings.troubleshooting.done.savedDescription": { + "message": "Your debug bundle has been saved locally.", + "description": "Body shown when the bundle was only saved locally." + }, + "settings.troubleshooting.done.copyKey": { + "message": "Copy Key", + "description": "Button to copy the upload key. Keep short." + }, + "settings.troubleshooting.done.openFolder": { + "message": "Open Folder", + "description": "Button to open the folder containing the bundle. Keep short." + }, + "settings.troubleshooting.done.openFileLocation": { + "message": "Open file location", + "description": "Button to reveal the bundle file in the OS file manager." + }, + "settings.troubleshooting.uploadFailedWithReason": { + "message": "Upload failed: {reason} The bundle is still saved locally.", + "description": "Shown when upload failed but the bundle was saved locally. {reason} is the server error text; keep it." + }, + "settings.troubleshooting.uploadFailed": { + "message": "Upload failed. The bundle is still saved locally.", + "description": "Shown when upload failed (no specific reason) but the bundle was saved locally." + }, + "settings.troubleshooting.stage.preparingTrace": { + "message": "Switching to trace logging…", + "description": "Progress stage: switching to trace logging. Ends with an ellipsis." + }, + "settings.troubleshooting.stage.reconnecting": { + "message": "Reconnecting NetBird…", + "description": "Progress stage: reconnecting NetBird. Ends with an ellipsis." + }, + "settings.troubleshooting.stage.capturing": { + "message": "Capturing logs — {elapsed} / {total}", + "description": "Progress stage: capturing logs. {elapsed} and {total} are time values (e.g. 0:30 / 2:00); keep both." + }, + "settings.troubleshooting.stage.restoring": { + "message": "Restoring previous log level…", + "description": "Progress stage: restoring the previous log level. Ends with an ellipsis." + }, + "settings.troubleshooting.stage.bundling": { + "message": "Generating debug bundle…", + "description": "Progress stage: generating the debug bundle. Ends with an ellipsis." + }, + "settings.troubleshooting.stage.uploading": { + "message": "Uploading to NetBird…", + "description": "Progress stage: uploading to NetBird. Ends with an ellipsis." + }, + "settings.troubleshooting.stage.cancelling": { + "message": "Canceling…", + "description": "Progress stage: cancelling. Ends with an ellipsis." + }, + "settings.about.client": { + "message": "NetBird Client v{version}", + "description": "About tab: client product name and version. {version} is a version number; keep it. 'NetBird Client' — keep brand." + }, + "settings.about.clientName": { + "message": "NetBird Client", + "description": "About tab: the client product name shown when no version is available. Brand — do not translate." + }, + "settings.about.development": { + "message": "[Development]", + "description": "Badge shown next to the version on development builds. Keep the square brackets." + }, + "settings.about.gui": { + "message": "GUI v{version}", + "description": "About tab: UI component name and version. {version} is a version number; keep it. 'GUI' = the graphical app." + }, + "settings.about.guiName": { + "message": "GUI", + "description": "About tab: the UI component name shown without a version. 'GUI' = the graphical app." + }, + "settings.about.copyright": { + "message": "© {year} NetBird. All Rights Reserved.", + "description": "Copyright line. {year} is the current year; keep it. 'NetBird' — brand." + }, + "settings.about.links.imprint": { + "message": "Imprint", + "description": "Footer link: Imprint (legal notice / Impressum)." + }, + "settings.about.links.privacy": { + "message": "Privacy", + "description": "Footer link: Privacy policy." + }, + "settings.about.links.cla": { + "message": "CLA", + "description": "Footer link: CLA (Contributor License Agreement). Acronym — keep as-is." + }, + "settings.about.links.terms": { + "message": "Terms of Service", + "description": "Footer link: Terms of Service." + }, + "settings.about.community.github": { + "message": "GitHub", + "description": "Community link: GitHub. Brand — do not translate." + }, + "settings.about.community.slack": { + "message": "Slack", + "description": "Community link: Slack. Brand — do not translate." + }, + "settings.about.community.forum": { + "message": "Forum", + "description": "Community link: Forum." + }, + "settings.about.community.documentation": { + "message": "Documentation", + "description": "Community link: Documentation." + }, + "settings.about.community.feedback": { + "message": "Feedback", + "description": "Community link: Feedback." + }, + "update.banner.message": { + "message": "NetBird {version} is ready to install.", + "description": "Update banner text when a new version is ready to install. {version} is the version number; keep it." + }, + "update.banner.later": { + "message": "Later", + "description": "Banner button to postpone the update. Keep short." + }, + "update.banner.installNow": { + "message": "Install now", + "description": "Banner button to install the update now. Keep short." + }, + "update.card.versionAvailableDownload": { + "message": "Version {version} is available for download.", + "description": "Update card text when a version is available to download. {version} is the version number; keep it." + }, + "update.card.versionAvailableInstall": { + "message": "Version {version} is available for install.", + "description": "Update card text when a version is available to install. {version} is the version number; keep it." + }, + "update.card.whatsNew": { + "message": "What's new?", + "description": "Link / label that opens the release notes." + }, + "update.card.installNow": { + "message": "Install Now", + "description": "Update card button: install now. Keep short." + }, + "update.card.getInstaller": { + "message": "Download", + "description": "Update card button: download the installer." + }, + "update.card.autoCheckInterval": { + "message": "NetBird checks for updates in the background.", + "description": "Note that NetBird checks for updates in the background." + }, + "update.card.changelog": { + "message": "Changelog", + "description": "Link / label: Changelog." + }, + "update.card.onLatestVersion": { + "message": "You're on the latest version", + "description": "Shown when the client is already up to date." + }, + "update.header.tooltip": { + "message": "Update Available", + "description": "Tooltip on the header update badge." + }, + "update.overlay.updatingVersion": { + "message": "Updating NetBird to v{version}", + "description": "Heading in the install-progress window while updating to a specific version. {version} is the version number; keep it. The 'v' prefix is part of the version display." + }, + "update.overlay.updating": { + "message": "Updating NetBird", + "description": "Heading in the install-progress window while updating when the target version isn't known." + }, + "update.overlay.description": { + "message": "A newer version is available and is being installed. NetBird will restart automatically once the update is finished.", + "description": "Install-progress window body explaining NetBird will restart automatically after the update." + }, + "update.overlay.error.timeoutTitle": { + "message": "Update Is Taking Too Long", + "description": "Install-progress window error title: the update took too long." + }, + "update.overlay.error.timeoutDescription": { + "message": "Installing {target} took too long and didn't finish.", + "description": "Install-progress window error body for a timeout. {target} is the target-version label (see update.overlay.error.targetVersion / targetFallback); keep it." + }, + "update.overlay.error.canceledTitle": { + "message": "Update Was Stopped", + "description": "Install-progress window error title: the update was stopped / canceled." + }, + "update.overlay.error.canceledDescription": { + "message": "The update to {target} was canceled before it finished.", + "description": "Install-progress window error body for a canceled update. {target} is the target-version label; keep it." + }, + "update.overlay.error.failTitle": { + "message": "Couldn't Install the Update", + "description": "Install-progress window error title: the update couldn't be installed." + }, + "update.overlay.error.failDescription": { + "message": "{target} couldn't be installed.", + "description": "Install-progress window error body for a failed install. {target} is the target-version label; keep it." + }, + "update.overlay.error.unknownMessage": { + "message": "unknown error", + "description": "Fallback text for an unspecified error, used inside other messages." + }, + "update.overlay.error.targetVersion": { + "message": "v{version}", + "description": "The target-version label substituted into {target}. {version} is a number; keep the 'v' prefix." + }, + "update.overlay.error.targetFallback": { + "message": "the new version", + "description": "Fallback target label used when the version isn't known, substituted into {target}." + }, + "update.error.loadStateTitle": { + "message": "Load Update State Failed", + "description": "Error-dialog title when loading update state fails." + }, + "update.error.triggerTitle": { + "message": "Start Update Failed", + "description": "Error-dialog title when starting the update fails." + }, + "update.page.versionLine": { + "message": "Updating client to: {version}.", + "description": "Install-progress window text naming the target version. {version} is the version number; keep it." + }, + "update.page.versionLineGeneric": { + "message": "Updating client.", + "description": "Install-progress text used when the target version isn't known." + }, + "update.page.outdated": { + "message": "Your client version is older than the auto-update version set in Management.", + "description": "Note that the client is older than the auto-update version set in Management. 'Management' = the NetBird management server / console." + }, + "update.page.status.running": { + "message": "Updating", + "description": "Install status: updating." + }, + "update.page.status.timeout": { + "message": "Update timed out. Please try again.", + "description": "Install status: timed out; asks the user to retry." + }, + "update.page.status.canceled": { + "message": "Update canceled.", + "description": "Install status: canceled." + }, + "update.page.status.failed": { + "message": "Update failed: {message}", + "description": "Install status: failed. {message} is the error detail; keep it." + }, + "update.page.status.unknownError": { + "message": "unknown update error", + "description": "Fallback text for an unknown update error, used inside update.page.status.failed." + }, + "update.page.failedTitle": { + "message": "Update Failed", + "description": "Heading shown when the install failed." + }, + "update.page.timeoutMessage": { + "message": "Update timed out.", + "description": "Message shown when the install timed out." + }, + "update.page.dontClose": { + "message": "Please don't close this window.", + "description": "Warning asking the user not to close the install window." + }, + "update.page.updating": { + "message": "Updating…", + "description": "Short status: updating. Ends with an ellipsis." + }, + "update.page.complete": { + "message": "Update complete", + "description": "Short status: update complete." + }, + "update.page.failed": { + "message": "Update failed", + "description": "Short status: update failed." + }, + "window.title.settings": { + "message": "Settings", + "description": "OS window-chrome title for the Settings window. The app prefixes it with 'NetBird - '." + }, + "window.title.signIn": { + "message": "Sign-in", + "description": "OS window-chrome title for the sign-in window." + }, + "window.title.sessionExpiration": { + "message": "Session Expiring", + "description": "OS window-chrome title for the session-expiration window." + }, + "window.title.updating": { + "message": "Updating", + "description": "OS window-chrome title for the update / install window." + }, + "window.title.welcome": { + "message": "Welcome to NetBird", + "description": "OS window-chrome title for the first-launch welcome window. 'NetBird' — brand." + }, + "window.title.error": { + "message": "Error", + "description": "OS window-chrome title for the error window." + }, + "welcome.title": { + "message": "Look for NetBird in your tray", + "description": "Heading on the first onboarding step, pointing the user to the tray icon. 'tray' = system tray / menu bar." + }, + "welcome.description": { + "message": "NetBird lives in your tray. Click the icon to connect, switch profiles, or open settings.", + "description": "Body of the first onboarding step explaining the tray icon." + }, + "welcome.continue": { + "message": "Continue", + "description": "Primary button to advance the onboarding. Keep short." + }, + "welcome.back": { + "message": "Back", + "description": "Button to go back a step in onboarding. Keep short." + }, + "welcome.management.title": { + "message": "Set up NetBird", + "description": "Heading on the onboarding step for choosing a management server." + }, + "welcome.management.description": { + "message": "Click Continue to get started, or pick Self-hosted if you have your own NetBird server.", + "description": "Body of the management step; mentions choosing Self-hosted if the user runs their own server." + }, + "welcome.management.cloud.title": { + "message": "NetBird Cloud", + "description": "Option title: NetBird Cloud. Brand — do not translate 'NetBird Cloud'." + }, + "welcome.management.cloud.description": { + "message": "Use our hosted service. No setup required.", + "description": "Option body for NetBird Cloud (hosted service, no setup required)." + }, + "welcome.management.selfHosted.title": { + "message": "Self-hosted", + "description": "Option title: Self-hosted." + }, + "welcome.management.selfHosted.description": { + "message": "Connect to your own management server.", + "description": "Option body for connecting to your own management server." + }, + "welcome.management.urlLabel": { + "message": "Management server URL", + "description": "Field label for the management-server URL." + }, + "welcome.management.urlPlaceholder": { + "message": "https://netbird.selfhosted.com:443", + "description": "Example URL placeholder. Sample URL — do not translate it." + }, + "welcome.management.urlInvalid": { + "message": "Please enter a valid URL, e.g., https://netbird.selfhosted.com:443", + "description": "Validation message for an invalid URL. The example URL stays as-is." + }, + "welcome.management.urlUnreachable": { + "message": "Couldn't reach this server. Check the URL or your network, then continue if you're sure it's correct.", + "description": "Soft warning when the server couldn't be reached during onboarding; the user may continue anyway." + }, + "welcome.management.checking": { + "message": "Checking…", + "description": "Status shown while checking the server URL. Ends with an ellipsis." + }, + "browserLogin.title": { + "message": "Continue in your browser to complete the login", + "description": "Heading telling the user to finish signing in via their browser." + }, + "browserLogin.notSeeing": { + "message": "Not seeing the browser tab?", + "description": "Prompt asking whether the user doesn't see the opened browser tab." + }, + "browserLogin.tryAgain": { + "message": "Try again", + "description": "Button to re-open the browser sign-in page. Keep short." + }, + "browserLogin.openFailedTitle": { + "message": "Open Browser Failed", + "description": "Error-dialog title when the browser couldn't be opened." + }, + "sessionExpiration.title": { + "message": "Session expiring soon", + "description": "Heading warning the session will expire soon." + }, + "sessionExpiration.titleLater": { + "message": "Your session will expire", + "description": "Alternate, less-urgent heading: the session will expire." + }, + "sessionExpiration.description": { + "message": "This device will disconnect soon. Renew with a browser sign-in.", + "description": "Body warning the device will disconnect soon; renew via a browser sign-in." + }, + "sessionExpiration.descriptionLater": { + "message": "A browser sign-in keeps this device connected to your network.", + "description": "Body for the less-urgent variant; a browser sign-in keeps the device connected." + }, + "sessionExpiration.stay": { + "message": "Renew session", + "description": "Button to renew the session (keep connected). Keep short." + }, + "sessionExpiration.authenticate": { + "message": "Authenticate", + "description": "Button to authenticate / sign in. Keep short." + }, + "sessionExpiration.logout": { + "message": "Logout", + "description": "Button to log out. Keep short." + }, + "sessionExpiration.expired": { + "message": "Session expired", + "description": "Heading shown once the session has actually expired." + }, + "sessionExpiration.expiredDescription": { + "message": "Device disconnected. Authenticate with a browser sign-in to reconnect.", + "description": "Body shown after expiry; authenticate via a browser sign-in to reconnect." + }, + "sessionExpiration.close": { + "message": "Close", + "description": "Close button on the session window. Keep short." + }, + "sessionExpiration.extendFailedTitle": { + "message": "Extend Session Failed", + "description": "Error-dialog title when extending the session fails." + }, + "sessionExpiration.logoutFailedTitle": { + "message": "Logout Failed", + "description": "Error-dialog title when logging out fails." + }, + "peers.search.placeholder": { + "message": "Search by name or IP", + "description": "Placeholder in the peers search field." + }, + "peers.filter.all": { + "message": "All", + "description": "Peers filter option: All. Keep short." + }, + "peers.filter.online": { + "message": "Online", + "description": "Peers filter option: Online. Keep short." + }, + "peers.filter.offline": { + "message": "Offline", + "description": "Peers filter option: Offline. Keep short." + }, + "peers.empty.title": { + "message": "No peers available", + "description": "Title of the empty state when no peers are available." + }, + "peers.empty.description": { + "message": "You either don't have any peers available or have no access to any of them.", + "description": "Body of the no-peers empty state." + }, + "peers.details.domain": { + "message": "Domain", + "description": "Peer detail label: Domain." + }, + "peers.details.netbirdIp": { + "message": "NetBird IP", + "description": "Peer detail label: NetBird IP address. 'NetBird' — brand; 'IP' — keep acronym." + }, + "peers.details.netbirdIpv6": { + "message": "NetBird IPv6", + "description": "Peer detail label: NetBird IPv6 address. Keep 'NetBird' and 'IPv6'." + }, + "peers.details.publicKey": { + "message": "Public key", + "description": "Peer detail label: WireGuard public key." + }, + "peers.details.connection": { + "message": "Connection", + "description": "Peer detail label: Connection." + }, + "peers.details.latency": { + "message": "Latency", + "description": "Peer detail label: Latency." + }, + "peers.details.lastHandshake": { + "message": "Last handshake", + "description": "Peer detail label: time of the last WireGuard handshake." + }, + "peers.details.statusSince": { + "message": "Last connection update", + "description": "Peer detail label: time since the last connection-status update." + }, + "peers.details.bytes": { + "message": "Bytes", + "description": "Peer detail label: Bytes (data transferred)." + }, + "peers.details.bytesSent": { + "message": "Sent", + "description": "Peer detail label: bytes sent." + }, + "peers.details.bytesReceived": { + "message": "Received", + "description": "Peer detail label: bytes received." + }, + "peers.details.localIce": { + "message": "Local ICE", + "description": "Peer detail label: local ICE candidate. 'ICE' — keep acronym." + }, + "peers.details.remoteIce": { + "message": "Remote ICE", + "description": "Peer detail label: remote ICE candidate. 'ICE' — keep acronym." + }, + "peers.details.never": { + "message": "Never", + "description": "Value shown when an event has never happened (e.g. last handshake = Never)." + }, + "peers.details.justNow": { + "message": "Just now", + "description": "Relative-time value meaning a moment ago." + }, + "peers.details.refresh": { + "message": "Refresh", + "description": "Button to refresh peer details. Keep short." + }, + "peers.status.connected": { + "message": "Connected", + "description": "Peer status: connected." + }, + "peers.status.connecting": { + "message": "Connecting", + "description": "Peer status: connecting." + }, + "peers.status.disconnected": { + "message": "Disconnected", + "description": "Peer status: disconnected." + }, + "peers.details.relayAddress": { + "message": "Relay", + "description": "Peer detail label: Relay (relay-server address)." + }, + "peers.details.networks": { + "message": "Resources", + "description": "Peer detail label for the peer's network resources. Labelled 'Resources' in the UI." + }, + "peers.details.relayed": { + "message": "Relayed", + "description": "Connection-type value: the connection is relayed (not direct). Technical term." + }, + "peers.details.p2p": { + "message": "P2P", + "description": "Connection-type value: peer-to-peer (direct). 'P2P' — keep as-is." + }, + "peers.details.rosenpass": { + "message": "Rosenpass enabled", + "description": "Peer detail indicating Rosenpass (quantum-resistance) is enabled. 'Rosenpass' — product name, do not translate." + }, + "networks.search.placeholder": { + "message": "Search by network or domain", + "description": "Placeholder in the resources search field." + }, + "networks.filter.all": { + "message": "All", + "description": "Resources filter: All. Keep short." + }, + "networks.filter.active": { + "message": "Active", + "description": "Resources filter: Active. Keep short." + }, + "networks.filter.overlapping": { + "message": "Overlapping", + "description": "Resources filter: Overlapping (overlapping IP ranges). Keep short." + }, + "networks.empty.title": { + "message": "No resources available", + "description": "Title of the empty state when no resources are available." + }, + "networks.empty.description": { + "message": "You either don't have any network resources available or have no access to any of them.", + "description": "Body of the no-resources empty state." + }, + "networks.selected": { + "message": "Selected", + "description": "Label / badge: the resource is selected (enabled)." + }, + "networks.unselected": { + "message": "Not selected", + "description": "Label / badge: the resource is not selected." + }, + "networks.ips.heading": { + "message": "Resolved IPs", + "description": "Heading for the list of a resource's resolved IP addresses." + }, + "networks.bulk.selectionCount": { + "message": "{selected} of {total} Active", + "description": "Header showing how many resources are active. {selected} and {total} are numbers; keep both." + }, + "networks.bulk.enableAll": { + "message": "Enable all", + "description": "Button to enable all resources. Keep short." + }, + "networks.bulk.disableAll": { + "message": "Disable all", + "description": "Button to disable all resources. Keep short." + }, + "exitNodes.search.placeholder": { + "message": "Search exit nodes", + "description": "Placeholder in the exit-nodes search field." + }, + "exitNodes.none": { + "message": "None", + "description": "Option meaning no exit node. Keep short." + }, + "exitNodes.empty.title": { + "message": "No exit nodes available", + "description": "Title of the empty state when no exit nodes are available." + }, + "exitNodes.empty.description": { + "message": "No exit nodes have been shared with this peer.", + "description": "Body of the no-exit-nodes empty state." + }, + "exitNodes.card.title": { + "message": "Exit Node", + "description": "Card heading: Exit Node." + }, + "exitNodes.card.statusActive": { + "message": "Active", + "description": "Exit node card status: Active." + }, + "exitNodes.card.statusInactive": { + "message": "Inactive", + "description": "Exit node card status: Inactive." + }, + "exitNodes.dropdown.noneTitle": { + "message": "None", + "description": "Dropdown option title: None (no exit node)." + }, + "exitNodes.dropdown.noneDescription": { + "message": "Direct connection without an exit node", + "description": "Dropdown option body for None: direct connection without an exit node." + }, + "quickActions.connect": { + "message": "Connect", + "description": "Quick-action button: Connect. Keep short." + }, + "quickActions.disconnect": { + "message": "Disconnect", + "description": "Quick-action button: Disconnect. Keep short." + }, + "daemon.unavailable.title": { + "message": "NetBird Service Is Not Running", + "description": "Title of the overlay shown when the NetBird background service isn't running." + }, + "daemon.unavailable.description": { + "message": "The app will reconnect automatically once the service is running.", + "description": "Body reassuring the user the app will reconnect once the service is running." + }, + "daemon.unavailable.docsLink": { + "message": "Documentation", + "description": "Documentation link on the daemon-unavailable overlay." + }, + "error.jwt_clock_skew": { + "message": "Sign-in failed: this device's clock is out of sync with the server. Please sync your system clock and try again.", + "description": "Sign-in error shown to the user: the device clock is out of sync with the server." + }, + "error.jwt_expired": { + "message": "Your sign-in token has expired. Please sign in again.", + "description": "Sign-in error: the sign-in token expired; sign in again." + }, + "error.jwt_signature_invalid": { + "message": "Sign-in failed: the token signature is invalid. Please contact your administrator.", + "description": "Sign-in error: the token signature is invalid; contact the administrator." + }, + "error.session_expired": { + "message": "Your session has expired. Please sign in again.", + "description": "Error: the session expired; sign in again." + }, + "error.invalid_setup_key": { + "message": "The setup key is missing or invalid.", + "description": "Error: the setup key is missing or invalid. 'setup key' is a NetBird term." + }, + "error.permission_denied": { + "message": "Sign-in was rejected by the server.", + "description": "Error: the server rejected the sign-in." + }, + "error.daemon_unreachable": { + "message": "The NetBird daemon is not responding. Please check that the service is running.", + "description": "Error: the NetBird background service isn't responding. 'daemon' = the background service." + }, + "error.unknown": { + "message": "Operation failed.", + "description": "Generic fallback error message used when no specific error applies." + } } diff --git a/client/ui/i18n/locales/hu/common.json b/client/ui/i18n/locales/hu/common.json index 717f601fa..53d57802a 100644 --- a/client/ui/i18n/locales/hu/common.json +++ b/client/ui/i18n/locales/hu/common.json @@ -1,454 +1,1262 @@ { - "tray.tooltip": "NetBird", - "tray.status.disconnected": "Lekapcsolva", - "tray.status.daemonUnavailable": "Nem fut", - "tray.status.error": "Hiba", - "tray.status.connected": "Kapcsolódva", - "tray.status.connecting": "Kapcsolódás", - "tray.status.needsLogin": "Bejelentkezés szükséges", - "tray.status.loginFailed": "Sikertelen bejelentkezés", - "tray.status.sessionExpired": "Munkamenet lejárt", - "tray.session.expiresIn": "Munkamenet lejár {remaining} múlva", - "tray.session.unit.lessThanMinute": "egy percnél kevesebb", - "tray.session.unit.minute": "1 perc", - "tray.session.unit.minutes": "{count} perc", - "tray.session.unit.hour": "1 óra", - "tray.session.unit.hours": "{count} óra", - "tray.session.unit.day": "1 nap", - "tray.session.unit.days": "{count} nap", - - "tray.menu.open": "NetBird megnyitása", - "tray.menu.connect": "Csatlakozás", - "tray.menu.disconnect": "Bontás", - "tray.menu.exitNode": "Kilépő csomópont", - "tray.menu.networks": "Erőforrások", - "tray.menu.profiles": "Profilok", - "tray.menu.manageProfiles": "Profilok kezelése", - "tray.menu.settings": "Beállítások...", - "tray.menu.debugBundle": "Hibakeresési csomag készítése", - "tray.menu.about": "Súgó és támogatás", - "tray.menu.github": "GitHub", - "tray.menu.documentation": "Dokumentáció", - "tray.menu.troubleshoot": "Hibakeresés", - "tray.menu.downloadLatest": "Legfrissebb verzió letöltése", - "tray.menu.installVersion": "{version} verzió telepítése", - "tray.menu.guiVersion": "Felület: {version}", - "tray.menu.daemonVersion": "Daemon: {version}", - "tray.menu.versionUnknown": "—", - "tray.menu.quit": "NetBird bezárása", - - "notify.update.title": "NetBird frissítés elérhető", - "notify.update.body": "Elérhető a NetBird {version}.", - "notify.update.enforcedSuffix": " A rendszergazda kötelezővé tette ezt a frissítést.", - "notify.error.title": "Hiba", - "notify.error.connect": "Csatlakozás sikertelen", - "notify.error.disconnect": "Bontás sikertelen", - "notify.error.switchProfile": "Átváltás sikertelen erre: {profile}", - "notify.error.exitNode": "A kilépő csomópont frissítése sikertelen: {name}", - "notify.sessionExpired.title": "NetBird munkamenet lejárt", - "notify.sessionExpired.body": "A NetBird munkamenet lejárt. Kérjük, jelentkezzen be újra.", - "notify.sessionWarning.title": "Munkamenet hamarosan lejár", - "notify.sessionWarning.body": "A NetBird munkamenet {remaining} múlva lejár. Kattints a Meghosszabbítás gombra a megújításhoz.", - "notify.sessionWarning.bodyGeneric": "A NetBird munkamenet hamarosan lejár. Kattints a Meghosszabbítás gombra a megújításhoz.", - "notify.sessionWarning.extend": "Meghosszabbítás", - "notify.sessionWarning.dismiss": "Elvetés", - "notify.sessionWarning.failed": "A NetBird munkamenet meghosszabbítása sikertelen", - "notify.sessionWarning.successTitle": "NetBird munkamenet meghosszabbítva", - "notify.sessionWarning.successBody": "A munkamenet frissítve.", - "notify.sessionDeadlineRejected.title": "Munkamenet-határidő elutasítva", - "notify.sessionDeadlineRejected.body": "A szerver érvénytelen munkamenet-határidőt küldött. Kérjük, jelentkezzen be újra.", - - "common.cancel": "Mégse", - "common.save": "Mentés", - "common.saveChanges": "Módosítások mentése", - "common.saving": "Mentés…", - "common.close": "Bezárás", - "common.copy": "Másolás", - "common.togglePasswordVisibility": "Jelszó láthatóságának váltása", - "common.increase": "Növelés", - "common.decrease": "Csökkentés", - "common.delete": "Törlés", - "common.create": "Létrehozás", - "common.add": "Hozzáadás", - "common.remove": "Eltávolítás", - "common.refresh": "Frissítés", - "common.loading": "Betöltés…", - "common.netbird": "NetBird", - "common.noResults.title": "Nincs találat", - "common.noResults.description": "Nem találtunk eredményt. Próbáljon meg másik keresési kifejezést, vagy módosítsa a szűrőket.", - "notConnected.title": "Lecsatlakozva", - "notConnected.description": "Csatlakozz először a NetBirdhöz, hogy részletes információkat láthass a társakról, hálózati erőforrásokról és kilépő csomópontokról.", - - "connect.status.disconnected": "Lekapcsolva", - "connect.status.connecting": "Csatlakozás…", - "connect.status.connected": "Csatlakoztatva", - "connect.status.disconnecting": "Bontás…", - "connect.status.daemonUnavailable": "Daemon nem elérhető", - "connect.status.loginRequired": "Bejelentkezés szükséges", - - "connect.error.loginTitle": "Bejelentkezés sikertelen", - "connect.error.connectTitle": "Csatlakozás sikertelen", - "connect.error.disconnectTitle": "Bontás sikertelen", - - "nav.peers.title": "Társak", - "nav.peers.description": "{connected} / {total} csatlakoztatva", - "nav.resources.title": "Erőforrások", - "nav.resources.description": "{active} / {total} aktív", - "nav.exitNode.title": "Kilépő csomópontok", - "nav.exitNode.none": "Nem aktív", - "nav.exitNode.using": "Ezen át: {name}", - - "header.openSettings": "Beállítások megnyitása", - "header.togglePanel": "Oldalsó panel váltása", - "header.menu.settings": "Beállítások…", - "header.menu.defaultView": "Alapnézet", - "header.menu.advancedView": "Speciális nézet", - "header.menu.updateAvailable": "Frissítés elérhető", - - "profile.selector.loading": "Betöltés…", - "profile.selector.noProfile": "Nincs profil", - "profile.selector.searchPlaceholder": "Profil keresése név alapján…", - "profile.selector.emptyTitle": "Nem található profil", - "profile.selector.emptyDescription": "Próbáljon más keresőkifejezést, vagy hozzon létre új profilt.", - "profile.selector.newProfile": "Új profil", - "profile.selector.moreOptions": "További műveletek", - "profile.selector.deregister": "Leválasztás", - "profile.selector.delete": "Profil törlése", - "profile.selector.switchTo": "Váltás erre a profilra", - "profile.dropdown.activeProfile": "Aktív profil", - "profile.dropdown.switchProfile": "Profilváltás", - "profile.dropdown.noEmail": "Egyéb", - "profile.dropdown.addProfile": "Profil hozzáadása", - "profile.dropdown.manageProfiles": "Profilok kezelése", - "profile.dropdown.settings": "Beállítások", - - "profile.dialog.title": "Új profil", - "profile.dialog.nameLabel": "Profilnév", - "profile.dialog.description": "Adjon profiljának egy könnyen azonosítható nevet.", - "profile.dialog.placeholder": "pl. Munka", - "profile.dialog.required": "Adjon meg egy profilnevet, pl. Munka, Otthon", - "profile.dialog.submit": "Profil hozzáadása", - "profile.dialog.managementHelp": "NetBird Cloud vagy saját kiszolgáló.", - "profile.dialog.urlUnreachable": "A szerver nem érhető el. Ellenőrizze az URL-t, vagy adja hozzá a profilt, ha biztos benne, hogy helyes.", - - "profile.switch.title": "Váltás a(z) \"{name}\" profilra?", - "profile.switch.message": "Biztosan profilt szeretne váltani?\nAz aktuális profilja le lesz választva.", - "profile.switch.confirm": "Megerősítés", - "profile.deregister.title": "\"{name}\" profil leválasztása?", - "profile.deregister.message": "Biztosan le szeretné választani ezt a profilt?\nÚjra be kell jelentkeznie a használatához.", - "profile.deregister.confirm": "Leválasztás", - "profile.delete.title": "\"{name}\" profil törlése?", - "profile.delete.message": "Biztosan törölni szeretné ezt a profilt?\nEz a művelet nem vonható vissza.", - "profile.delete.disabledActive": "Aktív profilok nem törölhetők. Váltson másik profilra, mielőtt törölné ezt.", - "profile.delete.disabledDefault": "Az alapértelmezett profil nem törölhető.", - "profile.error.switchTitle": "Profilváltás sikertelen", - "profile.error.deregisterTitle": "Leválasztás sikertelen", - "profile.error.deleteTitle": "Profil törlése sikertelen", - "profile.error.createTitle": "Profil létrehozása sikertelen", - "profile.error.loadTitle": "Profilok betöltése sikertelen", - - "settings.error.loadTitle": "Beállítások betöltése sikertelen", - "settings.error.saveTitle": "Beállítások mentése sikertelen", - "settings.error.debugBundleTitle": "Hibakeresési csomag sikertelen", - - "settings.tabs.general": "Általános", - "settings.tabs.network": "Hálózat", - "settings.tabs.security": "Biztonság", - "settings.tabs.ssh": "SSH", - "settings.tabs.profiles": "Profilok", - "settings.tabs.advanced": "Speciális", - "settings.tabs.troubleshooting": "Hibaelhárítás", - "settings.tabs.about": "Névjegy", - "settings.tabs.updateAvailable": "Frissítés elérhető", - - "settings.profiles.section.profiles": "Profilok", - "settings.profiles.intro": "Tartson külön NetBird-identitásokat egymás mellett, például munkahelyi és személyes fiókokat, vagy különböző kezelőszervereket. Lent hozzáadhat, leválaszthat vagy törölhet profilokat.", - "settings.profiles.addProfile": "Profil hozzáadása", - "settings.profiles.active": "Aktív", - "settings.profiles.emptyTitle": "Nincsenek profilok", - "settings.profiles.emptyDescription": "Hozzon létre egy profilt a NetBird kezelőszerverhez való csatlakozáshoz.", - - "settings.general.section.general": "Általános", - "settings.general.section.connection": "Kapcsolat", - "settings.general.connectOnStartup.label": "Csatlakozás indításkor", - "settings.general.connectOnStartup.help": "A szolgáltatás indulásakor automatikusan kapcsolatot létesít.", - "settings.general.notifications.label": "Asztali értesítések", - "settings.general.notifications.help": "Asztali értesítések megjelenítése új frissítésekről és kapcsolati eseményekről.", - "settings.general.autostart.label": "NetBird UI indítása bejelentkezéskor", - "settings.general.autostart.help": "A NetBird felület automatikus indítása bejelentkezéskor. Ez csak a grafikus felületet érinti, a háttérszolgáltatást nem.", - "settings.general.autostart.errorTitle": "Az automatikus indítás módosítása sikertelen", - "settings.general.language.label": "Megjelenítési nyelv", - "settings.general.language.help": "Válassza ki a NetBird felület nyelvét.", - "settings.general.language.search": "Nyelv keresése…", - "settings.general.language.empty": "Nincs találat.", - "settings.general.management.label": "Kezelőszerver", - "settings.general.management.help": "Csatlakozás a NetBird Cloudhoz vagy saját self-hosted kezelőszerverhez. A módosítások újracsatlakozást váltanak ki.", - "settings.general.management.cloud": "Felhő", - "settings.general.management.selfHosted": "Saját üzemeltetésű", - "settings.general.management.urlPlaceholder": "https://netbird.selfhosted.com:443", - "settings.general.management.urlError": "Adjon meg egy érvényes URL-t, pl. https://netbird.selfhosted.com:443", - "settings.general.management.urlUnreachable": "A szerver nem érhető el. Ellenőrizze az URL-t, vagy mentse el, ha biztos benne, hogy helyes.", - "settings.general.management.switchCloudTitle": "Átváltás a NetBird Cloudra?", - "settings.general.management.switchCloudMessage": "Ez leválasztja a saját üzemeltetésű kiszolgálót.\nLehet, hogy újra be kell jelentkeznie.", - "settings.general.management.switchCloudConfirm": "Váltás a felhőre", - - "settings.network.section.connectivity": "Kapcsolódás", - "settings.network.section.routingDns": "Útválasztás és DNS", - "settings.network.lazy.label": "Késleltetett kapcsolatok", - "settings.network.lazy.help": "Állandó kapcsolatok fenntartása helyett a NetBird igény szerint, aktivitás vagy jelzés alapján aktiválja azokat.", - "settings.network.monitor.label": "Újracsatlakozás hálózatváltáskor", - "settings.network.monitor.help": "A hálózat figyelése és automatikus újracsatlakozás változások (pl. Wi-Fi-váltás, Ethernet-változás vagy alvó állapotból való visszatérés) esetén.", - "settings.network.dns.label": "DNS engedélyezése", - "settings.network.dns.help": "A NetBird által kezelt DNS-beállítások alkalmazása a gazda DNS-feloldójára.", - "settings.network.clientRoutes.label": "Kliens útvonalak engedélyezése", - "settings.network.clientRoutes.help": "Más társak útvonalainak elfogadása az ő hálózataik eléréséhez.", - "settings.network.serverRoutes.label": "Szerver útvonalak engedélyezése", - "settings.network.serverRoutes.help": "Ennek a gazdának a helyi útvonalainak meghirdetése más társak számára.", - "settings.network.ipv6.label": "IPv6 engedélyezése", - "settings.network.ipv6.help": "IPv6-címzés használata a NetBird overlay hálózathoz.", - - "settings.security.section.firewall": "Tűzfal", - "settings.security.section.encryption": "Titkosítás", - "settings.security.blockInbound.label": "Bejövő forgalom blokkolása", - "settings.security.blockInbound.help": "Visszautasítja a társaktól érkező nem kért kapcsolatokat ezen eszközhöz és az általa irányított hálózatokhoz. A kimenő forgalmat nem érinti.", - "settings.security.blockLan.label": "LAN-hozzáférés blokkolása", - "settings.security.blockLan.help": "Megakadályozza, hogy a társak elérjék a helyi hálózatot vagy annak eszközeit, amikor ez az eszköz irányítja a forgalmukat.", - "settings.security.rosenpass.label": "Kvantumellenálló titkosítás engedélyezése", - "settings.security.rosenpass.help": "Post-kvantum kulcscsere hozzáadása Rosenpass segítségével a WireGuard® tetejére.", - "settings.security.rosenpassPermissive.label": "Engedékeny mód engedélyezése", - "settings.security.rosenpassPermissive.help": "Kapcsolatok engedélyezése kvantumellenálló titkosítás nélküli társakkal.", - - "settings.ssh.section.server": "Szerver", - "settings.ssh.section.capabilities": "Képességek", - "settings.ssh.section.authentication": "Hitelesítés", - "settings.ssh.server.label": "SSH szerver engedélyezése", - "settings.ssh.server.help": "Futtassa a NetBird SSH szervert ezen a gazdán, hogy más társak csatlakozhassanak.", - "settings.ssh.root.label": "Root bejelentkezés engedélyezése", - "settings.ssh.root.help": "Társak bejelentkezhetnek root felhasználóként. Tiltsa le, ha nem privilegizált fiók szükséges.", - "settings.ssh.sftp.label": "SFTP engedélyezése", - "settings.ssh.sftp.help": "Fájlok biztonságos átvitele natív SFTP- vagy SCP-kliensekkel.", - "settings.ssh.localForward.label": "Helyi porttovábbítás", - "settings.ssh.localForward.help": "A csatlakozó társak helyi portokat alagútba helyezhetnek erről a gazdáról elérhető szolgáltatásokhoz.", - "settings.ssh.remoteForward.label": "Távoli porttovábbítás", - "settings.ssh.remoteForward.help": "A csatlakozó társak ezen a gazdán lévő portokat tehetnek elérhetővé a saját gépük számára.", - "settings.ssh.jwt.label": "JWT-hitelesítés engedélyezése", - "settings.ssh.jwt.help": "Minden SSH-munkamenet ellenőrzése az IdP-vel a felhasználói identitás és audit céljából. Tiltsa le, ha csak a hálózati ACL-szabályokra kíván támaszkodni — hasznos, ha nincs elérhető IdP.", - "settings.ssh.jwtTtl.label": "JWT gyorsítótár TTL", - "settings.ssh.jwtTtl.help": "Mennyi ideig őrzi meg a kliens a JWT-t, mielőtt újra kérné a kimenő SSH-kapcsolatoknál. 0 érték esetén a gyorsítótárazás kikapcsol, és minden kapcsolatnál hitelesít.", - "settings.ssh.jwtTtl.suffix": "másodperc", - - "settings.advanced.section.interface": "Interfész", - "settings.advanced.section.security": "Biztonság", - "settings.advanced.interfaceName.label": "Név", - "settings.advanced.interfaceName.error": "Használj 1–15 betűt, számot, pontot, kötőjelet vagy aláhúzást.", - "settings.advanced.interfaceName.errorMac": "„utun” után számmal kezdődjön (pl. utun100).", - "settings.advanced.port.label": "Port", - "settings.advanced.port.error": "Adj meg egy portot {min} és {max} között.", - "settings.advanced.port.help": "Ha 0-ra állítod, egy véletlenszerű szabad portot használ.", - "settings.advanced.mtu.label": "MTU", - "settings.advanced.mtu.error": "Adj meg egy MTU értéket {min} és {max} között.", - "settings.advanced.psk.label": "Pre-shared kulcs", - "settings.advanced.psk.help": "Opcionális WireGuard PSK további szimmetrikus titkosításhoz. Nem azonos a NetBird telepítőkulccsal. Csak olyan társakkal kommunikál, akik ugyanazt a pre-shared kulcsot használják.", - - "settings.troubleshooting.section.title": "Hibakeresési csomag", - "settings.troubleshooting.intro": "A hibakeresési csomag segít a NetBird támogatásnak a kapcsolati problémák kivizsgálásában.
Egy .zip fájl, amely naplókat, rendszerinformációkat és hibakeresési adatokat tartalmaz az eszközéről.", - "settings.troubleshooting.anonymize.label": "Érzékeny információk anonimizálása", - "settings.troubleshooting.anonymize.help": "Elrejti a nyilvános IP-címeket és a nem-NetBird tartományokat a naplókban.", - "settings.troubleshooting.systemInfo.label": "Rendszerinformációk beillesztése", - "settings.troubleshooting.systemInfo.help": "Tartalmazza az OS-t, a kernelt, a hálózati interfészeket és az útválasztási táblákat.", - "settings.troubleshooting.upload.label": "Csomag feltöltése a NetBird szerverekre", - "settings.troubleshooting.upload.help": "Biztonságosan feltölti a csomagot, és visszaad egy feltöltési kulcsot. Ossza meg a kulcsot a NetBird támogatással a GitHubon vagy Slacken keresztül a fájl közvetlen csatolása helyett.", - "settings.troubleshooting.trace.label": "Trace naplók rögzítése", - "settings.troubleshooting.trace.help": "TRACE szintre emeli a naplózást, és újraindítja a NetBird kapcsolatot a kapcsolati naplók rögzítéséhez. Az előző szint a csomag elkészülte után visszaáll.", - "settings.troubleshooting.duration.label": "Rögzítés időtartama", - "settings.troubleshooting.duration.help": "Mennyi ideig rögzítse a trace naplókat a csomag elkészítése előtt.", - "settings.troubleshooting.duration.suffix": "perc", - "settings.troubleshooting.create": "Csomag létrehozása", - "settings.troubleshooting.progress.description": "Naplók, rendszerinformációk és kapcsolati állapot gyűjtése folyamatban. Általában néhány pillanatot vesz igénybe — tartsa nyitva ezt az ablakot a befejezésig.", - "settings.troubleshooting.cancelling": "Megszakítás…", - "settings.troubleshooting.done.uploadedTitle": "A hibakeresési csomag feltöltése sikeres!", - "settings.troubleshooting.done.savedTitle": "Csomag elmentve", - "settings.troubleshooting.done.uploadedDescription": "Ossza meg az alábbi feltöltési kulcsot a NetBird támogatással. A helyi másolat is elmentve van az eszközén.", - "settings.troubleshooting.done.savedDescription": "A hibakeresési csomag helyileg elmentve.", - "settings.troubleshooting.done.copyKey": "Kulcs másolása", - "settings.troubleshooting.done.openFolder": "Mappa megnyitása", - "settings.troubleshooting.done.openFileLocation": "Fájl helyének megnyitása", - "settings.troubleshooting.uploadFailedWithReason": "Feltöltés sikertelen: {reason} A csomag továbbra is el van mentve helyileg.", - "settings.troubleshooting.uploadFailed": "Feltöltés sikertelen. A csomag továbbra is el van mentve helyileg.", - "settings.troubleshooting.stage.preparingTrace": "Váltás trace naplózásra…", - "settings.troubleshooting.stage.reconnecting": "NetBird újracsatlakoztatása…", - "settings.troubleshooting.stage.capturing": "Naplók rögzítése — {elapsed} / {total}", - "settings.troubleshooting.stage.restoring": "Korábbi napló szint visszaállítása…", - "settings.troubleshooting.stage.bundling": "Hibakeresési csomag generálása…", - "settings.troubleshooting.stage.uploading": "Feltöltés a NetBirdhöz…", - "settings.troubleshooting.stage.cancelling": "Megszakítás…", - - "settings.about.client": "NetBird Kliens v{version}", - "settings.about.clientName": "NetBird Kliens", - "settings.about.development": "[Fejlesztés]", - "settings.about.gui": "Felület v{version}", - "settings.about.guiName": "Felület", - "settings.about.copyright": "© {year} NetBird. Minden jog fenntartva.", - "settings.about.links.imprint": "Impresszum", - "settings.about.links.privacy": "Adatvédelem", - "settings.about.links.cla": "CLA", - "settings.about.links.terms": "Felhasználási feltételek", - "settings.about.community.github": "GitHub", - "settings.about.community.slack": "Slack", - "settings.about.community.forum": "Fórum", - "settings.about.community.documentation": "Dokumentáció", - "settings.about.community.feedback": "Visszajelzés", - - "update.banner.message": "A NetBird {version} telepítésre kész.", - "update.banner.later": "Később", - "update.banner.installNow": "Telepítés most", - "update.card.versionAvailableDownload": "A {version} verzió letöltésre elérhető.", - "update.card.versionAvailableInstall": "A {version} verzió telepítésre elérhető.", - "update.card.whatsNew": "Mi az újdonság?", - "update.card.installNow": "Telepítés most", - "update.card.getInstaller": "Letöltés", - "update.card.autoCheckInterval": "A NetBird a háttérben keres frissítéseket.", - "update.card.changelog": "Változásnapló", - "update.card.onLatestVersion": "A legfrissebb verziót használod", - "update.header.tooltip": "Frissítés elérhető", - "update.overlay.updatingVersion": "NetBird frissítése a következőre: v{version}", - "update.overlay.updating": "NetBird frissítése", - "update.overlay.description": "Egy újabb verzió elérhető és települ. A NetBird automatikusan újraindul a frissítés befejeztével.", - "update.overlay.error.timeoutTitle": "A frissítés túl sokáig tart", - "update.overlay.error.timeoutDescription": "A(z) {target} telepítése túl sokáig tartott, és nem fejeződött be.", - "update.overlay.error.canceledTitle": "A frissítés megszakítva", - "update.overlay.error.canceledDescription": "A(z) {target} frissítését megszakították a befejezés előtt.", - "update.overlay.error.failTitle": "A frissítés nem telepíthető", - "update.overlay.error.failDescription": "A(z) {target} nem volt telepíthető.", - "update.overlay.error.unknownMessage": "ismeretlen hiba", - "update.overlay.error.targetVersion": "v{version}", - "update.overlay.error.targetFallback": "az új verzió", - "update.error.loadStateTitle": "Frissítési állapot betöltése sikertelen", - "update.error.triggerTitle": "Frissítés indítása sikertelen", - - "update.page.versionLine": "Kliens frissítése erre: {version}.", - "update.page.versionLineGeneric": "Kliens frissítése.", - "update.page.outdated": "Az Ön kliensverziója régebbi, mint a Managementben beállított automatikus frissítési verzió.", - "update.page.status.running": "Frissítés", - "update.page.status.timeout": "A frissítés időtúllépés miatt megszakadt. Kérjük, próbálja újra.", - "update.page.status.canceled": "Frissítés megszakítva.", - "update.page.status.failed": "Frissítés sikertelen: {message}", - "update.page.status.unknownError": "ismeretlen frissítési hiba", - "update.page.failedTitle": "Frissítés sikertelen", - "update.page.timeoutMessage": "Frissítés időtúllépés.", - "update.page.dontClose": "Kérjük, ne zárja be ezt az ablakot.", - "update.page.updating": "Frissítés…", - "update.page.complete": "Frissítés kész", - "update.page.failed": "Frissítés sikertelen", - - "window.title.settings": "Beállítások", - "window.title.signIn": "Bejelentkezés", - "window.title.sessionExpiration": "Munkamenet lejár", - "window.title.updating": "Frissítés", - "window.title.welcome": "Üdvözli a NetBird", - "window.title.error": "Hiba", - - "welcome.title": "Keresse a NetBirdöt a tálcán", - "welcome.description": "A NetBird a tálcán fut. Kattintson az ikonra a csatlakozáshoz, profilváltáshoz vagy a beállítások megnyitásához.", - "welcome.continue": "Folytatás", - "welcome.back": "Vissza", - "welcome.management.title": "NetBird beállítása", - "welcome.management.description": "Kattintson a Folytatás gombra a kezdéshez, vagy válassza a Self-hosted lehetőséget, ha saját NetBird-szervere van.", - "welcome.management.cloud.title": "NetBird Cloud", - "welcome.management.cloud.description": "Használja az általunk üzemeltetett szolgáltatást. Nincs szükség beállításra.", - "welcome.management.selfHosted.title": "Saját üzemeltetésű", - "welcome.management.selfHosted.description": "Csatlakozás a saját menedzsmentszerveréhez.", - "welcome.management.urlLabel": "Menedzsmentszerver URL", - "welcome.management.urlPlaceholder": "https://netbird.selfhosted.com:443", - "welcome.management.urlInvalid": "Adjon meg egy érvényes URL-t, pl. https://netbird.selfhosted.com:443", - "welcome.management.urlUnreachable": "A szerver nem érhető el. Ellenőrizze az URL-t vagy a hálózatot, majd folytassa, ha biztos benne, hogy helyes.", - "welcome.management.checking": "Ellenőrzés…", - - "browserLogin.title": "Folytassa a böngészőben a bejelentkezés befejezéséhez", - "browserLogin.notSeeing": "Nem látja a böngésző fülét?", - "browserLogin.tryAgain": "Próbálja újra", - "browserLogin.openFailedTitle": "A böngésző megnyitása sikertelen", - - "sessionExpiration.title": "A munkamenet hamarosan lejár", - "sessionExpiration.titleLater": "A munkamenete lejár", - "sessionExpiration.description": "Az eszköz hamarosan lecsatlakozik. Megújításhoz böngészős bejelentkezés kell.", - "sessionExpiration.descriptionLater": "Egy böngészős bejelentkezés a hálózaton tartja az eszközt.", - "sessionExpiration.stay": "Munkamenet megújítása", - "sessionExpiration.authenticate": "Bejelentkezés", - "sessionExpiration.logout": "Kijelentkezés", - "sessionExpiration.expired": "Munkamenet lejárt", - "sessionExpiration.expiredDescription": "Eszköz lecsatlakozott. Hitelesítés böngészős bejelentkezéssel az újracsatlakozáshoz.", - "sessionExpiration.close": "Bezárás", - "sessionExpiration.extendFailedTitle": "A munkamenet meghosszabbítása sikertelen", - "sessionExpiration.logoutFailedTitle": "Kijelentkezés sikertelen", - - "peers.search.placeholder": "Keresés név vagy IP alapján", - "peers.filter.all": "Összes", - "peers.filter.online": "Online", - "peers.filter.offline": "Offline", - "peers.empty.title": "Nincs elérhető társ", - "peers.empty.description": "Önnek vagy nincsenek elérhető társai vagy nincs hozzáférése egyikhez sem.", - "peers.details.domain": "Domain", - "peers.details.netbirdIp": "NetBird IP", - "peers.details.netbirdIpv6": "NetBird IPv6", - "peers.details.publicKey": "Publikus kulcs", - "peers.details.connection": "Kapcsolat", - "peers.details.latency": "Késleltetés", - "peers.details.lastHandshake": "Utolsó kézfogás", - "peers.details.statusSince": "Utolsó kapcsolati frissítés", - "peers.details.bytes": "Bájtok", - "peers.details.bytesSent": "Küldve", - "peers.details.bytesReceived": "Fogadva", - "peers.details.localIce": "Helyi ICE", - "peers.details.remoteIce": "Távoli ICE", - "peers.details.never": "Soha", - "peers.details.justNow": "Épp most", - "peers.details.refresh": "Frissítés", - "peers.status.connected": "Csatlakozva", - "peers.status.connecting": "Csatlakozás", - "peers.status.disconnected": "Lecsatlakozva", - "peers.details.relayAddress": "Relay", - "peers.details.networks": "Erőforrások", - "peers.details.relayed": "Relayed", - "peers.details.p2p": "P2P", - "peers.details.rosenpass": "Rosenpass engedélyezve", - - "networks.search.placeholder": "Keresés hálózat vagy domain alapján", - "networks.filter.all": "Összes", - "networks.filter.active": "Aktív", - "networks.filter.overlapping": "Átfedő", - "networks.empty.title": "Nincs elérhető erőforrás", - "networks.empty.description": "Önnek vagy nincsenek elérhető hálózati erőforrásai vagy nincs hozzáférése egyikhez sem.", - "networks.selected": "Kiválasztva", - "networks.unselected": "Nincs kiválasztva", - "networks.ips.heading": "Feloldott IP-címek", - "networks.bulk.selectionCount": "{selected} / {total} aktív", - "networks.bulk.enableAll": "Összes engedélyezése", - "networks.bulk.disableAll": "Összes letiltása", - - "exitNodes.search.placeholder": "Keresés a kilépő csomópontok között", - "exitNodes.none": "Egyik sem", - "exitNodes.empty.title": "Nincs elérhető kilépő csomópont", - "exitNodes.empty.description": "Ehhez a társhoz nem osztottak meg kilépő csomópontokat.", - "exitNodes.card.title": "Kilépő csomópont", - "exitNodes.card.statusActive": "Aktív", - "exitNodes.card.statusInactive": "Inaktív", - "exitNodes.dropdown.noneTitle": "Egyik sem", - "exitNodes.dropdown.noneDescription": "Közvetlen kapcsolat kilépő csomópont nélkül", - - "quickActions.connect": "Csatlakozás", - "quickActions.disconnect": "Bontás", - - "daemon.unavailable.title": "A NetBird szolgáltatás nem fut", - "daemon.unavailable.description": "Az alkalmazás automatikusan újracsatlakozik, amint a szolgáltatás újra elérhető.", - "daemon.unavailable.docsLink": "Dokumentáció", - - "error.jwt_clock_skew": "A bejelentkezés sikertelen: az eszköz órája eltér a szerverétől. Kérjük, szinkronizálja a rendszer óráját, majd próbálja újra.", - "error.jwt_expired": "A bejelentkezési token lejárt. Kérjük, jelentkezzen be újra.", - "error.jwt_signature_invalid": "A bejelentkezés sikertelen: a token aláírása érvénytelen. Kérjük, lépjen kapcsolatba a rendszergazdával.", - "error.session_expired": "A munkamenet lejárt. Kérjük, jelentkezzen be újra.", - "error.invalid_setup_key": "A telepítési kulcs hiányzik vagy érvénytelen.", - "error.permission_denied": "A szerver elutasította a bejelentkezést.", - "error.daemon_unreachable": "A NetBird szolgáltatás nem válaszol. Kérjük, ellenőrizze, hogy fut-e a szolgáltatás.", - "error.unknown": "A művelet meghiúsult." + "tray.tooltip": { + "message": "NetBird" + }, + "tray.status.disconnected": { + "message": "Lekapcsolva" + }, + "tray.status.daemonUnavailable": { + "message": "Nem fut" + }, + "tray.status.error": { + "message": "Hiba" + }, + "tray.status.connected": { + "message": "Kapcsolódva" + }, + "tray.status.connecting": { + "message": "Kapcsolódás" + }, + "tray.status.needsLogin": { + "message": "Bejelentkezés szükséges" + }, + "tray.status.loginFailed": { + "message": "Sikertelen bejelentkezés" + }, + "tray.status.sessionExpired": { + "message": "Munkamenet lejárt" + }, + "tray.session.expiresIn": { + "message": "Munkamenet lejár {remaining} múlva" + }, + "tray.session.unit.lessThanMinute": { + "message": "egy percnél kevesebb" + }, + "tray.session.unit.minute": { + "message": "1 perc" + }, + "tray.session.unit.minutes": { + "message": "{count} perc" + }, + "tray.session.unit.hour": { + "message": "1 óra" + }, + "tray.session.unit.hours": { + "message": "{count} óra" + }, + "tray.session.unit.day": { + "message": "1 nap" + }, + "tray.session.unit.days": { + "message": "{count} nap" + }, + "tray.menu.open": { + "message": "NetBird megnyitása" + }, + "tray.menu.connect": { + "message": "Csatlakozás" + }, + "tray.menu.disconnect": { + "message": "Bontás" + }, + "tray.menu.exitNode": { + "message": "Kilépő csomópont" + }, + "tray.menu.networks": { + "message": "Erőforrások" + }, + "tray.menu.profiles": { + "message": "Profilok" + }, + "tray.menu.manageProfiles": { + "message": "Profilok kezelése" + }, + "tray.menu.settings": { + "message": "Beállítások..." + }, + "tray.menu.debugBundle": { + "message": "Hibakeresési csomag készítése" + }, + "tray.menu.about": { + "message": "Súgó és támogatás" + }, + "tray.menu.github": { + "message": "GitHub" + }, + "tray.menu.documentation": { + "message": "Dokumentáció" + }, + "tray.menu.troubleshoot": { + "message": "Hibakeresés" + }, + "tray.menu.downloadLatest": { + "message": "Legfrissebb verzió letöltése" + }, + "tray.menu.installVersion": { + "message": "{version} verzió telepítése" + }, + "tray.menu.guiVersion": { + "message": "Felület: {version}" + }, + "tray.menu.daemonVersion": { + "message": "Daemon: {version}" + }, + "tray.menu.versionUnknown": { + "message": "—" + }, + "tray.menu.quit": { + "message": "NetBird bezárása" + }, + "notify.update.title": { + "message": "NetBird frissítés elérhető" + }, + "notify.update.body": { + "message": "Elérhető a NetBird {version}." + }, + "notify.update.enforcedSuffix": { + "message": " A rendszergazda kötelezővé tette ezt a frissítést." + }, + "notify.error.title": { + "message": "Hiba" + }, + "notify.error.connect": { + "message": "Csatlakozás sikertelen" + }, + "notify.error.disconnect": { + "message": "Bontás sikertelen" + }, + "notify.error.switchProfile": { + "message": "Átváltás sikertelen erre: {profile}" + }, + "notify.error.exitNode": { + "message": "A kilépő csomópont frissítése sikertelen: {name}" + }, + "notify.sessionExpired.title": { + "message": "NetBird munkamenet lejárt" + }, + "notify.sessionExpired.body": { + "message": "A NetBird munkamenet lejárt. Kérjük, jelentkezzen be újra." + }, + "notify.sessionWarning.title": { + "message": "Munkamenet hamarosan lejár" + }, + "notify.sessionWarning.body": { + "message": "A NetBird munkamenet {remaining} múlva lejár. Kattints a Meghosszabbítás gombra a megújításhoz." + }, + "notify.sessionWarning.bodyGeneric": { + "message": "A NetBird munkamenet hamarosan lejár. Kattints a Meghosszabbítás gombra a megújításhoz." + }, + "notify.sessionWarning.extend": { + "message": "Meghosszabbítás" + }, + "notify.sessionWarning.dismiss": { + "message": "Elvetés" + }, + "notify.sessionWarning.failed": { + "message": "A NetBird munkamenet meghosszabbítása sikertelen" + }, + "notify.sessionWarning.successTitle": { + "message": "NetBird munkamenet meghosszabbítva" + }, + "notify.sessionWarning.successBody": { + "message": "A munkamenet frissítve." + }, + "notify.sessionDeadlineRejected.title": { + "message": "Munkamenet-határidő elutasítva" + }, + "notify.sessionDeadlineRejected.body": { + "message": "A szerver érvénytelen munkamenet-határidőt küldött. Kérjük, jelentkezzen be újra." + }, + "common.cancel": { + "message": "Mégse" + }, + "common.save": { + "message": "Mentés" + }, + "common.saveChanges": { + "message": "Módosítások mentése" + }, + "common.saving": { + "message": "Mentés…" + }, + "common.close": { + "message": "Bezárás" + }, + "common.copy": { + "message": "Másolás" + }, + "common.togglePasswordVisibility": { + "message": "Jelszó láthatóságának váltása" + }, + "common.increase": { + "message": "Növelés" + }, + "common.decrease": { + "message": "Csökkentés" + }, + "common.delete": { + "message": "Törlés" + }, + "common.create": { + "message": "Létrehozás" + }, + "common.add": { + "message": "Hozzáadás" + }, + "common.remove": { + "message": "Eltávolítás" + }, + "common.refresh": { + "message": "Frissítés" + }, + "common.loading": { + "message": "Betöltés…" + }, + "common.netbird": { + "message": "NetBird" + }, + "common.noResults.title": { + "message": "Nincs találat" + }, + "common.noResults.description": { + "message": "Nem találtunk eredményt. Próbáljon meg másik keresési kifejezést, vagy módosítsa a szűrőket." + }, + "notConnected.title": { + "message": "Lecsatlakozva" + }, + "notConnected.description": { + "message": "Csatlakozz először a NetBirdhöz, hogy részletes információkat láthass a társakról, hálózati erőforrásokról és kilépő csomópontokról." + }, + "connect.status.disconnected": { + "message": "Lekapcsolva" + }, + "connect.status.connecting": { + "message": "Csatlakozás…" + }, + "connect.status.connected": { + "message": "Csatlakoztatva" + }, + "connect.status.disconnecting": { + "message": "Bontás…" + }, + "connect.status.daemonUnavailable": { + "message": "Daemon nem elérhető" + }, + "connect.status.loginRequired": { + "message": "Bejelentkezés szükséges" + }, + "connect.error.loginTitle": { + "message": "Bejelentkezés sikertelen" + }, + "connect.error.connectTitle": { + "message": "Csatlakozás sikertelen" + }, + "connect.error.disconnectTitle": { + "message": "Bontás sikertelen" + }, + "nav.peers.title": { + "message": "Társak" + }, + "nav.peers.description": { + "message": "{connected} / {total} csatlakoztatva" + }, + "nav.resources.title": { + "message": "Erőforrások" + }, + "nav.resources.description": { + "message": "{active} / {total} aktív" + }, + "nav.exitNode.title": { + "message": "Kilépő csomópontok" + }, + "nav.exitNode.none": { + "message": "Nem aktív" + }, + "nav.exitNode.using": { + "message": "Ezen át: {name}" + }, + "header.openSettings": { + "message": "Beállítások megnyitása" + }, + "header.togglePanel": { + "message": "Oldalsó panel váltása" + }, + "header.menu.settings": { + "message": "Beállítások…" + }, + "header.menu.defaultView": { + "message": "Alapnézet" + }, + "header.menu.advancedView": { + "message": "Speciális nézet" + }, + "header.menu.updateAvailable": { + "message": "Frissítés elérhető" + }, + "profile.selector.loading": { + "message": "Betöltés…" + }, + "profile.selector.noProfile": { + "message": "Nincs profil" + }, + "profile.selector.searchPlaceholder": { + "message": "Profil keresése név alapján…" + }, + "profile.selector.emptyTitle": { + "message": "Nem található profil" + }, + "profile.selector.emptyDescription": { + "message": "Próbáljon más keresőkifejezést, vagy hozzon létre új profilt." + }, + "profile.selector.newProfile": { + "message": "Új profil" + }, + "profile.selector.moreOptions": { + "message": "További műveletek" + }, + "profile.selector.deregister": { + "message": "Leválasztás" + }, + "profile.selector.delete": { + "message": "Profil törlése" + }, + "profile.selector.switchTo": { + "message": "Váltás erre a profilra" + }, + "profile.dropdown.activeProfile": { + "message": "Aktív profil" + }, + "profile.dropdown.switchProfile": { + "message": "Profilváltás" + }, + "profile.dropdown.noEmail": { + "message": "Egyéb" + }, + "profile.dropdown.addProfile": { + "message": "Profil hozzáadása" + }, + "profile.dropdown.manageProfiles": { + "message": "Profilok kezelése" + }, + "profile.dropdown.settings": { + "message": "Beállítások" + }, + "profile.dialog.title": { + "message": "Új profil" + }, + "profile.dialog.nameLabel": { + "message": "Profilnév" + }, + "profile.dialog.description": { + "message": "Adjon profiljának egy könnyen azonosítható nevet." + }, + "profile.dialog.placeholder": { + "message": "pl. Munka" + }, + "profile.dialog.required": { + "message": "Adjon meg egy profilnevet, pl. Munka, Otthon" + }, + "profile.dialog.submit": { + "message": "Profil hozzáadása" + }, + "profile.dialog.managementHelp": { + "message": "NetBird Cloud vagy saját kiszolgáló." + }, + "profile.dialog.urlUnreachable": { + "message": "A szerver nem érhető el. Ellenőrizze az URL-t, vagy adja hozzá a profilt, ha biztos benne, hogy helyes." + }, + "profile.switch.title": { + "message": "Váltás a(z) \"{name}\" profilra?" + }, + "profile.switch.message": { + "message": "Biztosan profilt szeretne váltani?\nAz aktuális profilja le lesz választva." + }, + "profile.switch.confirm": { + "message": "Megerősítés" + }, + "profile.deregister.title": { + "message": "\"{name}\" profil leválasztása?" + }, + "profile.deregister.message": { + "message": "Biztosan le szeretné választani ezt a profilt?\nÚjra be kell jelentkeznie a használatához." + }, + "profile.deregister.confirm": { + "message": "Leválasztás" + }, + "profile.delete.title": { + "message": "\"{name}\" profil törlése?" + }, + "profile.delete.message": { + "message": "Biztosan törölni szeretné ezt a profilt?\nEz a művelet nem vonható vissza." + }, + "profile.delete.disabledActive": { + "message": "Aktív profilok nem törölhetők. Váltson másik profilra, mielőtt törölné ezt." + }, + "profile.delete.disabledDefault": { + "message": "Az alapértelmezett profil nem törölhető." + }, + "profile.error.switchTitle": { + "message": "Profilváltás sikertelen" + }, + "profile.error.deregisterTitle": { + "message": "Leválasztás sikertelen" + }, + "profile.error.deleteTitle": { + "message": "Profil törlése sikertelen" + }, + "profile.error.createTitle": { + "message": "Profil létrehozása sikertelen" + }, + "profile.error.loadTitle": { + "message": "Profilok betöltése sikertelen" + }, + "settings.error.loadTitle": { + "message": "Beállítások betöltése sikertelen" + }, + "settings.error.saveTitle": { + "message": "Beállítások mentése sikertelen" + }, + "settings.error.debugBundleTitle": { + "message": "Hibakeresési csomag sikertelen" + }, + "settings.tabs.general": { + "message": "Általános" + }, + "settings.tabs.network": { + "message": "Hálózat" + }, + "settings.tabs.security": { + "message": "Biztonság" + }, + "settings.tabs.ssh": { + "message": "SSH" + }, + "settings.tabs.profiles": { + "message": "Profilok" + }, + "settings.tabs.advanced": { + "message": "Speciális" + }, + "settings.tabs.troubleshooting": { + "message": "Hibaelhárítás" + }, + "settings.tabs.about": { + "message": "Névjegy" + }, + "settings.tabs.updateAvailable": { + "message": "Frissítés elérhető" + }, + "settings.profiles.section.profiles": { + "message": "Profilok" + }, + "settings.profiles.intro": { + "message": "Tartson külön NetBird-identitásokat egymás mellett, például munkahelyi és személyes fiókokat, vagy különböző kezelőszervereket. Lent hozzáadhat, leválaszthat vagy törölhet profilokat." + }, + "settings.profiles.addProfile": { + "message": "Profil hozzáadása" + }, + "settings.profiles.active": { + "message": "Aktív" + }, + "settings.profiles.emptyTitle": { + "message": "Nincsenek profilok" + }, + "settings.profiles.emptyDescription": { + "message": "Hozzon létre egy profilt a NetBird kezelőszerverhez való csatlakozáshoz." + }, + "settings.general.section.general": { + "message": "Általános" + }, + "settings.general.section.connection": { + "message": "Kapcsolat" + }, + "settings.general.connectOnStartup.label": { + "message": "Csatlakozás indításkor" + }, + "settings.general.connectOnStartup.help": { + "message": "A szolgáltatás indulásakor automatikusan kapcsolatot létesít." + }, + "settings.general.notifications.label": { + "message": "Asztali értesítések" + }, + "settings.general.notifications.help": { + "message": "Asztali értesítések megjelenítése új frissítésekről és kapcsolati eseményekről." + }, + "settings.general.autostart.label": { + "message": "NetBird UI indítása bejelentkezéskor" + }, + "settings.general.autostart.help": { + "message": "A NetBird felület automatikus indítása bejelentkezéskor. Ez csak a grafikus felületet érinti, a háttérszolgáltatást nem." + }, + "settings.general.autostart.errorTitle": { + "message": "Az automatikus indítás módosítása sikertelen" + }, + "settings.general.language.label": { + "message": "Megjelenítési nyelv" + }, + "settings.general.language.help": { + "message": "Válassza ki a NetBird felület nyelvét." + }, + "settings.general.language.search": { + "message": "Nyelv keresése…" + }, + "settings.general.language.empty": { + "message": "Nincs találat." + }, + "settings.general.management.label": { + "message": "Kezelőszerver" + }, + "settings.general.management.help": { + "message": "Csatlakozás a NetBird Cloudhoz vagy saját self-hosted kezelőszerverhez. A módosítások újracsatlakozást váltanak ki." + }, + "settings.general.management.cloud": { + "message": "Felhő" + }, + "settings.general.management.selfHosted": { + "message": "Saját üzemeltetésű" + }, + "settings.general.management.urlPlaceholder": { + "message": "https://netbird.selfhosted.com:443" + }, + "settings.general.management.urlError": { + "message": "Adjon meg egy érvényes URL-t, pl. https://netbird.selfhosted.com:443" + }, + "settings.general.management.urlUnreachable": { + "message": "A szerver nem érhető el. Ellenőrizze az URL-t, vagy mentse el, ha biztos benne, hogy helyes." + }, + "settings.general.management.switchCloudTitle": { + "message": "Átváltás a NetBird Cloudra?" + }, + "settings.general.management.switchCloudMessage": { + "message": "Ez leválasztja a saját üzemeltetésű kiszolgálót.\nLehet, hogy újra be kell jelentkeznie." + }, + "settings.general.management.switchCloudConfirm": { + "message": "Váltás a felhőre" + }, + "settings.network.section.connectivity": { + "message": "Kapcsolódás" + }, + "settings.network.section.routingDns": { + "message": "Útválasztás és DNS" + }, + "settings.network.lazy.label": { + "message": "Késleltetett kapcsolatok" + }, + "settings.network.lazy.help": { + "message": "Állandó kapcsolatok fenntartása helyett a NetBird igény szerint, aktivitás vagy jelzés alapján aktiválja azokat." + }, + "settings.network.monitor.label": { + "message": "Újracsatlakozás hálózatváltáskor" + }, + "settings.network.monitor.help": { + "message": "A hálózat figyelése és automatikus újracsatlakozás változások (pl. Wi-Fi-váltás, Ethernet-változás vagy alvó állapotból való visszatérés) esetén." + }, + "settings.network.dns.label": { + "message": "DNS engedélyezése" + }, + "settings.network.dns.help": { + "message": "A NetBird által kezelt DNS-beállítások alkalmazása a gazda DNS-feloldójára." + }, + "settings.network.clientRoutes.label": { + "message": "Kliens útvonalak engedélyezése" + }, + "settings.network.clientRoutes.help": { + "message": "Más társak útvonalainak elfogadása az ő hálózataik eléréséhez." + }, + "settings.network.serverRoutes.label": { + "message": "Szerver útvonalak engedélyezése" + }, + "settings.network.serverRoutes.help": { + "message": "Ennek a gazdának a helyi útvonalainak meghirdetése más társak számára." + }, + "settings.network.ipv6.label": { + "message": "IPv6 engedélyezése" + }, + "settings.network.ipv6.help": { + "message": "IPv6-címzés használata a NetBird overlay hálózathoz." + }, + "settings.security.section.firewall": { + "message": "Tűzfal" + }, + "settings.security.section.encryption": { + "message": "Titkosítás" + }, + "settings.security.blockInbound.label": { + "message": "Bejövő forgalom blokkolása" + }, + "settings.security.blockInbound.help": { + "message": "Visszautasítja a társaktól érkező nem kért kapcsolatokat ezen eszközhöz és az általa irányított hálózatokhoz. A kimenő forgalmat nem érinti." + }, + "settings.security.blockLan.label": { + "message": "LAN-hozzáférés blokkolása" + }, + "settings.security.blockLan.help": { + "message": "Megakadályozza, hogy a társak elérjék a helyi hálózatot vagy annak eszközeit, amikor ez az eszköz irányítja a forgalmukat." + }, + "settings.security.rosenpass.label": { + "message": "Kvantumellenálló titkosítás engedélyezése" + }, + "settings.security.rosenpass.help": { + "message": "Post-kvantum kulcscsere hozzáadása Rosenpass segítségével a WireGuard® tetejére." + }, + "settings.security.rosenpassPermissive.label": { + "message": "Engedékeny mód engedélyezése" + }, + "settings.security.rosenpassPermissive.help": { + "message": "Kapcsolatok engedélyezése kvantumellenálló titkosítás nélküli társakkal." + }, + "settings.ssh.section.server": { + "message": "Szerver" + }, + "settings.ssh.section.capabilities": { + "message": "Képességek" + }, + "settings.ssh.section.authentication": { + "message": "Hitelesítés" + }, + "settings.ssh.server.label": { + "message": "SSH szerver engedélyezése" + }, + "settings.ssh.server.help": { + "message": "Futtassa a NetBird SSH szervert ezen a gazdán, hogy más társak csatlakozhassanak." + }, + "settings.ssh.root.label": { + "message": "Root bejelentkezés engedélyezése" + }, + "settings.ssh.root.help": { + "message": "Társak bejelentkezhetnek root felhasználóként. Tiltsa le, ha nem privilegizált fiók szükséges." + }, + "settings.ssh.sftp.label": { + "message": "SFTP engedélyezése" + }, + "settings.ssh.sftp.help": { + "message": "Fájlok biztonságos átvitele natív SFTP- vagy SCP-kliensekkel." + }, + "settings.ssh.localForward.label": { + "message": "Helyi porttovábbítás" + }, + "settings.ssh.localForward.help": { + "message": "A csatlakozó társak helyi portokat alagútba helyezhetnek erről a gazdáról elérhető szolgáltatásokhoz." + }, + "settings.ssh.remoteForward.label": { + "message": "Távoli porttovábbítás" + }, + "settings.ssh.remoteForward.help": { + "message": "A csatlakozó társak ezen a gazdán lévő portokat tehetnek elérhetővé a saját gépük számára." + }, + "settings.ssh.jwt.label": { + "message": "JWT-hitelesítés engedélyezése" + }, + "settings.ssh.jwt.help": { + "message": "Minden SSH-munkamenet ellenőrzése az IdP-vel a felhasználói identitás és audit céljából. Tiltsa le, ha csak a hálózati ACL-szabályokra kíván támaszkodni — hasznos, ha nincs elérhető IdP." + }, + "settings.ssh.jwtTtl.label": { + "message": "JWT gyorsítótár TTL" + }, + "settings.ssh.jwtTtl.help": { + "message": "Mennyi ideig őrzi meg a kliens a JWT-t, mielőtt újra kérné a kimenő SSH-kapcsolatoknál. 0 érték esetén a gyorsítótárazás kikapcsol, és minden kapcsolatnál hitelesít." + }, + "settings.ssh.jwtTtl.suffix": { + "message": "másodperc" + }, + "settings.advanced.section.interface": { + "message": "Interfész" + }, + "settings.advanced.section.security": { + "message": "Biztonság" + }, + "settings.advanced.interfaceName.label": { + "message": "Név" + }, + "settings.advanced.interfaceName.error": { + "message": "Használj 1–15 betűt, számot, pontot, kötőjelet vagy aláhúzást." + }, + "settings.advanced.interfaceName.errorMac": { + "message": "„utun” után számmal kezdődjön (pl. utun100)." + }, + "settings.advanced.port.label": { + "message": "Port" + }, + "settings.advanced.port.error": { + "message": "Adj meg egy portot {min} és {max} között." + }, + "settings.advanced.port.help": { + "message": "Ha 0-ra állítod, egy véletlenszerű szabad portot használ." + }, + "settings.advanced.mtu.label": { + "message": "MTU" + }, + "settings.advanced.mtu.error": { + "message": "Adj meg egy MTU értéket {min} és {max} között." + }, + "settings.advanced.psk.label": { + "message": "Pre-shared kulcs" + }, + "settings.advanced.psk.help": { + "message": "Opcionális WireGuard PSK további szimmetrikus titkosításhoz. Nem azonos a NetBird telepítőkulccsal. Csak olyan társakkal kommunikál, akik ugyanazt a pre-shared kulcsot használják." + }, + "settings.troubleshooting.section.title": { + "message": "Hibakeresési csomag" + }, + "settings.troubleshooting.intro": { + "message": "A hibakeresési csomag segít a NetBird támogatásnak a kapcsolati problémák kivizsgálásában.
Egy .zip fájl, amely naplókat, rendszerinformációkat és hibakeresési adatokat tartalmaz az eszközéről." + }, + "settings.troubleshooting.anonymize.label": { + "message": "Érzékeny információk anonimizálása" + }, + "settings.troubleshooting.anonymize.help": { + "message": "Elrejti a nyilvános IP-címeket és a nem-NetBird tartományokat a naplókban." + }, + "settings.troubleshooting.systemInfo.label": { + "message": "Rendszerinformációk beillesztése" + }, + "settings.troubleshooting.systemInfo.help": { + "message": "Tartalmazza az OS-t, a kernelt, a hálózati interfészeket és az útválasztási táblákat." + }, + "settings.troubleshooting.upload.label": { + "message": "Csomag feltöltése a NetBird szerverekre" + }, + "settings.troubleshooting.upload.help": { + "message": "Biztonságosan feltölti a csomagot, és visszaad egy feltöltési kulcsot. Ossza meg a kulcsot a NetBird támogatással a GitHubon vagy Slacken keresztül a fájl közvetlen csatolása helyett." + }, + "settings.troubleshooting.trace.label": { + "message": "Trace naplók rögzítése" + }, + "settings.troubleshooting.trace.help": { + "message": "TRACE szintre emeli a naplózást, és újraindítja a NetBird kapcsolatot a kapcsolati naplók rögzítéséhez. Az előző szint a csomag elkészülte után visszaáll." + }, + "settings.troubleshooting.duration.label": { + "message": "Rögzítés időtartama" + }, + "settings.troubleshooting.duration.help": { + "message": "Mennyi ideig rögzítse a trace naplókat a csomag elkészítése előtt." + }, + "settings.troubleshooting.duration.suffix": { + "message": "perc" + }, + "settings.troubleshooting.create": { + "message": "Csomag létrehozása" + }, + "settings.troubleshooting.progress.description": { + "message": "Naplók, rendszerinformációk és kapcsolati állapot gyűjtése folyamatban. Általában néhány pillanatot vesz igénybe — tartsa nyitva ezt az ablakot a befejezésig." + }, + "settings.troubleshooting.cancelling": { + "message": "Megszakítás…" + }, + "settings.troubleshooting.done.uploadedTitle": { + "message": "A hibakeresési csomag feltöltése sikeres!" + }, + "settings.troubleshooting.done.savedTitle": { + "message": "Csomag elmentve" + }, + "settings.troubleshooting.done.uploadedDescription": { + "message": "Ossza meg az alábbi feltöltési kulcsot a NetBird támogatással. A helyi másolat is elmentve van az eszközén." + }, + "settings.troubleshooting.done.savedDescription": { + "message": "A hibakeresési csomag helyileg elmentve." + }, + "settings.troubleshooting.done.copyKey": { + "message": "Kulcs másolása" + }, + "settings.troubleshooting.done.openFolder": { + "message": "Mappa megnyitása" + }, + "settings.troubleshooting.done.openFileLocation": { + "message": "Fájl helyének megnyitása" + }, + "settings.troubleshooting.uploadFailedWithReason": { + "message": "Feltöltés sikertelen: {reason} A csomag továbbra is el van mentve helyileg." + }, + "settings.troubleshooting.uploadFailed": { + "message": "Feltöltés sikertelen. A csomag továbbra is el van mentve helyileg." + }, + "settings.troubleshooting.stage.preparingTrace": { + "message": "Váltás trace naplózásra…" + }, + "settings.troubleshooting.stage.reconnecting": { + "message": "NetBird újracsatlakoztatása…" + }, + "settings.troubleshooting.stage.capturing": { + "message": "Naplók rögzítése — {elapsed} / {total}" + }, + "settings.troubleshooting.stage.restoring": { + "message": "Korábbi napló szint visszaállítása…" + }, + "settings.troubleshooting.stage.bundling": { + "message": "Hibakeresési csomag generálása…" + }, + "settings.troubleshooting.stage.uploading": { + "message": "Feltöltés a NetBirdhöz…" + }, + "settings.troubleshooting.stage.cancelling": { + "message": "Megszakítás…" + }, + "settings.about.client": { + "message": "NetBird Kliens v{version}" + }, + "settings.about.clientName": { + "message": "NetBird Kliens" + }, + "settings.about.development": { + "message": "[Fejlesztés]" + }, + "settings.about.gui": { + "message": "Felület v{version}" + }, + "settings.about.guiName": { + "message": "Felület" + }, + "settings.about.copyright": { + "message": "© {year} NetBird. Minden jog fenntartva." + }, + "settings.about.links.imprint": { + "message": "Impresszum" + }, + "settings.about.links.privacy": { + "message": "Adatvédelem" + }, + "settings.about.links.cla": { + "message": "CLA" + }, + "settings.about.links.terms": { + "message": "Felhasználási feltételek" + }, + "settings.about.community.github": { + "message": "GitHub" + }, + "settings.about.community.slack": { + "message": "Slack" + }, + "settings.about.community.forum": { + "message": "Fórum" + }, + "settings.about.community.documentation": { + "message": "Dokumentáció" + }, + "settings.about.community.feedback": { + "message": "Visszajelzés" + }, + "update.banner.message": { + "message": "A NetBird {version} telepítésre kész." + }, + "update.banner.later": { + "message": "Később" + }, + "update.banner.installNow": { + "message": "Telepítés most" + }, + "update.card.versionAvailableDownload": { + "message": "A {version} verzió letöltésre elérhető." + }, + "update.card.versionAvailableInstall": { + "message": "A {version} verzió telepítésre elérhető." + }, + "update.card.whatsNew": { + "message": "Mi az újdonság?" + }, + "update.card.installNow": { + "message": "Telepítés most" + }, + "update.card.getInstaller": { + "message": "Letöltés" + }, + "update.card.autoCheckInterval": { + "message": "A NetBird a háttérben keres frissítéseket." + }, + "update.card.changelog": { + "message": "Változásnapló" + }, + "update.card.onLatestVersion": { + "message": "A legfrissebb verziót használod" + }, + "update.header.tooltip": { + "message": "Frissítés elérhető" + }, + "update.overlay.updatingVersion": { + "message": "NetBird frissítése a következőre: v{version}" + }, + "update.overlay.updating": { + "message": "NetBird frissítése" + }, + "update.overlay.description": { + "message": "Egy újabb verzió elérhető és települ. A NetBird automatikusan újraindul a frissítés befejeztével." + }, + "update.overlay.error.timeoutTitle": { + "message": "A frissítés túl sokáig tart" + }, + "update.overlay.error.timeoutDescription": { + "message": "A(z) {target} telepítése túl sokáig tartott, és nem fejeződött be." + }, + "update.overlay.error.canceledTitle": { + "message": "A frissítés megszakítva" + }, + "update.overlay.error.canceledDescription": { + "message": "A(z) {target} frissítését megszakították a befejezés előtt." + }, + "update.overlay.error.failTitle": { + "message": "A frissítés nem telepíthető" + }, + "update.overlay.error.failDescription": { + "message": "A(z) {target} nem volt telepíthető." + }, + "update.overlay.error.unknownMessage": { + "message": "ismeretlen hiba" + }, + "update.overlay.error.targetVersion": { + "message": "v{version}" + }, + "update.overlay.error.targetFallback": { + "message": "az új verzió" + }, + "update.error.loadStateTitle": { + "message": "Frissítési állapot betöltése sikertelen" + }, + "update.error.triggerTitle": { + "message": "Frissítés indítása sikertelen" + }, + "update.page.versionLine": { + "message": "Kliens frissítése erre: {version}." + }, + "update.page.versionLineGeneric": { + "message": "Kliens frissítése." + }, + "update.page.outdated": { + "message": "Az Ön kliensverziója régebbi, mint a Managementben beállított automatikus frissítési verzió." + }, + "update.page.status.running": { + "message": "Frissítés" + }, + "update.page.status.timeout": { + "message": "A frissítés időtúllépés miatt megszakadt. Kérjük, próbálja újra." + }, + "update.page.status.canceled": { + "message": "Frissítés megszakítva." + }, + "update.page.status.failed": { + "message": "Frissítés sikertelen: {message}" + }, + "update.page.status.unknownError": { + "message": "ismeretlen frissítési hiba" + }, + "update.page.failedTitle": { + "message": "Frissítés sikertelen" + }, + "update.page.timeoutMessage": { + "message": "Frissítés időtúllépés." + }, + "update.page.dontClose": { + "message": "Kérjük, ne zárja be ezt az ablakot." + }, + "update.page.updating": { + "message": "Frissítés…" + }, + "update.page.complete": { + "message": "Frissítés kész" + }, + "update.page.failed": { + "message": "Frissítés sikertelen" + }, + "window.title.settings": { + "message": "Beállítások" + }, + "window.title.signIn": { + "message": "Bejelentkezés" + }, + "window.title.sessionExpiration": { + "message": "Munkamenet lejár" + }, + "window.title.updating": { + "message": "Frissítés" + }, + "window.title.welcome": { + "message": "Üdvözli a NetBird" + }, + "window.title.error": { + "message": "Hiba" + }, + "welcome.title": { + "message": "Keresse a NetBirdöt a tálcán" + }, + "welcome.description": { + "message": "A NetBird a tálcán fut. Kattintson az ikonra a csatlakozáshoz, profilváltáshoz vagy a beállítások megnyitásához." + }, + "welcome.continue": { + "message": "Folytatás" + }, + "welcome.back": { + "message": "Vissza" + }, + "welcome.management.title": { + "message": "NetBird beállítása" + }, + "welcome.management.description": { + "message": "Kattintson a Folytatás gombra a kezdéshez, vagy válassza a Self-hosted lehetőséget, ha saját NetBird-szervere van." + }, + "welcome.management.cloud.title": { + "message": "NetBird Cloud" + }, + "welcome.management.cloud.description": { + "message": "Használja az általunk üzemeltetett szolgáltatást. Nincs szükség beállításra." + }, + "welcome.management.selfHosted.title": { + "message": "Saját üzemeltetésű" + }, + "welcome.management.selfHosted.description": { + "message": "Csatlakozás a saját menedzsmentszerveréhez." + }, + "welcome.management.urlLabel": { + "message": "Menedzsmentszerver URL" + }, + "welcome.management.urlPlaceholder": { + "message": "https://netbird.selfhosted.com:443" + }, + "welcome.management.urlInvalid": { + "message": "Adjon meg egy érvényes URL-t, pl. https://netbird.selfhosted.com:443" + }, + "welcome.management.urlUnreachable": { + "message": "A szerver nem érhető el. Ellenőrizze az URL-t vagy a hálózatot, majd folytassa, ha biztos benne, hogy helyes." + }, + "welcome.management.checking": { + "message": "Ellenőrzés…" + }, + "browserLogin.title": { + "message": "Folytassa a böngészőben a bejelentkezés befejezéséhez" + }, + "browserLogin.notSeeing": { + "message": "Nem látja a böngésző fülét?" + }, + "browserLogin.tryAgain": { + "message": "Próbálja újra" + }, + "browserLogin.openFailedTitle": { + "message": "A böngésző megnyitása sikertelen" + }, + "sessionExpiration.title": { + "message": "A munkamenet hamarosan lejár" + }, + "sessionExpiration.titleLater": { + "message": "A munkamenete lejár" + }, + "sessionExpiration.description": { + "message": "Az eszköz hamarosan lecsatlakozik. Megújításhoz böngészős bejelentkezés kell." + }, + "sessionExpiration.descriptionLater": { + "message": "Egy böngészős bejelentkezés a hálózaton tartja az eszközt." + }, + "sessionExpiration.stay": { + "message": "Munkamenet megújítása" + }, + "sessionExpiration.authenticate": { + "message": "Bejelentkezés" + }, + "sessionExpiration.logout": { + "message": "Kijelentkezés" + }, + "sessionExpiration.expired": { + "message": "Munkamenet lejárt" + }, + "sessionExpiration.expiredDescription": { + "message": "Eszköz lecsatlakozott. Hitelesítés böngészős bejelentkezéssel az újracsatlakozáshoz." + }, + "sessionExpiration.close": { + "message": "Bezárás" + }, + "sessionExpiration.extendFailedTitle": { + "message": "A munkamenet meghosszabbítása sikertelen" + }, + "sessionExpiration.logoutFailedTitle": { + "message": "Kijelentkezés sikertelen" + }, + "peers.search.placeholder": { + "message": "Keresés név vagy IP alapján" + }, + "peers.filter.all": { + "message": "Összes" + }, + "peers.filter.online": { + "message": "Online" + }, + "peers.filter.offline": { + "message": "Offline" + }, + "peers.empty.title": { + "message": "Nincs elérhető társ" + }, + "peers.empty.description": { + "message": "Önnek vagy nincsenek elérhető társai vagy nincs hozzáférése egyikhez sem." + }, + "peers.details.domain": { + "message": "Domain" + }, + "peers.details.netbirdIp": { + "message": "NetBird IP" + }, + "peers.details.netbirdIpv6": { + "message": "NetBird IPv6" + }, + "peers.details.publicKey": { + "message": "Publikus kulcs" + }, + "peers.details.connection": { + "message": "Kapcsolat" + }, + "peers.details.latency": { + "message": "Késleltetés" + }, + "peers.details.lastHandshake": { + "message": "Utolsó kézfogás" + }, + "peers.details.statusSince": { + "message": "Utolsó kapcsolati frissítés" + }, + "peers.details.bytes": { + "message": "Bájtok" + }, + "peers.details.bytesSent": { + "message": "Küldve" + }, + "peers.details.bytesReceived": { + "message": "Fogadva" + }, + "peers.details.localIce": { + "message": "Helyi ICE" + }, + "peers.details.remoteIce": { + "message": "Távoli ICE" + }, + "peers.details.never": { + "message": "Soha" + }, + "peers.details.justNow": { + "message": "Épp most" + }, + "peers.details.refresh": { + "message": "Frissítés" + }, + "peers.status.connected": { + "message": "Csatlakozva" + }, + "peers.status.connecting": { + "message": "Csatlakozás" + }, + "peers.status.disconnected": { + "message": "Lecsatlakozva" + }, + "peers.details.relayAddress": { + "message": "Relay" + }, + "peers.details.networks": { + "message": "Erőforrások" + }, + "peers.details.relayed": { + "message": "Relayed" + }, + "peers.details.p2p": { + "message": "P2P" + }, + "peers.details.rosenpass": { + "message": "Rosenpass engedélyezve" + }, + "networks.search.placeholder": { + "message": "Keresés hálózat vagy domain alapján" + }, + "networks.filter.all": { + "message": "Összes" + }, + "networks.filter.active": { + "message": "Aktív" + }, + "networks.filter.overlapping": { + "message": "Átfedő" + }, + "networks.empty.title": { + "message": "Nincs elérhető erőforrás" + }, + "networks.empty.description": { + "message": "Önnek vagy nincsenek elérhető hálózati erőforrásai vagy nincs hozzáférése egyikhez sem." + }, + "networks.selected": { + "message": "Kiválasztva" + }, + "networks.unselected": { + "message": "Nincs kiválasztva" + }, + "networks.ips.heading": { + "message": "Feloldott IP-címek" + }, + "networks.bulk.selectionCount": { + "message": "{selected} / {total} aktív" + }, + "networks.bulk.enableAll": { + "message": "Összes engedélyezése" + }, + "networks.bulk.disableAll": { + "message": "Összes letiltása" + }, + "exitNodes.search.placeholder": { + "message": "Keresés a kilépő csomópontok között" + }, + "exitNodes.none": { + "message": "Egyik sem" + }, + "exitNodes.empty.title": { + "message": "Nincs elérhető kilépő csomópont" + }, + "exitNodes.empty.description": { + "message": "Ehhez a társhoz nem osztottak meg kilépő csomópontokat." + }, + "exitNodes.card.title": { + "message": "Kilépő csomópont" + }, + "exitNodes.card.statusActive": { + "message": "Aktív" + }, + "exitNodes.card.statusInactive": { + "message": "Inaktív" + }, + "exitNodes.dropdown.noneTitle": { + "message": "Egyik sem" + }, + "exitNodes.dropdown.noneDescription": { + "message": "Közvetlen kapcsolat kilépő csomópont nélkül" + }, + "quickActions.connect": { + "message": "Csatlakozás" + }, + "quickActions.disconnect": { + "message": "Bontás" + }, + "daemon.unavailable.title": { + "message": "A NetBird szolgáltatás nem fut" + }, + "daemon.unavailable.description": { + "message": "Az alkalmazás automatikusan újracsatlakozik, amint a szolgáltatás újra elérhető." + }, + "daemon.unavailable.docsLink": { + "message": "Dokumentáció" + }, + "error.jwt_clock_skew": { + "message": "A bejelentkezés sikertelen: az eszköz órája eltér a szerverétől. Kérjük, szinkronizálja a rendszer óráját, majd próbálja újra." + }, + "error.jwt_expired": { + "message": "A bejelentkezési token lejárt. Kérjük, jelentkezzen be újra." + }, + "error.jwt_signature_invalid": { + "message": "A bejelentkezés sikertelen: a token aláírása érvénytelen. Kérjük, lépjen kapcsolatba a rendszergazdával." + }, + "error.session_expired": { + "message": "A munkamenet lejárt. Kérjük, jelentkezzen be újra." + }, + "error.invalid_setup_key": { + "message": "A telepítési kulcs hiányzik vagy érvénytelen." + }, + "error.permission_denied": { + "message": "A szerver elutasította a bejelentkezést." + }, + "error.daemon_unreachable": { + "message": "A NetBird szolgáltatás nem válaszol. Kérjük, ellenőrizze, hogy fut-e a szolgáltatás." + }, + "error.unknown": { + "message": "A művelet meghiúsult." + } }