CH-J Server Managerserver management over SSH
Menu
Published source

CH-J Server Manager

Browse directories and files for a specific application release.

Download source ZIP
CH-J Proprietary Software License 1.14

Source is provided under the CH-J Proprietary Software License 1.14. Its availability does not change the license terms or grant additional rights.

47,1 KB · 380 linesDownload file
1"use strict";
3(function exposeI18n(root, factory) {
4 const api = factory();
5 if (typeof module === "object" && module.exports) module.exports = api;
6 else {
7 root.CHJ_I18N = api;
8 root.chjI18n = api.createI18n("cs");
9 }
10})(typeof globalThis !== "undefined" ? globalThis : this, () => {
11 const catalogs = {
12 cs: {
13 "nav.diagnostics": "Diagnostika serverů",
14 "nav.hash": "Hash a kontrolní součty",
15 "nav.overview": "Přehled", "nav.terminal": "Terminál", "nav.servers": "Servery", "nav.updates": "Aktualizace", "nav.plugins": "Pluginy", "nav.settings": "Nastavení", "nav.aria": "Hlavní navigace",
16 "vault.storage": "ŠIFROVANÉ LOKÁLNÍ ÚLOŽIŠTĚ", "vault.unlockTitle": "Odemknout Server Manager", "vault.unlockIntro": "Zadejte hlavní heslo. Heslo se neukládá na disk.", "vault.password": "Hlavní heslo", "vault.confirmPassword": "Potvrzení hesla", "vault.unlock": "Odemknout", "vault.forgot": "Zapomenuté heslo / obnovit vault", "vault.resetIrreversible": "Obnovení nelze vrátit zpět", "vault.resetDescription": "Smažou se všechny serverové profily, uložené host fingerprinty a další šifrovaná data. Instalované pluginy a nastavení aktualizací zůstanou zachované.", "vault.resetInstruction": "Pro potvrzení napište SMAZAT", "vault.cancel": "Zrušit", "vault.resetAction": "Smazat data a obnovit heslo",
17 "app.newArchitecture": "NOVÁ ARCHITEKTURA", "app.initializing": "Inicializace…", "app.lock": "Zamknout", "app.coreRunning": "Core běží",
18 "overview.cleanTitle": "Čistý základ nové aplikace", "overview.cleanDescription": "Oddělené služby, omezené IPC, plugin runtime a bezpečný aktualizační kanál.", "overview.coreApi": "Core API", "overview.coreApiDescription": "Stabilní aplikační kontrakt", "overview.dataSchema": "Datové schéma", "overview.dataSchemaDescription": "Verzované uživatelské úložiště", "overview.installedPlugins": "Nainstalované pluginy", "overview.noToolsNeeded": "Core funguje i bez Tools", "overview.currentSlice": "AKTUÁLNÍ ŘEZ", "overview.sliceTitle": "Vault + profily + SSH terminál", "overview.sliceDescription": "Funkční připojení s povinnou kontrolou host klíče a odděleným SessionManagerem.",
19 "terminal.ping": "Ping",
20 "terminal.sshRtt": "SSH odezva",
21 "terminal.latencyUnavailable": "Nedostupné",
22 "terminal.latencyMeaning": "Ping: ICMP echo. SSH odezva: čas SSH požadavku a odpovědi včetně zpracování na serveru.",
23 "terminal.eyebrow": "SSH SESSION MANAGER", "terminal.title": "Interaktivní terminál", "terminal.disconnected": "Odpojeno", "terminal.connecting": "Připojování…", "terminal.connected": "Připojeno", "terminal.connectionError": "Chyba připojení", "terminal.error": "Chyba", "terminal.server": "Server", "terminal.selectServer": "Vyberte server…", "terminal.password": "Heslo", "terminal.sshPassword": "SSH heslo", "terminal.passphrase": "Passphrase (volitelná)", "terminal.keyPassphrase": "Passphrase klíče", "terminal.connect": "Připojit", "terminal.disconnect": "Odpojit", "terminal.noProfile": "Nejprve vytvořte profil serveru.", "terminal.aria": "SSH terminál", "terminal.libraryMissing": "Knihovna terminálu není dostupná.", "terminal.welcome": "Vyberte server a spusťte SSH připojení.", "terminal.connectingTo": "Připojuji {target}…", "terminal.passwordAuth": "ověření heslem", "terminal.vaultLocked": "Vault byl zamknut.",
24 "profiles.eyebrow": "ŠIFROVANÉ PROFILY", "profiles.title": "Správa serverů", "profiles.new": "Nový server", "profiles.none": "Zatím není uložen žádný server.", "profiles.name": "Název", "profiles.namePlaceholder": "Produkční server", "profiles.host": "Host / IP", "profiles.port": "Port", "profiles.user": "Uživatel", "profiles.auth": "Ověření", "profiles.authPassword": "Heslo při připojení", "profiles.authKey": "Soukromý klíč", "profiles.privateKey": "Soukromý klíč", "profiles.selectFile": "Vyberte soubor…", "profiles.select": "Vybrat", "profiles.save": "Uložit profil", "profiles.delete": "Smazat", "profiles.key": "klíč", "profiles.password": "heslo", "profiles.saved": "Profil byl uložen.", "profiles.deleteConfirm": "Opravdu smazat tento profil serveru?",
25 "updates.eyebrow": "REPOZITÁŘ AKTUALIZACÍ", "updates.title": "Aktualizace Core", "updates.installed": "Nainstalovaná verze", "updates.channel": "kanál {channel}", "updates.ready": "Připraveno ke kontrole", "updates.integrityIntro": "Core ověří platformu, architekturu, velikost, SHA-512 a OpenPGP podpis.", "updates.check": "Zkontrolovat", "updates.download": "Stáhnout a ověřit", "updates.reveal": "Zobrazit soubor", "updates.alphaSecurity": "Alfa bezpečnostní režim", "updates.alphaDescription": "SHA-512 a povinný OpenPGP podpis chrání stažený instalátor. Instalace se nespouští automaticky a zdroj je omezený na povolenou HTTPS doménu.", "updates.downloaded": "Vydání v{version} bylo staženo a ověřeno", "updates.available": "Je dostupná verze {version}", "updates.availableFallback": "Aktualizace je připravena ke stažení a ověření.", "updates.current": "Používáte aktuální verzi", "updates.noNewer": "Na zvoleném kanálu není novější vydání.", "updates.checking": "Kontroluji…", "updates.checkingServer": "Kontrola repozitáře aktualizací", "updates.tryingEndpoints": "Zkouším povolený HTTPS endpoint…", "updates.checkFailed": "Kontrola se nezdařila", "updates.downloading": "Stahuji…", "updates.downloadRejected": "Aktualizace byla zablokována",
26 "plugins.eyebrow": "PLUGIN API 1.2.0", "plugins.title": "Instalované Tools", "plugins.install": "Instalovat z katalogu", "plugins.plugin": "Plugin", "plugins.version": "Verze", "plugins.permissions": "Oprávnění", "plugins.none": "Zatím žádné pluginy", "plugins.first": "První bude System Monitor.", "plugins.noPermissions": "bez oprávnění", "plugins.bundled": "Součást aplikace",
27 "settings.eyebrow": "LOKÁLNÍ KONFIGURACE", "settings.title": "Nastavení Core", "settings.language": "Jazyk", "settings.czech": "Čeština", "settings.german": "Deutsch", "settings.english": "English", "settings.updateChannel": "Kanál aktualizací", "settings.autoCheck": "Automaticky kontrolovat při startu", "settings.allowedServers": "Povolené update servery", "settings.save": "Uložit nastavení", "settings.saved": "Uloženo",
28 "vault.damagedMode": "OBNOVA ŠIFROVANÉHO ÚLOŽIŠTĚ", "vault.damagedTitle": "Vault je neúplný", "vault.damagedDescription": "Chybí jeden ze souborů vaultu. Data nebudou automaticky přepsána.", "vault.setupMode": "PRVNÍ NASTAVENÍ VAULTU", "vault.lockedMode": "VAULT JE ZAMČENÝ", "vault.setupTitle": "Vytvořit hlavní heslo", "vault.setupDescription": "Zvolte hlavní heslo o délce 4 až 64 znaků. Bez hesla nelze šifrovaná data obnovit.", "vault.lockedDescription": "Vault už existuje. Zadejte jeho hlavní heslo pro přístup k uloženým serverům.", "vault.create": "Vytvořit vault", "vault.passwordLength": "Hlavní heslo musí mít 4 až 64 znaků.", "vault.passwordMismatch": "Hesla se neshodují.", "vault.creating": "Vytvářím…", "vault.unlocking": "Odemykám…", "vault.typeDelete": "Pro potvrzení napište přesně SMAZAT.", "vault.finalResetConfirm": "Poslední potvrzení: opravdu smazat všechna šifrovaná uživatelská data?", "vault.deleting": "Mažu…", "vault.resetDone": "Vault byl obnoven. Vytvořte nové hlavní heslo.",
29 "ssh.unknownHost": "Server {host}:{port} zatím není důvěryhodný.\n\nSHA-256 otisk:\n{fingerprint}\n\nOvěřte otisk jiným kanálem. Chcete jej uložit a pokračovat?", "ssh.trustFailed": "Host klíč se nepodařilo uložit.", "ssh.keyChanged": "VAROVÁNÍ: SSH host klíč se změnil. Připojení bylo zablokováno.", "ssh.knownKey": "Známý", "ssh.newKey": "Nový", "ssh.failed": "Připojení selhalo.",
30 "errors.unknown": "Neznámá chyba", "errors.initialization": "Chyba inicializace"
31 },
32 de: {
33 "nav.diagnostics": "Serverdiagnose",
34 "nav.hash": "Hash und Prüfsummen",
35 "nav.overview": "Übersicht", "nav.terminal": "Terminal", "nav.servers": "Server", "nav.updates": "Updates", "nav.plugins": "Plugins", "nav.settings": "Einstellungen", "nav.aria": "Hauptnavigation",
36 "vault.storage": "VERSCHLÜSSELTER LOKALER SPEICHER", "vault.unlockTitle": "Server Manager entsperren", "vault.unlockIntro": "Geben Sie das Hauptpasswort ein. Das Passwort wird nicht gespeichert.", "vault.password": "Hauptpasswort", "vault.confirmPassword": "Passwort bestätigen", "vault.unlock": "Entsperren", "vault.forgot": "Passwort vergessen / Vault zurücksetzen", "vault.resetIrreversible": "Das Zurücksetzen kann nicht rückgängig gemacht werden", "vault.resetDescription": "Alle Serverprofile, gespeicherten Host-Fingerprints und weiteren verschlüsselten Daten werden gelöscht. Installierte Plugins und Update-Einstellungen bleiben erhalten.", "vault.resetInstruction": "Geben Sie zur Bestätigung SMAZAT ein", "vault.cancel": "Abbrechen", "vault.resetAction": "Daten löschen und Passwort zurücksetzen",
37 "app.newArchitecture": "NEUE ARCHITEKTUR", "app.initializing": "Initialisierung…", "app.lock": "Sperren", "app.coreRunning": "Core läuft",
38 "overview.cleanTitle": "Saubere Basis der neuen Anwendung", "overview.cleanDescription": "Getrennte Dienste, eingeschränktes IPC, Plugin-Runtime und sicherer Update-Kanal.", "overview.coreApi": "Core API", "overview.coreApiDescription": "Stabiler Anwendungsvertrag", "overview.dataSchema": "Datenschema", "overview.dataSchemaDescription": "Versionierter Benutzerspeicher", "overview.installedPlugins": "Installierte Plugins", "overview.noToolsNeeded": "Core funktioniert auch ohne Tools", "overview.currentSlice": "AKTUELLER UMFANG", "overview.sliceTitle": "Vault + Profile + SSH-Terminal", "overview.sliceDescription": "Funktionierende Verbindung mit obligatorischer Host-Key-Prüfung und getrenntem SessionManager.",
39 "terminal.ping": "Ping",
40 "terminal.sshRtt": "SSH-Antwortzeit",
41 "terminal.latencyUnavailable": "Nicht verfügbar",
42 "terminal.latencyMeaning": "Ping: ICMP-Echo. SSH-Antwortzeit: SSH-Anfrage und Antwort einschließlich Verarbeitung auf dem Server.",
43 "terminal.eyebrow": "SSH SESSION MANAGER", "terminal.title": "Interaktives Terminal", "terminal.disconnected": "Getrennt", "terminal.connecting": "Verbindung…", "terminal.connected": "Verbunden", "terminal.connectionError": "Verbindungsfehler", "terminal.error": "Fehler", "terminal.server": "Server", "terminal.selectServer": "Server auswählen…", "terminal.password": "Passwort", "terminal.sshPassword": "SSH-Passwort", "terminal.passphrase": "Passphrase (optional)", "terminal.keyPassphrase": "Schlüssel-Passphrase", "terminal.connect": "Verbinden", "terminal.disconnect": "Trennen", "terminal.noProfile": "Erstellen Sie zuerst ein Serverprofil.", "terminal.aria": "SSH-Terminal", "terminal.libraryMissing": "Terminalbibliothek ist nicht verfügbar.", "terminal.welcome": "Wählen Sie einen Server und starten Sie die SSH-Verbindung.", "terminal.connectingTo": "Verbinde mit {target}…", "terminal.passwordAuth": "Passwortauthentifizierung", "terminal.vaultLocked": "Vault wurde gesperrt.",
44 "profiles.eyebrow": "VERSCHLÜSSELTE PROFILE", "profiles.title": "Serververwaltung", "profiles.new": "Neuer Server", "profiles.none": "Es ist noch kein Server gespeichert.", "profiles.name": "Name", "profiles.namePlaceholder": "Produktionsserver", "profiles.host": "Host / IP", "profiles.port": "Port", "profiles.user": "Benutzer", "profiles.auth": "Authentifizierung", "profiles.authPassword": "Passwort beim Verbinden", "profiles.authKey": "Privater Schlüssel", "profiles.privateKey": "Privater Schlüssel", "profiles.selectFile": "Datei auswählen…", "profiles.select": "Auswählen", "profiles.save": "Profil speichern", "profiles.delete": "Löschen", "profiles.key": "Schlüssel", "profiles.password": "Passwort", "profiles.saved": "Profil wurde gespeichert.", "profiles.deleteConfirm": "Dieses Serverprofil wirklich löschen?",
45 "updates.eyebrow": "UPDATE-REPOSITORY", "updates.title": "Core-Updates", "updates.installed": "Installierte Version", "updates.channel": "Kanal {channel}", "updates.ready": "Bereit zur Prüfung", "updates.integrityIntro": "Core prüft Plattform, Architektur, Größe, SHA-512 und OpenPGP-Signatur.", "updates.check": "Prüfen", "updates.download": "Herunterladen und prüfen", "updates.reveal": "Datei anzeigen", "updates.alphaSecurity": "Alpha-Sicherheitsmodus", "updates.alphaDescription": "SHA-512 und die obligatorische OpenPGP-Signatur schützen den Installer. Die Installation startet nicht automatisch und die Quelle ist auf die erlaubte HTTPS-Domain begrenzt.", "updates.downloaded": "Release v{version} wurde heruntergeladen und geprüft", "updates.available": "Version {version} ist verfügbar", "updates.availableFallback": "Das Update kann heruntergeladen und geprüft werden.", "updates.current": "Sie verwenden die aktuelle Version", "updates.noNewer": "Im gewählten Kanal ist kein neueres Release verfügbar.", "updates.checking": "Prüfung…", "updates.checkingServer": "Update-Repository wird geprüft", "updates.tryingEndpoints": "Der erlaubte HTTPS-Endpunkt wird geprüft…", "updates.checkFailed": "Prüfung fehlgeschlagen", "updates.downloading": "Download…", "updates.downloadRejected": "Update wurde blockiert",
46 "plugins.eyebrow": "PLUGIN API 1.2.0", "plugins.title": "Installierte Tools", "plugins.install": "Aus Katalog installieren", "plugins.plugin": "Plugin", "plugins.version": "Version", "plugins.permissions": "Berechtigungen", "plugins.none": "Noch keine Plugins", "plugins.first": "Als Erstes folgt System Monitor.", "plugins.noPermissions": "keine Berechtigungen", "plugins.bundled": "Integriert",
47 "settings.eyebrow": "LOKALE KONFIGURATION", "settings.title": "Core-Einstellungen", "settings.language": "Sprache", "settings.czech": "Čeština", "settings.german": "Deutsch", "settings.english": "English", "settings.updateChannel": "Update-Kanal", "settings.autoCheck": "Beim Start automatisch prüfen", "settings.allowedServers": "Erlaubte Update-Server", "settings.save": "Einstellungen speichern", "settings.saved": "Gespeichert",
48 "vault.damagedMode": "VERSCHLÜSSELTEN SPEICHER WIEDERHERSTELLEN", "vault.damagedTitle": "Vault ist unvollständig", "vault.damagedDescription": "Eine Vault-Datei fehlt. Die Daten werden nicht automatisch überschrieben.", "vault.setupMode": "ERSTEINRICHTUNG DES VAULTS", "vault.lockedMode": "VAULT IST GESPERRT", "vault.setupTitle": "Hauptpasswort erstellen", "vault.setupDescription": "Wählen Sie ein Hauptpasswort mit 4 bis 64 Zeichen. Ohne Passwort können verschlüsselte Daten nicht wiederhergestellt werden.", "vault.lockedDescription": "Der Vault existiert bereits. Geben Sie das Hauptpasswort ein, um auf gespeicherte Server zuzugreifen.", "vault.create": "Vault erstellen", "vault.passwordLength": "Das Hauptpasswort muss 4 bis 64 Zeichen lang sein.", "vault.passwordMismatch": "Die Passwörter stimmen nicht überein.", "vault.creating": "Wird erstellt…", "vault.unlocking": "Wird entsperrt…", "vault.typeDelete": "Geben Sie zur Bestätigung genau SMAZAT ein.", "vault.finalResetConfirm": "Letzte Bestätigung: Wirklich alle verschlüsselten Benutzerdaten löschen?", "vault.deleting": "Löschen…", "vault.resetDone": "Vault wurde zurückgesetzt. Erstellen Sie ein neues Hauptpasswort.",
49 "ssh.unknownHost": "Server {host}:{port} ist noch nicht vertrauenswürdig.\n\nSHA-256-Fingerprint:\n{fingerprint}\n\nPrüfen Sie den Fingerprint über einen anderen Kanal. Speichern und fortfahren?", "ssh.trustFailed": "Host-Key konnte nicht gespeichert werden.", "ssh.keyChanged": "WARNUNG: Der SSH-Host-Key hat sich geändert. Die Verbindung wurde blockiert.", "ssh.knownKey": "Bekannt", "ssh.newKey": "Neu", "ssh.failed": "Verbindung fehlgeschlagen.",
50 "errors.unknown": "Unbekannter Fehler", "errors.initialization": "Initialisierungsfehler"
51 },
52 en: {
53 "nav.diagnostics": "Server Diagnostics",
54 "nav.hash": "Hash & Checksum",
55 "nav.overview": "Overview", "nav.terminal": "Terminal", "nav.servers": "Servers", "nav.updates": "Updates", "nav.plugins": "Plugins", "nav.settings": "Settings", "nav.aria": "Main navigation",
56 "vault.storage": "ENCRYPTED LOCAL STORAGE", "vault.unlockTitle": "Unlock Server Manager", "vault.unlockIntro": "Enter the master password. The password is not stored.", "vault.password": "Master password", "vault.confirmPassword": "Confirm password", "vault.unlock": "Unlock", "vault.forgot": "Forgot password / reset vault", "vault.resetIrreversible": "Reset cannot be undone", "vault.resetDescription": "All server profiles, saved host fingerprints, and other encrypted data will be deleted. Installed plugins and update settings will remain.", "vault.resetInstruction": "Type SMAZAT to confirm", "vault.cancel": "Cancel", "vault.resetAction": "Delete data and reset password",
57 "app.newArchitecture": "NEW ARCHITECTURE", "app.initializing": "Initializing…", "app.lock": "Lock", "app.coreRunning": "Core is running",
58 "overview.cleanTitle": "A clean foundation for the new application", "overview.cleanDescription": "Separated services, restricted IPC, plugin runtime, and a secure update channel.", "overview.coreApi": "Core API", "overview.coreApiDescription": "Stable application contract", "overview.dataSchema": "Data schema", "overview.dataSchemaDescription": "Versioned user storage", "overview.installedPlugins": "Installed plugins", "overview.noToolsNeeded": "Core works without Tools", "overview.currentSlice": "CURRENT SLICE", "overview.sliceTitle": "Vault + profiles + SSH terminal", "overview.sliceDescription": "Working connection with mandatory host-key verification and a separate SessionManager.",
59 "terminal.ping": "Ping",
60 "terminal.sshRtt": "SSH RTT",
61 "terminal.latencyUnavailable": "Unavailable",
62 "terminal.latencyMeaning": "Ping: ICMP echo. SSH RTT: SSH request/response duration including server processing.",
63 "terminal.eyebrow": "SSH SESSION MANAGER", "terminal.title": "Interactive terminal", "terminal.disconnected": "Disconnected", "terminal.connecting": "Connecting…", "terminal.connected": "Connected", "terminal.connectionError": "Connection error", "terminal.error": "Error", "terminal.server": "Server", "terminal.selectServer": "Select a server…", "terminal.password": "Password", "terminal.sshPassword": "SSH password", "terminal.passphrase": "Passphrase (optional)", "terminal.keyPassphrase": "Key passphrase", "terminal.connect": "Connect", "terminal.disconnect": "Disconnect", "terminal.noProfile": "Create a server profile first.", "terminal.aria": "SSH terminal", "terminal.libraryMissing": "Terminal library is unavailable.", "terminal.welcome": "Select a server and start the SSH connection.", "terminal.connectingTo": "Connecting to {target}…", "terminal.passwordAuth": "password authentication", "terminal.vaultLocked": "Vault was locked.",
64 "profiles.eyebrow": "ENCRYPTED PROFILES", "profiles.title": "Server management", "profiles.new": "New server", "profiles.none": "No server has been saved yet.", "profiles.name": "Name", "profiles.namePlaceholder": "Production server", "profiles.host": "Host / IP", "profiles.port": "Port", "profiles.user": "User", "profiles.auth": "Authentication", "profiles.authPassword": "Password when connecting", "profiles.authKey": "Private key", "profiles.privateKey": "Private key", "profiles.selectFile": "Select a file…", "profiles.select": "Select", "profiles.save": "Save profile", "profiles.delete": "Delete", "profiles.key": "key", "profiles.password": "password", "profiles.saved": "Profile was saved.", "profiles.deleteConfirm": "Delete this server profile?",
65 "updates.eyebrow": "UPDATE REPOSITORY", "updates.title": "Core updates", "updates.installed": "Installed version", "updates.channel": "channel {channel}", "updates.ready": "Ready to check", "updates.integrityIntro": "Core verifies platform, architecture, size, SHA-512, and the OpenPGP signature.", "updates.check": "Check", "updates.download": "Download and verify", "updates.reveal": "Show file", "updates.alphaSecurity": "Alpha security mode", "updates.alphaDescription": "SHA-512 and the mandatory OpenPGP signature protect the installer. Installation does not start automatically, and the source is restricted to the allowed HTTPS domain.", "updates.downloaded": "Release v{version} was downloaded and verified", "updates.available": "Version {version} is available", "updates.availableFallback": "The update is ready to download and verify.", "updates.current": "You are using the current version", "updates.noNewer": "No newer release is available on the selected channel.", "updates.checking": "Checking…", "updates.checkingServer": "Checking update repository", "updates.tryingEndpoints": "Trying the allowed HTTPS endpoint…", "updates.checkFailed": "Update check failed", "updates.downloading": "Downloading…", "updates.downloadRejected": "Update was blocked",
66 "plugins.eyebrow": "PLUGIN API 1.2.0", "plugins.title": "Installed Tools", "plugins.install": "Install from catalog", "plugins.plugin": "Plugin", "plugins.version": "Version", "plugins.permissions": "Permissions", "plugins.none": "No plugins yet", "plugins.first": "System Monitor will be first.", "plugins.noPermissions": "no permissions", "plugins.bundled": "Built in",
67 "settings.eyebrow": "LOCAL CONFIGURATION", "settings.title": "Core settings", "settings.language": "Language", "settings.czech": "Čeština", "settings.german": "Deutsch", "settings.english": "English", "settings.updateChannel": "Update channel", "settings.autoCheck": "Check automatically at startup", "settings.allowedServers": "Allowed update servers", "settings.save": "Save settings", "settings.saved": "Saved",
68 "vault.damagedMode": "RECOVER ENCRYPTED STORAGE", "vault.damagedTitle": "Vault is incomplete", "vault.damagedDescription": "One of the vault files is missing. Data will not be overwritten automatically.", "vault.setupMode": "INITIAL VAULT SETUP", "vault.lockedMode": "VAULT IS LOCKED", "vault.setupTitle": "Create master password", "vault.setupDescription": "Choose a master password between 4 and 64 characters. Encrypted data cannot be recovered without it.", "vault.lockedDescription": "The vault already exists. Enter its master password to access saved servers.", "vault.create": "Create vault", "vault.passwordLength": "The master password must contain 4 to 64 characters.", "vault.passwordMismatch": "Passwords do not match.", "vault.creating": "Creating…", "vault.unlocking": "Unlocking…", "vault.typeDelete": "Type SMAZAT exactly to confirm.", "vault.finalResetConfirm": "Final confirmation: delete all encrypted user data?", "vault.deleting": "Deleting…", "vault.resetDone": "Vault was reset. Create a new master password.",
69 "ssh.unknownHost": "Server {host}:{port} is not trusted yet.\n\nSHA-256 fingerprint:\n{fingerprint}\n\nVerify the fingerprint through another channel. Save it and continue?", "ssh.trustFailed": "The host key could not be saved.", "ssh.keyChanged": "WARNING: The SSH host key changed. The connection was blocked.", "ssh.knownKey": "Known", "ssh.newKey": "New", "ssh.failed": "Connection failed.",
70 "errors.unknown": "Unknown error", "errors.initialization": "Initialization error"
71 }
72 };
74 Object.assign(catalogs.cs, {
75 "profiles.storePassword": "Uložit heslo do šifrovaného vaultu",
76 "profiles.storedPassword": "SSH heslo",
77 "profiles.storePasswordPlaceholder": "Zadejte heslo k uložení",
78 "profiles.passwordStoredPlaceholder": "Heslo je uložené – prázdné pole jej nezmění",
79 "profiles.passwordSecurity": "Heslo se ukládá pouze uvnitř šifrovaného vaultu.",
80 "terminal.savedPasswordHint": "Volitelné – použije se heslo z vaultu",
81 "ssh.changedHostConfirm": "VAROVÁNÍ: SSH host klíč serveru {host}:{port} se změnil. Může jít o přeinstalaci serveru, ale také o útok.\n\nZnámý otisk:\n{knownFingerprint}\n\nNový otisk:\n{fingerprint}\n\nOvěřte nový otisk jiným důvěryhodným kanálem. Chcete známý otisk nahradit a znovu se připojit?",
82 "channels.all": "Vše",
83 "updates.channelFilter": "Kanál",
84 "updates.install": "Spustit instalátor",
85 "updates.catalogEyebrow": "KATALOG VYDÁNÍ",
86 "updates.catalogTitle": "Dostupná vydání",
87 "updates.catalogBeforeCheck": "Po kontrole se zde zobrazí všechna kompatibilní vydání.",
88 "updates.catalogEmpty": "V tomto kanálu nejsou žádná kompatibilní vydání.",
89 "updates.selectedLabel": "Vybráno",
90 "updates.selectLabel": "Vybrat",
91 "updates.newerVersion": "Je dostupná novější verze v{version}",
92 "updates.sameVersionNewerRelease": "Je dostupné novější vydání stejné verze v{version}",
93 "updates.sameVersionCurrentRelease": "Používáte aktuální vydání v{version}",
94 "updates.sameVersionOlderRelease": "Je vybráno starší vydání stejné verze v{version}",
95 "updates.olderVersion": "Vybrána starší verze v{version}",
96 "updates.selected": "Vybráno vydání v{version}",
97 "updates.publishedAt": "Vydáno {date}",
98 "updates.noneAvailable": "Žádné dostupné vydání",
99 "updates.noCompatible": "Repozitář neobsahuje kompatibilní vydání pro tuto platformu, architekturu a kanál.",
100 "updates.installConfirm": "Spustit ověřený instalátor vydání v{version} zveřejněného {date}?",
101 "updates.installFailed": "Instalátor se nepodařilo spustit",
102 "updates.installFailure": "Instalaci se nepodařilo spustit nebo dokončit. Aktualizace nebyla nainstalována.",
103 "updates.downloadingAndVerifying": "Stahuji a ověřuji…",
104 "updates.verifyingSignature": "Ověřování digitálního podpisu…",
105 "updates.signatureVerified": "Digitální podpis ověřen",
106 "updates.signatureFailure": "Aktualizaci nelze bezpečně ověřit a nebude nainstalována.",
107 "plugins.checkCatalog": "Načíst webový katalog",
108 "plugins.checking": "Načítám katalog…",
109 "plugins.webCatalog": "WEBOVÝ KATALOG",
110 "plugins.available": "Dostupné pluginy",
111 "plugins.catalogBeforeCheck": "Nejprve načtěte katalog z povoleného update serveru.",
112 "plugins.catalogEmpty": "Ve zvoleném kanálu nejsou dostupné žádné kompatibilní pluginy.",
113 "plugins.open": "Otevřít",
114 "plugins.channelFilter": "Kanál katalogu",
115 "plugins.remove": "Odstranit",
116 "plugins.removeConfirm": "Opravdu odstranit plugin {name}? Nastavení Core a vault zůstanou zachované.",
117 "plugins.installed": "Nainstalováno",
118 "plugins.update": "Aktualizovat",
119 "plugins.installing": "Instaluji…",
120 "plugins.installConfirm": "Nainstalovat {name} v{version}?\n\nPožadovaná oprávnění: {permissions}",
121 "plugins.minimized": "Minimalizované pluginy",
122 "plugins.restore": "Obnovit plugin {name}",
123 "plugins.restoreAction": "Kliknutím obnovit",
124 "settings.pluginChannel": "Kanál pluginů",
125 "legal.eyebrow": "PRÁVNÍ INFORMACE", "legal.title": "Licence a dokumentace", "legal.documentation": "Dokumentace", "legal.safetyCzech": "Bezpečnost a zálohování (CS)", "legal.safetyEnglish": "Bezpečnost a zálohování (EN)", "legal.safetyGerman": "Bezpečnost a zálohování (DE)", "legal.description": "CH-J Server Manager je poskytován pod CH-J Proprietary Software License 1.14. Licence komponent třetích stran zůstávají zachované.", "legal.application": "Licence aplikace", "legal.notice": "Autorské oznámení", "legal.thirdParty": "Licence třetích stran", "legal.thirdPartyBundle": "Kompletní licenční balík", "legal.electron": "Licence Electronu", "legal.chromium": "Licence Chromia"
126 });
127 Object.assign(catalogs.de, {
128 "profiles.storePassword": "Passwort im verschlüsselten Vault speichern",
129 "profiles.storedPassword": "SSH-Passwort",
130 "profiles.storePasswordPlaceholder": "Zu speicherndes Passwort eingeben",
131 "profiles.passwordStoredPlaceholder": "Passwort gespeichert – leer lassen, um es beizubehalten",
132 "profiles.passwordSecurity": "Das Passwort wird ausschließlich im verschlüsselten Vault gespeichert.",
133 "terminal.savedPasswordHint": "Optional – das Passwort aus dem Vault wird verwendet",
134 "ssh.changedHostConfirm": "WARNUNG: Der SSH-Host-Key von {host}:{port} hat sich geändert. Dies kann durch eine Neuinstallation verursacht werden, aber auch auf einen Angriff hinweisen.\n\nBekannter Fingerprint:\n{knownFingerprint}\n\nNeuer Fingerprint:\n{fingerprint}\n\nPrüfen Sie den neuen Fingerprint über einen anderen vertrauenswürdigen Kanal. Bekannten Fingerprint ersetzen und erneut verbinden?",
135 "channels.all": "Alle",
136 "updates.channelFilter": "Kanal",
137 "updates.install": "Installer starten",
138 "updates.catalogEyebrow": "RELEASE-KATALOG",
139 "updates.catalogTitle": "Verfügbare Releases",
140 "updates.catalogBeforeCheck": "Nach der Prüfung werden hier alle kompatiblen Releases angezeigt.",
141 "updates.catalogEmpty": "In diesem Kanal sind keine kompatiblen Releases verfügbar.",
142 "updates.selectedLabel": "Ausgewählt",
143 "updates.selectLabel": "Auswählen",
144 "updates.newerVersion": "Eine neuere Version v{version} ist verfügbar",
145 "updates.sameVersionNewerRelease": "Ein neueres Release derselben Version v{version} ist verfügbar",
146 "updates.sameVersionCurrentRelease": "Sie verwenden das aktuelle Release v{version}",
147 "updates.sameVersionOlderRelease": "Ein älteres Release derselben Version v{version} ist ausgewählt",
148 "updates.olderVersion": "Ältere Version v{version} ausgewählt",
149 "updates.selected": "Release v{version} ausgewählt",
150 "updates.publishedAt": "Veröffentlicht am {date}",
151 "updates.noneAvailable": "Kein Release verfügbar",
152 "updates.noCompatible": "Das Repository enthält keinen kompatiblen Release für diese Plattform, Architektur und diesen Kanal.",
153 "updates.installConfirm": "Geprüften Installer der Version v{version}, veröffentlicht am {date}, starten?",
154 "updates.installFailed": "Der Installer konnte nicht gestartet werden",
155 "updates.installFailure": "Die Installation konnte nicht gestartet oder abgeschlossen werden. Das Update wurde nicht installiert.",
156 "updates.downloadingAndVerifying": "Download und Prüfung…",
157 "updates.verifyingSignature": "Digitale Signatur wird geprüft…",
158 "updates.signatureVerified": "Digitale Signatur geprüft",
159 "updates.signatureFailure": "Das Update kann nicht sicher verifiziert werden und wird nicht installiert.",
160 "plugins.checkCatalog": "Webkatalog laden",
161 "plugins.checking": "Katalog wird geladen…",
162 "plugins.webCatalog": "WEBKATALOG",
163 "plugins.available": "Verfügbare Plugins",
164 "plugins.catalogBeforeCheck": "Laden Sie zuerst den Katalog vom erlaubten Update-Server.",
165 "plugins.catalogEmpty": "Im gewählten Kanal sind keine kompatiblen Plugins verfügbar.",
166 "plugins.open": "Öffnen",
167 "plugins.channelFilter": "Katalogkanal",
168 "plugins.remove": "Entfernen",
169 "plugins.removeConfirm": "Plugin {name} wirklich entfernen? Core-Einstellungen und Vault bleiben erhalten.",
170 "plugins.installed": "Installiert",
171 "plugins.update": "Aktualisieren",
172 "plugins.installing": "Installation…",
173 "plugins.installConfirm": "{name} v{version} installieren?\n\nErforderliche Berechtigungen: {permissions}",
174 "plugins.minimized": "Minimierte Plugins",
175 "plugins.restore": "Plugin {name} wiederherstellen",
176 "plugins.restoreAction": "Zum Wiederherstellen klicken",
177 "settings.pluginChannel": "Plugin-Kanal",
178 "legal.eyebrow": "RECHTLICHE INFORMATIONEN", "legal.title": "Lizenzen und Dokumentation", "legal.documentation": "Dokumentation", "legal.safetyCzech": "Betriebssicherheit und Backups (CS)", "legal.safetyEnglish": "Betriebssicherheit und Backups (EN)", "legal.safetyGerman": "Betriebssicherheit und Backups (DE)", "legal.description": "CH-J Server Manager wird unter der CH-J Proprietary Software License 1.14 bereitgestellt. Die Lizenzen der Drittanbieterkomponenten bleiben bestehen.", "legal.application": "Anwendungslizenz", "legal.notice": "Urheberrechtshinweis", "legal.thirdParty": "Drittanbieterlizenzen", "legal.thirdPartyBundle": "Vollständiges Lizenzpaket", "legal.electron": "Electron-Lizenz", "legal.chromium": "Chromium-Lizenzen"
179 });
180 Object.assign(catalogs.en, {
181 "profiles.storePassword": "Store password in the encrypted vault",
182 "profiles.storedPassword": "SSH password",
183 "profiles.storePasswordPlaceholder": "Enter the password to store",
184 "profiles.passwordStoredPlaceholder": "Password stored – leave empty to keep it",
185 "profiles.passwordSecurity": "The password is stored only inside the encrypted vault.",
186 "terminal.savedPasswordHint": "Optional – the password from the vault will be used",
187 "ssh.changedHostConfirm": "WARNING: The SSH host key for {host}:{port} changed. This may be caused by a server reinstall, but it can also indicate an attack.\n\nKnown fingerprint:\n{knownFingerprint}\n\nNew fingerprint:\n{fingerprint}\n\nVerify the new fingerprint through another trusted channel. Replace the known fingerprint and reconnect?",
188 "channels.all": "All",
189 "updates.channelFilter": "Channel",
190 "updates.install": "Launch installer",
191 "updates.catalogEyebrow": "RELEASE CATALOG",
192 "updates.catalogTitle": "Available releases",
193 "updates.catalogBeforeCheck": "All compatible releases will appear here after checking.",
194 "updates.catalogEmpty": "No compatible releases are available in this channel.",
195 "updates.selectedLabel": "Selected",
196 "updates.selectLabel": "Select",
197 "updates.newerVersion": "A newer version v{version} is available",
198 "updates.sameVersionNewerRelease": "A newer release of the same version v{version} is available",
199 "updates.sameVersionCurrentRelease": "You are using the current release v{version}",
200 "updates.sameVersionOlderRelease": "An older release of the same version v{version} is selected",
201 "updates.olderVersion": "Older version v{version} selected",
202 "updates.selected": "Release v{version} selected",
203 "updates.publishedAt": "Published {date}",
204 "updates.noneAvailable": "No release available",
205 "updates.noCompatible": "The repository has no compatible release for this platform, architecture, and channel.",
206 "updates.installConfirm": "Launch the verified installer for v{version}, published {date}?",
207 "updates.installFailed": "The installer could not be launched",
208 "updates.installFailure": "The installation could not be started or completed. The update was not installed.",
209 "updates.downloadingAndVerifying": "Downloading and verifying…",
210 "updates.verifyingSignature": "Verifying digital signature…",
211 "updates.signatureVerified": "Digital signature verified",
212 "updates.signatureFailure": "The update cannot be verified safely and will not be installed.",
213 "plugins.checkCatalog": "Load web catalog",
214 "plugins.checking": "Loading catalog…",
215 "plugins.webCatalog": "WEB CATALOG",
216 "plugins.available": "Available plugins",
217 "plugins.catalogBeforeCheck": "Load the catalog from an allowed update server first.",
218 "plugins.catalogEmpty": "No compatible plugins are available in the selected channel.",
219 "plugins.open": "Open",
220 "plugins.channelFilter": "Catalog channel",
221 "plugins.remove": "Remove",
222 "plugins.removeConfirm": "Remove the {name} plugin? Core settings and the vault will remain intact.",
223 "plugins.installed": "Installed",
224 "plugins.update": "Update",
225 "plugins.installing": "Installing…",
226 "plugins.installConfirm": "Install {name} v{version}?\n\nRequired permissions: {permissions}",
227 "plugins.minimized": "Minimized plugins",
228 "plugins.restore": "Restore the {name} plugin",
229 "plugins.restoreAction": "Click to restore",
230 "settings.pluginChannel": "Plugin channel",
231 "legal.eyebrow": "LEGAL INFORMATION", "legal.title": "Licenses and documentation", "legal.documentation": "Documentation", "legal.safetyCzech": "Operational safety and backups (CS)", "legal.safetyEnglish": "Operational safety and backups (EN)", "legal.safetyGerman": "Operational safety and backups (DE)", "legal.description": "CH-J Server Manager is provided under the CH-J Proprietary Software License 1.14. Third-party component licenses remain in effect.", "legal.application": "Application license", "legal.notice": "Copyright notice", "legal.thirdParty": "Third-party licenses", "legal.thirdPartyBundle": "Complete license package", "legal.electron": "Electron license", "legal.chromium": "Chromium licenses"
232 });
234 Object.assign(catalogs.cs, {
235 "security.title": "Zabezpečení",
236 "security.enable": "Zapnout biometrické odemykání",
237 "security.remove": "Vypnout a odstranit registraci",
238 "security.test": "Otestovat systémové ověření",
239 "security.autoLock": "Automaticky zamknout při nečinnosti",
240 "security.timeout": "Doba nečinnosti",
241 "security.never": "Nikdy",
242 "security.blur": "Zamknout při ztrátě zaměření aplikace",
243 "security.sensitive": "Vyžadovat systémové ověření citlivých operací",
244 "security.scope": "Ověření chrání odstranění profilu, instalaci/odstranění pluginu, spuštění instalátoru a reset odemčeného Vaultu. Příkazy vzdáleného terminálu tímto ověřením chráněny nejsou.",
245 "security.lockEffect": "Zamknutí ukončí aktivní SSH relace, zavře pluginy a zastaví diagnostiku.",
246 "security.confirmPassword": "Hlavní heslo pro změnu pravidel zamykání",
247 "security.strong": "Klíč ve svazku klíčů chrání aktuální otisky Touch ID. Změna otisků registraci zneplatní.",
248 "security.convenience": "Pohodlné odemykání: aplikace vyžaduje systémové ověření, ale úložiště klíče není kryptograficky vázáno na biometrii.",
249 "security.enabled": "Biometrické odemykání zapnuto",
250 "security.disabled": "Biometrické odemykání vypnuto",
251 "security.testPassed": "Systémové ověření úspěšné",
252 "biometrics.touch-id": "Odemknout pomocí Touch ID",
253 "biometrics.windows-hello": "Odemknout pomocí Windows Hello",
254 "biometrics.fprintd": "Odemknout otiskem prstu",
255 "biometrics.BIOMETRIC_AVAILABLE": "Systémové ověření je dostupné",
256 "biometrics.BIOMETRIC_UNAVAILABLE": "Systémové ověření není dostupné",
257 "biometrics.BIOMETRIC_NO_ENROLLMENT": "V systému není zaregistrovaný otisk nebo Windows Hello",
258 "biometrics.BIOMETRIC_CANCELLED": "Ověření bylo zrušeno",
259 "biometrics.BIOMETRIC_FAILED": "Ověření selhalo",
260 "biometrics.BIOMETRIC_DEVICE_UNAVAILABLE": "Zařízení je dočasně nedostupné",
261 "biometrics.BIOMETRIC_ENROLLMENT_INVALIDATED": "Registrace již není platná. Použijte hlavní heslo a zapněte odemykání znovu.",
262 "biometrics.BIOMETRIC_MASTER_PASSWORD_REQUIRED": "Je vyžadováno hlavní heslo",
263 "biometrics.BIOMETRIC_TIMEOUT": "Čas ověření vypršel",
264 "biometrics.BIOMETRIC_KEYRING_UNAVAILABLE": "Bezpečný systémový svazek klíčů není dostupný",
265 "biometrics.BIOMETRIC_CREDENTIAL_FAILED": "Systémové úložiště klíčů selhalo. Použijte hlavní heslo.",
266 "biometrics.BIOMETRIC_INVALID_KEY": "Uložený klíč není platný. Použijte hlavní heslo.",
267 "biometrics.BIOMETRIC_BUSY": "Probíhá jiné systémové ověření",
268 "ssh.SSH_LOCAL_NETWORK_DENIED": "macOS nepovolil přístup k síti. V Nastavení systému → Soukromí a zabezpečení → Místní síť povolte CH-J Server Manager a restartujte aplikaci.",
269 "ssh.SSH_MAC_NETWORK_UNREACHABLE": "Server není z macOS dosažitelný. Pokud stejné SSH funguje z terminálu, zkontrolujte Nastavení systému → Soukromí a zabezpečení → Místní síť → CH-J Server Manager. Poté aplikaci restartujte. Zkontrolujte také připojení a VPN."
270});
271 Object.assign(catalogs.de, {
272 "security.title": "Sicherheit",
273 "security.enable": "Biometrisches Entsperren aktivieren",
274 "security.remove": "Deaktivieren und Registrierung entfernen",
275 "security.test": "Systemauthentifizierung testen",
276 "security.autoLock": "Bei Inaktivität automatisch sperren",
277 "security.timeout": "Inaktivitätsdauer",
278 "security.never": "Nie",
279 "security.blur": "Beim Verlassen der Anwendung sperren",
280 "security.sensitive": "Systemauthentifizierung für sensible Vorgänge verlangen",
281 "security.scope": "Geschützt sind Profillöschung, Plugininstallation/-entfernung, Installerstart und Zurücksetzen des entsperrten Vaults. Remote-Terminalbefehle werden nicht zusätzlich geprüft.",
282 "security.lockEffect": "Sperren beendet aktive SSH-Sitzungen, schließt Plugins und stoppt die Diagnose.",
283 "security.confirmPassword": "Master-Passwort zum Ändern der Sperrregeln",
284 "security.strong": "Der Schlüsselbund schützt den Schlüssel mit den aktuellen Touch-ID-Fingerabdrücken. Änderungen machen die Registrierung ungültig.",
285 "security.convenience": "Komfortentsperrung: Die App verlangt Systemauthentifizierung, aber der gespeicherte Schlüssel ist kryptografisch nicht an Biometrie gebunden.",
286 "security.enabled": "Biometrisches Entsperren aktiviert",
287 "security.disabled": "Biometrisches Entsperren deaktiviert",
288 "security.testPassed": "Systemauthentifizierung erfolgreich",
289 "biometrics.touch-id": "Mit Touch ID entsperren",
290 "biometrics.windows-hello": "Mit Windows Hello entsperren",
291 "biometrics.fprintd": "Mit Fingerabdruck entsperren",
292 "biometrics.BIOMETRIC_AVAILABLE": "Systemauthentifizierung verfügbar",
293 "biometrics.BIOMETRIC_UNAVAILABLE": "Systemauthentifizierung nicht verfügbar",
294 "biometrics.BIOMETRIC_NO_ENROLLMENT": "Kein Fingerabdruck bzw. Windows Hello eingerichtet",
295 "biometrics.BIOMETRIC_CANCELLED": "Authentifizierung abgebrochen",
296 "biometrics.BIOMETRIC_FAILED": "Authentifizierung fehlgeschlagen",
297 "biometrics.BIOMETRIC_DEVICE_UNAVAILABLE": "Gerät vorübergehend nicht verfügbar",
298 "biometrics.BIOMETRIC_ENROLLMENT_INVALIDATED": "Registrierung ungültig. Master-Passwort verwenden und Entsperren erneut aktivieren.",
299 "biometrics.BIOMETRIC_MASTER_PASSWORD_REQUIRED": "Master-Passwort erforderlich",
300 "biometrics.BIOMETRIC_TIMEOUT": "Zeit für Authentifizierung abgelaufen",
301 "biometrics.BIOMETRIC_KEYRING_UNAVAILABLE": "Sicherer Systemschlüsselbund nicht verfügbar",
302 "biometrics.BIOMETRIC_CREDENTIAL_FAILED": "Systemschlüsselspeicher fehlgeschlagen. Master-Passwort verwenden.",
303 "biometrics.BIOMETRIC_INVALID_KEY": "Gespeicherter Schlüssel ungültig. Master-Passwort verwenden.",
304 "biometrics.BIOMETRIC_BUSY": "Andere Systemauthentifizierung läuft",
305 "ssh.SSH_LOCAL_NETWORK_DENIED": "macOS hat den Netzwerkzugriff verweigert. CH-J Server Manager unter Systemeinstellungen → Datenschutz & Sicherheit → Lokales Netzwerk erlauben und neu starten.",
306 "ssh.SSH_MAC_NETWORK_UNREACHABLE": "Server unter macOS nicht erreichbar. Falls SSH im Terminal funktioniert, Systemeinstellungen → Datenschutz & Sicherheit → Lokales Netzwerk → CH-J Server Manager prüfen und die App neu starten. Auch Verbindung und VPN prüfen."
307});
308 Object.assign(catalogs.en, {
309 "security.title": "Security",
310 "security.enable": "Enable biometric unlock",
311 "security.remove": "Disable and remove enrollment",
312 "security.test": "Test system authentication",
313 "security.autoLock": "Automatically lock after inactivity",
314 "security.timeout": "Inactivity timeout",
315 "security.never": "Never",
316 "security.blur": "Lock when the application loses focus",
317 "security.sensitive": "Require system authentication for sensitive operations",
318 "security.scope": "Authentication protects profile deletion, plugin installation/removal, launching installers and resetting an unlocked Vault. Remote terminal commands do not require this additional authentication.",
319 "security.lockEffect": "Locking disconnects active SSH sessions, closes plugins and stops diagnostics.",
320 "security.confirmPassword": "Master password to change locking rules",
321 "security.strong": "Keychain protects the key with the current Touch ID fingerprints. Changing fingerprints invalidates enrollment.",
322 "security.convenience": "Convenience unlock: the app requires system authentication, but credential storage is not cryptographically bound to biometrics.",
323 "security.enabled": "Biometric unlock enabled",
324 "security.disabled": "Biometric unlock disabled",
325 "security.testPassed": "System authentication succeeded",
326 "biometrics.touch-id": "Unlock with Touch ID",
327 "biometrics.windows-hello": "Unlock with Windows Hello",
328 "biometrics.fprintd": "Unlock with fingerprint",
329 "biometrics.BIOMETRIC_AVAILABLE": "System authentication available",
330 "biometrics.BIOMETRIC_UNAVAILABLE": "System authentication unavailable",
331 "biometrics.BIOMETRIC_NO_ENROLLMENT": "No fingerprint or Windows Hello enrolled",
332 "biometrics.BIOMETRIC_CANCELLED": "Authentication cancelled",
333 "biometrics.BIOMETRIC_FAILED": "Authentication failed",
334 "biometrics.BIOMETRIC_DEVICE_UNAVAILABLE": "Device temporarily unavailable",
335 "biometrics.BIOMETRIC_ENROLLMENT_INVALIDATED": "Enrollment invalidated. Use the master password and enable biometric unlock again.",
336 "biometrics.BIOMETRIC_MASTER_PASSWORD_REQUIRED": "Master password required",
337 "biometrics.BIOMETRIC_TIMEOUT": "Authentication timed out",
338 "biometrics.BIOMETRIC_KEYRING_UNAVAILABLE": "Secure desktop keyring unavailable",
339 "biometrics.BIOMETRIC_CREDENTIAL_FAILED": "OS credential storage failed. Use the master password.",
340 "biometrics.BIOMETRIC_INVALID_KEY": "Stored key is invalid. Use the master password.",
341 "biometrics.BIOMETRIC_BUSY": "Another system authentication is in progress",
342 "ssh.SSH_LOCAL_NETWORK_DENIED": "macOS denied network access. Allow CH-J Server Manager in System Settings → Privacy & Security → Local Network, then restart the app.",
343 "ssh.SSH_MAC_NETWORK_UNREACHABLE": "Server unreachable from macOS. If SSH works in Terminal, check System Settings → Privacy & Security → Local Network → CH-J Server Manager, then restart the app. Also check connectivity and VPN."
344});
346 const localeByLanguage = Object.freeze({ cs: "cs-CZ", de: "de-DE", en: "en-US" });
347 const supportedLanguages = Object.freeze(Object.keys(catalogs));
349 function normalizeLanguage(value) {
350 const language = String(value || "").toLowerCase().split("-")[0];
351 return supportedLanguages.includes(language) ? language : "cs";
352 }
354 function interpolate(template, values = {}) {
355 return String(template).replace(/\{([A-Za-z0-9_]+)\}/g, (match, key) => (
356 Object.prototype.hasOwnProperty.call(values, key) ? String(values[key]) : match
357 ));
358 }
360 function createI18n(initialLanguage = "cs") {
361 let language = normalizeLanguage(initialLanguage);
362 return Object.freeze({
363 apply(rootNode = document) {
364 rootNode.querySelectorAll("[data-i18n]").forEach((element) => { element.textContent = this.t(element.dataset.i18n); });
365 rootNode.querySelectorAll("[data-i18n-placeholder]").forEach((element) => { element.placeholder = this.t(element.dataset.i18nPlaceholder); });
366 rootNode.querySelectorAll("[data-i18n-aria-label]").forEach((element) => { element.setAttribute("aria-label", this.t(element.dataset.i18nAriaLabel)); });
367 },
368 formatNumber(value, options) { return Number(value).toLocaleString(localeByLanguage[language], options); },
369 getLanguage() { return language; },
370 getLocale() { return localeByLanguage[language]; },
371 setLanguage(value) { language = normalizeLanguage(value); return language; },
372 t(key, values) {
373 const template = catalogs[language][key] ?? catalogs.cs[key] ?? key;
374 return interpolate(template, values);
375 }
376 });
377 }
379 return Object.freeze({ catalogs, createI18n, interpolate, normalizeLanguage, supportedLanguages });
380});

SHA-256: 56c7603634a80d21763c60ba4ce225e7aeef1ee9db57c4c19405ea08ed6f4133

Archive SHA-256: 5ac91caf4fa32a6fdb114f2430deed486fbe7489d5eea343d1f034169fafb5e0