diff --git a/src/locales/translated/af.json b/src/locales/translated/af.json index fffbdff8..7d793fc7 100644 --- a/src/locales/translated/af.json +++ b/src/locales/translated/af.json @@ -44,6 +44,8 @@ "passwordRequired": "Wagwoord word vereis", "sshKeyRequired": "SSH-sleutel word vereis", "credentialAddedSuccessfully": "Geloofsbrief \"{{name}}\" suksesvol bygevoeg", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "Algemeen", "description": "Beskrywing", "folder": "Vouer", @@ -184,6 +186,32 @@ "renameFolder": "Hernoem vouer", "idLabel": "ID:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "Fout: {{error}}", "dragging": "Sleep {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH-pad", "localPath": "Plaaslike Pad", "appName": "Termix", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "Stel die breedte van die sybalk terug", "dragToResizeSidebar": "Sleep om die sybalk se grootte te verander", "noAuthCredentials": "Geen verifikasiebewyse beskikbaar vir hierdie SSH-gasheer nie", @@ -464,10 +493,12 @@ "retry": "Probeer weer", "checking": "Kontroleer...", "checkingDatabase": "Kontroleer databasisverbinding...", + "checkingAuthentication": "Checking authentication...", "actions": "Aksies", "remove": "Verwyder", "revoke": "Herroep", - "create": "Skep" + "create": "Skep", + "update": "Update" }, "nav": { "home": "Tuis", @@ -489,7 +520,12 @@ "hostManager": "Gasheerbestuurder", "cannotSplitTab": "Kan nie hierdie oortjie verdeel nie", "tabNavigation": "Tab-navigasie", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "Admin-instellings", @@ -537,6 +573,7 @@ "userRegistration": "Gebruikersregistrasie", "allowNewAccountRegistration": "Laat nuwe rekeningregistrasie toe", "allowPasswordLogin": "Laat gebruikersnaam/wagwoord-aanmelding toe", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "Verpligte velde ontbreek: {{fields}}", "oidcConfigurationUpdated": "OIDC-konfigurasie suksesvol opgedateer!", "failedToFetchOidcConfig": "Kon nie OIDC-konfigurasie haal nie", @@ -848,6 +885,13 @@ "autoStartContainer": "Outomatiese begin met houerlansering", "autoStartDesc": "Begin hierdie tonnel outomaties wanneer die houer begin", "addConnection": "Voeg tonnelverbinding by", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "Sshpass word vereis vir wagwoordverifikasie", "sshpassRequiredDesc": "Vir wagwoordverifikasie in tonnels moet sshpass op die stelsel geïnstalleer wees.", "otherInstallMethods": "Ander installasiemetodes:", @@ -855,13 +899,16 @@ "or": "of", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Vensters", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "SSH-bedienerkonfigurasie vereis", "sshServerConfigDesc": "Vir tonnelverbindings moet die SSH-bediener gekonfigureer word om poortaanstuuring toe te laat:", "gatewayPortsYes": "om afgeleë poorte aan alle koppelvlakke te bind", "allowTcpForwardingYes": "om poortaanstuuring te aktiveer", "permitRootLoginYes": "as rootgebruiker vir tonnelwerk gebruik word", - "editSshConfig": "Wysig /etc/ssh/sshd_config en herbegin SSH: sudo systemctl herbegin sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Oplaai", "authentication": "Verifikasie", "password": "Wagwoord", @@ -1096,6 +1143,19 @@ "quickActionName": "Aksienaam", "noSnippetFound": "Geen uittreksel gevind nie", "quickActionsOrder": "Vinnige aksieknoppies sal in die volgorde hierbo op die Bedienerstatistieke-bladsy verskyn.", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Gevorderde verifikasie-instellings", "sudoPasswordAutoFill": "Sudo Wagwoord Outomatiese Vul", "sudoPasswordAutoFillDesc": "Bied outomaties aan om SSH-wagwoord in te voeg wanneer sudo vir wagwoord vra", @@ -1115,6 +1175,15 @@ "addVariable": "Voeg veranderlike by", "docker": "Docker", "openDocker": "Maak Docker oop", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker is nie vir hierdie gasheer geaktiveer nie. Aktiveer dit in Gasheerinstellings om Docker-funksies te gebruik.", "validating": "Valideer Docker...", "error": "Fout", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Verifikasiekode", "totpPlaceholder": "000000", "totpVerify": "Verifieer", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Wagwoord invoeg?", "sudoPasswordPopupHint": "Druk Enter om in te voeg, Esc om te verwerp", "sudoPasswordPopupConfirm": "Invoeg", - "sudoPasswordPopupDismiss": "Maak toe" + "sudoPasswordPopupDismiss": "Maak toe", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Lêerbestuurder", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} suksesvol verwyder", "itemsDeletedSuccessfully": "{{count}} items is suksesvol verwyder", "failedToDeleteItems": "Kon nie items uitvee nie", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Plaas lêers hier om op te laai", "emptyFolder": "Hierdie vouer is leeg", "itemCount": "{{count}} items", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Lêer te groot: {{error}}", "sshConnectionFailed": "SSH-verbinding het misluk. Kontroleer asseblief jou verbinding met {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Kon nie lêer laai nie: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Suksesvol gekoppel", "totpVerificationFailed": "TOTP-verifikasie het misluk", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Verifikasiekode:", "changePermissions": "Verander Toestemmings", "changePermissionsDesc": "Wysig lêertoestemmings vir", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Kon nie toestemmings verander nie" }, "tunnel": { - "noTunnelsConfigured": "Geen tonnels gekonfigureer nie", - "configureTunnelsInHostSettings": "Konfigureer tonnelverbindings in die Gasheerbestuurder om te begin" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH-tonnels", @@ -1624,6 +1736,8 @@ "refreshStatus": "Verfris status", "fileManagerAlreadyOpen": "Lêerbestuurder is reeds oop vir hierdie gasheer", "openFileManager": "Maak Lêerbestuurder oop", + "connecting": "Verbind...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} SVE", "cpuCores_other": "{{count}} SVE's", "naCpus": "N/A SVE(s)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Kon nie bedienermetrieke haal nie", "failedToFetchHomeData": "Kon nie huisdata haal nie", "loadingMetrics": "Laai statistieke...", - "connecting": "Verbind...", "refreshing": "Verfrissend...", "serverOffline": "Bediener vanlyn", "cannotFetchMetrics": "Kan nie statistieke van vanlyn bediener haal nie", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Voer tans {{name}}uit ...", "quickActionSuccess": "{{name}} suksesvol voltooi", "quickActionFailed": "{{name}} het misluk", - "quickActionError": "Kon nie {{name}}uitvoer nie" + "quickActionError": "Kon nie {{name}}uitvoer nie", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH-BEDIENERBESTUURDER", @@ -1824,7 +1964,11 @@ "emailExists": "E-posadres bestaan reeds", "loadFailed": "Kon nie data laai nie", "saveError": "Kon nie stoor nie", - "sessionExpired": "Sessie het verstryk - meld asseblief weer aan" + "sessionExpired": "Sessie het verstryk - meld asseblief weer aan", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Suksesvol gestoor", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminaal", "hostSidebarSettings": "Gasheer en sybalk", "snippetsSettings": "Brokkies", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Huidige Wagwoord", "passwordChangedSuccess": "Wagwoord suksesvol verander! Meld asseblief weer aan.", "failedToChangePassword": "Kon nie wagwoord verander nie. Kontroleer asseblief jou huidige wagwoord en probeer weer.", @@ -1890,7 +2037,9 @@ "themeDark": "Donker", "themeSystem": "Stelsel", "appearanceDesc": "Kies die kleurtema vir die toepassing", - "terminalSyntaxHighlightingDesc": "Merk outomaties opdragte, paaie, IP's en logvlakke in terminaaluitvoer" + "terminalSyntaxHighlightingDesc": "Merk outomaties opdragte, paaie, IP's en logvlakke in terminaaluitvoer", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Kon nie weergawe-inligting laai nie" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Dashboard", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Ondersteuning", "discord": "Disharmonie", @@ -2114,7 +2264,88 @@ "noServerData": "Geen bedienerdata beskikbaar nie", "cpu": "SVE", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Deel gasheer", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker is nie vir hierdie gasheer geaktiveer nie", "validating": "Valideer Docker...", "connectingToHost": "Verbind met gasheer...", + "connecting": "Verbind...", "error": "Fout", "errorCode": "Foutkode: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP-verifikasie het misluk. Probeer asseblief weer.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Voer verifikasiekode in", + "loadingContainers": "Laai houers...", "containerStarted": "Houer {{name}} het begin", "failedToStartContainer": "Kon nie houer {{name}}begin nie", "containerStopped": "Houer {{name}} gestop", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Is jy seker jy wil die houer '{{name}}' verwyder? Hierdie aksie kan nie ongedaan gemaak word nie.", "runningContainerWarning": "Waarskuwing: Hierdie houer loop tans. As dit verwyder word, sal die houer eers gestop word.", "removing": "Verwyder...", - "loadingContainers": "Laai houers...", "noContainersFound": "Geen houers gevind nie", "noContainersFoundHint": "Geen Docker-houers is op hierdie gasheer beskikbaar nie", "searchPlaceholder": "Soek houers...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Ontkoppel van houer", "containerMustBeRunning": "Die houer moet loop om toegang tot die konsole te verkry", "authenticationRequired": "Verifikasie vereis", - "verificationCodePrompt": "Voer verifikasiekode in", - "totpVerificationFailed": "TOTP-verifikasie het misluk. Probeer asseblief weer.", "connectedTo": "Gekoppel aan {{containerName}}", "disconnected": "Ontkoppel", "consoleError": "Konsolefout", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sj", "ash": "as", - "connecting": "Verbind...", "connect": "Verbind", "disconnect": "Ontkoppel", "notConnected": "Nie gekoppel nie", @@ -2393,7 +2626,37 @@ "logs": "Logboeke", "stats": "Statistiek", "consoleTab": "Konsole", - "startContainerToAccess": "Begin die houer om toegang tot die konsole te verkry" + "startContainerToAccess": "Begin die houer om toegang tot die konsole te verkry", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Skakel oor na Lig", diff --git a/src/locales/translated/ar.json b/src/locales/translated/ar.json index c7a4547f..3ea58d8e 100644 --- a/src/locales/translated/ar.json +++ b/src/locales/translated/ar.json @@ -44,6 +44,8 @@ "passwordRequired": "كلمة المرور مطلوبة", "sshKeyRequired": "مفتاح SSH مطلوب", "credentialAddedSuccessfully": "تم إضافة بيانات الاعتماد \"{{name}}بنجاح", + "savingCredential": "حفظ الاعتماد...", + "updatingCredential": "جارٍ تحديث بيانات الاعتماد...", "general": "عام", "description": "الوصف", "folder": "مجلد", @@ -184,6 +186,32 @@ "renameFolder": "إعادة تسمية المجلد", "idLabel": "ID:" }, + "quickConnect": { + "title": "الاتصال السريع", + "description": "الاتصال مباشرة بمحطة طرفية أو جلسة مدير ملفات دون حفظ تكوين المضيف", + "ipAddress": "عنوان IP أو اسم المضيف", + "port": "المنفذ", + "username": "اسم المستخدم", + "password": "كلمة المرور", + "key": "مفتاح SSH الخاص", + "keyPassword": "كلمة المرور الرئيسية (اختياري)", + "keyType": "نوع المفتاح", + "uploadFile": "تحميل ملف", + "pasteKey": "لصق المفتاح", + "credential": "بيانات", + "overrideUsername": "تجاوز اسم المستخدم", + "overrideUsernameDesc": "استخدام اسم مستخدم مختلف عن اسم المستخدم المخزن في بيانات الاعتماد", + "connectTerminal": "الاتصال بالمحطة الطرفية", + "connectFileManager": "الاتصال بمدير الملفات", + "cancel": "إلغاء", + "passwordRequired": "كلمة المرور مطلوبة", + "keyRequired": "مفتاح SSH مطلوب", + "credentialRequired": "اختيار الاعتماد مطلوب", + "connectionEstablished": "تم إنشاء الاتصال بنجاح", + "connectionFailed": "فشل في إنشاء الاتصال", + "autoDetect": "الكشف التلقائي", + "authentication": "المصادقة" + }, "dragIndicator": { "error": "خطأ: {{error}}", "dragging": "سحب {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "مسار SSH", "localPath": "المسار المحلي", "appName": "تيريمكس", + "openInNewTab": "فتح في علامة تبويب جديدة", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "سحب لتغيير حجم الشريط الجانبي", "noAuthCredentials": "لا توجد بيانات اعتماد مصادقة متاحة لمضيف SSH هذا", @@ -464,10 +493,12 @@ "retry": "إعادة المحاولة", "checking": "يتحقق...", "checkingDatabase": "التحقق من اتصال قاعدة البيانات...", + "checkingAuthentication": "التحقق من المصادقة...", "actions": "الإجراءات", "remove": "إزالة", "revoke": "Revoke", - "create": "إنشاء" + "create": "إنشاء", + "update": "تحديث" }, "nav": { "home": "المنزل", @@ -489,7 +520,12 @@ "hostManager": "مدير المضيف", "cannotSplitTab": "لا يمكن تقسيم هذا التبويب", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "نسخ كلمة المرور", + "copySudoPassword": "نسخ كلمة مرور سودو", + "passwordCopied": "تم نسخ كلمة المرور إلى الحافظة", + "sudoPasswordCopied": "تم نسخ كلمة المرور إلى الحافظة", + "noPasswordAvailable": "لا توجد كلمة مرور متاحة" }, "admin": { "title": "إعدادات المدير", @@ -537,6 +573,7 @@ "userRegistration": "تسجيل المستخدم", "allowNewAccountRegistration": "السماح بتسجيل حساب جديد", "allowPasswordLogin": "السماح باستخدام اسم المستخدم/كلمة المرور", + "allowPasswordReset": "السماح بإعادة تعيين كلمة المرور عن طريق رمز إعادة التعيين", "missingRequiredFields": "الحقول المطلوبة مفقودة: {{fields}}", "oidcConfigurationUpdated": "تم تحديث تكوين OIDC بنجاح!", "failedToFetchOidcConfig": "فشل في جلب إعدادات OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "بدء التشغيل التلقائي عند تشغيل الحاوية", "autoStartDesc": "تشغيل هذا النفق تلقائياً عند تشغيل الحاوية", "addConnection": "إضافة اتصال نفق", + "tunnelType": "نوع النفق", + "tunnelTypeLocal": "محلي (-L)", + "tunnelTypeRemote": "عن بعد (-R)", + "tunnelTypeLocalDesc": "إعادة توجيه المنفذ المحلي إلى نقطة النهاية البعيدة", + "tunnelTypeRemoteDesc": "إعادة توجيه المنفذ البعيد إلى الجهاز المحلي", + "tunnelForwardDescriptionLocal": "سيؤدي هذا النفق إلى نقل الحركة من المنفذ المحلي {{sourcePort}} إلى المنفذ {{endpointPort}} على آلة نقطة النهاية.", + "tunnelForwardDescriptionRemote": "سيؤدي هذا النفق إلى نقل حركة المرور من المنفذ {{sourcePort}} على جهاز المصدر (تفاصيل الاتصال الحالي في التبويب العام) إلى المنفذ {{endpointPort}} على جهاز نقطة النهاية.", "sshpassRequired": "تجاوز مطلوب للمصادقة على كلمة المرور", "sshpassRequiredDesc": "للمصادقة بكلمة المرور في الأنفاق، يجب تثبيت Sshpassعلى النظام.", "otherInstallMethods": "طرق تثبيت أخرى:", @@ -855,13 +899,16 @@ "or": "أو", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "ويندوز", + "windows": "ويندوز (WSL، لا يوجد ثنائي رسمي)", "sshServerConfigRequired": "إعدادات خادم SSH مطلوبة", "sshServerConfigDesc": "بالنسبة لاتصالات الأنفاق، يجب تكوين خادم SSH للسماح بإعادة توجيه المنفذ:", "gatewayPortsYes": "لربط المنافذ البعيدة بجميع الواجهات", "allowTcpForwardingYes": "لتمكين إعادة توجيه المنفذ", "permitRootLoginYes": "إذا استخدم المستخدم الجذر للتنقل", - "editSshConfig": "تحرير /etc/ssh/sshd_config وإعادة تشغيل SSH: إعادة تشغيل sudo systemctl sshd", + "editSshConfig": "تحرير ملف تهيئة SSH:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "ثم أعد تشغيل خدمة SSH:", + "restartSshCommand": "sudo systemctl إعادة تشغيل sshd", "upload": "تحميل", "authentication": "المصادقة", "password": "كلمة المرور", @@ -1096,6 +1143,19 @@ "quickActionName": "اسم الإجراء", "noSnippetFound": "لم يتم العثور على كتلة", "quickActionsOrder": "ستظهر أزرار الإجراء السريع في الترتيب الوارد أعلاه في صفحة إحصائيات الخادم", + "sidebarCustomization": "تخصيص زر الشريط الجانبي", + "sidebarCustomizationDesc": "اختر الإجراءات التي تظهر كأزرار سريعة في الشريط الجانبي. الإجراءات التي لا تظهر كأزرار ستظهر في القائمة المنسدلة.", + "showTerminalInSidebar": "إظهار زر المحطة الطرفية", + "showTerminalInSidebarDesc": "عرض المحطة الطرفية كزر سريع في الشريط الجانبي", + "showFileManagerInSidebar": "إظهار زر مدير الملفات", + "showFileManagerInSidebarDesc": "عرض مدير الملفات كزر سريع في الشريط الجانبي", + "showTunnelInSidebar": "إظهار زر النفق", + "showTunnelInSidebarDesc": "عرض إدارة النفق كزر سريع في الشريط الجانبي", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "إعدادات المصادقة المتقدمة", "sudoPasswordAutoFill": "كلمة مرور سودو تلقائية", "sudoPasswordAutoFillDesc": "عرض تلقائي لإدراج كلمة مرور SSH عندما يطلب sudo لكلمة المرور", @@ -1115,6 +1175,15 @@ "addVariable": "إضافة متغير", "docker": "دوكر", "openDocker": "فتح Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker غير مفعل لهذا المضيف. قم بتمكينه في إعدادات المضيف لاستخدام ميزات Docker.", "validating": "التحقق من دوكر...", "error": "خطأ", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "رمز التحقق", "totpPlaceholder": "000000", "totpVerify": "تحقق", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "إدراج كلمة المرور؟", "sudoPasswordPopupHint": "اضغط Enter للإدراج ، Esc للإلغاء", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "تجاهل" + "sudoPasswordPopupDismiss": "تجاهل", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "مدير الملفات", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "تم حذف {{type}} بنجاح", "itemsDeletedSuccessfully": "تم حذف {{count}} عنصرًا بنجاح", "failedToDeleteItems": "فشل حذف العناصر", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "إسقاط الملفات هنا لتحميل", "emptyFolder": "هذا المجلد فارغ", "itemCount": "عناصر {{count}}", @@ -1531,8 +1630,11 @@ "fileTooLarge": "الملف كبير جدا: {{error}}", "sshConnectionFailed": "فشل الاتصال بSSH. الرجاء التحقق من اتصالك بـ {{name}} ({{ip}}:{{port}})", "loadFileFailed": "فشل تحميل الملف: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "تم الاتصال بنجاح", "totpVerificationFailed": "فشل التحقق من TOTP", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "رمز التحقق:", "changePermissions": "تغيير الأذونات", "changePermissionsDesc": "تعديل أذونات الملف لـ", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "فشل في تغيير الأذونات" }, "tunnel": { - "noTunnelsConfigured": "لم يتم تكوين الأنفاق", - "configureTunnelsInHostSettings": "تكوين اتصالات الأنفاق في مدير المضيف للبدء" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "أنفاق SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "تحديث الحالة", "fileManagerAlreadyOpen": "مدير الملفات مفتوح بالفعل لهذا المضيف", "openFileManager": "فتح مدير الملفات", + "connecting": "جاري الاتصال...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} المعالج", "cpuCores_other": "{{count}} المعالج", "naCpus": "N/A CPU(s)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "فشل في جلب مقاييس الخادم", "failedToFetchHomeData": "فشل في جلب البيانات الرئيسية", "loadingMetrics": "جاري تحميل المقاييس...", - "connecting": "جاري الاتصال...", "refreshing": "تحديث...", "serverOffline": "الخادم غير متصل", "cannotFetchMetrics": "لا يمكن جلب المقاييس من الخادم غير متصل", @@ -1682,7 +1795,34 @@ "executingQuickAction": "تنفيذ {{name}}...", "quickActionSuccess": "أكمل {{name}} بنجاح", "quickActionFailed": "فشل {{name}}", - "quickActionError": "فشل في تنفيذ {{name}}" + "quickActionError": "فشل في تنفيذ {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "إدارة خدمة SSH", @@ -1824,7 +1964,11 @@ "emailExists": "البريد الإلكتروني موجود بالفعل", "loadFailed": "فشل تحميل البيانات", "saveError": "فشل في الحفظ", - "sessionExpired": "انتهت صلاحية الجلسة - الرجاء تسجيل الدخول مرة أخرى" + "sessionExpired": "انتهت صلاحية الجلسة - الرجاء تسجيل الدخول مرة أخرى", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "تم الحفظ بنجاح", @@ -1882,6 +2026,9 @@ "terminalSettings": "المحطة", "hostSidebarSettings": "المضيف و الشريط الجانبي", "snippetsSettings": "كتل الكود", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "كلمة المرور الحالية", "passwordChangedSuccess": "تم تغيير كلمة المرور بنجاح! الرجاء تسجيل الدخول مرة أخرى.", "failedToChangePassword": "فشل في تغيير كلمة المرور. الرجاء التحقق من كلمة المرور الحالية وحاول مرة أخرى.", @@ -1890,7 +2037,9 @@ "themeDark": "داكن", "themeSystem": "النظام", "appearanceDesc": "حدد سمة اللون للتطبيق", - "terminalSyntaxHighlightingDesc": "تسليط الضوء تلقائياً على الأوامر والمسارات وIP ومستويات السجل في المخرجات الطرفية" + "terminalSyntaxHighlightingDesc": "تسليط الضوء تلقائياً على الأوامر والمسارات وIP ومستويات السجل في المخرجات الطرفية", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "فشل تحميل معلومات الإصدار" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "لوحة التحكم", + "loading": "Loading dashboard...", "github": "GitHub", "support": "الدعم", "discord": "ديسكورد", @@ -2114,7 +2264,88 @@ "noServerData": "لا تتوفر بيانات الخادم", "cpu": "المعالج", "ram": "RAM", - "notAvailable": "لا" + "notAvailable": "لا", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "مشاركة المضيف", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker غير مفعل لهذا المضيف", "validating": "التحقق من دوكر...", "connectingToHost": "جاري الاتصال بالمضيف...", + "connecting": "جاري الاتصال...", "error": "خطأ", "errorCode": "رمز الخطأ: {{code}}", "version": "روكر {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "فشل التحقق من TOTP. الرجاء المحاولة مرة أخرى.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "أدخل رمز التحقق", + "loadingContainers": "تحميل الحاويات...", "containerStarted": "بدأ الحاوية {{name}}", "failedToStartContainer": "فشل بدء تشغيل الحاوية {{name}}", "containerStopped": "تم إيقاف الحاوية {{name}}", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "هل أنت متأكد من أنك تريد إزالة الحاوية '{{name}}'؟ لا يمكن التراجع عن هذا الإجراء.", "runningContainerWarning": "تحذير: هذه الحاوية قيد التشغيل حاليا. إزالتها ستوقف الحاوية أولاً.", "removing": "الإزالة...", - "loadingContainers": "تحميل الحاويات...", "noContainersFound": "لم يتم العثور على حاويات", "noContainersFoundHint": "لا توجد حاويات منصة للدفع متاحة على هذا المضيف", "searchPlaceholder": "البحث في الحاويات...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "قطع الاتصال بالحاوية", "containerMustBeRunning": "يجب أن يكون الحاوية قيد التشغيل للوصول إلى وحدة التحكم", "authenticationRequired": "مطلوب المصادقة", - "verificationCodePrompt": "أدخل رمز التحقق", - "totpVerificationFailed": "فشل التحقق من TOTP. الرجاء المحاولة مرة أخرى.", "connectedTo": "متصل بـ {{containerName}}", "disconnected": "قطع", "consoleError": "خطأ في وحدة التحكم", @@ -2382,7 +2616,6 @@ "bash": "باش", "sh": "رماد", "ash": "رماد", - "connecting": "جاري الاتصال...", "connect": "الاتصال", "disconnect": "قطع الاتصال", "notConnected": "غير متصل", @@ -2393,7 +2626,37 @@ "logs": "السجلات", "stats": "إحصائيات", "consoleTab": "وحدة", - "startContainerToAccess": "بدء تشغيل الحاوية للوصول إلى وحدة التحكم" + "startContainerToAccess": "بدء تشغيل الحاوية للوصول إلى وحدة التحكم", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "التبديل إلى الضوء", diff --git a/src/locales/translated/bg.json b/src/locales/translated/bg.json index 9fab0432..712d4304 100644 --- a/src/locales/translated/bg.json +++ b/src/locales/translated/bg.json @@ -44,6 +44,8 @@ "passwordRequired": "Изисква се парола", "sshKeyRequired": "Изисква се SSH ключ", "credentialAddedSuccessfully": "Идентификационните данни „{{name}}“ са добавени успешно", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "Общи", "description": "Описание", "folder": "Папка", @@ -184,6 +186,32 @@ "renameFolder": "Преименуване на папка", "idLabel": "Идентификационен номер:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "Грешка: {{error}}", "dragging": "Плъзгане {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH път", "localPath": "Локален път", "appName": "Термикс", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "Нулиране на ширината на страничната лента", "dragToResizeSidebar": "Плъзнете, за да промените размера на страничната лента", "noAuthCredentials": "Няма налични идентификационни данни за удостоверяване за този SSH хост", @@ -464,10 +493,12 @@ "retry": "Опитай отново", "checking": "Проверка...", "checkingDatabase": "Проверка на връзката с базата данни...", + "checkingAuthentication": "Checking authentication...", "actions": "Действия", "remove": "Премахване", "revoke": "Отмяна", - "create": "Създаване" + "create": "Създаване", + "update": "Update" }, "nav": { "home": "Дом", @@ -489,7 +520,12 @@ "hostManager": "Мениджър на домакини", "cannotSplitTab": "Този раздел не може да бъде разделен", "tabNavigation": "Навигация с раздели", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "Административни настройки", @@ -537,6 +573,7 @@ "userRegistration": "Регистрация на потребител", "allowNewAccountRegistration": "Разрешаване на регистрация на нов акаунт", "allowPasswordLogin": "Разрешаване на вход с потребителско име/парола", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "Липсват задължителни полета: {{fields}}", "oidcConfigurationUpdated": "OIDC конфигурацията е актуализирана успешно!", "failedToFetchOidcConfig": "Неуспешно извличане на OIDC конфигурацията", @@ -848,6 +885,13 @@ "autoStartContainer": "Автоматично стартиране при стартиране на контейнер", "autoStartDesc": "Автоматично стартиране на този тунел при стартиране на контейнера", "addConnection": "Добавяне на тунелна връзка", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "Sshpass е необходим за удостоверяване с парола", "sshpassRequiredDesc": "За удостоверяване с парола в тунели, sshpass трябва да бъде инсталиран на системата.", "otherInstallMethods": "Други методи за монтаж:", @@ -855,13 +899,16 @@ "or": "или", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Прозорци", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "Необходима е конфигурация на SSH сървъра", "sshServerConfigDesc": "За тунелни връзки, SSH сървърът трябва да бъде конфигуриран да позволява пренасочване на портове:", "gatewayPortsYes": "да се свържат отдалечени портове с всички интерфейси", "allowTcpForwardingYes": "за да активирате пренасочването на портове", "permitRootLoginYes": "ако използвате root потребител за тунелиране", - "editSshConfig": "Редактирайте /etc/ssh/sshd_config и рестартирайте SSH: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Качване", "authentication": "Удостоверяване", "password": "Парола", @@ -1096,6 +1143,19 @@ "quickActionName": "Име на действието", "noSnippetFound": "Не е намерен фрагмент", "quickActionsOrder": "Бутоните за бързи действия ще се появят в реда, посочен по-горе, на страницата със статистика на сървъра.", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Разширени настройки за удостоверяване", "sudoPasswordAutoFill": "Автоматично попълване на парола за Sudo", "sudoPasswordAutoFillDesc": "Автоматично предлагане за въвеждане на SSH парола, когато sudo поиска парола", @@ -1115,6 +1175,15 @@ "addVariable": "Добавяне на променлива", "docker": "Докер", "openDocker": "Отвори Докер", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker не е активиран за този хост. Активирайте го в настройките на хоста, за да използвате функциите на Docker.", "validating": "Валидиране на Docker...", "error": "Грешка", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Код за потвърждение", "totpPlaceholder": "000000", "totpVerify": "Проверка", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Въвеждане на парола?", "sudoPasswordPopupHint": "Натиснете Enter за вмъкване, Esc за отхвърляне", "sudoPasswordPopupConfirm": "Вмъкване", - "sudoPasswordPopupDismiss": "Отхвърляне" + "sudoPasswordPopupDismiss": "Отхвърляне", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Файлов мениджър", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} е изтрит успешно", "itemsDeletedSuccessfully": "{{count}} елемента са изтрити успешно", "failedToDeleteItems": "Изтриването на елементи не бе успешно", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Пуснете файлове тук, за да ги качите", "emptyFolder": "Тази папка е празна", "itemCount": "{{count}} артикули", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Файлът е твърде голям: {{error}}", "sshConnectionFailed": "SSH връзката не бе успешна. Моля, проверете връзката си с {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Неуспешно зареждане на файл: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Свързаването е осъществено успешно", "totpVerificationFailed": "Проверката на TOTP не бе успешна", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Код за потвърждение:", "changePermissions": "Промяна на разрешенията", "changePermissionsDesc": "Промяна на разрешенията за файлове за", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Промяната на разрешенията не бе успешна" }, "tunnel": { - "noTunnelsConfigured": "Няма конфигурирани тунели", - "configureTunnelsInHostSettings": "Конфигурирайте тунелни връзки в Host Manager, за да започнете" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH тунели", @@ -1624,6 +1736,8 @@ "refreshStatus": "Обновяване на състоянието", "fileManagerAlreadyOpen": "Файловият мениджър вече е отворен за този хост", "openFileManager": "Отворете файловия мениджър", + "connecting": "Свързване...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} Процесор", "cpuCores_other": "{{count}} Процесори", "naCpus": "Няма процесор(и)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Неуспешно извличане на показателите на сървъра", "failedToFetchHomeData": "Извличането на данните за дома не бе успешно", "loadingMetrics": "Зареждане на показатели...", - "connecting": "Свързване...", "refreshing": "Освежаващо...", "serverOffline": "Сървърът е офлайн", "cannotFetchMetrics": "Не могат да се извлекат показатели от офлайн сървър", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Изпълнява се {{name}}...", "quickActionSuccess": "{{name}} завършено успешно", "quickActionFailed": "{{name}} неуспешно", - "quickActionError": "Неуспешно изпълнение на {{name}}" + "quickActionError": "Неуспешно изпълнение на {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH СЪРВЪР МЕНИДЖЪР", @@ -1824,7 +1964,11 @@ "emailExists": "Имейл адресът вече съществува", "loadFailed": "Зареждането на данните не бе успешно", "saveError": "Запазването не бе успешно", - "sessionExpired": "Сесията е изтекла - моля, влезте отново" + "sessionExpired": "Сесията е изтекла - моля, влезте отново", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Запазено успешно", @@ -1882,6 +2026,9 @@ "terminalSettings": "Терминал", "hostSidebarSettings": "Хост и странична лента", "snippetsSettings": "Откъси", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Текуща парола", "passwordChangedSuccess": "Паролата е променена успешно! Моля, влезте отново.", "failedToChangePassword": "Промяната на паролата не бе успешна. Моля, проверете текущата си парола и опитайте отново.", @@ -1890,7 +2037,9 @@ "themeDark": "Тъмно", "themeSystem": "Система", "appearanceDesc": "Изберете цветовата тема за приложението", - "terminalSyntaxHighlightingDesc": "Автоматично маркиране на команди, пътища, IP адреси и нива на лог файлове в изхода на терминала" + "terminalSyntaxHighlightingDesc": "Автоматично маркиране на команди, пътища, IP адреси и нива на лог файлове в изхода на терминала", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Зареждането на информация за версията не бе успешно" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Табло за управление", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Поддръжка", "discord": "Дискорд", @@ -2114,7 +2264,88 @@ "noServerData": "Няма налични данни от сървъра", "cpu": "Процесор", "ram": "RAM памет", - "notAvailable": "Няма данни" + "notAvailable": "Няма данни", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Споделяне на хост", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker не е активиран за този хост", "validating": "Валидиране на Docker...", "connectingToHost": "Свързване с хоста...", + "connecting": "Свързване...", "error": "Грешка", "errorCode": "Код на грешката: {{code}}", "version": "Докер {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Проверката на TOTP не бе успешна. Моля, опитайте отново.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Въведете код за потвърждение", + "loadingContainers": "Зареждане на контейнери...", "containerStarted": "Контейнер {{name}} е стартиран", "failedToStartContainer": "Неуспешно стартиране на контейнер {{name}}", "containerStopped": "Контейнерът {{name}} е спрян", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Сигурни ли сте, че искате да премахнете контейнера „{{name}}“? Това действие не може да бъде отменено.", "runningContainerWarning": "Предупреждение: Този контейнер в момента работи. Премахването му първо ще спре контейнера.", "removing": "Премахване...", - "loadingContainers": "Зареждане на контейнери...", "noContainersFound": "Не са намерени контейнери", "noContainersFoundHint": "На този хост няма налични Docker контейнери", "searchPlaceholder": "Търсене на контейнери...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Изключен от контейнера", "containerMustBeRunning": "Контейнерът трябва да е работещ, за да има достъп до конзолата", "authenticationRequired": "Изисква се удостоверяване", - "verificationCodePrompt": "Въведете код за потвърждение", - "totpVerificationFailed": "Проверката на TOTP не бе успешна. Моля, опитайте отново.", "connectedTo": "Свързано с {{containerName}}", "disconnected": "Изключен", "consoleError": "Грешка в конзолата", @@ -2382,7 +2616,6 @@ "bash": "Баш", "sh": "ш", "ash": "пепел", - "connecting": "Свързване...", "connect": "Свържете се", "disconnect": "Изключване", "notConnected": "Няма връзка", @@ -2393,7 +2626,37 @@ "logs": "Дневници", "stats": "Статистика", "consoleTab": "Конзола", - "startContainerToAccess": "Стартирайте контейнера, за да получите достъп до конзолата" + "startContainerToAccess": "Стартирайте контейнера, за да получите достъп до конзолата", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Превключване към светлина", diff --git a/src/locales/translated/bn.json b/src/locales/translated/bn.json index 3a223797..4630106f 100644 --- a/src/locales/translated/bn.json +++ b/src/locales/translated/bn.json @@ -44,6 +44,8 @@ "passwordRequired": "পাসওয়ার্ড প্রয়োজন।", "sshKeyRequired": "SSH কী প্রয়োজন", "credentialAddedSuccessfully": "\"{{name}}\" শংসাপত্র সফলভাবে যোগ করা হয়েছে", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "সাধারণ", "description": "বিবরণ", "folder": "ফোল্ডার", @@ -184,6 +186,32 @@ "renameFolder": "ফোল্ডারটির নাম পরিবর্তন করুন", "idLabel": "আইডি:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "ত্রুটি: {{error}}", "dragging": "টেনে আনা হচ্ছে {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH পাথ", "localPath": "স্থানীয় পথ", "appName": "টার্মিক্স", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "সাইডবারের প্রস্থ রিসেট করুন", "dragToResizeSidebar": "সাইডবারের আকার পরিবর্তন করতে টেনে আনুন", "noAuthCredentials": "এই SSH হোস্টের জন্য কোনও প্রমাণীকরণ শংসাপত্র উপলব্ধ নেই।", @@ -464,10 +493,12 @@ "retry": "পুনরায় চেষ্টা করুন", "checking": "পরীক্ষা করা হচ্ছে...", "checkingDatabase": "ডাটাবেস সংযোগ পরীক্ষা করা হচ্ছে...", + "checkingAuthentication": "Checking authentication...", "actions": "কর্ম", "remove": "অপসারণ", "revoke": "প্রত্যাহার করুন", - "create": "তৈরি করুন" + "create": "তৈরি করুন", + "update": "Update" }, "nav": { "home": "হোম", @@ -489,7 +520,12 @@ "hostManager": "হোস্ট ম্যানেজার", "cannotSplitTab": "এই ট্যাবটি বিভক্ত করা যাবে না", "tabNavigation": "ট্যাব নেভিগেশন", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "অ্যাডমিন সেটিংস", @@ -537,6 +573,7 @@ "userRegistration": "ব্যবহারকারী নিবন্ধন", "allowNewAccountRegistration": "নতুন অ্যাকাউন্ট নিবন্ধনের অনুমতি দিন", "allowPasswordLogin": "ব্যবহারকারীর নাম/পাসওয়ার্ড লগইন করার অনুমতি দিন", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "প্রয়োজনীয় ক্ষেত্রগুলি অনুপস্থিত: {{fields}}", "oidcConfigurationUpdated": "OIDC কনফিগারেশন সফলভাবে আপডেট হয়েছে!", "failedToFetchOidcConfig": "OIDC কনফিগারেশন আনতে ব্যর্থ হয়েছে", @@ -848,6 +885,13 @@ "autoStartContainer": "কন্টেইনার লঞ্চে স্বয়ংক্রিয়ভাবে শুরু", "autoStartDesc": "কন্টেইনার চালু হলে এই টানেলটি স্বয়ংক্রিয়ভাবে চালু করুন", "addConnection": "টানেল সংযোগ যোগ করুন", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "পাসওয়ার্ড প্রমাণীকরণের জন্য Sshpass প্রয়োজন", "sshpassRequiredDesc": "টানেলগুলিতে পাসওয়ার্ড প্রমাণীকরণের জন্য, সিস্টেমে sshpass ইনস্টল করা আবশ্যক।", "otherInstallMethods": "অন্যান্য ইনস্টলেশন পদ্ধতি:", @@ -855,13 +899,16 @@ "or": "অথবা", "centosRhelFedora": "সেন্টোস/আরএইচইএল/ফেডোরা", "macos": "ম্যাকওএস", - "windows": "জানালা", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "SSH সার্ভার কনফিগারেশন প্রয়োজন", "sshServerConfigDesc": "টানেল সংযোগের জন্য, SSH সার্ভারটি পোর্ট ফরওয়ার্ডিং অনুমোদনের জন্য কনফিগার করা আবশ্যক:", "gatewayPortsYes": "সকল ইন্টারফেসের সাথে দূরবর্তী পোর্টগুলিকে আবদ্ধ করতে", "allowTcpForwardingYes": "পোর্ট ফরওয়ার্ডিং সক্ষম করতে", "permitRootLoginYes": "যদি টানেলিং এর জন্য রুট ইউজার ব্যবহার করা হয়", - "editSshConfig": "/etc/ssh/sshd_config সম্পাদনা করুন এবং SSH পুনরায় চালু করুন: sudo systemctl পুনরায় চালু করুন sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "আপলোড করুন", "authentication": "প্রমাণীকরণ", "password": "পাসওয়ার্ড", @@ -1096,6 +1143,19 @@ "quickActionName": "অ্যাকশনের নাম", "noSnippetFound": "কোনও স্নিপেট পাওয়া যায়নি", "quickActionsOrder": "সার্ভার পরিসংখ্যান পৃষ্ঠায় উপরে তালিকাভুক্ত ক্রমে দ্রুত পদক্ষেপের বোতামগুলি প্রদর্শিত হবে।", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "উন্নত প্রমাণীকরণ সেটিংস", "sudoPasswordAutoFill": "সুডো পাসওয়ার্ড অটো-ফিল", "sudoPasswordAutoFillDesc": "sudo পাসওয়ার্ডের জন্য অনুরোধ করলে স্বয়ংক্রিয়ভাবে SSH পাসওয়ার্ড সন্নিবেশ করার প্রস্তাব দেয়", @@ -1115,6 +1175,15 @@ "addVariable": "চলক যোগ করুন", "docker": "ডকার", "openDocker": "ডকার খুলুন", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "এই হোস্টের জন্য ডকার সক্ষম করা নেই। ডকার বৈশিষ্ট্যগুলি ব্যবহার করতে হোস্ট সেটিংসে এটি সক্ষম করুন।", "validating": "ডকার যাচাই করা হচ্ছে...", "error": "ত্রুটি", @@ -1183,7 +1252,7 @@ "pause": "বিরতি", "restart": "পুনরারম্ভ করুন", "removeContainer": "কন্টেইনার সরান", - "confirmRemoveContainer": "Are you sure you want to remove container \"{{name}}\"?", + "confirmRemoveContainer": "আপনি কি নিশ্চিত যে আপনি পাত্রে অপসারণ করতে চান {{name}}?", "runningContainerWarning": "সতর্কতা: এই কন্টেইনারটি বর্তমানে চলছে এবং জোর করে সরিয়ে ফেলা হবে।", "removing": "অপসারণ:", "containerNotFound": "কন্টেইনারটি পাওয়া যায়নি", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "যাচাইকরণ কোড", "totpPlaceholder": "০০০০০০", "totpVerify": "যাচাই করুন", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "পাসওয়ার্ড ঢোকাবেন?", "sudoPasswordPopupHint": "সন্নিবেশ করতে Enter টিপুন এবং খারিজ করতে Esc টিপুন", "sudoPasswordPopupConfirm": "ঢোকান", - "sudoPasswordPopupDismiss": "খারিজ করুন" + "sudoPasswordPopupDismiss": "খারিজ করুন", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "ফাইল ম্যানেজার", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} সফলভাবে মুছে ফেলা হয়েছে", "itemsDeletedSuccessfully": "{{count}} আইটেমগুলি সফলভাবে মুছে ফেলা হয়েছে", "failedToDeleteItems": "আইটেমগুলি মোছা যায়নি", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "আপলোড করার জন্য ফাইলগুলি এখানে ফেলে দিন", "emptyFolder": "এই ফোল্ডারটি খালি।", "itemCount": "{{count}} আইটেম", @@ -1531,8 +1630,11 @@ "fileTooLarge": "ফাইলটি খুব বড়: {{error}}", "sshConnectionFailed": "SSH সংযোগ ব্যর্থ হয়েছে। অনুগ্রহ করে আপনার সংযোগ {{name}} ({{ip}}:{{port}}) এ পরীক্ষা করুন।", "loadFileFailed": "ফাইল লোড করতে ব্যর্থ: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "সফলভাবে সংযুক্ত হয়েছে", "totpVerificationFailed": "TOTP যাচাইকরণ ব্যর্থ হয়েছে", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "যাচাইকরণ কোড:", "changePermissions": "অনুমতি পরিবর্তন করুন", "changePermissionsDesc": "এর জন্য ফাইলের অনুমতি পরিবর্তন করুন", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "অনুমতি পরিবর্তন করা যায়নি" }, "tunnel": { - "noTunnelsConfigured": "কোনও টানেল কনফিগার করা নেই", - "configureTunnelsInHostSettings": "শুরু করার জন্য হোস্ট ম্যানেজারে টানেল সংযোগগুলি কনফিগার করুন" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH টানেল", @@ -1624,6 +1736,8 @@ "refreshStatus": "স্ট্যাটাস রিফ্রেশ করুন", "fileManagerAlreadyOpen": "এই হোস্টের জন্য ফাইল ম্যানেজার ইতিমধ্যেই খোলা আছে", "openFileManager": "ফাইল ম্যানেজার খুলুন", + "connecting": "সংযোগ করা হচ্ছে...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} সিপিইউ", "cpuCores_other": "{{count}} সিপিইউ", "naCpus": "সিপিইউ (গুলি)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "সার্ভার মেট্রিক্স আনা যায়নি", "failedToFetchHomeData": "হোম ডেটা আনা যায়নি", "loadingMetrics": "মেট্রিক্স লোড হচ্ছে...", - "connecting": "সংযোগ করা হচ্ছে...", "refreshing": "রিফ্রেশ হচ্ছে...", "serverOffline": "সার্ভার অফলাইন", "cannotFetchMetrics": "অফলাইন সার্ভার থেকে মেট্রিক্স আনা যাচ্ছে না", @@ -1682,7 +1795,34 @@ "executingQuickAction": "কার্যকর করা হচ্ছে {{name}}...", "quickActionSuccess": "{{name}} সফলভাবে সম্পন্ন হয়েছে", "quickActionFailed": "{{name}} ব্যর্থ হয়েছে", - "quickActionError": "{{name}}চালানো যায়নি" + "quickActionError": "{{name}}চালানো যায়নি", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH সার্ভার ম্যানেজার", @@ -1824,7 +1964,11 @@ "emailExists": "ইমেল ইতিমধ্যেই আছে", "loadFailed": "ডেটা লোড করা যায়নি", "saveError": "সংরক্ষণ করা যায়নি", - "sessionExpired": "সেশনের মেয়াদ শেষ হয়ে গেছে - অনুগ্রহ করে আবার লগ ইন করুন।" + "sessionExpired": "সেশনের মেয়াদ শেষ হয়ে গেছে - অনুগ্রহ করে আবার লগ ইন করুন।", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "সফলভাবে সংরক্ষণ করা হয়েছে", @@ -1882,6 +2026,9 @@ "terminalSettings": "টার্মিনাল", "hostSidebarSettings": "হোস্ট এবং সাইডবার", "snippetsSettings": "স্নিপেটস", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "বর্তমান পাসওয়ার্ড", "passwordChangedSuccess": "পাসওয়ার্ড সফলভাবে পরিবর্তন করা হয়েছে! অনুগ্রহ করে আবার লগ ইন করুন।", "failedToChangePassword": "পাসওয়ার্ড পরিবর্তন করা যায়নি। অনুগ্রহ করে আপনার বর্তমান পাসওয়ার্ডটি পরীক্ষা করে আবার চেষ্টা করুন।", @@ -1890,7 +2037,9 @@ "themeDark": "অন্ধকার", "themeSystem": "সিস্টেম", "appearanceDesc": "অ্যাপ্লিকেশনের জন্য রঙের থিম নির্বাচন করুন", - "terminalSyntaxHighlightingDesc": "টার্মিনাল আউটপুটে স্বয়ংক্রিয়ভাবে কমান্ড, পাথ, আইপি এবং লগ লেভেল হাইলাইট করুন" + "terminalSyntaxHighlightingDesc": "টার্মিনাল আউটপুটে স্বয়ংক্রিয়ভাবে কমান্ড, পাথ, আইপি এবং লগ লেভেল হাইলাইট করুন", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "সংস্করণের তথ্য লোড করা যায়নি" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "ড্যাশবোর্ড", + "loading": "Loading dashboard...", "github": "গিটহাব", "support": "সমর্থন", "discord": "বিরোধ", @@ -2114,7 +2264,88 @@ "noServerData": "কোনও সার্ভার ডেটা উপলব্ধ নেই", "cpu": "সিপিইউ", "ram": "র‍্যাম", - "notAvailable": "নিষিদ্ধ" + "notAvailable": "নিষিদ্ধ", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "শেয়ার হোস্ট", @@ -2306,9 +2537,15 @@ "notEnabled": "এই হোস্টের জন্য ডকার সক্ষম করা নেই", "validating": "ডকার যাচাই করা হচ্ছে...", "connectingToHost": "হোস্টে সংযোগ করা হচ্ছে...", + "connecting": "সংযোগ করা হচ্ছে...", "error": "ত্রুটি", "errorCode": "ত্রুটি কোড: {{code}}", "version": "ডকার {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP যাচাইকরণ ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "যাচাইকরণ কোড লিখুন", + "loadingContainers": "কন্টেইনার লোড হচ্ছে...", "containerStarted": "কন্টেইনার {{name}} শুরু হয়েছে", "failedToStartContainer": "কন্টেইনার চালু করতে ব্যর্থ হয়েছে {{name}}", "containerStopped": "কন্টেইনার {{name}} বন্ধ করা হয়েছে", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "আপনি কি নিশ্চিত যে আপনি '{{name}}' কন্টেইনারটি সরাতে চান? এই ক্রিয়াটি পূর্বাবস্থায় ফেরানো যাবে না।", "runningContainerWarning": "সতর্কতা: এই কন্টেইনারটি বর্তমানে চলছে। এটি অপসারণ করলে প্রথমে কন্টেইনারটি বন্ধ হয়ে যাবে।", "removing": "সরানো হচ্ছে...", - "loadingContainers": "কন্টেইনার লোড হচ্ছে...", "noContainersFound": "কোনও কন্টেইনার পাওয়া যায়নি", "noContainersFoundHint": "এই হোস্টে কোনও ডকার কন্টেইনার উপলব্ধ নেই।", "searchPlaceholder": "কন্টেইনার অনুসন্ধান করুন...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "কন্টেইনার থেকে সংযোগ বিচ্ছিন্ন করা হয়েছে", "containerMustBeRunning": "কনসোল অ্যাক্সেস করার জন্য কন্টেইনারটি অবশ্যই চলমান থাকতে হবে", "authenticationRequired": "প্রমাণীকরণ প্রয়োজন", - "verificationCodePrompt": "যাচাইকরণ কোড লিখুন", - "totpVerificationFailed": "TOTP যাচাইকরণ ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।", "connectedTo": "{{containerName}}এর সাথে সংযুক্ত", "disconnected": "সংযোগ বিচ্ছিন্ন", "consoleError": "কনসোল ত্রুটি", @@ -2382,7 +2616,6 @@ "bash": "ব্যাশ", "sh": "শ", "ash": "ছাই", - "connecting": "সংযোগ করা হচ্ছে...", "connect": "সংযোগ করুন", "disconnect": "সংযোগ বিচ্ছিন্ন করুন", "notConnected": "সংযুক্ত নেই", @@ -2393,7 +2626,37 @@ "logs": "লগ", "stats": "পরিসংখ্যান", "consoleTab": "কনসোল", - "startContainerToAccess": "কনসোল অ্যাক্সেস করার জন্য কন্টেইনারটি শুরু করুন" + "startContainerToAccess": "কনসোল অ্যাক্সেস করার জন্য কন্টেইনারটি শুরু করুন", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "আলোতে স্যুইচ করুন", diff --git a/src/locales/translated/ca.json b/src/locales/translated/ca.json index 7542a6fd..376cd994 100644 --- a/src/locales/translated/ca.json +++ b/src/locales/translated/ca.json @@ -44,6 +44,8 @@ "passwordRequired": "Cal una contrasenya", "sshKeyRequired": "Cal una clau SSH", "credentialAddedSuccessfully": "La credencial \"{{name}}\" s'ha afegit correctament", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "General", "description": "Descripció", "folder": "Carpeta", @@ -184,6 +186,32 @@ "renameFolder": "Canvia el nom de la carpeta", "idLabel": "ID:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "Error: {{error}}", "dragging": "Arrossegant {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Camí SSH", "localPath": "Camí local", "appName": "Tèrmix", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "Restableix l'amplada de la barra lateral", "dragToResizeSidebar": "Arrossega per canviar la mida de la barra lateral", "noAuthCredentials": "No hi ha credencials d'autenticació disponibles per a aquest amfitrió SSH.", @@ -464,10 +493,12 @@ "retry": "Torna-ho a intentar", "checking": "S'està revisant...", "checkingDatabase": "S'està comprovant la connexió a la base de dades...", + "checkingAuthentication": "Checking authentication...", "actions": "Accions", "remove": "Elimina", "revoke": "Revocar", - "create": "Crea" + "create": "Crea", + "update": "Update" }, "nav": { "home": "Inici", @@ -489,7 +520,12 @@ "hostManager": "Gestor d'amfitrions", "cannotSplitTab": "No es pot dividir aquesta pestanya", "tabNavigation": "Navegació per pestanyes", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "Configuració de l'administrador", @@ -537,6 +573,7 @@ "userRegistration": "Registre d'usuari", "allowNewAccountRegistration": "Permet el registre de comptes nous", "allowPasswordLogin": "Permet l'inici de sessió amb nom d'usuari/contrasenya", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "Camps obligatoris que falten: {{fields}}", "oidcConfigurationUpdated": "La configuració de l'OIDC s'ha actualitzat correctament!", "failedToFetchOidcConfig": "No s'ha pogut obtenir la configuració de l'OIDC.", @@ -848,6 +885,13 @@ "autoStartContainer": "Inici automàtic en llançar contenidors", "autoStartDesc": "Inicia automàticament aquest túnel quan s'iniciï el contenidor", "addConnection": "Afegeix una connexió de túnel", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "Sshpass necessari per a l'autenticació amb contrasenya", "sshpassRequiredDesc": "Per a l'autenticació amb contrasenya en túnels, cal instal·lar sshpass al sistema.", "otherInstallMethods": "Altres mètodes d'instal·lació:", @@ -855,13 +899,16 @@ "or": "o", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Finestres", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "Configuració del servidor SSH requerida", "sshServerConfigDesc": "Per a connexions de túnel, el servidor SSH ha d'estar configurat per permetre el reenviament de ports:", "gatewayPortsYes": "per vincular ports remots a totes les interfícies", "allowTcpForwardingYes": "per habilitar el reenviament de ports", "permitRootLoginYes": "si s'utilitza l'usuari root per a la tunelització", - "editSshConfig": "Editeu /etc/ssh/sshd_config i reinicieu SSH: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Pujada", "authentication": "Autenticació", "password": "Contrasenya", @@ -1096,6 +1143,19 @@ "quickActionName": "Nom de l'acció", "noSnippetFound": "No s'ha trobat cap fragment", "quickActionsOrder": "Els botons d'acció ràpida apareixeran en l'ordre indicat anteriorment a la pàgina d'estadístiques del servidor.", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Configuració d'autenticació avançada", "sudoPasswordAutoFill": "Emplenament automàtic de contrasenya de Sudo", "sudoPasswordAutoFillDesc": "Ofereix automàticament la inserció d'una contrasenya SSH quan sudo demani la contrasenya", @@ -1115,6 +1175,15 @@ "addVariable": "Afegeix una variable", "docker": "Docker", "openDocker": "Obre Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker no està habilitat per a aquest amfitrió. Activeu-lo a la configuració de l'amfitrió per utilitzar les funcions de Docker.", "validating": "Validant Docker...", "error": "Error", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Codi de verificació", "totpPlaceholder": "000000", "totpVerify": "Verifica", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Voleu inserir la contrasenya?", "sudoPasswordPopupHint": "Premeu Intro per inserir, Esc per tancar", "sudoPasswordPopupConfirm": "Insereix", - "sudoPasswordPopupDismiss": "Ignora" + "sudoPasswordPopupDismiss": "Ignora", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Gestor de fitxers", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} s'ha suprimit correctament", "itemsDeletedSuccessfully": "{{count}} elements suprimits correctament", "failedToDeleteItems": "No s'han pogut suprimir els elements", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Deixa anar els fitxers aquí per pujar-los", "emptyFolder": "Aquesta carpeta està buida", "itemCount": "{{count}} elements", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Fitxer massa gran: {{error}}", "sshConnectionFailed": "La connexió SSH ha fallat. Si us plau, comproveu la connexió a {{name}} ({{ip}}:{{port}})", "loadFileFailed": "No s'ha pogut carregar el fitxer: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Connexió correcta", "totpVerificationFailed": "La verificació TOTP ha fallat", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Codi de verificació:", "changePermissions": "Canvia els permisos", "changePermissionsDesc": "Modifica els permisos de fitxer per a", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "No s'han pogut canviar els permisos" }, "tunnel": { - "noTunnelsConfigured": "No hi ha túnels configurats", - "configureTunnelsInHostSettings": "Configureu les connexions de túnel al Gestor d'amfitrions per començar" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "Túnels SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "Estat d'actualització", "fileManagerAlreadyOpen": "El gestor de fitxers ja està obert per a aquest amfitrió", "openFileManager": "Obre el gestor de fitxers", + "connecting": "Connectant...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU", "naCpus": "CPU(s) N/A", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "No s'han pogut obtenir les mètriques del servidor", "failedToFetchHomeData": "No s'han pogut obtenir les dades de casa", "loadingMetrics": "S'estan carregant les mètriques...", - "connecting": "Connectant...", "refreshing": "Refrescant...", "serverOffline": "Servidor fora de línia", "cannotFetchMetrics": "No es poden obtenir mètriques del servidor fora de línia", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Executant {{name}}...", "quickActionSuccess": "{{name}} s'ha completat correctament", "quickActionFailed": "{{name}} ha fallat", - "quickActionError": "No s'ha pogut executar {{name}}" + "quickActionError": "No s'ha pogut executar {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "ADMINISTRADOR DE SERVIDORS SSH", @@ -1824,7 +1964,11 @@ "emailExists": "El correu electrònic ja existeix", "loadFailed": "No s'han pogut carregar les dades", "saveError": "No s'ha pogut desar", - "sessionExpired": "La sessió ha caducat; si us plau, torneu a iniciar la sessió." + "sessionExpired": "La sessió ha caducat; si us plau, torneu a iniciar la sessió.", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "S'ha desat correctament", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Amfitrió i barra lateral", "snippetsSettings": "Fragments", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Contrasenya actual", "passwordChangedSuccess": "La contrasenya s'ha canviat correctament! Si us plau, torneu a iniciar la sessió.", "failedToChangePassword": "No s'ha pogut canviar la contrasenya. Si us plau, comproveu la vostra contrasenya actual i torneu-ho a intentar.", @@ -1890,7 +2037,9 @@ "themeDark": "Fosc", "themeSystem": "Sistema", "appearanceDesc": "Seleccioneu el tema de color per a l'aplicació", - "terminalSyntaxHighlightingDesc": "Ressaltar automàticament les ordres, les rutes, les IP i els nivells de registre a la sortida del terminal" + "terminalSyntaxHighlightingDesc": "Ressaltar automàticament les ordres, les rutes, les IP i els nivells de registre a la sortida del terminal", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "No s'ha pogut carregar la informació de la versió" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Tauler de control", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Suport", "discord": "Discòrdia", @@ -2114,7 +2264,88 @@ "noServerData": "No hi ha dades del servidor disponibles", "cpu": "CPU", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Comparteix l'amfitrió", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker no està habilitat per a aquest amfitrió", "validating": "Validant Docker...", "connectingToHost": "Connectant a l'amfitrió...", + "connecting": "Connectant...", "error": "Error", "errorCode": "Codi d'error: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "La verificació TOTP ha fallat. Torna-ho a provar.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Introduïu el codi de verificació", + "loadingContainers": "Carregant contenidors...", "containerStarted": "Contenidor {{name}} iniciat", "failedToStartContainer": "No s'ha pogut iniciar el contenidor {{name}}", "containerStopped": "El contenidor {{name}} s'ha aturat", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Esteu segur que voleu eliminar el contenidor '{{name}}'? Aquesta acció no es pot desfer.", "runningContainerWarning": "Avís: Aquest contenidor està en execució. Si el suprimiu, primer s'aturarà el contenidor.", "removing": "S'està eliminant...", - "loadingContainers": "Carregant contenidors...", "noContainersFound": "No s'han trobat contenidors", "noContainersFoundHint": "No hi ha contenidors Docker disponibles en aquest amfitrió.", "searchPlaceholder": "Cerca contenidors...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Desconnectat del contenidor", "containerMustBeRunning": "El contenidor ha d'estar en execució per accedir a la consola.", "authenticationRequired": "Cal autenticació", - "verificationCodePrompt": "Introduïu el codi de verificació", - "totpVerificationFailed": "La verificació TOTP ha fallat. Torna-ho a provar.", "connectedTo": "Connectat a {{containerName}}", "disconnected": "Desconnectat", "consoleError": "Error de consola", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "cendra", - "connecting": "Connectant...", "connect": "Connecta", "disconnect": "Desconnecta", "notConnected": "No connectat", @@ -2393,7 +2626,37 @@ "logs": "Registres", "stats": "Estadístiques", "consoleTab": "Consola", - "startContainerToAccess": "Inicieu el contenidor per accedir a la consola" + "startContainerToAccess": "Inicieu el contenidor per accedir a la consola", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Canvia a la llum", diff --git a/src/locales/translated/cs.json b/src/locales/translated/cs.json index 5aa796bd..fea5877f 100644 --- a/src/locales/translated/cs.json +++ b/src/locales/translated/cs.json @@ -44,6 +44,8 @@ "passwordRequired": "Heslo je vyžadováno", "sshKeyRequired": "SSH klíč je povinný", "credentialAddedSuccessfully": "Pověření \"{{name}}\" bylo úspěšně přidáno", + "savingCredential": "Ukládání přihlašovacích údajů...", + "updatingCredential": "Aktualizace pověření...", "general": "Obecná ustanovení", "description": "L 343, 22.12.2009, s. 1).", "folder": "Složka", @@ -184,6 +186,32 @@ "renameFolder": "Přejmenovat složku", "idLabel": "ID:" }, + "quickConnect": { + "title": "Rychlé připojení", + "description": "Připojit přímo k relaci terminálu nebo správce souborů bez uložení konfigurace hostitele", + "ipAddress": "IP adresa nebo název hostitele", + "port": "Přístav", + "username": "Uživatelské jméno", + "password": "Heslo", + "key": "SSH soukromý klíč", + "keyPassword": "Klíčové heslo (volitelné)", + "keyType": "Typ klíče", + "uploadFile": "Nahrát soubor", + "pasteKey": "Vložit klíč", + "credential": "Pověření", + "overrideUsername": "Přepsat pověření uživatelské jméno", + "overrideUsernameDesc": "Použít jiné uživatelské jméno, než jaké je uloženo v pověření", + "connectTerminal": "Připojit k terminálu", + "connectFileManager": "Připojit ke správci souborů", + "cancel": "Zrušit", + "passwordRequired": "Heslo je vyžadováno", + "keyRequired": "SSH klíč je povinný", + "credentialRequired": "Je vyžadován výběr pověření", + "connectionEstablished": "Spojení bylo úspěšně navázáno", + "connectionFailed": "Nepodařilo se navázat spojení", + "autoDetect": "Automatické rozpoznání", + "authentication": "Ověření" + }, "dragIndicator": { "error": "Chyba: {{error}}", "dragging": "Přetažení {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Cesta SSH", "localPath": "Místní cesta", "appName": "Termix", + "openInNewTab": "Otevřít v nové kartě", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Přetažením změníte velikost postranního panelu", "noAuthCredentials": "Pro tohoto SSH hostitele nejsou k dispozici žádné ověřovací údaje", @@ -464,10 +493,12 @@ "retry": "Opakovat", "checking": "Kontroluje...", "checkingDatabase": "Kontrola připojení k databázi...", + "checkingAuthentication": "Kontrola ověřování...", "actions": "Akce", "remove": "Odebrat", "revoke": "Revoke", - "create": "Vytvořit" + "create": "Vytvořit", + "update": "Aktualizovat" }, "nav": { "home": "Domů", @@ -489,7 +520,12 @@ "hostManager": "Manažer serveru", "cannotSplitTab": "Nelze rozdělit tuto kartu", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Kopírovat heslo", + "copySudoPassword": "Kopírovat heslo Sudo", + "passwordCopied": "Heslo zkopírováno do schránky", + "sudoPasswordCopied": "Sudo heslo zkopírováno do schránky", + "noPasswordAvailable": "Žádné heslo není k dispozici" }, "admin": { "title": "Nastavení správce", @@ -537,6 +573,7 @@ "userRegistration": "Registrace uživatele", "allowNewAccountRegistration": "Povolit registraci nového účtu", "allowPasswordLogin": "Povolit přihlášení k uživatelskému jménu nebo heslu", + "allowPasswordReset": "Povolit obnovení hesla přes kód pro obnovení hesla", "missingRequiredFields": "Chybí povinná pole: {{fields}}", "oidcConfigurationUpdated": "Nastavení OIDC bylo úspěšně aktualizováno!", "failedToFetchOidcConfig": "Nepodařilo se načíst konfiguraci OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Automatické spuštění při spuštění kontejneru", "autoStartDesc": "Automaticky spustit tunel při spuštění kontejneru", "addConnection": "Přidat připojení k tunelu", + "tunnelType": "Typ tunelu", + "tunnelTypeLocal": "Místní (-L)", + "tunnelTypeRemote": "Vzdálené (-R)", + "tunnelTypeLocalDesc": "Přeposlat místní port na vzdálený koncový bod", + "tunnelTypeRemoteDesc": "Přeposlat vzdálený port do místního stroje", + "tunnelForwardDescriptionLocal": "Tento tunel přeposílá provoz z lokálního portu {{sourcePort}} do portu {{endpointPort}} na koncovém počítači.", + "tunnelForwardDescriptionRemote": "Tento tunel přeposílá provoz z portu {{sourcePort}} na zdrojovém počítači (aktuální údaje o připojení obecně) do portu {{endpointPort}} na koncovém počítači.", "sshpassRequired": "Sshpass vyžadován pro ověření hesla", "sshpassRequiredDesc": "Pro ověřování hesla v tunelech musí být v systému nainstalován sshpass.", "otherInstallMethods": "Jiné způsoby instalace:", @@ -855,13 +899,16 @@ "or": "nebo", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Okna", + "windows": "Windows (WSL, žádný oficiální binární soubor)", "sshServerConfigRequired": "Vyžadována konfigurace SSH serveru", "sshServerConfigDesc": "Pro připojení tunelu musí být SSH server nakonfigurován, aby umožňoval přesměrování portu:", "gatewayPortsYes": "pro navázání vzdálených portů na všechna rozhraní", "allowTcpForwardingYes": "pro povolení přesměrování portů", "permitRootLoginYes": "pokud používáte root uživatele pro tunelování", - "editSshConfig": "Upravit /etc/ssh/sshd_config a restartovat SSH: sudo systemctl restart sshd", + "editSshConfig": "Upravit konfigurační soubor SSH:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Poté restartujte službu SSH:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Nahrát", "authentication": "Ověření", "password": "Heslo", @@ -1096,6 +1143,19 @@ "quickActionName": "Název akce", "noSnippetFound": "Úryvek nenalezen", "quickActionsOrder": "Tlačítka pro rychlé akce se zobrazí v pořadí uvedeném výše na stránce Statistiky serveru", + "sidebarCustomization": "Přizpůsobení postranního panelu", + "sidebarCustomizationDesc": "Vyberte, které akce se zobrazí jako rychlá tlačítka v postranním panelu. Akce nezobrazené jako tlačítka se zobrazí v rozbalovacím menu.", + "showTerminalInSidebar": "Zobrazit tlačítko terminálu", + "showTerminalInSidebarDesc": "Zobrazit terminál jako rychlé tlačítko v postranním panelu", + "showFileManagerInSidebar": "Zobrazit tlačítko správce souborů", + "showFileManagerInSidebarDesc": "Zobrazit správce souborů jako rychlé tlačítko v postranním panelu", + "showTunnelInSidebar": "Zobrazit tlačítko tunelu", + "showTunnelInSidebarDesc": "Zobrazit správu tunelů jako rychlé tlačítko v postranním panelu", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Pokročilé nastavení ověřování", "sudoPasswordAutoFill": "Sudo heslo automatické vyplňování", "sudoPasswordAutoFillDesc": "Automaticky nabídne vložení hesla SSH při žádání o heslo", @@ -1115,6 +1175,15 @@ "addVariable": "Přidat proměnnou", "docker": "Dokovací modul", "openDocker": "Otevřít Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker není pro tohoto hostitele povolen. Povolte jej v nastavení hostitele pro použití funkcí Dockeru.", "validating": "Ověřování Dockeru...", "error": "Chyba", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Ověřovací kód", "totpPlaceholder": "000000", "totpVerify": "Ověřit", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Vložit heslo?", "sudoPasswordPopupHint": "Stiskněte Enter pro vložení, Esc pro zamítnutí", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Odmítnout" + "sudoPasswordPopupDismiss": "Odmítnout", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Správce souborů", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} byl úspěšně smazán", "itemsDeletedSuccessfully": "{{count}} položky byly úspěšně odstraněny", "failedToDeleteItems": "Odstranění položek se nezdařilo", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Pro nahrání přetáhněte soubory sem", "emptyFolder": "Tato složka je prázdná", "itemCount": "{{count}} položky", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Soubor je příliš velký: {{error}}", "sshConnectionFailed": "Připojení SSH se nezdařilo. Zkontrolujte připojení k {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Nepodařilo se načíst soubor: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Úspěšně připojeno", "totpVerificationFailed": "Ověření TOTP se nezdařilo", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Ověřovací kód:", "changePermissions": "Změnit oprávnění", "changePermissionsDesc": "Upravit oprávnění k souboru pro", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Změna oprávnění se nezdařila" }, "tunnel": { - "noTunnelsConfigured": "Nejsou nastaveny žádné tunely", - "configureTunnelsInHostSettings": "Konfigurace připojení tunelu ve Správci hostitelů pro spuštění" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH tunely", @@ -1624,6 +1736,8 @@ "refreshStatus": "Obnovit stav", "fileManagerAlreadyOpen": "Správce souborů je již otevřen pro tohoto hostitele", "openFileManager": "Otevřít správce souborů", + "connecting": "Připojování...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "CPU {{count}}", "naCpus": "Nepřichází v úvahu procesor", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Nepodařilo se načíst metriku serveru", "failedToFetchHomeData": "Nepodařilo se načíst data o domu", "loadingMetrics": "Načítání metriky...", - "connecting": "Připojování...", "refreshing": "Obnovuji...", "serverOffline": "Server je offline", "cannotFetchMetrics": "Nelze načíst metriku z offline serveru", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Provádění {{name}}...", "quickActionSuccess": "{{name}} úspěšně dokončeno", "quickActionFailed": "{{name}} selhal", - "quickActionError": "Provedení {{name}} se nezdařilo" + "quickActionError": "Provedení {{name}} se nezdařilo", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SPRÁVCE SSH SERVER", @@ -1824,7 +1964,11 @@ "emailExists": "E-mail již existuje", "loadFailed": "Nepodařilo se načíst data", "saveError": "Uložení se nezdařilo", - "sessionExpired": "Relace vypršela - přihlaste se prosím znovu" + "sessionExpired": "Relace vypršela - přihlaste se prosím znovu", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Úspěšně uloženo", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminál", "hostSidebarSettings": "Hostitel & postranní panel", "snippetsSettings": "Výstřižky bloků", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Aktuální heslo", "passwordChangedSuccess": "Heslo bylo úspěšně změněno! Přihlaste se znovu.", "failedToChangePassword": "Změna hesla se nezdařila. Zkontrolujte své současné heslo a zkuste to znovu.", @@ -1890,7 +2037,9 @@ "themeDark": "Tmavý", "themeSystem": "Systém", "appearanceDesc": "Vyberte barevný motiv pro aplikaci", - "terminalSyntaxHighlightingDesc": "Automaticky zvýraznit příkazy, cesty, IP a logovací úrovně v terminálu" + "terminalSyntaxHighlightingDesc": "Automaticky zvýraznit příkazy, cesty, IP a logovací úrovně v terminálu", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Nepodařilo se načíst informace o verzi" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Nástěnka", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Podpora", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Nejsou k dispozici žádná data serveru", "cpu": "CPU", "ram": "RAM", - "notAvailable": "Nepřichází v úvahu" + "notAvailable": "Nepřichází v úvahu", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Sdílet hostitele", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker není pro tohoto hostitele povolen", "validating": "Ověřování Dockeru...", "connectingToHost": "Připojování k hostovi...", + "connecting": "Připojování...", "error": "Chyba", "errorCode": "Kód chyby: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Ověření TOTP se nezdařilo. Zkuste to prosím znovu.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Zadejte ověřovací kód", + "loadingContainers": "Načítání kontejnerů...", "containerStarted": "Kontejner {{name}} spuštěn", "failedToStartContainer": "Nepodařilo se spustit kontejner {{name}}", "containerStopped": "Kontejner {{name}} zastaven", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Opravdu chcete odstranit kontejner '{{name}}'? Tuto akci nelze vrátit zpět.", "runningContainerWarning": "Varování: Tento kontejner je v současné době spuštěn. Odstranění jej nejdříve zastaví.", "removing": "Odebírání...", - "loadingContainers": "Načítání kontejnerů...", "noContainersFound": "Nebyly nalezeny žádné kontejnery", "noContainersFoundHint": "Na tomto hostiteli nejsou k dispozici žádné kontejnery v Dockeru", "searchPlaceholder": "Hledat kontejnery...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Odpojeno od kontejneru", "containerMustBeRunning": "Kontejner musí být spuštěn pro přístup do konzole", "authenticationRequired": "Vyžadována autentizace", - "verificationCodePrompt": "Zadejte ověřovací kód", - "totpVerificationFailed": "Ověření TOTP se nezdařilo. Zkuste to prosím znovu.", "connectedTo": "Připojeno k {{containerName}}", "disconnected": "Odpojeno", "consoleError": "Chyba konzole", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "Popel", - "connecting": "Připojování...", "connect": "Připojit", "disconnect": "Odpojit", "notConnected": "Nepřipojeno", @@ -2393,7 +2626,37 @@ "logs": "Logy", "stats": "Statistiky", "consoleTab": "Konzole", - "startContainerToAccess": "Spusťte kontejner pro přístup do konzole" + "startContainerToAccess": "Spusťte kontejner pro přístup do konzole", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Přepnout na světlo", diff --git a/src/locales/translated/da.json b/src/locales/translated/da.json index 8365a75a..24077208 100644 --- a/src/locales/translated/da.json +++ b/src/locales/translated/da.json @@ -44,6 +44,8 @@ "passwordRequired": "Adgangskode er påkrævet", "sshKeyRequired": "SSH-nøgle er påkrævet", "credentialAddedSuccessfully": "Credential \"{{name}}\" blev tilføjet", + "savingCredential": "Gemmer legitimationsoplysninger...", + "updatingCredential": "Opdaterer legitimationsoplysninger...", "general": "Generelt", "description": "Varebeskrivelse", "folder": "Mappe", @@ -184,6 +186,32 @@ "renameFolder": "Omdøb mappe", "idLabel": "ID:" }, + "quickConnect": { + "title": "Hurtig Forbindelse", + "description": "Forbind direkte til en terminal eller filhåndteringssession uden at gemme en værtskonfiguration", + "ipAddress": "Ip adresse eller værtsnavn", + "port": "Port", + "username": "Brugernavn", + "password": "Adgangskode", + "key": "SSH Privat Nøgle", + "keyPassword": "Nøgleadgangskode (valgfrit)", + "keyType": "Nøgle Type", + "uploadFile": "Upload Fil", + "pasteKey": "Indsæt Nøgle", + "credential": "Credential", + "overrideUsername": "Tilsidesæt Credential Brugernavn", + "overrideUsernameDesc": "Brug et andet brugernavn end det der er gemt i legitimationsoplysningerne", + "connectTerminal": "Opret forbindelse til Terminal", + "connectFileManager": "Opret forbindelse til filhåndtering", + "cancel": "Annuller", + "passwordRequired": "Adgangskode er påkrævet", + "keyRequired": "SSH-nøgle er påkrævet", + "credentialRequired": "Valg af loginoplysninger er påkrævet", + "connectionEstablished": "Forbindelsen blev oprettet", + "connectionFailed": "Kunne ikke oprette forbindelse", + "autoDetect": "Automatisk Detektering", + "authentication": "Godkendelse" + }, "dragIndicator": { "error": "Fejl: {{error}}", "dragging": "Træk {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH Sti", "localPath": "Lokal Sti", "appName": "Termix", + "openInNewTab": "Åbn i nyt faneblad", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Træk for at ændre størrelse på sidebjælke", "noAuthCredentials": "Ingen autentificeringsoplysninger tilgængelige for denne SSH-vært", @@ -464,10 +493,12 @@ "retry": "Forsøg igen", "checking": "Kontrollerer...", "checkingDatabase": "Kontrollerer databaseforbindelse...", + "checkingAuthentication": "Kontrollerer godkendelse...", "actions": "Handlinger", "remove": "Fjern", "revoke": "Revoke", - "create": "Opret" + "create": "Opret", + "update": "Opdater" }, "nav": { "home": "Hjem", @@ -489,7 +520,12 @@ "hostManager": "Vært Manager", "cannotSplitTab": "Kan ikke dele dette faneblad", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Kopier Adgangskode", + "copySudoPassword": "Kopier Sudo Adgangskode", + "passwordCopied": "Adgangskode kopieret til udklipsholder", + "sudoPasswordCopied": "Sudo adgangskode kopieret til udklipsholder", + "noPasswordAvailable": "Ingen adgangskode tilgængelig" }, "admin": { "title": "Admin Indstillinger", @@ -537,6 +573,7 @@ "userRegistration": "Bruger Registrering", "allowNewAccountRegistration": "Tillad ny konto registrering", "allowPasswordLogin": "Tillad brugernavn/adgangskode login", + "allowPasswordReset": "Tillad nulstilling af adgangskode via nulstillingskode", "missingRequiredFields": "Mangler obligatoriske felter: {{fields}}", "oidcConfigurationUpdated": "OIDC konfiguration opdateret!", "failedToFetchOidcConfig": "Kunne ikke hente OIDC konfiguration", @@ -848,6 +885,13 @@ "autoStartContainer": "Automatisk start ved Container Start", "autoStartDesc": "Start automatisk denne tunnel når beholderen starter", "addConnection": "Tilføj Tunnelforbindelse", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Lokal (-L)", + "tunnelTypeRemote": "Fjernbetjening (-R)", + "tunnelTypeLocalDesc": "Videresend lokal port til fjern-endepunkt", + "tunnelTypeRemoteDesc": "Videresend fjernport til lokal maskine", + "tunnelForwardDescriptionLocal": "Denne tunnel vil videresende trafikken fra den lokale havn {{sourcePort}} til port {{endpointPort}} på slutmaskinen.", + "tunnelForwardDescriptionRemote": "Denne tunnel vil videresende trafikken fra havnen {{sourcePort}} på kildemaskinen (aktuelle forbindelsesdetaljer i den generelle fane) til port {{endpointPort}} på endepunktsmaskinen.", "sshpassRequired": "Sshpass Kræves For Adgangskodegodkendelse", "sshpassRequiredDesc": "For adgangskodegodkendelse i tunneler skal sshpass installeres på systemet.", "otherInstallMethods": "Andre installationsmetoder:", @@ -855,13 +899,16 @@ "or": "eller", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Vinduer", + "windows": "Vinduer (WSL, ingen officiel binær)", "sshServerConfigRequired": "Indstilling Af SSH-server Kræves", "sshServerConfigDesc": "For tunnelforbindelser skal SSH-serveren være konfigureret til at tillade port forwarding:", "gatewayPortsYes": "for at binde eksterne porte til alle grænseflader", "allowTcpForwardingYes": "for at aktivere videresendelse af port", "permitRootLoginYes": "hvis du bruger root bruger til tunneling", - "editSshConfig": "Rediger /etc/ssh/sshd_config og genstart SSH: sudo systemctl genstart sshd", + "editSshConfig": "Rediger SSH konfigurationsfilen:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Genstart derefter SSH-tjenesten:", + "restartSshCommand": "sudo systemctl genstart sshd", "upload": "Upload", "authentication": "Godkendelse", "password": "Adgangskode", @@ -1096,6 +1143,19 @@ "quickActionName": "Navn på handling", "noSnippetFound": "Ingen snippet fundet", "quickActionsOrder": "Hurtige handlingsknapper vises i den rækkefølge, der er anført ovenfor på siden Serverstatistik", + "sidebarCustomization": "Tilpasning Af Sidebjælke", + "sidebarCustomizationDesc": "Vælg hvilke handlinger der vises som hurtigknapper i sidepanelet. Handlinger der ikke vises som knapper vises i dropdown menuen.", + "showTerminalInSidebar": "Vis Terminalknap", + "showTerminalInSidebarDesc": "Vis terminal som en hurtig-knap i sidepanelet", + "showFileManagerInSidebar": "Vis Filhåndteringsknap", + "showFileManagerInSidebarDesc": "Vis filhåndtering som en hurtig knap i sidepanelet", + "showTunnelInSidebar": "Vis Tunnelknap", + "showTunnelInSidebarDesc": "Vis tunnelstyring som en hurtig knap i sidepanelet", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Avancerede Godkendelsesindstillinger", "sudoPasswordAutoFill": "Sudo Password AutoFyld", "sudoPasswordAutoFillDesc": "Tilbyd automatisk at indsætte SSH-adgangskode, når sudo beder om adgangskode", @@ -1115,6 +1175,15 @@ "addVariable": "Tilføj Variabel", "docker": "Docker", "openDocker": "Åbn Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker er ikke aktiveret for denne vært. Aktivér den i værtsindstillinger for at bruge Docker-funktioner.", "validating": "Validerer Docker...", "error": "Fejl", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Bekræftelseskode", "totpPlaceholder": "000000", "totpVerify": "Verificér", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Indsæt Adgangskode?", "sudoPasswordPopupHint": "Tryk på Enter for at indsætte, Esc for at afvise", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Afvis" + "sudoPasswordPopupDismiss": "Afvis", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Filhåndtering", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} slettet", "itemsDeletedSuccessfully": "{{count}} elementer slettet", "failedToDeleteItems": "Kunne ikke slette elementer", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Slip filer her for at uploade", "emptyFolder": "Denne mappe er tom", "itemCount": "{{count}} varer", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Filen er for stor: {{error}}", "sshConnectionFailed": "SSH-forbindelsen mislykkedes. Tjek venligst din forbindelse til {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Kunne ikke indlæse fil: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Forbundet med succes", "totpVerificationFailed": "TOTP verifikation mislykkedes", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Bekræftelseskode:", "changePermissions": "Skift Tilladelser", "changePermissionsDesc": "Ændre filtilladelser for", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Mislykkedes at ændre tilladelser" }, "tunnel": { - "noTunnelsConfigured": "Ingen Tunneler Konfigureret", - "configureTunnelsInHostSettings": "Konfigurer tunnelforbindelser i værtshåndteringen for at komme i gang" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH-tunneler", @@ -1624,6 +1736,8 @@ "refreshStatus": "Opdater Status", "fileManagerAlreadyOpen": "Filhåndteringen er allerede åben for denne vært", "openFileManager": "Åbn Filhåndtering", + "connecting": "Forbinder...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU'er", "naCpus": "N/A CPU(er)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Kunne ikke hente servermålinger", "failedToFetchHomeData": "Det lykkedes ikke at hente hjemdata", "loadingMetrics": "Indlæser målinger...", - "connecting": "Forbinder...", "refreshing": "Opdaterer...", "serverOffline": "Server Offline", "cannotFetchMetrics": "Kan ikke hente målinger fra offline server", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Udfører {{name}}...", "quickActionSuccess": "{{name}} fuldført", "quickActionFailed": "{{name}} mislykkedes", - "quickActionError": "Kunne ikke udføre {{name}}" + "quickActionError": "Kunne ikke udføre {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH SERVER MANAGER", @@ -1824,7 +1964,11 @@ "emailExists": "E-mail findes allerede", "loadFailed": "Kunne ikke indlæse data", "saveError": "Kunne ikke gemme", - "sessionExpired": "Session udløbet - log venligst ind igen" + "sessionExpired": "Session udløbet - log venligst ind igen", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Gemt", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Vært & Sidebjælke", "snippetsSettings": "Stumper", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Nuværende Adgangskode", "passwordChangedSuccess": "Adgangskode ændret! Log venligst ind igen.", "failedToChangePassword": "Kunne ikke ændre adgangskode. Tjek venligst din nuværende adgangskode og prøv igen.", @@ -1890,7 +2037,9 @@ "themeDark": "Mørk", "themeSystem": "System", "appearanceDesc": "Vælg farvetemaet for programmet", - "terminalSyntaxHighlightingDesc": "Fremhæv automatisk kommandoer, stier, IP'er og logniveauer i terminaloutput" + "terminalSyntaxHighlightingDesc": "Fremhæv automatisk kommandoer, stier, IP'er og logniveauer i terminaloutput", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Kunne ikke indlæse versionsinformation" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Instrumentbræt", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Support", "discord": "Uenighed", @@ -2114,7 +2264,88 @@ "noServerData": "Ingen tilgængelige serverdata", "cpu": "CPU", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Del Vært", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker er ikke aktiveret for denne vært", "validating": "Validerer Docker...", "connectingToHost": "Forbinder til vært...", + "connecting": "Forbinder...", "error": "Fejl", "errorCode": "Fejlkode: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP verifikation mislykkedes. Prøv venligst igen.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Indtast bekræftelseskode", + "loadingContainers": "Indlæser containere...", "containerStarted": "Container {{name}} startet", "failedToStartContainer": "Kunne ikke starte container {{name}}", "containerStopped": "Container {{name}} stoppet", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Er du sikker på, at du vil fjerne beholderen '{{name}}'? Denne handling kan ikke fortrydes.", "runningContainerWarning": "Advarsel: Denne beholder kører i øjeblikket. Fjernelse af den vil først stoppe beholderen.", "removing": "Fjerner...", - "loadingContainers": "Indlæser containere...", "noContainersFound": "Ingen containere fundet", "noContainersFoundHint": "Ingen Docker-containere er tilgængelige på denne vært", "searchPlaceholder": "Søg containere...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Afbrudt fra beholder", "containerMustBeRunning": "Container skal køre for at få adgang til konsollen", "authenticationRequired": "Autentificering påkrævet", - "verificationCodePrompt": "Indtast bekræftelseskode", - "totpVerificationFailed": "TOTP verifikation mislykkedes. Prøv venligst igen.", "connectedTo": "Forbundet til {{containerName}}", "disconnected": "Afbrudt", "consoleError": "Konsol fejl", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "aske", - "connecting": "Forbinder...", "connect": "Forbind", "disconnect": "Afbryd", "notConnected": "Ikke forbundet", @@ -2393,7 +2626,37 @@ "logs": "Logfiler", "stats": "Statistik", "consoleTab": "Konsol", - "startContainerToAccess": "Start beholderen for at få adgang til konsollen" + "startContainerToAccess": "Start beholderen for at få adgang til konsollen", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Skift til lys", diff --git a/src/locales/translated/de.json b/src/locales/translated/de.json index c31ac830..af3fea3b 100644 --- a/src/locales/translated/de.json +++ b/src/locales/translated/de.json @@ -44,6 +44,8 @@ "passwordRequired": "Passwort ist erforderlich", "sshKeyRequired": "SSH-Schlüssel ist erforderlich", "credentialAddedSuccessfully": "Anmeldedaten \"{{name}}\" erfolgreich hinzugefügt", + "savingCredential": "Anmeldeinformationen speichern...", + "updatingCredential": "Anmeldedaten aktualisieren...", "general": "Allgemein", "description": "Beschreibung", "folder": "Ordner", @@ -184,6 +186,32 @@ "renameFolder": "Ordner umbenennen", "idLabel": "ID:" }, + "quickConnect": { + "title": "Schnellverbindung", + "description": "Verbinden Sie sich direkt mit einer Terminal- oder Dateimanager-Sitzung, ohne eine Host-Konfiguration zu speichern", + "ipAddress": "IP-Adresse oder Hostname", + "port": "Port", + "username": "Benutzername", + "password": "Passwort", + "key": "SSH Privatschlüssel", + "keyPassword": "Schlüsselpasswort (optional)", + "keyType": "Schlüsseltyp", + "uploadFile": "Datei hochladen", + "pasteKey": "Schlüssel einfügen", + "credential": "Anmeldedaten", + "overrideUsername": "Benutzername überschreiben", + "overrideUsernameDesc": "Benutze einen anderen Benutzernamen als der, der in den Anmeldedaten gespeichert ist", + "connectTerminal": "Mit Terminal verbinden", + "connectFileManager": "Mit Dateimanager verbinden", + "cancel": "Abbrechen", + "passwordRequired": "Passwort ist erforderlich", + "keyRequired": "SSH-Schlüssel ist erforderlich", + "credentialRequired": "Auswahl der Anmeldedaten ist erforderlich", + "connectionEstablished": "Verbindung erfolgreich hergestellt", + "connectionFailed": "Verbindungsaufbau fehlgeschlagen", + "autoDetect": "Auto-Erkennung", + "authentication": "Authentifizierung" + }, "dragIndicator": { "error": "Fehler: {{error}}", "dragging": "Drag {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH-Pfad", "localPath": "Lokaler Pfad", "appName": "Termix", + "openInNewTab": "In neuem Tab öffnen", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Ziehen, um die Seitenleiste zu vergrößern", "noAuthCredentials": "Keine Anmeldedaten für diesen SSH-Host verfügbar", @@ -464,10 +493,12 @@ "retry": "Wiederholen", "checking": "Überprüfen...", "checkingDatabase": "Überprüfe Datenbankverbindung...", + "checkingAuthentication": "Authentifizierung wird überprüft...", "actions": "Aktionen", "remove": "Entfernen", "revoke": "Revoke", - "create": "Anlegen" + "create": "Anlegen", + "update": "Aktualisieren" }, "nav": { "home": "Zuhause", @@ -489,7 +520,12 @@ "hostManager": "Host-Manager", "cannotSplitTab": "Kann diesen Tab nicht teilen", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Passwort kopieren", + "copySudoPassword": "Sudo-Passwort kopieren", + "passwordCopied": "Passwort in Zwischenablage kopiert", + "sudoPasswordCopied": "Sudo-Passwort in Zwischenablage kopiert", + "noPasswordAvailable": "Kein Passwort verfügbar" }, "admin": { "title": "Admin-Einstellungen", @@ -537,6 +573,7 @@ "userRegistration": "Benutzerregistrierung", "allowNewAccountRegistration": "Neue Kontoregistrierung erlauben", "allowPasswordLogin": "Benutzername/Passwort Login erlauben", + "allowPasswordReset": "Passwort zurücksetzen über Reset-Code erlauben", "missingRequiredFields": "Erforderliche Felder fehlen: {{fields}}", "oidcConfigurationUpdated": "OIDC Konfiguration erfolgreich aktualisiert!", "failedToFetchOidcConfig": "Fehler beim Abrufen der OIDC-Konfiguration", @@ -848,6 +885,13 @@ "autoStartContainer": "Beim Start des Containers automatisch starten", "autoStartDesc": "Diesen Tunnel automatisch starten, wenn der Container startet", "addConnection": "Tunnelverbindung hinzufügen", + "tunnelType": "Tunneltyp", + "tunnelTypeLocal": "Lokal (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Lokalen Port zum entfernten Endpunkt weiterleiten", + "tunnelTypeRemoteDesc": "Remote-Port an lokalen Rechner weiterleiten", + "tunnelForwardDescriptionLocal": "Dieser Tunnel leitet den Verkehr vom lokalen Port {{sourcePort}} an Port {{endpointPort}} auf der Endpunktmaschine weiter.", + "tunnelForwardDescriptionRemote": "Dieser Tunnel leitet den Verkehr von Port {{sourcePort}} auf der Quellmaschine (aktuelle Verbindungsdetails im allgemeinen Tab) an Port {{endpointPort}} auf dem Endpunkt-Rechner weiter.", "sshpassRequired": "Sshpass erforderlich für Passwort-Authentifizierung", "sshpassRequiredDesc": "Für die Passwort-Authentifizierung in Tunnels muss sshpass auf dem System installiert sein.", "otherInstallMethods": "Andere Installationsmethoden:", @@ -855,13 +899,16 @@ "or": "oder", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Fenster", + "windows": "Windows (WSL, kein offizielles Binärprogramm)", "sshServerConfigRequired": "SSH-Server-Konfiguration erforderlich", "sshServerConfigDesc": "Für Tunnelverbindungen muss der SSH-Server so konfiguriert sein, dass Portweiterleitung möglich ist:", "gatewayPortsYes": "um entfernte Ports an alle Schnittstellen zu binden", "allowTcpForwardingYes": "um Port-Weiterleitung zu aktivieren", "permitRootLoginYes": "wenn Root-Benutzer für Tunneling verwendet werden", - "editSshConfig": "Bearbeiten Sie /etc/ssh/sshd_config und starten Sie SSH neu: sudo systemctl restart sshd", + "editSshConfig": "SSH-Konfigurationsdatei bearbeiten:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Dann starten Sie den SSH-Dienst neu:", + "restartSshCommand": "sudo systemctl Neustart sshd", "upload": "Hochladen", "authentication": "Authentifizierung", "password": "Passwort", @@ -1096,6 +1143,19 @@ "quickActionName": "Name der Aktion", "noSnippetFound": "Kein Snippet gefunden", "quickActionsOrder": "Schnell-Aktionstasten werden in der oben aufgelisteten Reihenfolge auf der Server-Statistikseite angezeigt", + "sidebarCustomization": "Seitenleisten-Schaltflächenanpassung", + "sidebarCustomizationDesc": "Wählen Sie aus, welche Aktionen als Schnelltasten in der Seitenleiste angezeigt werden. Aktionen, die nicht als Schaltflächen angezeigt werden, werden im Dropdown-Menü angezeigt.", + "showTerminalInSidebar": "Terminal Button anzeigen", + "showTerminalInSidebarDesc": "Terminal als Schnelltaste in der Seitenleiste anzeigen", + "showFileManagerInSidebar": "Dateimanager Button anzeigen", + "showFileManagerInSidebarDesc": "Dateimanager als Schnelltaste in der Seitenleiste anzeigen", + "showTunnelInSidebar": "Tunnel-Taste anzeigen", + "showTunnelInSidebarDesc": "Tunnelverwaltung als Schnelltaste in der Seitenleiste anzeigen", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Erweiterte Authentifizierungseinstellungen", "sudoPasswordAutoFill": "Sudo Passwort automatisch eingeben", "sudoPasswordAutoFillDesc": "SH Passwort automatisch einfügen, wenn sudo nach Passwort gefragt wird", @@ -1115,6 +1175,15 @@ "addVariable": "Variable hinzufügen", "docker": "Docker", "openDocker": "Docker öffnen", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker ist für diesen Host nicht aktiviert. Aktivieren Sie ihn in den Host-Einstellungen, um Docker Features zu verwenden.", "validating": "Docker wird überprüft...", "error": "Fehler", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Bestätigungscode", "totpPlaceholder": "000000", "totpVerify": "Überprüfen", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Passwort einfügen?", "sudoPasswordPopupHint": "Drücken Sie die Eingabetaste, Esc zum Verwerfen", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Verwerfen" + "sudoPasswordPopupDismiss": "Verwerfen", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Datei-Manager", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} erfolgreich gelöscht", "itemsDeletedSuccessfully": "{{count}} Elemente erfolgreich gelöscht", "failedToDeleteItems": "Löschen der Elemente fehlgeschlagen", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Dateien zum Hochladen hier ablegen", "emptyFolder": "Dieser Ordner ist leer", "itemCount": "{{count}} Elemente", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Datei zu groß: {{error}}", "sshConnectionFailed": "SSH-Verbindung fehlgeschlagen. Bitte überprüfe deine Verbindung zu {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Fehler beim Laden der Datei: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Verbunden erfolgreich", "totpVerificationFailed": "TOTP-Verifizierung fehlgeschlagen", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Bestätigungscode:", "changePermissions": "Berechtigungen ändern", "changePermissionsDesc": "Dateiberechtigungen ändern für", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Fehler beim Ändern der Berechtigungen" }, "tunnel": { - "noTunnelsConfigured": "Keine Tunnel konfiguriert", - "configureTunnelsInHostSettings": "Konfiguriere Tunnelverbindungen im Host-Manager um loszulegen" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH-Tunnel", @@ -1624,6 +1736,8 @@ "refreshStatus": "Aktualisiere Status", "fileManagerAlreadyOpen": "Dateimanager für diesen Host bereits geöffnet", "openFileManager": "Dateimanager öffnen", + "connecting": "Verbinden...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPUs", "naCpus": "N/A CPU(s)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Fehler beim Abrufen der Server-Metriken", "failedToFetchHomeData": "Fehler beim Abrufen der Home-Daten", "loadingMetrics": "Metriken werden geladen...", - "connecting": "Verbinden...", "refreshing": "Aktualisieren...", "serverOffline": "Server offline", "cannotFetchMetrics": "Metriken können nicht vom Offline-Server abgerufen werden", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Ausführe {{name}}...", "quickActionSuccess": "{{name}} erfolgreich abgeschlossen", "quickActionFailed": "{{name}} fehlgeschlagen", - "quickActionError": "Fehler beim Ausführen von {{name}}" + "quickActionError": "Fehler beim Ausführen von {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH SERVERMANAGER", @@ -1824,7 +1964,11 @@ "emailExists": "E-Mail existiert bereits", "loadFailed": "Fehler beim Laden der Daten", "saveError": "Speichern fehlgeschlagen", - "sessionExpired": "Sitzung abgelaufen - Bitte melden Sie sich erneut an" + "sessionExpired": "Sitzung abgelaufen - Bitte melden Sie sich erneut an", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Erfolgreich gespeichert", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Host & Seitenleiste", "snippetsSettings": "Schnipsel", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Aktuelles Passwort", "passwordChangedSuccess": "Passwort erfolgreich geändert! Bitte melden Sie sich erneut an.", "failedToChangePassword": "Fehler beim Ändern des Passworts. Bitte überprüfen Sie Ihr aktuelles Passwort und versuchen Sie es erneut.", @@ -1890,7 +2037,9 @@ "themeDark": "Dunkel", "themeSystem": "System", "appearanceDesc": "Wählen Sie das Farbschema für die Anwendung", - "terminalSyntaxHighlightingDesc": "Hervorheben von Befehlen, Pfaden, IPs und Log-Ebenen in Terminal-Ausgabe" + "terminalSyntaxHighlightingDesc": "Hervorheben von Befehlen, Pfaden, IPs und Log-Ebenen in Terminal-Ausgabe", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Fehler beim Laden der Versionsinformationen" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Dashboard", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Unterstützung", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Keine Serverdaten verfügbar", "cpu": "CPU", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Host teilen", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker ist für diesen Host nicht aktiviert", "validating": "Docker wird überprüft...", "connectingToHost": "Verbindung zum Host...", + "connecting": "Verbinden...", "error": "Fehler", "errorCode": "Fehlercode: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP-Verifizierung fehlgeschlagen. Bitte versuchen Sie es erneut.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Bestätigungscode eingeben", + "loadingContainers": "Container werden geladen...", "containerStarted": "Container {{name}} gestartet", "failedToStartContainer": "Fehler beim Starten des Containers {{name}}", "containerStopped": "Container {{name}} gestoppt", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Sind Sie sicher, dass Sie den Container '{{name}}' entfernen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", "runningContainerWarning": "Warnung: Dieser Container wird gerade ausgeführt. Das Entfernen wird den Container zuerst stoppen.", "removing": "Entfernen...", - "loadingContainers": "Container werden geladen...", "noContainersFound": "Keine Container gefunden", "noContainersFoundHint": "Keine Docker-Container auf diesem Host verfügbar", "searchPlaceholder": "Container suchen...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Verbindung zum Container getrennt", "containerMustBeRunning": "Container muss ausgeführt werden, um auf die Konsole zuzugreifen", "authenticationRequired": "Authentifizierung erforderlich", - "verificationCodePrompt": "Bestätigungscode eingeben", - "totpVerificationFailed": "TOTP-Verifizierung fehlgeschlagen. Bitte versuchen Sie es erneut.", "connectedTo": "Mit {{containerName}} verbunden", "disconnected": "Verbindung getrennt", "consoleError": "Konsolenfehler", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "l", "ash": "Asche", - "connecting": "Verbinden...", "connect": "Verbinden", "disconnect": "Verbindung trennen", "notConnected": "Nicht verbunden", @@ -2393,7 +2626,37 @@ "logs": "Logs", "stats": "Statistik", "consoleTab": "Konsole", - "startContainerToAccess": "Container starten, um auf die Konsole zuzugreifen" + "startContainerToAccess": "Container starten, um auf die Konsole zuzugreifen", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Zum Licht wechseln", diff --git a/src/locales/translated/el.json b/src/locales/translated/el.json index a84c95e4..5b385a74 100644 --- a/src/locales/translated/el.json +++ b/src/locales/translated/el.json @@ -44,6 +44,8 @@ "passwordRequired": "Απαιτείται κωδικός πρόσβασης", "sshKeyRequired": "Απαιτείται SSH κλειδί", "credentialAddedSuccessfully": "Επιτυχής προσθήκη διαπιστευτηρίων \"{{name}}\"", + "savingCredential": "Αποθήκευση διαπιστευτηρίου...", + "updatingCredential": "Ενημέρωση διαπιστευτηρίου...", "general": "Γενικά", "description": "Περιγραφή", "folder": "Φάκελος", @@ -184,6 +186,32 @@ "renameFolder": "Μετονομασία φακέλου", "idLabel": "ID:" }, + "quickConnect": { + "title": "Γρήγορη Σύνδεση", + "description": "Σύνδεση απευθείας σε μια συνεδρία τερματικού ή διαχειριστή αρχείων χωρίς αποθήκευση παραμέτρων κεντρικού υπολογιστή", + "ipAddress": "Διεύθυνση IP ή όνομα κεντρικού υπολογιστή", + "port": "Θύρα", + "username": "Όνομα Χρήστη", + "password": "Κωδικός", + "key": "Ιδιωτικό Κλειδί SSH", + "keyPassword": "Κωδικός Κλειδιού (Προαιρετικό)", + "keyType": "Τύπος Κλειδιού", + "uploadFile": "Μεταφόρτωση Αρχείου", + "pasteKey": "Πλήκτρο Επικόλλησης", + "credential": "Διαπιστευτήριο", + "overrideUsername": "Παράκαμψη Ονόματος Διαπιστευτηρίου Χρήστη", + "overrideUsernameDesc": "Χρησιμοποιήστε ένα διαφορετικό όνομα χρήστη από αυτό που είναι αποθηκευμένο στα διαπιστευτήρια", + "connectTerminal": "Σύνδεση στο Τερματικό", + "connectFileManager": "Σύνδεση στον Διαχειριστή Αρχείων", + "cancel": "Ακύρωση", + "passwordRequired": "Απαιτείται κωδικός πρόσβασης", + "keyRequired": "Απαιτείται SSH κλειδί", + "credentialRequired": "Απαιτείται επιλογή διαπιστευτηρίων", + "connectionEstablished": "Η σύνδεση ολοκληρώθηκε με επιτυχία", + "connectionFailed": "Αποτυχία δημιουργίας σύνδεσης", + "autoDetect": "Αυτόματη Ανίχνευση", + "authentication": "Ταυτοποίηση" + }, "dragIndicator": { "error": "Σφάλμα: {{error}}", "dragging": "Σύρσιμο {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Διαδρομή SSH", "localPath": "Τοπική Διαδρομή", "appName": "Termix", + "openInNewTab": "Άνοιγμα σε νέα καρτέλα", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Σύρετε για αλλαγή μεγέθους πλαϊνής μπάρας", "noAuthCredentials": "Δεν υπάρχουν διαθέσιμα διαπιστευτήρια ταυτοποίησης για αυτόν τον υπολογιστή SSH", @@ -464,10 +493,12 @@ "retry": "Επανάληψη", "checking": "Έλεγχος...", "checkingDatabase": "Έλεγχος σύνδεσης βάσης δεδομένων...", + "checkingAuthentication": "Έλεγχος ταυτοποίησης...", "actions": "Ενέργειες", "remove": "Αφαίρεση", "revoke": "Revoke", - "create": "Δημιουργία" + "create": "Δημιουργία", + "update": "Ενημέρωση" }, "nav": { "home": "Αρχική", @@ -489,7 +520,12 @@ "hostManager": "Διαχειριστής Υπολογιστών", "cannotSplitTab": "Αδυναμία διαχωρισμού αυτής της καρτέλας", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Αντιγραφή Κωδικού Πρόσβασης", + "copySudoPassword": "Αντιγραφή Κωδικού Πρόσβασης Sudo", + "passwordCopied": "Ο κωδικός αντιγράφηκε στο πρόχειρο", + "sudoPasswordCopied": "Ο κωδικός Sudo αντιγράφηκε στο πρόχειρο", + "noPasswordAvailable": "Δεν υπάρχει διαθέσιμος κωδικός πρόσβασης" }, "admin": { "title": "Ρυθμίσεις Διαχειριστή", @@ -537,6 +573,7 @@ "userRegistration": "Εγγραφή Χρήστη", "allowNewAccountRegistration": "Επιτρέψτε την εγγραφή νέου λογαριασμού", "allowPasswordLogin": "Επίτρεψε όνομα χρήστη/κωδικό πρόσβασης", + "allowPasswordReset": "Επιτρέψτε την επαναφορά κωδικού πρόσβασης μέσω κωδικού επαναφοράς", "missingRequiredFields": "Λείπουν υποχρεωτικά πεδία: {{fields}}", "oidcConfigurationUpdated": "Οι ρυθμίσεις του OIDC ενημερώθηκαν επιτυχώς!", "failedToFetchOidcConfig": "Αποτυχία ανάκτησης ρυθμίσεων OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Αυτόματη εκκίνηση στο Container", "autoStartDesc": "Αυτόματη εκκίνηση αυτής της σήραγγας όταν εκκινήσει ο περιέκτης", "addConnection": "Προσθήκη Σύνδεσης Tunnel", + "tunnelType": "Τύπος Tunnel", + "tunnelTypeLocal": "Τοπικό (-L)", + "tunnelTypeRemote": "Απομακρυσμένο (-R)", + "tunnelTypeLocalDesc": "Προώθηση τοπικής θύρας για απομακρυσμένο τελικό σημείο", + "tunnelTypeRemoteDesc": "Προώθηση απομακρυσμένης θύρας στον τοπικό υπολογιστή", + "tunnelForwardDescriptionLocal": "Αυτή η σήραγγα θα προωθήσει την κυκλοφορία από το τοπικό λιμάνι {{sourcePort}} στο λιμάνι {{endpointPort}} στο μηχάνημα τελικού σημείου.", + "tunnelForwardDescriptionRemote": "Αυτή η σήραγγα θα προωθήσει την κυκλοφορία από το λιμάνι {{sourcePort}} στο πηγαίο μηχάνημα (τρέχουσες λεπτομέρειες σύνδεσης γενικά στην καρτέλα) στη θύρα {{endpointPort}} στη μηχανή τελικού σημείου.", "sshpassRequired": "Απαιτείται Sshpass Για Πιστοποίηση Κωδικού Πρόσβασης", "sshpassRequiredDesc": "Για τον έλεγχο ταυτότητας κωδικού πρόσβασης σε σήραγγες, το sshpass πρέπει να εγκατασταθεί στο σύστημα.", "otherInstallMethods": "Άλλες μέθοδοι εγκατάστασης:", @@ -855,13 +899,16 @@ "or": "ή", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Παράθυρα", + "windows": "Παράθυρα (WSL, χωρίς επίσημο δυαδικό)", "sshServerConfigRequired": "Απαιτείται Ρύθμιση Του Ssh Server", "sshServerConfigDesc": "Για συνδέσεις με σήραγγα, ο διακομιστής SSH πρέπει να ρυθμιστεί ώστε να επιτρέπει την προώθηση θύρας:", "gatewayPortsYes": "σύνδεση απομακρυσμένων θυρών σε όλες τις διεπαφές", "allowTcpForwardingYes": "για να ενεργοποιήσετε την προώθηση θυρών", "permitRootLoginYes": "αν χρησιμοποιείτε χρήστη root για tunneling", - "editSshConfig": "Επεξεργαστείτε το /etc/ssh/sshd_config και επανεκκινήστε το SSH: sudo systemctl επανεκκίνηση sshd", + "editSshConfig": "Επεξεργασία του αρχείου ρυθμίσεων SSH:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Στη συνέχεια, επανεκκινήστε την υπηρεσία SSH:", + "restartSshCommand": "sudo systemctl επανεκκίνηση sshd", "upload": "Ανέβασμα", "authentication": "Ταυτοποίηση", "password": "Κωδικός", @@ -1096,6 +1143,19 @@ "quickActionName": "Όνομα ενέργειας", "noSnippetFound": "Δεν βρέθηκε απόσπασμα", "quickActionsOrder": "Τα κουμπιά γρήγορης δράσης θα εμφανίζονται με τη σειρά που αναφέρεται παραπάνω στη σελίδα Στατιστικά Διακομιστή", + "sidebarCustomization": "Προσαρμογή Κουμπιού Πλευρικής Μπάρας", + "sidebarCustomizationDesc": "Επιλέξτε ποιες ενέργειες εμφανίζονται ως γρήγορα κουμπιά στην πλαϊνή μπάρα. Οι ενέργειες που δεν εμφανίζονται ως κουμπιά θα εμφανιστούν στο αναπτυσσόμενο μενού.", + "showTerminalInSidebar": "Εμφάνιση Κουμπιού Τερματικού", + "showTerminalInSidebarDesc": "Εμφάνιση τερματικού ως γρήγορο κουμπί στην πλαϊνή μπάρα", + "showFileManagerInSidebar": "Εμφάνιση Κουμπιού Διαχειριστή Αρχείων", + "showFileManagerInSidebarDesc": "Εμφάνιση του διαχειριστή αρχείων ως γρήγορο κουμπί στην πλαϊνή μπάρα", + "showTunnelInSidebar": "Εμφάνιση Κουμπιού Tunnel", + "showTunnelInSidebarDesc": "Εμφάνιση διαχείρισης σήραγγας ως ένα γρήγορο κουμπί στην πλευρική μπάρα", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Προηγμένες Ρυθμίσεις Ταυτοποίησης", "sudoPasswordAutoFill": "Αυτόματη Συμπλήρωση Κωδικού Πρόσβασης Sudo", "sudoPasswordAutoFillDesc": "Αυτόματη προσφορά για εισαγωγή κωδικού πρόσβασης SSH όταν το σχετικό αίτημα για κωδικό πρόσβασης", @@ -1115,6 +1175,15 @@ "addVariable": "Προσθήκη Μεταβλητής", "docker": "Προσάρτηση", "openDocker": "Άνοιγμα Προσάρτησης", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Το Docker δεν είναι ενεργοποιημένο για αυτόν τον υπολογιστή. Ενεργοποιήστε το στις ρυθμίσεις κεντρικού υπολογιστή για να χρησιμοποιήσετε τα χαρακτηριστικά Docker.", "validating": "Επικύρωση Docker...", "error": "Σφάλμα", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Κωδικός Επαλήθευσης", "totpPlaceholder": "000000", "totpVerify": "Επαλήθευση", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Εισαγωγή Κωδικού Πρόσβασης?", "sudoPasswordPopupHint": "Πατήστε Enter για εισαγωγή, Esc για απόρριψη", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Απόρριψη" + "sudoPasswordPopupDismiss": "Απόρριψη", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Διαχειριστής Αρχείων", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "Το {{type}} διαγράφηκε επιτυχώς", "itemsDeletedSuccessfully": "{{count}} στοιχεία διαγράφηκαν με επιτυχία", "failedToDeleteItems": "Αποτυχία διαγραφής στοιχείων", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Αποθέστε αρχεία εδώ για μεταφόρτωση", "emptyFolder": "Αυτός ο φάκελος είναι κενός", "itemCount": "{{count}} στοιχεία", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Πολύ μεγάλο αρχείο: {{error}}", "sshConnectionFailed": "Αποτυχία σύνδεσης SSH. Παρακαλώ ελέγξτε τη σύνδεσή σας στο {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Απέτυχε η φόρτωση του αρχείου: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Επιτυχής σύνδεση", "totpVerificationFailed": "Αποτυχία επαλήθευσης TOTP", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Κωδικός επιβεβαίωσης:", "changePermissions": "Αλλαγή Δικαιωμάτων", "changePermissionsDesc": "Τροποποίηση δικαιωμάτων αρχείου για", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Αποτυχία αλλαγής δικαιωμάτων" }, "tunnel": { - "noTunnelsConfigured": "Δεν Ρυθμίστηκαν Σήραγγες", - "configureTunnelsInHostSettings": "Ρυθμίστε τις συνδέσεις δρομολόγησης στο Host Manager για να ξεκινήσετε" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH Σήραγγες", @@ -1624,6 +1736,8 @@ "refreshStatus": "Ανανέωση Κατάστασης", "fileManagerAlreadyOpen": "Ο Διαχειριστής αρχείων είναι ήδη ανοιχτός για αυτόν τον κεντρικό υπολογιστή", "openFileManager": "Άνοιγμα Διαχειριστή Αρχείων", + "connecting": "Σύνδεση...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPUs", "naCpus": "Δ/Α ΚΜΕ", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Αποτυχία λήψης μετρήσεων διακομιστή", "failedToFetchHomeData": "Αποτυχία λήψης δεδομένων οικίας", "loadingMetrics": "Φόρτωση μετρήσεων...", - "connecting": "Σύνδεση...", "refreshing": "Ανανέωση...", "serverOffline": "Διακομιστής Χωρίς Σύνδεση", "cannotFetchMetrics": "Αδυναμία λήψης μετρήσεων από διακομιστή εκτός σύνδεσης", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Εκτέλεση {{name}}...", "quickActionSuccess": "{{name}} ολοκληρώθηκε με επιτυχία", "quickActionFailed": "{{name}} απέτυχε", - "quickActionError": "Απέτυχε η εκτέλεση του {{name}}" + "quickActionError": "Απέτυχε η εκτέλεση του {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "ΔΙΑΧΕΙΡΙΣΗ SSH ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΑΚΟΠΗΣ", @@ -1824,7 +1964,11 @@ "emailExists": "Το email υπάρχει ήδη", "loadFailed": "Αποτυχία φόρτωσης δεδομένων", "saveError": "Αποτυχία αποθήκευσης", - "sessionExpired": "Η συνεδρία έληξε - παρακαλώ συνδεθείτε ξανά" + "sessionExpired": "Η συνεδρία έληξε - παρακαλώ συνδεθείτε ξανά", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Αποθηκεύτηκε επιτυχώς", @@ -1882,6 +2026,9 @@ "terminalSettings": "Τερματικό", "hostSidebarSettings": "Κεντρικός Υπολογιστής & Πλαϊνή Μπάρα", "snippetsSettings": "Δείγματα", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Τρέχων Κωδικός Πρόσβασης", "passwordChangedSuccess": "Ο κωδικός πρόσβασης άλλαξε επιτυχώς! Παρακαλώ συνδεθείτε ξανά.", "failedToChangePassword": "Απέτυχε η αλλαγή του κωδικού πρόσβασης. Παρακαλώ ελέγξτε τον τρέχοντα κωδικό πρόσβασης και προσπαθήστε ξανά.", @@ -1890,7 +2037,9 @@ "themeDark": "Σκοτεινό", "themeSystem": "Σύστημα", "appearanceDesc": "Επιλέξτε το χρώμα θέματος για την εφαρμογή", - "terminalSyntaxHighlightingDesc": "Αυτόματη επισήμανση εντολών, μονοπατιών, IP και επιπέδων καταγραφής στην έξοδο τερματικού" + "terminalSyntaxHighlightingDesc": "Αυτόματη επισήμανση εντολών, μονοπατιών, IP και επιπέδων καταγραφής στην έξοδο τερματικού", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Αποτυχία φόρτωσης πληροφοριών έκδοσης" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Ταμπλό", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Υποστήριξη", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Δεν υπάρχουν διαθέσιμα δεδομένα διακομιστή", "cpu": "Επεξεργαστής", "ram": "RAM", - "notAvailable": "Δ/Υ" + "notAvailable": "Δ/Υ", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Κοινοποίηση Διακομιστή", @@ -2306,9 +2537,15 @@ "notEnabled": "Το Docker δεν είναι ενεργοποιημένο για αυτόν τον υπολογιστή", "validating": "Επικύρωση Docker...", "connectingToHost": "Σύνδεση στον υπολογιστή...", + "connecting": "Σύνδεση...", "error": "Σφάλμα", "errorCode": "Κωδικός σφάλματος: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Η επαλήθευση TOTP απέτυχε. Παρακαλώ προσπαθήστε ξανά.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Εισάγετε τον κωδικό επαλήθευσης", + "loadingContainers": "Φόρτωση εμπορευματοκιβωτίων...", "containerStarted": "Το κοντέινερ {{name}} ξεκίνησε", "failedToStartContainer": "Αποτυχία εκκίνησης κοντέινερ {{name}}", "containerStopped": "Το κοντέινερ {{name}} σταμάτησε", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Είστε βέβαιοι ότι θέλετε να αφαιρέσετε το δοχείο '{{name}}'? Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", "runningContainerWarning": "Προειδοποίηση: Αυτό το δοχείο εκτελείται αυτή τη στιγμή. Η αφαίρεση του θα σταματήσει πρώτα τον περιέκτη.", "removing": "Κατάργηση...", - "loadingContainers": "Φόρτωση εμπορευματοκιβωτίων...", "noContainersFound": "Δεν βρέθηκαν εμπορευματοκιβώτια", "noContainersFoundHint": "Δεν υπάρχουν διαθέσιμα δοχεία Docker σε αυτόν τον υπολογιστή", "searchPlaceholder": "Αναζήτηση εμπορευματοκιβωτίων...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Αποσυνδέθηκε από περιέκτη", "containerMustBeRunning": "Ο περιέκτης πρέπει να εκτελείται για πρόσβαση στην κονσόλα", "authenticationRequired": "Απαιτείται πιστοποίηση", - "verificationCodePrompt": "Εισάγετε τον κωδικό επαλήθευσης", - "totpVerificationFailed": "Η επαλήθευση TOTP απέτυχε. Παρακαλώ προσπαθήστε ξανά.", "connectedTo": "Συνδεδεμένο με {{containerName}}", "disconnected": "Αποσυνδέθηκε", "consoleError": "Σφάλμα κονσόλας", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "τέφρα", - "connecting": "Σύνδεση...", "connect": "Σύνδεση", "disconnect": "Αποσύνδεση", "notConnected": "Δεν συνδέθηκε", @@ -2393,7 +2626,37 @@ "logs": "Καταγραφή", "stats": "Στατιστικά", "consoleTab": "Κονσόλα", - "startContainerToAccess": "Εκκίνηση του περιέκτη για πρόσβαση στην κονσόλα" + "startContainerToAccess": "Εκκίνηση του περιέκτη για πρόσβαση στην κονσόλα", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Εναλλαγή σε φως", diff --git a/src/locales/translated/en.json b/src/locales/translated/en.json index 3eebfd6d..140542f9 100644 --- a/src/locales/translated/en.json +++ b/src/locales/translated/en.json @@ -44,6 +44,8 @@ "passwordRequired": "Password is required", "sshKeyRequired": "SSH key is required", "credentialAddedSuccessfully": "Credential \"{{name}}\" added successfully", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "General", "description": "Description", "folder": "Folder", @@ -184,6 +186,32 @@ "renameFolder": "Rename folder", "idLabel": "ID:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "Error: {{error}}", "dragging": "Dragging {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH Path", "localPath": "Local Path", "appName": "Termix", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Drag to resize sidebar", "noAuthCredentials": "No authentication credentials available for this SSH host", @@ -464,10 +493,12 @@ "retry": "Retry", "checking": "Checking...", "checkingDatabase": "Checking database connection...", + "checkingAuthentication": "Checking authentication...", "actions": "Actions", "remove": "Remove", "revoke": "Revoke", - "create": "Create" + "create": "Create", + "update": "Update" }, "nav": { "home": "Home", @@ -489,7 +520,12 @@ "hostManager": "Host Manager", "cannotSplitTab": "Cannot split this tab", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "Admin Settings", @@ -537,6 +573,7 @@ "userRegistration": "User Registration", "allowNewAccountRegistration": "Allow new account registration", "allowPasswordLogin": "Allow username/password login", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "Missing required fields: {{fields}}", "oidcConfigurationUpdated": "OIDC configuration updated successfully!", "failedToFetchOidcConfig": "Failed to fetch OIDC configuration", @@ -848,6 +885,13 @@ "autoStartContainer": "Auto Start on Container Launch", "autoStartDesc": "Automatically start this tunnel when the container launches", "addConnection": "Add Tunnel Connection", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "Sshpass Required For Password Authentication", "sshpassRequiredDesc": "For password authentication in tunnels, sshpass must be installed on the system.", "otherInstallMethods": "Other installation methods:", @@ -855,13 +899,16 @@ "or": "or", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Windows", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "SSH Server Configuration Required", "sshServerConfigDesc": "For tunnel connections, the SSH server must be configured to allow port forwarding:", "gatewayPortsYes": "to bind remote ports to all interfaces", "allowTcpForwardingYes": "to enable port forwarding", "permitRootLoginYes": "if using root user for tunneling", - "editSshConfig": "Edit /etc/ssh/sshd_config and restart SSH: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Upload", "authentication": "Authentication", "password": "Password", @@ -1096,6 +1143,19 @@ "quickActionName": "Action name", "noSnippetFound": "No snippet found", "quickActionsOrder": "Quick action buttons will appear in the order listed above on the Server Stats page", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Advanced Authentication Settings", "sudoPasswordAutoFill": "Sudo Password Auto-Fill", "sudoPasswordAutoFillDesc": "Automatically offer to insert SSH password when sudo prompts for password", @@ -1115,6 +1175,15 @@ "addVariable": "Add Variable", "docker": "Docker", "openDocker": "Open Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker is not enabled for this host. Enable it in Host Settings to use Docker features.", "validating": "Validating Docker...", "error": "Error", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Verification Code", "totpPlaceholder": "000000", "totpVerify": "Verify", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Insert Password?", "sudoPasswordPopupHint": "Press Enter to insert, Esc to dismiss", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Dismiss" + "sudoPasswordPopupDismiss": "Dismiss", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "File Manager", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} deleted successfully", "itemsDeletedSuccessfully": "{{count}} items deleted successfully", "failedToDeleteItems": "Failed to delete items", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Drop files here to upload", "emptyFolder": "This folder is empty", "itemCount": "{{count}} items", @@ -1371,10 +1470,6 @@ "downloadSuccess": "File downloaded successfully", "downloadFailed": "File download failed", "permissionDenied": "Permission denied", - "sudoAuthFailed": "Sudo authentication failed. Please check your password.", - "accessDirectory": "access this directory", - "deleteOperation": "delete these items", - "sudoOperationFailed": "Sudo operation failed", "checkDockerLogs": "Check the Docker logs for detailed error information", "internalServerError": "Internal server error occurred", "serverError": "Server Error", @@ -1535,8 +1630,11 @@ "fileTooLarge": "File too large: {{error}}", "sshConnectionFailed": "SSH connection failed. Please check your connection to {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Failed to load file: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Connected successfully", "totpVerificationFailed": "TOTP verification failed", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Verification code:", "changePermissions": "Change Permissions", "changePermissionsDesc": "Modify file permissions for", @@ -1552,8 +1650,18 @@ "failedToChangePermissions": "Failed to change permissions" }, "tunnel": { - "noTunnelsConfigured": "No Tunnels Configured", - "configureTunnelsInHostSettings": "Configure tunnel connections in the Host Manager to get started" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH Tunnels", @@ -1628,6 +1736,8 @@ "refreshStatus": "Refresh Status", "fileManagerAlreadyOpen": "File Manager already open for this host", "openFileManager": "Open File Manager", + "connecting": "Connecting...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPUs", "naCpus": "N/A CPU(s)", @@ -1643,7 +1753,6 @@ "failedToFetchMetrics": "Failed to fetch server metrics", "failedToFetchHomeData": "Failed to fetch home data", "loadingMetrics": "Loading metrics...", - "connecting": "Connecting...", "refreshing": "Refreshing...", "serverOffline": "Server Offline", "cannotFetchMetrics": "Cannot fetch metrics from offline server", @@ -1686,7 +1795,34 @@ "executingQuickAction": "Executing {{name}}...", "quickActionSuccess": "{{name}} completed successfully", "quickActionFailed": "{{name}} failed", - "quickActionError": "Failed to execute {{name}}" + "quickActionError": "Failed to execute {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH SERVER MANAGER", @@ -1828,7 +1964,11 @@ "emailExists": "Email already exists", "loadFailed": "Failed to load data", "saveError": "Failed to save", - "sessionExpired": "Session expired - please log in again" + "sessionExpired": "Session expired - please log in again", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Saved successfully", @@ -1886,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Host & Sidebar", "snippetsSettings": "Snippets", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Current Password", "passwordChangedSuccess": "Password changed successfully! Please log in again.", "failedToChangePassword": "Failed to change password. Please check your current password and try again.", @@ -1894,7 +2037,9 @@ "themeDark": "Dark", "themeSystem": "System", "appearanceDesc": "Select the color theme for the application", - "terminalSyntaxHighlightingDesc": "Automatically highlight commands, paths, IPs, and log levels in terminal output" + "terminalSyntaxHighlightingDesc": "Automatically highlight commands, paths, IPs, and log levels in terminal output", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Failed to load version information" @@ -2089,6 +2234,7 @@ }, "dashboard": { "title": "Dashboard", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Support", "discord": "Discord", @@ -2118,7 +2264,88 @@ "noServerData": "No server data available", "cpu": "CPU", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Share Host", @@ -2310,9 +2537,15 @@ "notEnabled": "Docker is not enabled for this host", "validating": "Validating Docker...", "connectingToHost": "Connecting to host...", + "connecting": "Connecting...", "error": "Error", "errorCode": "Error code: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP verification failed. Please try again.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Enter verification code", + "loadingContainers": "Loading containers...", "containerStarted": "Container {{name}} started", "failedToStartContainer": "Failed to start container {{name}}", "containerStopped": "Container {{name}} stopped", @@ -2339,7 +2572,6 @@ "confirmRemoveContainer": "Are you sure you want to remove the container '{{name}}'? This action cannot be undone.", "runningContainerWarning": "Warning: This container is currently running. Removing it will stop the container first.", "removing": "Removing...", - "loadingContainers": "Loading containers...", "noContainersFound": "No containers found", "noContainersFoundHint": "No Docker containers are available on this host", "searchPlaceholder": "Search containers...", @@ -2374,8 +2606,6 @@ "disconnectedFromContainer": "Disconnected from container", "containerMustBeRunning": "Container must be running to access console", "authenticationRequired": "Authentication required", - "verificationCodePrompt": "Enter verification code", - "totpVerificationFailed": "TOTP verification failed. Please try again.", "connectedTo": "Connected to {{containerName}}", "disconnected": "Disconnected", "consoleError": "Console error", @@ -2386,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "ash", - "connecting": "Connecting...", "connect": "Connect", "disconnect": "Disconnect", "notConnected": "Not connected", @@ -2397,7 +2626,37 @@ "logs": "Logs", "stats": "Stats", "consoleTab": "Console", - "startContainerToAccess": "Start the container to access the console" + "startContainerToAccess": "Start the container to access the console", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Switch to Light", diff --git a/src/locales/translated/es.json b/src/locales/translated/es.json index 2271a62e..b4a65b90 100644 --- a/src/locales/translated/es.json +++ b/src/locales/translated/es.json @@ -44,6 +44,8 @@ "passwordRequired": "Se requiere contraseña", "sshKeyRequired": "La clave SSH es necesaria", "credentialAddedSuccessfully": "Credencial \"{{name}}\" añadido correctamente", + "savingCredential": "Guardando credencial...", + "updatingCredential": "Actualizando credencial...", "general": "General", "description": "Descripción", "folder": "Carpeta", @@ -184,6 +186,32 @@ "renameFolder": "Renombrar carpeta", "idLabel": "ID:" }, + "quickConnect": { + "title": "Conexión rápida", + "description": "Conectar directamente a una terminal o sesión de gestor de archivos sin guardar una configuración de host", + "ipAddress": "Dirección IP o nombre de host", + "port": "Puerto", + "username": "Usuario", + "password": "Contraseña", + "key": "Clave privada SSH", + "keyPassword": "Contraseña de clave (opcional)", + "keyType": "Tipo de clave", + "uploadFile": "Subir archivo", + "pasteKey": "Pegar clave", + "credential": "Credencial", + "overrideUsername": "Reemplazar nombre de usuario de credenciales", + "overrideUsernameDesc": "Utilice un nombre de usuario diferente al almacenado en la credencial", + "connectTerminal": "Conectar a la terminal", + "connectFileManager": "Conectar al Administrador de Archivos", + "cancel": "Cancelar", + "passwordRequired": "Se requiere contraseña", + "keyRequired": "La clave SSH es necesaria", + "credentialRequired": "Se requiere selección de credenciales", + "connectionEstablished": "Conexión establecida con éxito", + "connectionFailed": "Error al establecer la conexión", + "autoDetect": "Auto detectar", + "authentication": "Autenticación" + }, "dragIndicator": { "error": "Error: {{error}}", "dragging": "Arrastra {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Ruta SSH", "localPath": "Ruta local", "appName": "Termix", + "openInNewTab": "Abrir en nueva pestaña", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Arrastre para redimensionar la barra lateral", "noAuthCredentials": "No hay credenciales de autenticación disponibles para este host SSH", @@ -464,10 +493,12 @@ "retry": "Reintentar", "checking": "Comprobando...", "checkingDatabase": "Comprobando conexión a la base de datos...", + "checkingAuthentication": "Comprobando autenticación...", "actions": "Acciones", "remove": "Eliminar", "revoke": "Revoke", - "create": "Crear" + "create": "Crear", + "update": "Actualizar" }, "nav": { "home": "Inicio", @@ -489,7 +520,12 @@ "hostManager": "Gestor de Anfitriones", "cannotSplitTab": "No se puede dividir esta pestaña", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copiar contraseña", + "copySudoPassword": "Copiar contraseña de Sudo", + "passwordCopied": "Contraseña copiada al portapapeles", + "sudoPasswordCopied": "Contraseña de Sudo copiada al portapapeles", + "noPasswordAvailable": "Contraseña no disponible" }, "admin": { "title": "Configuración de Admin", @@ -537,6 +573,7 @@ "userRegistration": "Registro de usuario", "allowNewAccountRegistration": "Permitir el registro de nueva cuenta", "allowPasswordLogin": "Permitir nombre de usuario/contraseña", + "allowPasswordReset": "Permitir restablecer contraseña mediante código de restablecimiento", "missingRequiredFields": "Faltan campos obligatorios: {{fields}}", "oidcConfigurationUpdated": "¡Configuración OIDC actualizada con éxito!", "failedToFetchOidcConfig": "Error al recuperar la configuración OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Inicio automático en el lanzamiento del contenedor", "autoStartDesc": "Iniciar automáticamente este túnel cuando el contenedor se ejecuta", "addConnection": "Añadir conexión de túnel", + "tunnelType": "Tipo de túnel", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remoto (-R)", + "tunnelTypeLocalDesc": "Reenviar puerto local al extremo remoto", + "tunnelTypeRemoteDesc": "Reenviar puerto remoto a máquina local", + "tunnelForwardDescriptionLocal": "Este túnel redirigirá el tráfico desde el puerto local {{sourcePort}} al puerto {{endpointPort}} en la máquina endpoint.", + "tunnelForwardDescriptionRemote": "Este túnel redirigirá el tráfico desde el puerto {{sourcePort}} en la máquina fuente (los detalles de conexión actuales en la pestaña general) al puerto {{endpointPort}} en la máquina de endpoint.", "sshpassRequired": "Sshpass requerido para la autenticación de contraseña", "sshpassRequiredDesc": "Para la autenticación de contraseña en túneles, sshpass debe estar instalado en el sistema.", "otherInstallMethods": "Otros métodos de instalación:", @@ -855,13 +899,16 @@ "or": "o", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Ventanas", + "windows": "Ventanas (WSL, sin binario oficial)", "sshServerConfigRequired": "Configuración del servidor SSH requerida", "sshServerConfigDesc": "Para conexiones de túnel, el servidor SSH debe estar configurado para permitir el reenvío de puertos:", "gatewayPortsYes": "para enlazar puertos remotos a todas las interfaces", "allowTcpForwardingYes": "para activar el reenvío de puertos", "permitRootLoginYes": "si se utiliza usuario root para túneles", - "editSshConfig": "Editar /ssh/sshd_config y reiniciar SSH: sudo systemctl restart sshd", + "editSshConfig": "Editar el archivo de configuración SSH:", + "sshConfigPath": "/ssh/sshd_config", + "restartSshService": "Luego reinicie el servicio SSH:", + "restartSshCommand": "sudo systemctl reiniciar sshd", "upload": "Subir", "authentication": "Autenticación", "password": "Contraseña", @@ -1096,6 +1143,19 @@ "quickActionName": "Nombre de acción", "noSnippetFound": "No se encontró un fragmento", "quickActionsOrder": "Los botones de acción rápida aparecerán en el orden anterior en la página de estadísticas del servidor", + "sidebarCustomization": "Personalización del botón de barra lateral", + "sidebarCustomizationDesc": "Elija qué acciones aparecen como botones rápidos en la barra lateral. Las acciones no mostradas como botones aparecerán en el menú desplegable.", + "showTerminalInSidebar": "Mostrar botón de terminal", + "showTerminalInSidebarDesc": "Mostrar terminal como botón rápido en la barra lateral", + "showFileManagerInSidebar": "Mostrar botón gestor de archivos", + "showFileManagerInSidebarDesc": "Mostrar el gestor de archivos como botón rápido en la barra lateral", + "showTunnelInSidebar": "Mostrar botón de túnel", + "showTunnelInSidebarDesc": "Mostrar administración de túneles como botón rápido en la barra lateral", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Configuración de autenticación avanzada", "sudoPasswordAutoFill": "Auto-relleno de contraseña de Sudo", "sudoPasswordAutoFillDesc": "Ofrecer automáticamente para insertar la contraseña SSH cuando sudo solicita la contraseña", @@ -1115,6 +1175,15 @@ "addVariable": "Añadir variable", "docker": "Doctor", "openDocker": "Abrir Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker no está habilitado para este host. Actívalo en la configuración del host para usar las funciones de Docker.", "validating": "Validando Docker...", "error": "Error", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Código de verificación", "totpPlaceholder": "000000", "totpVerify": "Verificar", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "¿Insertar contraseña?", "sudoPasswordPopupHint": "Presione Enter para insertar, Esc para descartar", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Descartar" + "sudoPasswordPopupDismiss": "Descartar", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Gestor de archivos", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} eliminado correctamente", "itemsDeletedSuccessfully": "{{count}} elementos eliminados con éxito", "failedToDeleteItems": "Error al eliminar elementos", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Borrar archivos aquí para subir", "emptyFolder": "Esta carpeta está vacía", "itemCount": "{{count}} objetos", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Archivo demasiado grande: {{error}}", "sshConnectionFailed": "La conexión SSH ha fallado. Por favor, compruebe su conexión a {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Error al cargar el archivo: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Conectado correctamente", "totpVerificationFailed": "Falló la verificación TOTP", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Código de verificación:", "changePermissions": "Cambiar permisos", "changePermissionsDesc": "Modificar permisos de archivo para", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Error al cambiar los permisos" }, "tunnel": { - "noTunnelsConfigured": "No hay túneles configurados", - "configureTunnelsInHostSettings": "Configurar conexiones de túnel en el Administrador de Equipos para comenzar" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "Túneles SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "Actualizar estado", "fileManagerAlreadyOpen": "Administrador de archivos ya abierto para este host", "openFileManager": "Abrir gestor de archivos", + "connecting": "Conectando...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "CPU {{count}}", "cpuCores_other": "CPUs {{count}}", "naCpus": "N/A CPU(s)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Error al recuperar métricas del servidor", "failedToFetchHomeData": "Error al recuperar datos de inicio", "loadingMetrics": "Cargando métricas...", - "connecting": "Conectando...", "refreshing": "Actualizando...", "serverOffline": "Servidor fuera de línea", "cannotFetchMetrics": "No se pueden obtener métricas del servidor sin conexión", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Ejecutando {{name}}...", "quickActionSuccess": "{{name}} completado con éxito", "quickActionFailed": "{{name}} falló", - "quickActionError": "Error al ejecutar {{name}}" + "quickActionError": "Error al ejecutar {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "MANAGER DE SSH SERVIDOR", @@ -1824,7 +1964,11 @@ "emailExists": "El correo electrónico ya existe", "loadFailed": "Error al cargar los datos", "saveError": "Error al guardar", - "sessionExpired": "Sesión caducada - por favor inicia sesión de nuevo" + "sessionExpired": "Sesión caducada - por favor inicia sesión de nuevo", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Guardado correctamente", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Anfitrión y barra lateral", "snippetsSettings": "Fragmentos", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Contraseña actual", "passwordChangedSuccess": "¡Contraseña cambiada con éxito! Por favor, inicia sesión de nuevo.", "failedToChangePassword": "Error al cambiar la contraseña. Por favor, comprueba tu contraseña actual e inténtalo de nuevo.", @@ -1890,7 +2037,9 @@ "themeDark": "Oscuro", "themeSystem": "Sistema", "appearanceDesc": "Seleccione el tema de color para la aplicación", - "terminalSyntaxHighlightingDesc": "Destacar automáticamente comandos, rutas, direcciones IP y niveles de registro en la salida del terminal" + "terminalSyntaxHighlightingDesc": "Destacar automáticamente comandos, rutas, direcciones IP y niveles de registro en la salida del terminal", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Error al cargar la información de la versión" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Tablero", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Soporte", "discord": "Discordia", @@ -2114,7 +2264,88 @@ "noServerData": "No hay datos del servidor disponibles", "cpu": "CPU", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Compartir Host", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker no está habilitado para este host", "validating": "Validando Docker...", "connectingToHost": "Conectando con el anfitrión...", + "connecting": "Conectando...", "error": "Error", "errorCode": "Código de error: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Falló la verificación del TOTP. Por favor, inténtelo de nuevo.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Introduzca código de verificación", + "loadingContainers": "Cargando contenedores...", "containerStarted": "Contenedor {{name}} iniciado", "failedToStartContainer": "Error al iniciar el contenedor {{name}}", "containerStopped": "Contenedor {{name}} detenido", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "¿Está seguro de que desea eliminar el contenedor '{{name}}'? Esta acción no se puede deshacer.", "runningContainerWarning": "Advertencia: Este contenedor se está ejecutando. Eliminarlo detendrá el contenedor primero.", "removing": "Eliminando...", - "loadingContainers": "Cargando contenedores...", "noContainersFound": "No hay contenedores", "noContainersFoundHint": "No hay contenedores Docker disponibles en este host", "searchPlaceholder": "Buscar contenedores...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Desconectado del contenedor", "containerMustBeRunning": "El contenedor debe estar ejecutándose para acceder a la consola", "authenticationRequired": "Autenticación requerida", - "verificationCodePrompt": "Introduzca código de verificación", - "totpVerificationFailed": "Falló la verificación del TOTP. Por favor, inténtelo de nuevo.", "connectedTo": "Conectado a {{containerName}}", "disconnected": "Desconectado", "consoleError": "Error de consola", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "m", "ash": "ceniza", - "connecting": "Conectando...", "connect": "Conectar", "disconnect": "Desconectar", "notConnected": "No conectado", @@ -2393,7 +2626,37 @@ "logs": "Registros", "stats": "Estadísticas", "consoleTab": "Consola", - "startContainerToAccess": "Iniciar el contenedor para acceder a la consola" + "startContainerToAccess": "Iniciar el contenedor para acceder a la consola", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Cambiar a Luz", diff --git a/src/locales/translated/fi.json b/src/locales/translated/fi.json index d291e883..682526c8 100644 --- a/src/locales/translated/fi.json +++ b/src/locales/translated/fi.json @@ -44,6 +44,8 @@ "passwordRequired": "Salasana vaaditaan", "sshKeyRequired": "SSH avain on pakollinen", "credentialAddedSuccessfully": "Käyttöoikeustiedot \"{{name}}\" lisätty onnistuneesti", + "savingCredential": "Tallennetaan käyttäjätunnus...", + "updatingCredential": "Päivitetään käyttäjätietoja...", "general": "Yleiset", "description": "Kuvaus", "folder": "Kansio", @@ -184,6 +186,32 @@ "renameFolder": "Nimeä kansio uudelleen", "idLabel": "ID:" }, + "quickConnect": { + "title": "Nopea Yhdistäminen", + "description": "Yhdistä suoraan päätteeseen tai tiedostonhallintaistuntoon tallentamatta isäntä asetuksia", + "ipAddress": "IP-osoite tai isäntänimi", + "port": "Portti", + "username": "Käyttäjätunnus", + "password": "Salasana", + "key": "Ssh Yksityinen Avain", + "keyPassword": "Avaimen Salasana (Valinnainen)", + "keyType": "Avaimen Tyyppi", + "uploadFile": "Lataa Tiedosto", + "pasteKey": "Liitä Avain", + "credential": "Käyttöoikeustiedot", + "overrideUsername": "Ohita Käyttöoikeustietojen Käyttäjätunnus", + "overrideUsernameDesc": "Käytä toista käyttäjänimeä kuin sitä, joka on tallentanut käyttäjätunnuksen", + "connectTerminal": "Yhdistä päätteeseen", + "connectFileManager": "Yhdistä tiedostonhallintaan", + "cancel": "Peruuta", + "passwordRequired": "Salasana vaaditaan", + "keyRequired": "SSH avain on pakollinen", + "credentialRequired": "Käyttöoikeustietojen valinta on pakollinen", + "connectionEstablished": "Yhteys luotiin onnistuneesti", + "connectionFailed": "Yhteyden luominen epäonnistui", + "autoDetect": "Tunnista Automaattisesti", + "authentication": "Todennus" + }, "dragIndicator": { "error": "Virhe: {{error}}", "dragging": "Vedä {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Ssh Polku", "localPath": "Paikallinen Polku", "appName": "Termix", + "openInNewTab": "Avaa uudessa välilehdessä", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Muuta sivupalkin kokoa vetämällä", "noAuthCredentials": "Ei todennustunnuksia saatavilla tälle SSH isännälle", @@ -464,10 +493,12 @@ "retry": "Yritä Uudelleen", "checking": "Tarkistetaan...", "checkingDatabase": "Tarkistetaan tietokantayhteyttä...", + "checkingAuthentication": "Tarkistetaan todennusta...", "actions": "Toiminnot", "remove": "Poista", "revoke": "Revoke", - "create": "Luo" + "create": "Luo", + "update": "Päivitä" }, "nav": { "home": "Koti", @@ -489,7 +520,12 @@ "hostManager": "Isäntälaitteen Hallinta", "cannotSplitTab": "Välilehtiä ei voi jakaa", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Kopioi Salasana", + "copySudoPassword": "Kopioi Sudo Salasana", + "passwordCopied": "Salasana kopioitu leikepöydälle", + "sudoPasswordCopied": "Sudo salasana kopioitu leikepöydälle", + "noPasswordAvailable": "Salasanaa ei ole saatavilla" }, "admin": { "title": "Ylläpitäjän Asetukset", @@ -537,6 +573,7 @@ "userRegistration": "Käyttäjän Rekisteröinti", "allowNewAccountRegistration": "Salli uuden tilin rekisteröinti", "allowPasswordLogin": "Salli käyttäjätunnus/salasana kirjautuminen", + "allowPasswordReset": "Salli salasanan nollaaminen nollakoodilla", "missingRequiredFields": "Puuttuvat pakolliset kentät: {{fields}}", "oidcConfigurationUpdated": "OIDC asetukset päivitetty onnistuneesti!", "failedToFetchOidcConfig": "OIDC konfiguraation noutaminen epäonnistui", @@ -848,6 +885,13 @@ "autoStartContainer": "Käynnistä automaattisesti kontin käynnistyksessä", "autoStartDesc": "Käynnistä tämä tunneli automaattisesti kontin käynnistyessä", "addConnection": "Lisää Tunneliyhteys", + "tunnelType": "Tunnelin Tyyppi", + "tunnelTypeLocal": "Paikallinen (-L)", + "tunnelTypeRemote": "Etäkäyttö (-R)", + "tunnelTypeLocalDesc": "Välitä paikallinen portti etäpäätepisteeseen", + "tunnelTypeRemoteDesc": "Välitä etäportti paikalliseen koneeseen", + "tunnelForwardDescriptionLocal": "Tämä tunneli siirtää liikennettä paikallisesta portista {{sourcePort}} porttiin {{endpointPort}} päätepistekoneella.", + "tunnelForwardDescriptionRemote": "Tämä tunneli siirtää liikennettä satamasta {{sourcePort}} lähdekoneella (nykyisen yhteyden tiedot yleensä välilehdessä) porttiin {{endpointPort}} päätepistekoneella.", "sshpassRequired": "Sshpassi Vaaditaan Salasanan Todentamiseksi", "sshpassRequiredDesc": "Jotta salasanan todennus tunneleissa, sshpass on asennettava järjestelmään.", "otherInstallMethods": "Muut asennusmenetelmät:", @@ -855,13 +899,16 @@ "or": "tai", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Ikkunat", + "windows": "Windows (WSL, ei virallista binääriä)", "sshServerConfigRequired": "Ssh Palvelimen Asetukset Vaaditaan", "sshServerConfigDesc": "Tunneliyhteyksiä varten SSH-palvelin on oltava konfiguroitu, jotta portti voidaan siirtää", "gatewayPortsYes": "sitoa etäportit kaikkiin rajapintoihin", "allowTcpForwardingYes": "ottaa portin huolinta käyttöön", "permitRootLoginYes": "jos käytät root-käyttäjää tunnelointiin", - "editSshConfig": "Muokkaa /etc/ssh/sshd_config ja käynnistä SSH: sudo systemctl uudelleen sshd", + "editSshConfig": "Muokkaa SSH asetustiedostoa:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Käynnistä sitten SSH palvelu:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Lähetä", "authentication": "Todennus", "password": "Salasana", @@ -1096,6 +1143,19 @@ "quickActionName": "Toiminnon nimi", "noSnippetFound": "Ei löytynyt katkelmaa", "quickActionsOrder": "Pikatoimintopainikkeet näkyvät yllä luetellussa järjestyksessä Palvelimen tilastot -sivulla.", + "sidebarCustomization": "Sivupalkin Painikkeen Mukauttaminen", + "sidebarCustomizationDesc": "Valitse mitkä toiminnot näkyvät sivupalkissa pikanäppäiminä. Toimintoja, joita ei näytetä painikkeina, tulee näkymään pudotusvalikossa.", + "showTerminalInSidebar": "Näytä Päätepainike", + "showTerminalInSidebarDesc": "Näytä pääte pika-painikkeena sivupalkissa", + "showFileManagerInSidebar": "Näytä Tiedostonhallinnan Painike", + "showFileManagerInSidebarDesc": "Näytä tiedostonhallinta pika-painikkeena sivupalkissa.@ info: whatsthis", + "showTunnelInSidebar": "Näytä Tunnelin Painike", + "showTunnelInSidebarDesc": "Näytä tunnelin hallinta sivupalkin pikanäppäimenä", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Lisäasetukset todennukselle", "sudoPasswordAutoFill": "Sudo-salasanan automaattinen täyttö", "sudoPasswordAutoFillDesc": "Tarjoaa automaattisesti SSH-salasanan syöttämistä, kun sudo pyytää salasanaa", @@ -1115,6 +1175,15 @@ "addVariable": "Lisää muuttuja", "docker": "Telakoitsija", "openDocker": "Avaa Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker ei ole käytössä tässä isännässä. Ota se käyttöön isännän asetuksissa käyttääksesi Dockerin ominaisuuksia.", "validating": "Dockerin validointi...", "error": "Virhe", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Vahvistuskoodi", "totpPlaceholder": "000000", "totpVerify": "Vahvista", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Syötä salasana?", "sudoPasswordPopupHint": "Lisää painamalla Enter, hylkää painamalla Esc", "sudoPasswordPopupConfirm": "Lisää", - "sudoPasswordPopupDismiss": "Hylkää" + "sudoPasswordPopupDismiss": "Hylkää", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Tiedostojen Hallinta", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} poistettu onnistuneesti", "itemsDeletedSuccessfully": "{{count}} kohdetta poistettu onnistuneesti", "failedToDeleteItems": "Kohteiden poistaminen epäonnistui", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Pudota tiedostot tähän ladataksesi", "emptyFolder": "Tämä kansio on tyhjä", "itemCount": "{{count}} kohdetta", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Tiedosto liian suuri: {{error}}", "sshConnectionFailed": "SSH-yhteys epäonnistui. Tarkista yhteytesi kohteeseen {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Tiedoston lataaminen epäonnistui: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Yhteys onnistui", "totpVerificationFailed": "TOTP-vahvistus epäonnistui", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Vahvistuskoodi:", "changePermissions": "Muuta käyttöoikeuksia", "changePermissionsDesc": "Muokkaa tiedoston käyttöoikeuksia", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Käyttöoikeuksien muuttaminen epäonnistui" }, "tunnel": { - "noTunnelsConfigured": "Ei tunneleita määritettynä", - "configureTunnelsInHostSettings": "Aloita määrittämällä tunneliyhteydet Host Managerissa" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH-tunnelit", @@ -1624,6 +1736,8 @@ "refreshStatus": "Päivitä tila", "fileManagerAlreadyOpen": "Tiedostonhallinta on jo auki tälle isännälle", "openFileManager": "Avaa tiedostonhallinta", + "connecting": "Yhdistetään...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} Suoritinta", "cpuCores_other": "{{count}} Suoritinta", "naCpus": "Ei saatavilla olevaa suoritinta", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Palvelimen mittareiden nouto epäonnistui", "failedToFetchHomeData": "Kotitietojen hakeminen epäonnistui", "loadingMetrics": "Mittarit ladataan...", - "connecting": "Yhdistetään...", "refreshing": "Virkistävä...", "serverOffline": "Palvelin offline-tilassa", "cannotFetchMetrics": "Mittarien nouto offline-palvelimelta ei onnistu", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Suoritetaan {{name}}...", "quickActionSuccess": "{{name}} suoritettu onnistuneesti", "quickActionFailed": "{{name}} epäonnistui", - "quickActionError": "{{name}} suoritus epäonnistui" + "quickActionError": "{{name}} suoritus epäonnistui", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH-PALVELINHALLINTA", @@ -1824,7 +1964,11 @@ "emailExists": "Sähköpostiosoite on jo olemassa", "loadFailed": "Tietojen lataus epäonnistui", "saveError": "Tallennus epäonnistui", - "sessionExpired": "Istunto vanhentunut - kirjaudu sisään uudelleen" + "sessionExpired": "Istunto vanhentunut - kirjaudu sisään uudelleen", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Tallennettu onnistuneesti", @@ -1882,6 +2026,9 @@ "terminalSettings": "Pääte", "hostSidebarSettings": "Isäntä ja sivupalkki", "snippetsSettings": "Projekti", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Nykyinen salasana", "passwordChangedSuccess": "Salasana vaihdettu onnistuneesti! Kirjaudu uudelleen sisään.", "failedToChangePassword": "Salasanan vaihtaminen epäonnistui. Tarkista nykyinen salasanasi ja yritä uudelleen.", @@ -1890,7 +2037,9 @@ "themeDark": "Tumma", "themeSystem": "Järjestelmä", "appearanceDesc": "Valitse sovelluksen väriteema", - "terminalSyntaxHighlightingDesc": "Korosta automaattisesti komennot, polut, IP-osoitteet ja lokitasot päätetulosteessa" + "terminalSyntaxHighlightingDesc": "Korosta automaattisesti komennot, polut, IP-osoitteet ja lokitasot päätetulosteessa", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Versiotietojen lataaminen epäonnistui" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Kojelauta", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Tukea", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Palvelintietoja ei saatavilla", "cpu": "Suoritin", "ram": "RAM-muistia", - "notAvailable": "Ei saatavilla" + "notAvailable": "Ei saatavilla", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Jaa isäntä", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker ei ole käytössä tälle isännälle", "validating": "Dockerin validointi...", "connectingToHost": "Yhdistetään isäntään...", + "connecting": "Yhdistetään...", "error": "Virhe", "errorCode": "Virhekoodi: {{code}}", "version": "Telakoija {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP-vahvistus epäonnistui. Yritä uudelleen.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Syötä vahvistuskoodi", + "loadingContainers": "Konttien lastaus...", "containerStarted": "Kontti {{name}} aloitettu", "failedToStartContainer": "Säiliön {{name}}käynnistäminen epäonnistui", "containerStopped": "Säiliö {{name}} pysäytetty", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Oletko varma, että haluat poistaa säiliön '{{name}}'? Tätä toimintoa ei voi perua.", "runningContainerWarning": "Varoitus: Tämä säilö on parhaillaan käynnissä. Sen poistaminen pysäyttää säilön ensin.", "removing": "Poistetaan...", - "loadingContainers": "Konttien lastaus...", "noContainersFound": "Ei löytynyt säiliöitä", "noContainersFoundHint": "Docker-kontteja ei ole saatavilla tällä isännöintipalvelimella", "searchPlaceholder": "Hae säilöjä...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Irrotettu säilöstä", "containerMustBeRunning": "Kontin on oltava käynnissä, jotta konsoliin pääsee käsiksi.", "authenticationRequired": "Todennus vaaditaan", - "verificationCodePrompt": "Syötä vahvistuskoodi", - "totpVerificationFailed": "TOTP-vahvistus epäonnistui. Yritä uudelleen.", "connectedTo": "Yhdistetty {{containerName}}", "disconnected": "Yhteys Katkaistu", "consoleError": "Konsolivirhe", @@ -2382,7 +2616,6 @@ "bash": "Lyödä", "sh": "sh", "ash": "tuhka", - "connecting": "Yhdistetään...", "connect": "Yhdistä", "disconnect": "Katkaise yhteys", "notConnected": "Ei yhdistetty", @@ -2393,7 +2626,37 @@ "logs": "Lokit", "stats": "Tilastot", "consoleTab": "Konsoli", - "startContainerToAccess": "Käynnistä säilö päästäksesi konsoliin" + "startContainerToAccess": "Käynnistä säilö päästäksesi konsoliin", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Vaihda vaaleaan", diff --git a/src/locales/translated/fr.json b/src/locales/translated/fr.json index 4ab5f912..af4be8bc 100644 --- a/src/locales/translated/fr.json +++ b/src/locales/translated/fr.json @@ -44,6 +44,8 @@ "passwordRequired": "Le mot de passe est requis", "sshKeyRequired": "La clé SSH est requise", "credentialAddedSuccessfully": "Les identifiants «{{name}}» ont été ajoutés avec succès", + "savingCredential": "Enregistrement des identifiants...", + "updatingCredential": "Mise à jour des identifiants...", "general": "Généraux", "description": "Libellé", "folder": "Répertoire", @@ -184,6 +186,32 @@ "renameFolder": "Renommer le dossier", "idLabel": "ID:" }, + "quickConnect": { + "title": "Connexion Rapide", + "description": "Se connecter directement à une session de terminal ou de gestionnaire de fichiers sans enregistrer de configuration d'hôte", + "ipAddress": "Adresse IP ou nom d'hôte", + "port": "Port", + "username": "Nom d'utilisateur", + "password": "Mot de passe", + "key": "Clé privée SSH", + "keyPassword": "Mot de passe de la clé (facultatif)", + "keyType": "Type de clé", + "uploadFile": "Charger un fichier", + "pasteKey": "Coller la clé", + "credential": "Identification", + "overrideUsername": "Remplacer le nom d'utilisateur de l'identifiant", + "overrideUsernameDesc": "Utilisez un nom d'utilisateur différent de celui stocké dans les identifiants", + "connectTerminal": "Se connecter au terminal", + "connectFileManager": "Se connecter au gestionnaire de fichiers", + "cancel": "Abandonner", + "passwordRequired": "Le mot de passe est requis", + "keyRequired": "La clé SSH est requise", + "credentialRequired": "La sélection des identifiants est requise", + "connectionEstablished": "Connexion établie avec succès", + "connectionFailed": "Impossible d'établir la connexion", + "autoDetect": "Détection automatique", + "authentication": "Authentification" + }, "dragIndicator": { "error": "Erreur: {{error}}", "dragging": "Glisser sur {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Chemin SSH", "localPath": "Chemin local", "appName": "Termix", + "openInNewTab": "Ouvrir dans un nouvel onglet", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Glisser pour redimensionner la barre latérale", "noAuthCredentials": "Aucun identifiant d'authentification disponible pour cet hôte SSH", @@ -464,10 +493,12 @@ "retry": "Réessayer", "checking": "Vérification...", "checkingDatabase": "Vérification de la connexion à la base de données...", + "checkingAuthentication": "Vérification de l'authentification...", "actions": "Actions", "remove": "Retirer", "revoke": "Revoke", - "create": "Créer" + "create": "Créer", + "update": "Mise à jour" }, "nav": { "home": "Domicile", @@ -489,7 +520,12 @@ "hostManager": "Responsable d'hôte", "cannotSplitTab": "Impossible de diviser cet onglet", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copier le mot de passe", + "copySudoPassword": "Copier le mot de passe Sudo", + "passwordCopied": "Mot de passe copié dans le presse-papiers", + "sudoPasswordCopied": "Mot de passe Sudo copié dans le presse-papiers", + "noPasswordAvailable": "Aucun mot de passe disponible" }, "admin": { "title": "Paramètres de l'administrateur", @@ -537,6 +573,7 @@ "userRegistration": "Inscription de l'utilisateur", "allowNewAccountRegistration": "Autoriser l'enregistrement d'un nouveau compte", "allowPasswordLogin": "Autoriser le nom d'utilisateur/mot de passe", + "allowPasswordReset": "Autoriser la réinitialisation du mot de passe via le code de réinitialisation", "missingRequiredFields": "Champs obligatoires manquants : {{fields}}", "oidcConfigurationUpdated": "Configuration OIDC mise à jour avec succès !", "failedToFetchOidcConfig": "Impossible de récupérer la configuration OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Démarrage automatique au lancement du conteneur", "autoStartDesc": "Démarrer automatiquement ce tunnel lorsque le conteneur démarre", "addConnection": "Ajouter une connexion Tunnel", + "tunnelType": "Type de tunnel", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Télécommande (-R)", + "tunnelTypeLocalDesc": "Transférer le port local vers le point de terminaison distant", + "tunnelTypeRemoteDesc": "Transférer le port distant vers la machine locale", + "tunnelForwardDescriptionLocal": "Ce tunnel redirigera le trafic du port local {{sourcePort}} vers le port {{endpointPort}} sur la machine d'extrémité.", + "tunnelForwardDescriptionRemote": "Ce tunnel acheminera le trafic depuis le port {{sourcePort}} sur la machine source (détails de connexion actuels dans l'onglet général) vers le port {{endpointPort}} sur la machine d'extrémité.", "sshpassRequired": "Sshpass requis pour l'authentification par mot de passe", "sshpassRequiredDesc": "Pour l'authentification par mot de passe dans les tunnels, sshpass doit être installé sur le système.", "otherInstallMethods": "Autres méthodes d'installation :", @@ -855,13 +899,16 @@ "or": "ou", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Fenêtres", + "windows": "Windows (WSL, pas de binaire officiel)", "sshServerConfigRequired": "Configuration du serveur SSH requise", "sshServerConfigDesc": "Pour les connexions de tunnels, le serveur SSH doit être configuré pour permettre la redirection de port :", "gatewayPortsYes": "pour lier les ports distants à toutes les interfaces", "allowTcpForwardingYes": "pour activer la redirection de port", "permitRootLoginYes": "si vous utilisez l'utilisateur root pour le tunneling", - "editSshConfig": "Editer /etc/ssh/sshd_config et redémarrer SSH: sudo systemctl redémarrer sshd", + "editSshConfig": "Modifier le fichier de configuration SSH :", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Puis redémarrez le service SSH :", + "restartSshCommand": "sudo systemctl redémarrer sshd", "upload": "Charger", "authentication": "Authentification", "password": "Mot de passe", @@ -1096,6 +1143,19 @@ "quickActionName": "Nom de l'action", "noSnippetFound": "Aucun snippet trouvé", "quickActionsOrder": "Les boutons d'action rapide apparaîtront dans l'ordre indiqué ci-dessus sur la page des statistiques du serveur", + "sidebarCustomization": "Personnalisation des boutons de la barre latérale", + "sidebarCustomizationDesc": "Choisissez les actions qui apparaissent comme des boutons rapides dans la barre latérale. Les actions non affichées comme des boutons apparaîtront dans le menu déroulant.", + "showTerminalInSidebar": "Afficher le bouton Terminal", + "showTerminalInSidebarDesc": "Afficher le terminal comme un bouton rapide dans la barre latérale", + "showFileManagerInSidebar": "Afficher le bouton du gestionnaire de fichiers", + "showFileManagerInSidebarDesc": "Afficher le gestionnaire de fichiers comme un bouton rapide dans la barre latérale", + "showTunnelInSidebar": "Afficher le bouton du tunnel", + "showTunnelInSidebarDesc": "Afficher la gestion des tunnels comme un bouton rapide dans la barre latérale", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Paramètres avancés d'authentification", "sudoPasswordAutoFill": "Remplissage automatique du mot de passe Sudo", "sudoPasswordAutoFillDesc": "Proposer automatiquement d'insérer le mot de passe SSH lorsque sudo demande le mot de passe", @@ -1115,6 +1175,15 @@ "addVariable": "Ajouter une variable", "docker": "Docker", "openDocker": "Ouvrir Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker n'est pas activé pour cet hôte. Activez-le dans les paramètres de l'hôte pour utiliser les fonctionnalités Docker.", "validating": "Validation de Docker...", "error": "Erreur", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Code de vérification", "totpPlaceholder": "000000", "totpVerify": "Vérifier", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Insérer un mot de passe ?", "sudoPasswordPopupHint": "Appuyez sur Entrée pour insérer, Échap pour rejeter", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Refuser" + "sudoPasswordPopupDismiss": "Refuser", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Gestionnaire de fichiers", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} supprimé avec succès", "itemsDeletedSuccessfully": "Les éléments {{count}} ont été supprimés avec succès", "failedToDeleteItems": "Impossible de supprimer les éléments", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Déposez les fichiers ici pour les télécharger", "emptyFolder": "Ce dossier est vide", "itemCount": "Articles {{count}}", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Fichier trop volumineux: {{error}}", "sshConnectionFailed": "La connexion SSH a échoué. Veuillez vérifier votre connexion à {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Impossible de charger le fichier : {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Connecté avec succès", "totpVerificationFailed": "La vérification TOTP a échoué", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Code de vérification :", "changePermissions": "Modifier les permissions", "changePermissionsDesc": "Modifier les permissions de fichier pour", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Impossible de modifier les autorisations" }, "tunnel": { - "noTunnelsConfigured": "Pas de tunnels configurés", - "configureTunnelsInHostSettings": "Configurer les connexions de tunnels dans le Gestionnaire d'Hôtes pour commencer" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "Tunnels SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "Actualiser le statut", "fileManagerAlreadyOpen": "Gestionnaire de fichiers déjà ouvert pour cet hôte", "openFileManager": "Ouvrir le gestionnaire de fichiers", + "connecting": "Connexion en cours...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "CPU {{count}}", "cpuCores_other": "Processeurs {{count}}", "naCpus": "N/A CPU(s)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Impossible de récupérer les métriques du serveur", "failedToFetchHomeData": "Impossible de récupérer les données de la maison", "loadingMetrics": "Chargement des métriques...", - "connecting": "Connexion en cours...", "refreshing": "Rafraîchissement...", "serverOffline": "Serveur hors ligne", "cannotFetchMetrics": "Impossible de récupérer les métriques depuis le serveur hors ligne", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Exécution de {{name}}...", "quickActionSuccess": "{{name}} terminé avec succès", "quickActionFailed": "{{name}} a échoué", - "quickActionError": "Impossible d'exécuter {{name}}" + "quickActionError": "Impossible d'exécuter {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "GESTION DU SERVEUR SSH", @@ -1824,7 +1964,11 @@ "emailExists": "L'adresse e-mail existe déjà", "loadFailed": "Impossible de charger les données", "saveError": "Échec de l'enregistrement", - "sessionExpired": "La session a expiré - veuillez vous reconnecter" + "sessionExpired": "La session a expiré - veuillez vous reconnecter", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Enregistré avec succès", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Hôte et barre latérale", "snippetsSettings": "Extraits", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Mot de passe actuel", "passwordChangedSuccess": "Mot de passe modifié avec succès ! Veuillez vous reconnecter.", "failedToChangePassword": "Impossible de modifier le mot de passe. Veuillez vérifier votre mot de passe actuel et réessayez.", @@ -1890,7 +2037,9 @@ "themeDark": "Sombre", "themeSystem": "Système", "appearanceDesc": "Sélectionnez le thème de couleur pour l'application", - "terminalSyntaxHighlightingDesc": "Mettre automatiquement en surbrillance les commandes, chemins, IPs et niveaux de log dans la sortie du terminal" + "terminalSyntaxHighlightingDesc": "Mettre automatiquement en surbrillance les commandes, chemins, IPs et niveaux de log dans la sortie du terminal", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Impossible de charger les informations de version" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Tableau de bord", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Soutien", "discord": "Discord.", @@ -2114,7 +2264,88 @@ "noServerData": "Aucune donnée de serveur disponible", "cpu": "UC", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Partager l'hôte", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker n'est pas activé pour cet hôte", "validating": "Validation de Docker...", "connectingToHost": "Connexion à l'hôte...", + "connecting": "Connexion en cours...", "error": "Erreur", "errorCode": "Code d'erreur: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "La vérification TOTP a échoué. Veuillez réessayer.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Entrez le code de vérification", + "loadingContainers": "Chargement des conteneurs...", "containerStarted": "Le conteneur {{name}} a commencé", "failedToStartContainer": "Impossible de démarrer le conteneur {{name}}", "containerStopped": "Conteneur {{name}} arrêté", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Êtes-vous sûr de vouloir supprimer le conteneur '{{name}}' ? Cette action ne peut pas être annulée.", "runningContainerWarning": "Avertissement: Ce conteneur est en cours d'exécution. Le retirer arrêtera le conteneur en premier.", "removing": "Suppression en cours...", - "loadingContainers": "Chargement des conteneurs...", "noContainersFound": "Aucun conteneur trouvé", "noContainersFoundHint": "Aucun conteneur Docker n'est disponible sur cet hôte", "searchPlaceholder": "Rechercher dans les conteneurs...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Déconnecté du conteneur", "containerMustBeRunning": "Le conteneur doit être en cours d'exécution pour accéder à la console", "authenticationRequired": "Authentification requise", - "verificationCodePrompt": "Entrez le code de vérification", - "totpVerificationFailed": "La vérification TOTP a échoué. Veuillez réessayer.", "connectedTo": "Connecté à {{containerName}}", "disconnected": "Déconnecté", "consoleError": "Erreur de la console", @@ -2382,7 +2616,6 @@ "bash": "Frappe", "sh": "shu", "ash": "cendres", - "connecting": "Connexion en cours...", "connect": "Connecter", "disconnect": "Déconnecter", "notConnected": "Non connecté", @@ -2393,7 +2626,37 @@ "logs": "Journaux", "stats": "Stats", "consoleTab": "Console", - "startContainerToAccess": "Démarrez le conteneur pour accéder à la console" + "startContainerToAccess": "Démarrez le conteneur pour accéder à la console", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Basculer vers la lumière", diff --git a/src/locales/translated/he.json b/src/locales/translated/he.json index 1d271983..5f7b4cdf 100644 --- a/src/locales/translated/he.json +++ b/src/locales/translated/he.json @@ -44,6 +44,8 @@ "passwordRequired": "נדרשת סיסמה", "sshKeyRequired": "נדרש מפתח SSH", "credentialAddedSuccessfully": "פרטי הכניסה \"{{name}}\" נוספו בהצלחה", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "כְּלָלִי", "description": "תֵאוּר", "folder": "תיקייה", @@ -184,6 +186,32 @@ "renameFolder": "שינוי שם התיקייה", "idLabel": "תְעוּדַת זֶהוּת:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "שגיאה: {{error}}", "dragging": "גרירה {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "נתיב SSH", "localPath": "נתיב מקומי", "appName": "טרמיקס", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "איפוס רוחב הצד", "dragToResizeSidebar": "גרור כדי לשנות את גודל הצד", "noAuthCredentials": "אין אישורי אימות זמינים עבור מארח SSH זה", @@ -464,10 +493,12 @@ "retry": "נסה שוב", "checking": "בודק...", "checkingDatabase": "בודק חיבור למסד הנתונים...", + "checkingAuthentication": "Checking authentication...", "actions": "פעולות", "remove": "לְהַסִיר", "revoke": "לְבַטֵל", - "create": "לִיצוֹר" + "create": "לִיצוֹר", + "update": "Update" }, "nav": { "home": "בַּיִת", @@ -489,7 +520,12 @@ "hostManager": "מנהל מארח", "cannotSplitTab": "לא ניתן לפצל את הכרטיסייה הזו", "tabNavigation": "ניווט בטאבים", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "הגדרות מנהל מערכת", @@ -537,6 +573,7 @@ "userRegistration": "רישום משתמש", "allowNewAccountRegistration": "אפשר רישום חשבון חדש", "allowPasswordLogin": "אפשר כניסה באמצעות שם משתמש/סיסמה", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "שדות חובה חסרים: {{fields}}", "oidcConfigurationUpdated": "תצורת ה-OIDC עודכנה בהצלחה!", "failedToFetchOidcConfig": "נכשלה אחזור תצורת OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "הפעלה אוטומטית בעת הפעלת מכולה", "autoStartDesc": "הפעל אוטומטית את המנהרה הזו בעת הפעלת המכולה", "addConnection": "הוסף חיבור מנהרה", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "נדרש Sshpass לאימות סיסמה", "sshpassRequiredDesc": "לאימות סיסמה במנהרות, יש להתקין sshpass במערכת.", "otherInstallMethods": "שיטות התקנה נוספות:", @@ -855,13 +899,16 @@ "or": "אוֹ", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "חלונות", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "נדרשת תצורת שרת SSH", "sshServerConfigDesc": "עבור חיבורי מנהרה, יש להגדיר את שרת ה-SSH כך שיאפשר העברת פורטים:", "gatewayPortsYes": "כדי לחבר פורטים מרוחקים לכל הממשקים", "allowTcpForwardingYes": "כדי לאפשר העברת פורטים", "permitRootLoginYes": "אם משתמשים במשתמש root לצורך מנהור", - "editSshConfig": "ערוך את /etc/ssh/sshd_config והפעל מחדש את SSH: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "העלאה", "authentication": "אימות", "password": "סִיסמָה", @@ -1096,6 +1143,19 @@ "quickActionName": "שם הפעולה", "noSnippetFound": "לא נמצא קטע", "quickActionsOrder": "כפתורי פעולה מהירה יופיעו בסדר המפורט למעלה בדף סטטיסטיקות השרת", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "הגדרות אימות מתקדמות", "sudoPasswordAutoFill": "מילוי אוטומטי של סיסמאות Sudo", "sudoPasswordAutoFillDesc": "הצעה אוטומטית להזין סיסמת SSH כאשר sudo מבקש סיסמה", @@ -1115,6 +1175,15 @@ "addVariable": "הוסף משתנה", "docker": "דוקר", "openDocker": "פתח את דוקר", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker אינו מופעל עבור מארח זה. הפעל אותו בהגדרות המארח כדי להשתמש בתכונות Docker.", "validating": "מאמת את Docker...", "error": "שְׁגִיאָה", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "קוד אימות", "totpPlaceholder": "000000", "totpVerify": "לְאַמֵת", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "להכניס סיסמה?", "sudoPasswordPopupHint": "לחץ על Enter כדי להוסיף, Esc כדי לסגור", "sudoPasswordPopupConfirm": "לְהַכנִיס", - "sudoPasswordPopupDismiss": "לְפַטֵר" + "sudoPasswordPopupDismiss": "לְפַטֵר", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "מנהל הקבצים", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} נמחק בהצלחה", "itemsDeletedSuccessfully": "{{count}} פריטים נמחקו בהצלחה", "failedToDeleteItems": "מחיקת הפריטים נכשלה", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "שחררו קבצים כאן כדי להעלות", "emptyFolder": "תיקייה זו ריקה", "itemCount": "פריטים {{count}}", @@ -1531,8 +1630,11 @@ "fileTooLarge": "קובץ גדול מדי: {{error}}", "sshConnectionFailed": "חיבור SSH נכשל. אנא בדוק את החיבור שלך אל {{name}} ({{ip}}:{{port}})", "loadFileFailed": "טעינת הקובץ נכשלה: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "התחבר בהצלחה", "totpVerificationFailed": "אימות TOTP נכשל", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "קוד אימות:", "changePermissions": "שינוי הרשאות", "changePermissionsDesc": "שינוי הרשאות קבצים עבור", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "שינוי ההרשאות נכשל" }, "tunnel": { - "noTunnelsConfigured": "לא הוגדרו מנהרות", - "configureTunnelsInHostSettings": "הגדר חיבורי מנהרה במנהל המארח כדי להתחיל" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "מנהרות SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "רענון סטטוס", "fileManagerAlreadyOpen": "מנהל הקבצים כבר פתוח עבור מארח זה", "openFileManager": "פתח את מנהל הקבצים", + "connecting": "מְקַשֵׁר...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "מעבד {{count}}", "cpuCores_other": "מעבדים {{count}}", "naCpus": "מעבדים לא רלוונטיים", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "נכשל באחזור מדדי השרת", "failedToFetchHomeData": "נכשל באחזור נתוני הבית", "loadingMetrics": "טוען מדדים...", - "connecting": "מְקַשֵׁר...", "refreshing": "מְרַעֲנֵן...", "serverOffline": "שרת לא מקוון", "cannotFetchMetrics": "לא ניתן לאחזר מדדים משרת לא מקוון", @@ -1682,7 +1795,34 @@ "executingQuickAction": "מבצע {{name}}...", "quickActionSuccess": "{{name}} הושלם בהצלחה", "quickActionFailed": "{{name}} נכשל", - "quickActionError": "נכשל בביצוע {{name}}" + "quickActionError": "נכשל בביצוע {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "מנהל שרתי SSH", @@ -1824,7 +1964,11 @@ "emailExists": "האימייל כבר קיים", "loadFailed": "טעינת הנתונים נכשלה", "saveError": "השמירה נכשלה", - "sessionExpired": "הסשן פג תוקפו - אנא התחבר שוב" + "sessionExpired": "הסשן פג תוקפו - אנא התחבר שוב", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "נשמר בהצלחה", @@ -1882,6 +2026,9 @@ "terminalSettings": "מָסוֹף", "hostSidebarSettings": "מארח וסרגל צד", "snippetsSettings": "קטעי טקסט", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "סיסמה נוכחית", "passwordChangedSuccess": "הסיסמה שונתה בהצלחה! אנא התחבר שוב.", "failedToChangePassword": "שינוי הסיסמה נכשל. אנא בדוק את הסיסמה הנוכחית ונסה שוב.", @@ -1890,7 +2037,9 @@ "themeDark": "כֵּהֶה", "themeSystem": "מַעֲרֶכֶת", "appearanceDesc": "בחר את ערכת הצבעים עבור האפליקציה", - "terminalSyntaxHighlightingDesc": "סמן אוטומטית פקודות, נתיבים, כתובות IP ורמות יומן בפלט הטרמינל" + "terminalSyntaxHighlightingDesc": "סמן אוטומטית פקודות, נתיבים, כתובות IP ורמות יומן בפלט הטרמינל", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "טעינת פרטי הגרסה נכשלה" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "לוּחַ מַחווָנִים", + "loading": "Loading dashboard...", "github": "גיטהאב", "support": "תְמִיכָה", "discord": "מַחֲלוֹקֶת", @@ -2114,7 +2264,88 @@ "noServerData": "אין נתוני שרת זמינים", "cpu": "מעבד", "ram": "אַיִל", - "notAvailable": "לא רלוונטי" + "notAvailable": "לא רלוונטי", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "שתף מארח", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker אינו מופעל עבור מארח זה", "validating": "מאמת את Docker...", "connectingToHost": "מתחבר למארח...", + "connecting": "מְקַשֵׁר...", "error": "שְׁגִיאָה", "errorCode": "קוד שגיאה: {{code}}", "version": "דוקר {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "אימות TOTP נכשל. אנא נסה שוב.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "הזן קוד אימות", + "loadingContainers": "טוען מכולות...", "containerStarted": "מיכל {{name}} הופעל", "failedToStartContainer": "נכשל בהפעלת המכולה {{name}}", "containerStopped": "מיכל {{name}} נעצר", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "האם אתה בטוח שברצונך להסיר את המכולה '{{name}}'? לא ניתן לבטל פעולה זו.", "runningContainerWarning": "אזהרה: מיכל זה פועל כעת. הסרתו תעצור את המיכל תחילה.", "removing": "מסיר...", - "loadingContainers": "טוען מכולות...", "noContainersFound": "לא נמצאו מכולות", "noContainersFoundHint": "אין מכולות Docker זמינות במארח זה", "searchPlaceholder": "חיפוש מכולות...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "מנותק מהמיכל", "containerMustBeRunning": "יש לפעול על מנת לגשת למסוף.", "authenticationRequired": "נדרש אימות", - "verificationCodePrompt": "הזן קוד אימות", - "totpVerificationFailed": "אימות TOTP נכשל. אנא נסה שוב.", "connectedTo": "מחובר אל {{containerName}}", "disconnected": "מְנוּתָק", "consoleError": "שגיאת קונסולה", @@ -2382,7 +2616,6 @@ "bash": "לַחֲבוֹט", "sh": "ש", "ash": "אֵפֶר", - "connecting": "מְקַשֵׁר...", "connect": "לְחַבֵּר", "disconnect": "לְנַתֵק", "notConnected": "לא מחובר", @@ -2393,7 +2626,37 @@ "logs": "יומני רישום", "stats": "סטטיסטיקות", "consoleTab": "לְנַחֵם", - "startContainerToAccess": "הפעל את המכולה כדי לגשת לקונסולה" + "startContainerToAccess": "הפעל את המכולה כדי לגשת לקונסולה", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "מעבר לתאורה", diff --git a/src/locales/translated/hi.json b/src/locales/translated/hi.json index dd7d1e38..92da8aae 100644 --- a/src/locales/translated/hi.json +++ b/src/locales/translated/hi.json @@ -44,6 +44,8 @@ "passwordRequired": "पासवर्ड आवश्यक है", "sshKeyRequired": "SSH कुंजी आवश्यक है", "credentialAddedSuccessfully": "क्रेडेंशियल \"{{name}}\" सफलतापूर्वक जोड़ा गया", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "सामान्य", "description": "विवरण", "folder": "फ़ोल्डर", @@ -184,6 +186,32 @@ "renameFolder": "फ़ोल्डर का नाम बदलें", "idLabel": "पहचान:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "त्रुटि: {{error}}", "dragging": "खींचना {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "एसएसएच पथ", "localPath": "स्थानीय पथ", "appName": "टर्मिक्स", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "साइडबार की चौड़ाई रीसेट करें", "dragToResizeSidebar": "साइडबार का आकार बदलने के लिए उसे खींचें", "noAuthCredentials": "इस SSH होस्ट के लिए कोई प्रमाणीकरण क्रेडेंशियल उपलब्ध नहीं हैं", @@ -464,10 +493,12 @@ "retry": "पुन: प्रयास करें", "checking": "जाँच चल रही है...", "checkingDatabase": "डेटाबेस कनेक्शन की जाँच की जा रही है...", + "checkingAuthentication": "Checking authentication...", "actions": "कार्रवाई", "remove": "निकालना", "revoke": "रद्द करना", - "create": "बनाएं" + "create": "बनाएं", + "update": "Update" }, "nav": { "home": "घर", @@ -489,7 +520,12 @@ "hostManager": "मेजबान प्रबंधक", "cannotSplitTab": "इस टैब को विभाजित नहीं किया जा सकता", "tabNavigation": "टैब नेविगेशन", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "व्यवस्थापक सेटिंग्स", @@ -537,6 +573,7 @@ "userRegistration": "उपयोगकर्ता पंजीकरण", "allowNewAccountRegistration": "नए खाते के पंजीकरण की अनुमति दें", "allowPasswordLogin": "उपयोगकर्ता नाम/पासवर्ड लॉगिन की अनुमति दें", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "आवश्यक फ़ील्ड अनुपस्थित हैं: {{fields}}", "oidcConfigurationUpdated": "OIDC कॉन्फ़िगरेशन सफलतापूर्वक अपडेट हो गया!", "failedToFetchOidcConfig": "OIDC कॉन्फ़िगरेशन प्राप्त करने में विफल", @@ -848,6 +885,13 @@ "autoStartContainer": "कंटेनर लॉन्च होने पर ऑटो स्टार्ट", "autoStartDesc": "कंटेनर लॉन्च होने पर यह टनल स्वचालित रूप से शुरू हो जाएगी", "addConnection": "टनल कनेक्शन जोड़ें", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "पासवर्ड प्रमाणीकरण के लिए एसएसएचपास आवश्यक है", "sshpassRequiredDesc": "टनल में पासवर्ड प्रमाणीकरण के लिए, सिस्टम पर sshpass स्थापित होना आवश्यक है।", "otherInstallMethods": "स्थापना के अन्य तरीके:", @@ -855,13 +899,16 @@ "or": "या", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "मैक ओएस", - "windows": "विंडोज़", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "एसएसएच सर्वर कॉन्फ़िगरेशन आवश्यक है", "sshServerConfigDesc": "टनल कनेक्शन के लिए, एसएसएच सर्वर को पोर्ट फॉरवर्डिंग की अनुमति देने के लिए कॉन्फ़िगर किया जाना चाहिए:", "gatewayPortsYes": "सभी इंटरफेसों से रिमोट पोर्ट को जोड़ने के लिए", "allowTcpForwardingYes": "पोर्ट फॉरवर्डिंग को सक्षम करने के लिए", "permitRootLoginYes": "यदि टनलिंग के लिए रूट उपयोगकर्ता का उपयोग कर रहे हैं", - "editSshConfig": "/etc/ssh/sshd_config फ़ाइल को संपादित करें और SSH को पुनरारंभ करें: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "अपलोड करें", "authentication": "प्रमाणीकरण", "password": "पासवर्ड", @@ -1096,6 +1143,19 @@ "quickActionName": "क्रिया का नाम", "noSnippetFound": "कोई अंश नहीं मिला", "quickActionsOrder": "सर्वर स्टैट्स पेज पर त्वरित कार्रवाई बटन ऊपर सूचीबद्ध क्रम में दिखाई देंगे।", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "उन्नत प्रमाणीकरण सेटिंग्स", "sudoPasswordAutoFill": "सूडो पासवर्ड ऑटो-फिल", "sudoPasswordAutoFillDesc": "जब sudo पासवर्ड मांगे तो स्वचालित रूप से SSH पासवर्ड डालने का विकल्प दें", @@ -1115,6 +1175,15 @@ "addVariable": "चर जोड़ें", "docker": "डाक में काम करनेवाला मज़दूर", "openDocker": "ओपन डॉकर", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "इस होस्ट के लिए डॉकर सक्षम नहीं है। डॉकर सुविधाओं का उपयोग करने के लिए इसे होस्ट सेटिंग्स में सक्षम करें।", "validating": "डॉकर का सत्यापन किया जा रहा है...", "error": "गलती", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "सत्यापन कोड", "totpPlaceholder": "000000", "totpVerify": "सत्यापित करें", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "पासवर्ड डालें?", "sudoPasswordPopupHint": "सम्मिलित करने के लिए Enter दबाएँ, हटाने के लिए Esc दबाएँ", "sudoPasswordPopupConfirm": "डालना", - "sudoPasswordPopupDismiss": "नकार देना" + "sudoPasswordPopupDismiss": "नकार देना", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "फ़ाइल मैनेजर", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} सफलतापूर्वक हटा दिया गया", "itemsDeletedSuccessfully": "{{count}} आइटम सफलतापूर्वक हटा दिए गए", "failedToDeleteItems": "आइटम हटाने में विफल", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "फ़ाइलें अपलोड करने के लिए उन्हें यहाँ ड्रॉप करें", "emptyFolder": "यह फ़ोल्डर खाली है", "itemCount": "{{count}} आइटम", @@ -1531,8 +1630,11 @@ "fileTooLarge": "फ़ाइल बहुत बड़ी है: {{error}}", "sshConnectionFailed": "SSH कनेक्शन विफल हो गया। कृपया {{name}} ({{ip}}:{{port}}) से अपना कनेक्शन जांचें।", "loadFileFailed": "फ़ाइल लोड करने में विफल: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "सफलतापूर्वक कनेक्ट हो गया", "totpVerificationFailed": "टीओटीपी सत्यापन विफल रहा", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "सत्यापन कोड:", "changePermissions": "अनुमतियाँ बदलें", "changePermissionsDesc": "फ़ाइल अनुमतियों को संशोधित करें", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "अनुमतियाँ बदलने में विफल" }, "tunnel": { - "noTunnelsConfigured": "कोई सुरंग कॉन्फ़िगर नहीं की गई है", - "configureTunnelsInHostSettings": "शुरुआत करने के लिए होस्ट मैनेजर में टनल कनेक्शन कॉन्फ़िगर करें।" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "एसएसएच टनल", @@ -1624,6 +1736,8 @@ "refreshStatus": "स्थिति रीफ़्रेश करें", "fileManagerAlreadyOpen": "इस होस्ट के लिए फ़ाइल प्रबंधक पहले से ही खुला हुआ है।", "openFileManager": "फ़ाइल प्रबंधक खोलें", + "connecting": "कनेक्ट हो रहा है...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} सीपीयू", "cpuCores_other": "{{count}} सीपीयू", "naCpus": "लागू नहीं सीपीयू(ओं)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "सर्वर मेट्रिक्स प्राप्त करने में विफल", "failedToFetchHomeData": "घर का डेटा प्राप्त करने में विफल", "loadingMetrics": "मैट्रिक्स लोड हो रहे हैं...", - "connecting": "कनेक्ट हो रहा है...", "refreshing": "ताज़गी भरा...", "serverOffline": "सर्वर ऑफ़लाइन", "cannotFetchMetrics": "ऑफ़लाइन सर्वर से मेट्रिक्स प्राप्त नहीं किए जा सकते", @@ -1682,7 +1795,34 @@ "executingQuickAction": "{{name}}निष्पादित किया जा रहा है...", "quickActionSuccess": "{{name}} सफलतापूर्वक पूरा हुआ", "quickActionFailed": "{{name}} असफल", - "quickActionError": "{{name}}को निष्पादित करने में विफल" + "quickActionError": "{{name}}को निष्पादित करने में विफल", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "एसएसएच सर्वर प्रबंधक", @@ -1824,7 +1964,11 @@ "emailExists": "ईमेल पहले से ही मौजूद है", "loadFailed": "डेटा लोड करने में विफल", "saveError": "सहेजने में विफल", - "sessionExpired": "सत्र समाप्त हो गया है - कृपया दोबारा लॉग इन करें" + "sessionExpired": "सत्र समाप्त हो गया है - कृपया दोबारा लॉग इन करें", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "सफलतापूर्वक बचाया", @@ -1882,6 +2026,9 @@ "terminalSettings": "टर्मिनल", "hostSidebarSettings": "होस्ट और साइडबार", "snippetsSettings": "स्निपेट्स", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "वर्तमान पासवर्ड", "passwordChangedSuccess": "पासवर्ड सफलतापूर्वक बदल दिया गया है! कृपया दोबारा लॉग इन करें।", "failedToChangePassword": "पासवर्ड बदलने में विफलता। कृपया अपना वर्तमान पासवर्ड जांचें और पुनः प्रयास करें।", @@ -1890,7 +2037,9 @@ "themeDark": "अँधेरा", "themeSystem": "प्रणाली", "appearanceDesc": "एप्लिकेशन के लिए रंग थीम चुनें", - "terminalSyntaxHighlightingDesc": "टर्मिनल आउटपुट में कमांड, पाथ, आईपी और लॉग लेवल को स्वचालित रूप से हाइलाइट करें" + "terminalSyntaxHighlightingDesc": "टर्मिनल आउटपुट में कमांड, पाथ, आईपी और लॉग लेवल को स्वचालित रूप से हाइलाइट करें", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "संस्करण की जानकारी लोड करने में विफल" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "डैशबोर्ड", + "loading": "Loading dashboard...", "github": "GitHub", "support": "सहायता", "discord": "कलह", @@ -2114,7 +2264,88 @@ "noServerData": "कोई सर्वर डेटा उपलब्ध नहीं है", "cpu": "CPU", "ram": "टक्कर मारना", - "notAvailable": "लागू नहीं" + "notAvailable": "लागू नहीं", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "होस्ट साझा करें", @@ -2306,9 +2537,15 @@ "notEnabled": "इस होस्ट के लिए डॉकर सक्षम नहीं है।", "validating": "डॉकर का सत्यापन किया जा रहा है...", "connectingToHost": "होस्ट से कनेक्ट हो रहा है...", + "connecting": "कनेक्ट हो रहा है...", "error": "गलती", "errorCode": "त्रुटि कोड: {{code}}", "version": "डॉकर {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "टीओटीपी सत्यापन विफल रहा। कृपया पुनः प्रयास करें।", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "सत्यापन कोड दर्ज करें", + "loadingContainers": "कंटेनर लोड हो रहे हैं...", "containerStarted": "कंटेनर {{name}} शुरू हो गया", "failedToStartContainer": "कंटेनर {{name}}को प्रारंभ करने में विफल", "containerStopped": "कंटेनर {{name}} रुक गया", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "क्या आप वाकई कंटेनर '{{name}}' को हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती।", "runningContainerWarning": "चेतावनी: यह कंटेनर वर्तमान में चल रहा है। इसे हटाने से पहले यह कंटेनर बंद हो जाएगा।", "removing": "हटा रहा है...", - "loadingContainers": "कंटेनर लोड हो रहे हैं...", "noContainersFound": "कोई कंटेनर नहीं मिला", "noContainersFoundHint": "इस होस्ट पर कोई डॉकर कंटेनर उपलब्ध नहीं हैं।", "searchPlaceholder": "कंटेनर खोजें...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "कंटेनर से डिस्कनेक्ट हो गया", "containerMustBeRunning": "कंसोल तक पहुँचने के लिए कंटेनर का चालू होना आवश्यक है।", "authenticationRequired": "प्रमाणित करना", - "verificationCodePrompt": "सत्यापन कोड दर्ज करें", - "totpVerificationFailed": "टीओटीपी सत्यापन विफल रहा। कृपया पुनः प्रयास करें।", "connectedTo": "{{containerName}}से जुड़ा हुआ", "disconnected": "डिस्कनेक्ट किया गया", "consoleError": "कंसोल त्रुटि", @@ -2382,7 +2616,6 @@ "bash": "दे घुमा के", "sh": "श", "ash": "राख", - "connecting": "कनेक्ट हो रहा है...", "connect": "जोड़ना", "disconnect": "डिस्कनेक्ट", "notConnected": "जुड़े नहीं हैं", @@ -2393,7 +2626,37 @@ "logs": "लॉग्स", "stats": "आँकड़े", "consoleTab": "सांत्वना देना", - "startContainerToAccess": "कंसोल तक पहुँचने के लिए कंटेनर को प्रारंभ करें" + "startContainerToAccess": "कंसोल तक पहुँचने के लिए कंटेनर को प्रारंभ करें", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "लाइट पर स्विच करें", diff --git a/src/locales/translated/hu.json b/src/locales/translated/hu.json index e2610cd5..8a80c4e3 100644 --- a/src/locales/translated/hu.json +++ b/src/locales/translated/hu.json @@ -44,6 +44,8 @@ "passwordRequired": "Jelszó szükséges", "sshKeyRequired": "SSH-kulcs szükséges", "credentialAddedSuccessfully": "A(z) „{{name}}” hitelesítő adat sikeresen hozzáadva", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "Általános", "description": "Leírás", "folder": "Mappa", @@ -184,6 +186,32 @@ "renameFolder": "Mappa átnevezése", "idLabel": "Azonosító:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "Hiba: {{error}}", "dragging": "Húzás {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH-útvonal", "localPath": "Helyi elérési út", "appName": "Termix", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "Oldalsáv szélességének visszaállítása", "dragToResizeSidebar": "Húzással átméretezheti az oldalsávot", "noAuthCredentials": "Nincsenek elérhető hitelesítő adatok ehhez az SSH-hoszthoz", @@ -464,10 +493,12 @@ "retry": "Újrapróbálkozás", "checking": "Ellenőrzés...", "checkingDatabase": "Adatbázis-kapcsolat ellenőrzése...", + "checkingAuthentication": "Checking authentication...", "actions": "Műveletek", "remove": "Eltávolítás", "revoke": "Visszavonás", - "create": "Teremt" + "create": "Teremt", + "update": "Update" }, "nav": { "home": "Otthon", @@ -489,7 +520,12 @@ "hostManager": "Házigazda-kezelő", "cannotSplitTab": "Ez a lap nem osztható fel", "tabNavigation": "Lapnavigáció", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "Adminisztrátori beállítások", @@ -537,6 +573,7 @@ "userRegistration": "Felhasználói regisztráció", "allowNewAccountRegistration": "Új fiók regisztrációjának engedélyezése", "allowPasswordLogin": "Felhasználónév/jelszó bejelentkezés engedélyezése", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "Hiányzó kötelező mezők: {{fields}}", "oidcConfigurationUpdated": "Az OIDC konfigurációja sikeresen frissítve!", "failedToFetchOidcConfig": "Nem sikerült lekérni az OIDC konfigurációját", @@ -848,6 +885,13 @@ "autoStartContainer": "Automatikus indítás konténerindításkor", "autoStartDesc": "Automatikusan indítsa el ezt az alagutat a konténer indulásakor", "addConnection": "Alagútkapcsolat hozzáadása", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "Sshpass szükséges a jelszóhitelesítéshez", "sshpassRequiredDesc": "A jelszavas hitelesítéshez alagutakban az sshpass-nak telepítve kell lennie a rendszeren.", "otherInstallMethods": "Egyéb telepítési módok:", @@ -855,13 +899,16 @@ "or": "vagy", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Ablakok", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "SSH szerver konfiguráció szükséges", "sshServerConfigDesc": "Alagútkapcsolatok esetén az SSH-kiszolgálót úgy kell konfigurálni, hogy engedélyezze a porttovábbítást:", "gatewayPortsYes": "távoli portok hozzárendelése az összes interfészhez", "allowTcpForwardingYes": "a porttovábbítás engedélyezéséhez", "permitRootLoginYes": "ha root felhasználót használ alagútkezeléshez", - "editSshConfig": "Szerkeszd át az /etc/ssh/sshd_config fájlt, és indítsd újra az SSH-t: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Feltöltés", "authentication": "Hitelesítés", "password": "Jelszó", @@ -1096,6 +1143,19 @@ "quickActionName": "Művelet neve", "noSnippetFound": "Nem található részlet", "quickActionsOrder": "A gyorsműveleti gombok a fent felsorolt sorrendben jelennek meg a Szerver statisztikái oldalon.", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Speciális hitelesítési beállítások", "sudoPasswordAutoFill": "Sudo jelszó automatikus kitöltése", "sudoPasswordAutoFillDesc": "Automatikusan felajánlja az SSH jelszó megadását, amikor a sudo jelszót kér", @@ -1115,6 +1175,15 @@ "addVariable": "Változó hozzáadása", "docker": "Dokkmunkás", "openDocker": "Nyílt Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "A Docker nincs engedélyezve ehhez a gazdagéphez. Engedélyezze a Gazdagép beállításaiban a Docker funkcióinak használatához.", "validating": "Docker érvényesítése...", "error": "Hiba", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Ellenőrző kód", "totpPlaceholder": "000000", "totpVerify": "Ellenőrzés", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Jelszó beszúrása?", "sudoPasswordPopupHint": "Nyomja meg az Enter billentyűt a beszúráshoz, az Esc billentyűt az elvetéshez", "sudoPasswordPopupConfirm": "Beszúrás", - "sudoPasswordPopupDismiss": "Elvetés" + "sudoPasswordPopupDismiss": "Elvetés", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Fájlkezelő", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} sikeresen törölve", "itemsDeletedSuccessfully": "{{count}} elem sikeresen törölve", "failedToDeleteItems": "Nem sikerült törölni az elemeket", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Húzd ide a fájlokat a feltöltéshez", "emptyFolder": "Ez a mappa üres", "itemCount": "{{count}} elem", @@ -1531,8 +1630,11 @@ "fileTooLarge": "A fájl túl nagy: {{error}}", "sshConnectionFailed": "SSH kapcsolat sikertelen. Kérjük, ellenőrizze a kapcsolatot a következővel: {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Nem sikerült betölteni a fájlt: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Sikeres csatlakozás", "totpVerificationFailed": "TOTP-ellenőrzés sikertelen", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Ellenőrző kód:", "changePermissions": "Engedélyek módosítása", "changePermissionsDesc": "Fájlengedélyek módosítása ehhez:", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Nem sikerült módosítani az engedélyeket" }, "tunnel": { - "noTunnelsConfigured": "Nincsenek konfigurált alagutak", - "configureTunnelsInHostSettings": "Első lépésként konfigurálja az alagútkapcsolatokat a Host Managerben." + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH alagutak", @@ -1624,6 +1736,8 @@ "refreshStatus": "Frissítési állapot", "fileManagerAlreadyOpen": "A fájlkezelő már meg van nyitva ehhez a gazdagéphez", "openFileManager": "Fájlkezelő megnyitása", + "connecting": "Kapcsolódás...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU-k", "naCpus": "Nincs CPU", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Nem sikerült lekérni a szerver metrikáit", "failedToFetchHomeData": "Nem sikerült lekérni az otthoni adatokat", "loadingMetrics": "Metrikák betöltése...", - "connecting": "Kapcsolódás...", "refreshing": "Üdítő...", "serverOffline": "Szerver offline állapotban", "cannotFetchMetrics": "Nem lehet metrikákat lekérni az offline szerverről", @@ -1682,7 +1795,34 @@ "executingQuickAction": "{{name}}végrehajtása ...", "quickActionSuccess": "{{name}} sikeresen befejeződött", "quickActionFailed": "{{name}} sikertelen", - "quickActionError": "Nem sikerült végrehajtani a {{name}}parancsot." + "quickActionError": "Nem sikerült végrehajtani a {{name}}parancsot.", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH SZERVERKEZELŐ", @@ -1824,7 +1964,11 @@ "emailExists": "Az e-mail cím már létezik", "loadFailed": "Nem sikerült betölteni az adatokat", "saveError": "Nem sikerült menteni", - "sessionExpired": "Lejárt a munkamenet - kérjük, jelentkezzen be újra" + "sessionExpired": "Lejárt a munkamenet - kérjük, jelentkezzen be újra", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Sikeresen mentve", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminál", "hostSidebarSettings": "Gazdagép és oldalsáv", "snippetsSettings": "Kódrészletek", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Jelenlegi jelszó", "passwordChangedSuccess": "Jelszó sikeresen megváltoztatva! Kérjük, jelentkezzen be újra.", "failedToChangePassword": "Nem sikerült módosítani a jelszót. Kérjük, ellenőrizze a jelenlegi jelszavát, és próbálja újra.", @@ -1890,7 +2037,9 @@ "themeDark": "Sötét", "themeSystem": "Rendszer", "appearanceDesc": "Válassza ki az alkalmazás színsémáját", - "terminalSyntaxHighlightingDesc": "Parancsok, elérési utak, IP-címek és naplózási szintek automatikus kiemelése a terminál kimenetében" + "terminalSyntaxHighlightingDesc": "Parancsok, elérési utak, IP-címek és naplózási szintek automatikus kiemelése a terminál kimenetében", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Nem sikerült betölteni a verzióinformációkat" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Műszerfal", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Támogatás", "discord": "Viszály", @@ -2114,7 +2264,88 @@ "noServerData": "Nincsenek elérhető szerveradatok", "cpu": "CPU", "ram": "RAM", - "notAvailable": "Nem alkalmazható" + "notAvailable": "Nem alkalmazható", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Megosztási házigazda", @@ -2306,9 +2537,15 @@ "notEnabled": "A Docker nincs engedélyezve ehhez a gazdagéphez", "validating": "Docker érvényesítése...", "connectingToHost": "Kapcsolódás a gazdagéphez...", + "connecting": "Kapcsolódás...", "error": "Hiba", "errorCode": "Hibakód: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "A TOTP ellenőrzése sikertelen. Próbáld újra.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Írja be az ellenőrző kódot", + "loadingContainers": "Konténerek betöltése...", "containerStarted": "{{name}} konténer elindítva", "failedToStartContainer": "Nem sikerült elindítani a(z) {{name}}konténert", "containerStopped": "Konténer {{name}} leállítva", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Are you sure you want to remove the container '{{name}}'? This action cannot be undone.", "runningContainerWarning": "Figyelmeztetés: Ez a konténer jelenleg fut. Eltávolítása először a konténer leállítását jelenti.", "removing": "Eltávolítás...", - "loadingContainers": "Konténerek betöltése...", "noContainersFound": "Nem találhatók konténerek", "noContainersFoundHint": "Nincsenek elérhető Docker konténerek ezen a gazdagépen", "searchPlaceholder": "Konténerek keresése...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Leválasztva a konténerről", "containerMustBeRunning": "A konténernek futnia kell a konzol eléréséhez", "authenticationRequired": "Hitelesítés szükséges", - "verificationCodePrompt": "Írja be az ellenőrző kódot", - "totpVerificationFailed": "A TOTP ellenőrzése sikertelen. Próbáld újra.", "connectedTo": "Csatlakoztatva ehhez: {{containerName}}", "disconnected": "Szétkapcsolt", "consoleError": "Konzolhiba", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "hamu", - "connecting": "Kapcsolódás...", "connect": "Csatlakozás", "disconnect": "Leválasztás", "notConnected": "Nincs csatlakoztatva", @@ -2393,7 +2626,37 @@ "logs": "Naplók", "stats": "Statisztikák", "consoleTab": "Konzol", - "startContainerToAccess": "Indítsa el a konténert a konzol eléréséhez" + "startContainerToAccess": "Indítsa el a konténert a konzol eléréséhez", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Váltás világosra", diff --git a/src/locales/translated/id.json b/src/locales/translated/id.json index 8441094b..f193d477 100644 --- a/src/locales/translated/id.json +++ b/src/locales/translated/id.json @@ -44,6 +44,8 @@ "passwordRequired": "Kata sandi diperlukan", "sshKeyRequired": "Kunci SSH diperlukan.", "credentialAddedSuccessfully": "Kredensial \"{{name}}\" berhasil ditambahkan", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "Umum", "description": "Keterangan", "folder": "Map", @@ -184,6 +186,32 @@ "renameFolder": "Ganti nama folder", "idLabel": "PENGENAL:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "Kesalahan: {{error}}", "dragging": "Menyeret {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Jalur SSH", "localPath": "Jalur Lokal", "appName": "Termix", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "Atur ulang lebar sidebar", "dragToResizeSidebar": "Seret untuk mengubah ukuran bilah sisi", "noAuthCredentials": "Tidak ada kredensial otentikasi yang tersedia untuk host SSH ini.", @@ -464,10 +493,12 @@ "retry": "Mencoba kembali", "checking": "Sedang memeriksa...", "checkingDatabase": "Memeriksa koneksi basis data...", + "checkingAuthentication": "Checking authentication...", "actions": "Tindakan", "remove": "Menghapus", "revoke": "Menarik kembali", - "create": "Membuat" + "create": "Membuat", + "update": "Update" }, "nav": { "home": "Rumah", @@ -489,7 +520,12 @@ "hostManager": "Manajer Host", "cannotSplitTab": "Tidak dapat memisahkan tab ini", "tabNavigation": "Navigasi Tab", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "Pengaturan Admin", @@ -537,6 +573,7 @@ "userRegistration": "Pendaftaran Pengguna", "allowNewAccountRegistration": "Izinkan pendaftaran akun baru", "allowPasswordLogin": "Izinkan login menggunakan nama pengguna/kata sandi.", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "Kolom yang wajib diisi belum terisi: {{fields}}", "oidcConfigurationUpdated": "Konfigurasi OIDC berhasil diperbarui!", "failedToFetchOidcConfig": "Gagal mengambil konfigurasi OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Mulai Otomatis saat Kontainer Diluncurkan", "autoStartDesc": "Secara otomatis memulai terowongan ini saat kontainer diluncurkan.", "addConnection": "Tambahkan Koneksi Terowongan", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "Sshpass Diperlukan untuk Otentikasi Kata Sandi", "sshpassRequiredDesc": "Untuk otentikasi kata sandi di dalam terowongan, sshpass harus diinstal pada sistem.", "otherInstallMethods": "Metode pemasangan lainnya:", @@ -855,13 +899,16 @@ "or": "atau", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Windows", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "Konfigurasi Server SSH Diperlukan", "sshServerConfigDesc": "Untuk koneksi terowongan, server SSH harus dikonfigurasi untuk mengizinkan penerusan port:", "gatewayPortsYes": "untuk mengikat port jarak jauh ke semua antarmuka", "allowTcpForwardingYes": "untuk mengaktifkan penerusan port", "permitRootLoginYes": "jika menggunakan pengguna root untuk tunneling", - "editSshConfig": "Edit /etc/ssh/sshd_config dan mulai ulang SSH: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Mengunggah", "authentication": "Autentikasi", "password": "Kata sandi", @@ -1096,6 +1143,19 @@ "quickActionName": "Nama tindakan", "noSnippetFound": "Tidak ditemukan cuplikan.", "quickActionsOrder": "Tombol tindakan cepat akan muncul sesuai urutan yang tercantum di atas pada halaman Statistik Server.", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Pengaturan Otentikasi Lanjutan", "sudoPasswordAutoFill": "Isi Otomatis Kata Sandi Sudo", "sudoPasswordAutoFillDesc": "Secara otomatis menawarkan untuk memasukkan kata sandi SSH saat sudo meminta kata sandi.", @@ -1115,6 +1175,15 @@ "addVariable": "Tambahkan Variabel", "docker": "Buruh pelabuhan", "openDocker": "Buka Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker belum diaktifkan untuk host ini. Aktifkan di Pengaturan Host untuk menggunakan fitur Docker.", "validating": "Memvalidasi Docker...", "error": "Kesalahan", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Kode Verifikasi", "totpPlaceholder": "000000", "totpVerify": "Memeriksa", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Masukkan kata sandi?", "sudoPasswordPopupHint": "Tekan Enter untuk memasukkan, Esc untuk menutup.", "sudoPasswordPopupConfirm": "Menyisipkan", - "sudoPasswordPopupDismiss": "Membubarkan" + "sudoPasswordPopupDismiss": "Membubarkan", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Pengelola File", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} berhasil dihapus", "itemsDeletedSuccessfully": "{{count}} item berhasil dihapus", "failedToDeleteItems": "Gagal menghapus item", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Seret file ke sini untuk mengunggah", "emptyFolder": "Folder ini kosong", "itemCount": "{{count}} item", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Ukuran file terlalu besar: {{error}}", "sshConnectionFailed": "Koneksi SSH gagal. Silakan periksa koneksi Anda ke {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Gagal memuat file: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Terhubung berhasil", "totpVerificationFailed": "Verifikasi TOTP gagal", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Kode verifikasi:", "changePermissions": "Ubah Izin", "changePermissionsDesc": "Ubah izin file untuk", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Gagal mengubah izin" }, "tunnel": { - "noTunnelsConfigured": "Tidak Ada Terowongan yang Dikonfigurasi", - "configureTunnelsInHostSettings": "Konfigurasikan koneksi terowongan di Host Manager untuk memulai." + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "Terowongan SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "Perbarui Status", "fileManagerAlreadyOpen": "Pengelola berkas sudah terbuka untuk host ini.", "openFileManager": "Buka Pengelola File", + "connecting": "Menghubungkan...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU", "naCpus": "CPU tidak tersedia", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Gagal mengambil metrik server.", "failedToFetchHomeData": "Gagal mengambil data beranda", "loadingMetrics": "Sedang memuat metrik...", - "connecting": "Menghubungkan...", "refreshing": "Menyegarkan...", "serverOffline": "Server Offline", "cannotFetchMetrics": "Tidak dapat mengambil metrik dari server offline.", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Menjalankan {{name}}...", "quickActionSuccess": "{{name}} berhasil diselesaikan", "quickActionFailed": "{{name}} gagal", - "quickActionError": "Gagal mengeksekusi {{name}}" + "quickActionError": "Gagal mengeksekusi {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "MANAJER SERVER SSH", @@ -1824,7 +1964,11 @@ "emailExists": "Email sudah ada.", "loadFailed": "Gagal memuat data", "saveError": "Gagal menyimpan", - "sessionExpired": "Sesi telah berakhir - silakan masuk kembali." + "sessionExpired": "Sesi telah berakhir - silakan masuk kembali.", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Berhasil disimpan", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Host & Sidebar", "snippetsSettings": "Cuplikan", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Kata Sandi Saat Ini", "passwordChangedSuccess": "Kata sandi berhasil diubah! Silakan masuk kembali.", "failedToChangePassword": "Perubahan kata sandi gagal. Silakan periksa kata sandi Anda saat ini dan coba lagi.", @@ -1890,7 +2037,9 @@ "themeDark": "Gelap", "themeSystem": "Sistem", "appearanceDesc": "Pilih tema warna untuk aplikasi tersebut.", - "terminalSyntaxHighlightingDesc": "Secara otomatis menyorot perintah, jalur, IP, dan level log pada output terminal." + "terminalSyntaxHighlightingDesc": "Secara otomatis menyorot perintah, jalur, IP, dan level log pada output terminal.", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Gagal memuat informasi versi." @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Dasbor", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Mendukung", "discord": "Perselisihan", @@ -2114,7 +2264,88 @@ "noServerData": "Tidak ada data server yang tersedia.", "cpu": "CPU", "ram": "RAM", - "notAvailable": "Tidak tersedia" + "notAvailable": "Tidak tersedia", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Bagikan Host", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker tidak diaktifkan untuk host ini.", "validating": "Memvalidasi Docker...", "connectingToHost": "Menghubungkan ke host...", + "connecting": "Menghubungkan...", "error": "Kesalahan", "errorCode": "Kode kesalahan: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Verifikasi TOTP gagal. Silakan coba lagi.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Masukkan kode verifikasi", + "loadingContainers": "Memuat kontainer...", "containerStarted": "Kontainer {{name}} dimulai", "failedToStartContainer": "Gagal memulai kontainer {{name}}", "containerStopped": "Kontainer {{name}} berhenti", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Apakah Anda yakin ingin menghapus kontainer '{{name}}'? Tindakan ini tidak dapat dibatalkan.", "runningContainerWarning": "Peringatan: Kontainer ini sedang berjalan. Menghapusnya akan menghentikan kontainer terlebih dahulu.", "removing": "Menghapus...", - "loadingContainers": "Memuat kontainer...", "noContainersFound": "Tidak ditemukan wadah apa pun", "noContainersFoundHint": "Tidak ada kontainer Docker yang tersedia di host ini.", "searchPlaceholder": "Cari kontainer...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Terputus dari kontainer", "containerMustBeRunning": "Kontainer harus berjalan agar dapat mengakses konsol.", "authenticationRequired": "Diperlukan otentikasi.", - "verificationCodePrompt": "Masukkan kode verifikasi", - "totpVerificationFailed": "Verifikasi TOTP gagal. Silakan coba lagi.", "connectedTo": "Terhubung ke {{containerName}}", "disconnected": "Terputus", "consoleError": "Kesalahan konsol", @@ -2382,7 +2616,6 @@ "bash": "Pesta", "sh": "sh", "ash": "abu", - "connecting": "Menghubungkan...", "connect": "Menghubungkan", "disconnect": "Memutuskan", "notConnected": "Tidak terhubung", @@ -2393,7 +2626,37 @@ "logs": "Log", "stats": "Statistik", "consoleTab": "Menghibur", - "startContainerToAccess": "Jalankan kontainer untuk mengakses konsol." + "startContainerToAccess": "Jalankan kontainer untuk mengakses konsol.", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Beralih ke Cahaya", diff --git a/src/locales/translated/it.json b/src/locales/translated/it.json index 26ac3d0a..77495084 100644 --- a/src/locales/translated/it.json +++ b/src/locales/translated/it.json @@ -44,6 +44,8 @@ "passwordRequired": "La password è obbligatoria", "sshKeyRequired": "La chiave SSH è richiesta", "credentialAddedSuccessfully": "Credenziale \"{{name}}\" aggiunto con successo", + "savingCredential": "Salvataggio delle credenziali...", + "updatingCredential": "Aggiornamento delle credenziali...", "general": "Generale", "description": "Descrizione", "folder": "Cartella", @@ -184,6 +186,32 @@ "renameFolder": "Rinomina cartella", "idLabel": "ID:" }, + "quickConnect": { + "title": "Connessione Rapida", + "description": "Connettiti direttamente a una sessione di terminale o file manager senza salvare una configurazione host", + "ipAddress": "Indirizzo IP o nome host", + "port": "Porta", + "username": "Username", + "password": "Password", + "key": "Chiave Privata Ssh", + "keyPassword": "Password Della Chiave (Opzionale)", + "keyType": "Tipo Di Chiave", + "uploadFile": "Carica File", + "pasteKey": "Incolla Chiave", + "credential": "Credenziali", + "overrideUsername": "Ignora Il Nome Utente Credenziale", + "overrideUsernameDesc": "Usa un nome utente diverso da quello memorizzato nelle credenziali", + "connectTerminal": "Connetti al terminale", + "connectFileManager": "Connetti al gestore file", + "cancel": "Annulla", + "passwordRequired": "La password è obbligatoria", + "keyRequired": "La chiave SSH è richiesta", + "credentialRequired": "La selezione delle credenziali è richiesta", + "connectionEstablished": "Connessione stabilita con successo", + "connectionFailed": "Impossibile stabilire la connessione", + "autoDetect": "Rilevamento Automatico", + "authentication": "Autenticazione" + }, "dragIndicator": { "error": "Errore: {{error}}", "dragging": "Trascinare {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Percorso SSH", "localPath": "Percorso Locale", "appName": "Termix", + "openInNewTab": "Apri in una nuova scheda", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Trascina per ridimensionare la barra laterale", "noAuthCredentials": "Nessuna credenziale di autenticazione disponibile per questo host SSH", @@ -464,10 +493,12 @@ "retry": "Riprova", "checking": "Controllo...", "checkingDatabase": "Controllo connessione database...", + "checkingAuthentication": "Controllo autenticazione...", "actions": "Azioni", "remove": "Rimuovi", "revoke": "Revoke", - "create": "Crea" + "create": "Crea", + "update": "Aggiorna" }, "nav": { "home": "Home", @@ -489,7 +520,12 @@ "hostManager": "Gestore Host", "cannotSplitTab": "Impossibile dividere questa scheda", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copia Password", + "copySudoPassword": "Copia Password Sudo", + "passwordCopied": "Password copiata negli appunti", + "sudoPasswordCopied": "Password Sudo copiata negli appunti", + "noPasswordAvailable": "Nessuna password disponibile" }, "admin": { "title": "Impostazioni Amministratore", @@ -537,6 +573,7 @@ "userRegistration": "Registrazione Utente", "allowNewAccountRegistration": "Consenti la registrazione del nuovo account", "allowPasswordLogin": "Consenti login username/password", + "allowPasswordReset": "Consenti il ripristino della password tramite il codice di reset", "missingRequiredFields": "Campi obbligatori mancanti: {{fields}}", "oidcConfigurationUpdated": "Configurazione OIDC aggiornata con successo!", "failedToFetchOidcConfig": "Recupero della configurazione OIDC non riuscito", @@ -848,6 +885,13 @@ "autoStartContainer": "Avvio automatico al lancio del contenitore", "autoStartDesc": "Avvia automaticamente questo tunnel quando il contenitore viene lanciato", "addConnection": "Aggiungi Connessione Tunnel", + "tunnelType": "Tipo Di Tunnel", + "tunnelTypeLocal": "Locale (-L)", + "tunnelTypeRemote": "Remoto (-R)", + "tunnelTypeLocalDesc": "Inoltra la porta locale all'endpoint remoto", + "tunnelTypeRemoteDesc": "Inoltra la porta remota alla macchina locale", + "tunnelForwardDescriptionLocal": "Questo tunnel inoltrerà il traffico dalla porta locale {{sourcePort}} alla porta {{endpointPort}} sulla macchina endpoint.", + "tunnelForwardDescriptionRemote": "Questo tunnel inoltrerà il traffico dalla porta {{sourcePort}} sulla macchina di origine (dettagli di connessione corrente nella scheda generale) alla porta {{endpointPort}} sulla macchina di endpoint.", "sshpassRequired": "Sshpass Richiesto Per Autenticazione Password", "sshpassRequiredDesc": "Per l'autenticazione con password in tunnel, sshpass deve essere installato sul sistema.", "otherInstallMethods": "Altri metodi di installazione:", @@ -855,13 +899,16 @@ "or": "o", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Finestre", + "windows": "Windows (WSL, nessun binario ufficiale)", "sshServerConfigRequired": "Richiesta Configurazione Del Server Ssh", "sshServerConfigDesc": "Per le connessioni al tunnel, il server SSH deve essere configurato per consentire l'inoltro della porta:", "gatewayPortsYes": "per collegare le porte remote a tutte le interfacce", "allowTcpForwardingYes": "per abilitare l'inoltro della porta", "permitRootLoginYes": "se si utilizza l'utente root per il tunneling", - "editSshConfig": "Modifica /etc/ssh/sshd_config e riavvia SSH: sudo systemctl restart sshd", + "editSshConfig": "Modifica il file di configurazione SSH:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Quindi riavviare il servizio SSH:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Carica", "authentication": "Autenticazione", "password": "Password", @@ -1096,6 +1143,19 @@ "quickActionName": "Nome azione", "noSnippetFound": "Nessuna snippet trovata", "quickActionsOrder": "I pulsanti di azione rapida appariranno nell'ordine sopra elencato nella pagina Statistiche del server", + "sidebarCustomization": "Personalizzazione Pulsante Barra Laterale", + "sidebarCustomizationDesc": "Scegli quali azioni appaiono come pulsanti rapidi nella barra laterale. Le azioni non mostrate come pulsanti appariranno nel menu a discesa.", + "showTerminalInSidebar": "Mostra Pulsante Terminale", + "showTerminalInSidebarDesc": "Mostra il terminale come un pulsante rapido nella barra laterale", + "showFileManagerInSidebar": "Mostra Pulsante Gestione File", + "showFileManagerInSidebarDesc": "Visualizza il file manager come un pulsante rapido nella barra laterale", + "showTunnelInSidebar": "Mostra Pulsante Tunnel", + "showTunnelInSidebarDesc": "Visualizza la gestione del tunnel come un pulsante rapido nella barra laterale", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Impostazioni Avanzate Di Autenticazione", "sudoPasswordAutoFill": "Riempimento Automatico Password Sudo", "sudoPasswordAutoFillDesc": "Offre automaticamente di inserire password SSH quando sudo richiede password", @@ -1115,6 +1175,15 @@ "addVariable": "Aggiungi Variabile", "docker": "Docker", "openDocker": "Apri Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker non è abilitato per questo host. Abilitarlo nelle impostazioni Host per utilizzare le funzioni Docker.", "validating": "Convalida Docker...", "error": "Errore", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Codice Di Verifica", "totpPlaceholder": "000000", "totpVerify": "Verifica", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Inserire Password?", "sudoPasswordPopupHint": "Premere Invio per inserire, Esc per eliminare", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Ignora" + "sudoPasswordPopupDismiss": "Ignora", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Gestore File", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} eliminato con successo", "itemsDeletedSuccessfully": "{{count}} elementi eliminati con successo", "failedToDeleteItems": "Impossibile eliminare gli elementi", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Trascina i file qui per caricare", "emptyFolder": "Questa cartella è vuota", "itemCount": "{{count}} elementi", @@ -1531,8 +1630,11 @@ "fileTooLarge": "File troppo grande: {{error}}", "sshConnectionFailed": "Connessione SSH non riuscita. Controlla la tua connessione a {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Impossibile caricare il file: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Connesso con successo", "totpVerificationFailed": "Verifica TOTP fallita", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Codice di verifica:", "changePermissions": "Cambia Permessi", "changePermissionsDesc": "Modifica i permessi per i file", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Modifica dei permessi non riuscita" }, "tunnel": { - "noTunnelsConfigured": "Nessun Tunnel Configurato", - "configureTunnelsInHostSettings": "Configura le connessioni del tunnel nel Gestore Host per iniziare" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "Tunnel SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "Aggiorna Stato", "fileManagerAlreadyOpen": "File Manager già aperto per questo host", "openFileManager": "Apri File Manager", + "connecting": "Connessione...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "CPU {{count}}", "cpuCores_other": "CPU {{count}}", "naCpus": "CPU N/A", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Recupero delle metriche del server non riuscito", "failedToFetchHomeData": "Recupero dei dati della casa non riuscito", "loadingMetrics": "Caricamento metriche...", - "connecting": "Connessione...", "refreshing": "Aggiornamento...", "serverOffline": "Server Offline", "cannotFetchMetrics": "Impossibile recuperare le metriche dal server fuori rete", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Esecuzione {{name}}...", "quickActionSuccess": "{{name}} completato con successo", "quickActionFailed": "{{name}} fallito", - "quickActionError": "Esecuzione di {{name}} non riuscita" + "quickActionError": "Esecuzione di {{name}} non riuscita", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH SERVER MANAGER", @@ -1824,7 +1964,11 @@ "emailExists": "Email già esistente", "loadFailed": "Impossibile caricare i dati", "saveError": "Salvataggio non riuscito", - "sessionExpired": "Sessione scaduta - si prega di accedere di nuovo" + "sessionExpired": "Sessione scaduta - si prega di accedere di nuovo", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Salvato con successo", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminale", "hostSidebarSettings": "& Barra Laterale Dell'Host", "snippetsSettings": "Snippet", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Password Attuale", "passwordChangedSuccess": "Password cambiata con successo! Effettua nuovamente il login.", "failedToChangePassword": "Impossibile cambiare la password. Si prega di controllare la password corrente e riprovare.", @@ -1890,7 +2037,9 @@ "themeDark": "Scuro", "themeSystem": "Sistema", "appearanceDesc": "Seleziona il tema di colore per l'applicazione", - "terminalSyntaxHighlightingDesc": "Evidenzia automaticamente comandi, tracciati, IP e livelli di log nell'output del terminale" + "terminalSyntaxHighlightingDesc": "Evidenzia automaticamente comandi, tracciati, IP e livelli di log nell'output del terminale", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Impossibile caricare le informazioni sulla versione" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Dashboard", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Supporto", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Nessun dato server disponibile", "cpu": "CPU", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Condividi Host", @@ -2306,9 +2537,15 @@ "notEnabled": "Il docker non è abilitato per questo host", "validating": "Convalida Docker...", "connectingToHost": "Connessione all'host...", + "connecting": "Connessione...", "error": "Errore", "errorCode": "Codice di errore: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Verifica TOTP non riuscita. Riprova.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Inserisci codice di verifica", + "loadingContainers": "Caricamento contenitori...", "containerStarted": "Contenitore {{name}} iniziato", "failedToStartContainer": "Avvio del contenitore {{name}} non riuscito", "containerStopped": "Contenitore {{name}} fermato", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Sei sicuro di voler rimuovere il contenitore '{{name}}'? Questa azione non può essere annullata.", "runningContainerWarning": "Attenzione: Questo contenitore è attualmente in esecuzione. Rimuovendolo si fermerà prima il contenitore.", "removing": "Rimozione...", - "loadingContainers": "Caricamento contenitori...", "noContainersFound": "Nessun contenitore trovato", "noContainersFoundHint": "Nessun contenitore Docker disponibile su questo host", "searchPlaceholder": "Cerca contenitori...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Disconnesso dal contenitore", "containerMustBeRunning": "Il contenitore deve essere in esecuzione per accedere alla console", "authenticationRequired": "Autenticazione richiesta", - "verificationCodePrompt": "Inserisci codice di verifica", - "totpVerificationFailed": "Verifica TOTP non riuscita. Riprova.", "connectedTo": "Connesso a {{containerName}}", "disconnected": "Disconnesso", "consoleError": "Errore di console", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "ceneri", - "connecting": "Connessione...", "connect": "Connetti", "disconnect": "Disconnetti", "notConnected": "Non connesso", @@ -2393,7 +2626,37 @@ "logs": "Registri", "stats": "Statistiche", "consoleTab": "Console", - "startContainerToAccess": "Avvia il contenitore per accedere alla console" + "startContainerToAccess": "Avvia il contenitore per accedere alla console", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Passa alla luce", diff --git a/src/locales/translated/ja.json b/src/locales/translated/ja.json index 86253caa..1d4b75c9 100644 --- a/src/locales/translated/ja.json +++ b/src/locales/translated/ja.json @@ -44,6 +44,8 @@ "passwordRequired": "パスワードが必要です", "sshKeyRequired": "SSH キーが必要です", "credentialAddedSuccessfully": "認証情報 \"{{name}}\" が正常に追加されました", + "savingCredential": "資格情報を保存しています...", + "updatingCredential": "資格情報を更新しています...", "general": "全般", "description": "説明", "folder": "フォルダ", @@ -184,6 +186,32 @@ "renameFolder": "フォルダ名を変更", "idLabel": "ID:" }, + "quickConnect": { + "title": "クイック接続", + "description": "ホスト構成を保存せずに端末またはファイルマネージャセッションに直接接続します", + "ipAddress": "IPアドレスまたはホスト名", + "port": "ポート", + "username": "ユーザー名", + "password": "パスワード", + "key": "SSHプライベートキー", + "keyPassword": "キーパスワード(オプション)", + "keyType": "キーの種類", + "uploadFile": "ファイルをアップロード", + "pasteKey": "キーを貼り付け", + "credential": "資格情報", + "overrideUsername": "認証情報のユーザー名を上書きする", + "overrideUsernameDesc": "資格情報に保存されているユーザー名とは異なるユーザー名を使用してください", + "connectTerminal": "ターミナルに接続", + "connectFileManager": "ファイルマネージャーに接続", + "cancel": "キャンセル", + "passwordRequired": "パスワードが必要です", + "keyRequired": "SSH キーが必要です", + "credentialRequired": "資格情報の選択が必要です", + "connectionEstablished": "接続が正常に確立されました", + "connectionFailed": "接続の確立に失敗しました", + "autoDetect": "自動検出", + "authentication": "認証" + }, "dragIndicator": { "error": "エラー: {{error}}", "dragging": "ドラッグ中の {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH パス", "localPath": "ローカルパス", "appName": "Termix", + "openInNewTab": "新しいタブで開く", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "ドラッグしてサイドバーのサイズを変更", "noAuthCredentials": "このSSHホストで利用可能な認証資格情報がありません", @@ -464,10 +493,12 @@ "retry": "再試行する", "checking": "確認しています...", "checkingDatabase": "データベース接続を確認しています...", + "checkingAuthentication": "認証中char@@0", "actions": "アクション", "remove": "削除", "revoke": "Revoke", - "create": "作成" + "create": "作成", + "update": "更新" }, "nav": { "home": "ホーム", @@ -489,7 +520,12 @@ "hostManager": "ホスト マネージャー", "cannotSplitTab": "このタブは分割できません", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "パスワードをコピー", + "copySudoPassword": "Sudoパスワードをコピー", + "passwordCopied": "パスワードをクリップボードにコピーしました", + "sudoPasswordCopied": "Sudoパスワードをクリップボードにコピーしました", + "noPasswordAvailable": "パスワードがありません" }, "admin": { "title": "管理者設定", @@ -537,6 +573,7 @@ "userRegistration": "ユーザー登録", "allowNewAccountRegistration": "新しいアカウントの登録を許可する", "allowPasswordLogin": "ユーザー名/パスワードのログインを許可する", + "allowPasswordReset": "リセットコードでパスワードリセットを許可する", "missingRequiredFields": "必須フィールドがありません: {{fields}}", "oidcConfigurationUpdated": "OIDC 設定が正常に更新されました!", "failedToFetchOidcConfig": "OIDC設定の取得に失敗しました", @@ -848,6 +885,13 @@ "autoStartContainer": "コンテナ起動時に自動起動", "autoStartDesc": "コンテナが起動したときに自動的にこのトンネルを開始します", "addConnection": "トンネル接続を追加", + "tunnelType": "トンネルタイプ", + "tunnelTypeLocal": "ローカル (-L)", + "tunnelTypeRemote": "リモート (-R)", + "tunnelTypeLocalDesc": "ローカルポートをリモートエンドポイントに転送する", + "tunnelTypeRemoteDesc": "リモートポートをローカルマシンに転送する", + "tunnelForwardDescriptionLocal": "このトンネルは、エンドポイントマシン上のローカルポート {{sourcePort}} からポート {{endpointPort}} へのトラフィックを転送します。", + "tunnelForwardDescriptionRemote": "このトンネルは、ソースマシン上のポート {{sourcePort}} からエンドポイントマシン上のポート {{endpointPort}} へトラフィックを転送します。", "sshpassRequired": "パスワード認証に必要な", "sshpassRequiredDesc": "トンネル内のパスワード認証のためには、sshpassをシステムにインストールする必要があります。", "otherInstallMethods": "その他のインストール方法:", @@ -855,13 +899,16 @@ "or": "または", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Windows", + "windows": "Windows (WSL, 公式バイナリなし)", "sshServerConfigRequired": "SSHサーバーの設定が必要です", "sshServerConfigDesc": "トンネル接続の場合、SSHサーバーはポート転送を許可するように構成する必要があります。", "gatewayPortsYes": "リモートポートをすべてのインターフェースにバインドする", "allowTcpForwardingYes": "ポート転送を有効にする", "permitRootLoginYes": "rootユーザーをトンネリングに使う場合", - "editSshConfig": "/etc/ssh/sshd_config を編集し、SSH を再起動します: sudo systemctl restart sshd", + "editSshConfig": "SSH 構成ファイルを編集します:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "次にSSHサービスを再起動します:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "アップロード", "authentication": "認証", "password": "パスワード", @@ -1096,6 +1143,19 @@ "quickActionName": "アクション名", "noSnippetFound": "スニペットが見つかりません", "quickActionsOrder": "クイックアクションボタンは、サーバー統計ページの上記の順序で表示されます。", + "sidebarCustomization": "サイドバーボタンのカスタマイズ", + "sidebarCustomizationDesc": "サイドバーのクイックボタンとして表示されるアクションを選択します。ドロップダウンメニューにボタンとして表示されないアクション。", + "showTerminalInSidebar": "ターミナルボタンを表示", + "showTerminalInSidebarDesc": "サイドバーに端末をクイックボタンとして表示する", + "showFileManagerInSidebar": "ファイルマネージャーボタンを表示", + "showFileManagerInSidebarDesc": "サイドバーのクイックボタンとしてファイルマネージャを表示する", + "showTunnelInSidebar": "トンネルボタンを表示", + "showTunnelInSidebarDesc": "トンネル管理をサイドバーにクイックボタンとして表示する", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "高度な認証設定", "sudoPasswordAutoFill": "Sudoパスワード自動入力", "sudoPasswordAutoFillDesc": "sudo がパスワードを要求したときに自動的に SSH パスワードを挿入することを提供します", @@ -1115,6 +1175,15 @@ "addVariable": "変数を追加", "docker": "Docker", "openDocker": "Dockerを開く", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker はこのホストでは有効になっていません。format@@0で有効にして、Docker 機能を使用します。", "validating": "Dockerを検証中...", "error": "エラー", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "認証コード", "totpPlaceholder": "000000", "totpVerify": "確認する", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "パスワードを入力してください。", "sudoPasswordPopupHint": "Enterキーを押して挿入、Escキーで閉じる", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "却下する" + "sudoPasswordPopupDismiss": "却下する", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "ファイルマネージャー", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} は正常に削除されました", "itemsDeletedSuccessfully": "{{count}} アイテムが正常に削除されました", "failedToDeleteItems": "アイテムの削除に失敗しました", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "アップロードするファイルをここにドロップ", "emptyFolder": "このフォルダは空です", "itemCount": "{{count}} アイテム", @@ -1531,8 +1630,11 @@ "fileTooLarge": "ファイルが大きすぎます: {{error}}", "sshConnectionFailed": "SSH接続に失敗しました。 {{name}} ({{ip}}:{{port}}) への接続を確認してください。", "loadFileFailed": "ファイルの読み込みに失敗しました: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "接続に成功しました", "totpVerificationFailed": "TOTP 認証に失敗しました", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "認証コード:", "changePermissions": "権限の変更", "changePermissionsDesc": "次のファイルの権限を変更", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "権限の変更に失敗しました" }, "tunnel": { - "noTunnelsConfigured": "トンネルが設定されていません", - "configureTunnelsInHostSettings": "ホストマネージャーでトンネル接続を設定して開始します" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH トンネル", @@ -1624,6 +1736,8 @@ "refreshStatus": "状態を更新", "fileManagerAlreadyOpen": "このホストのファイルマネージャは既に開いています", "openFileManager": "ファイルマネージャを開く", + "connecting": "接続中...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU", "naCpus": "CPUなし", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "サーバーのメトリックの取得に失敗しました", "failedToFetchHomeData": "ホームデータの取得に失敗しました", "loadingMetrics": "メトリクスを読み込み中...", - "connecting": "接続中...", "refreshing": "更新中...", "serverOffline": "サーバーオフライン", "cannotFetchMetrics": "オフラインサーバーからメトリックを取得できません", @@ -1682,7 +1795,34 @@ "executingQuickAction": "{{name}} を実行中...", "quickActionSuccess": "{{name}} が正常に完了しました", "quickActionFailed": "{{name}} に失敗しました", - "quickActionError": "{{name}} の実行に失敗しました" + "quickActionError": "{{name}} の実行に失敗しました", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSHサーバー管理", @@ -1824,7 +1964,11 @@ "emailExists": "メールアドレスは既に存在します", "loadFailed": "データの読み込みに失敗しました", "saveError": "保存に失敗しました", - "sessionExpired": "セッションの有効期限が切れました。もう一度ログインしてください" + "sessionExpired": "セッションの有効期限が切れました。もう一度ログインしてください", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "正常に保存しました", @@ -1882,6 +2026,9 @@ "terminalSettings": "ターミナル", "hostSidebarSettings": "ホスト & サイドバー", "snippetsSettings": "Snippets", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "現在のパスワード", "passwordChangedSuccess": "パスワードが変更されました!再度ログインしてください。", "failedToChangePassword": "パスワードの変更に失敗しました。現在のパスワードを確認して、もう一度お試しください。", @@ -1890,7 +2037,9 @@ "themeDark": "ダーク", "themeSystem": "システム", "appearanceDesc": "アプリケーションのカラーテーマを選択してください", - "terminalSyntaxHighlightingDesc": "ターミナル出力でコマンド、パス、IP、ログレベルを自動的に強調表示する" + "terminalSyntaxHighlightingDesc": "ターミナル出力でコマンド、パス、IP、ログレベルを自動的に強調表示する", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "バージョン情報の読み込みに失敗しました" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "ダッシュボード", + "loading": "Loading dashboard...", "github": "GitHub", "support": "サポート", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "利用可能なサーバーデータがありません", "cpu": "CPU", "ram": "RAM", - "notAvailable": "該当なし" + "notAvailable": "該当なし", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "ホストを共有", @@ -2306,9 +2537,15 @@ "notEnabled": "Dockerはこのホストで有効になっていません", "validating": "Dockerを検証中...", "connectingToHost": "ホストに接続中...", + "connecting": "接続中...", "error": "エラー", "errorCode": "エラーコード: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP 認証に失敗しました。もう一度やり直してください。", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "認証コードを入力してください", + "loadingContainers": "コンテナを読み込み中...", "containerStarted": "コンテナ {{name}} 開始", "failedToStartContainer": "コンテナ {{name}}の開始に失敗しました", "containerStopped": "コンテナ {{name}} が停止しました", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "コンテナ '{{name}}'を削除してもよろしいですか? この操作は元に戻せません。", "runningContainerWarning": "警告: このコンテナは現在実行中です。削除するとコンテナが最初に停止します。", "removing": "削除中...", - "loadingContainers": "コンテナを読み込み中...", "noContainersFound": "コンテナが見つかりません", "noContainersFoundHint": "このホストではDockerコンテナは利用できません", "searchPlaceholder": "コンテナを検索...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "コンテナから切断されました", "containerMustBeRunning": "コンソールにアクセスするにはコンテナが実行されている必要があります", "authenticationRequired": "認証が必要です", - "verificationCodePrompt": "認証コードを入力してください", - "totpVerificationFailed": "TOTP 認証に失敗しました。もう一度やり直してください。", "connectedTo": "{{containerName}} に接続しました", "disconnected": "切断されました", "consoleError": "コンソールエラー", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "ash", - "connecting": "接続中...", "connect": "接続する", "disconnect": "接続を解除", "notConnected": "接続していません", @@ -2393,7 +2626,37 @@ "logs": "ログ", "stats": "統計", "consoleTab": "コンソール", - "startContainerToAccess": "コンソールにアクセスするためにコンテナを起動します" + "startContainerToAccess": "コンソールにアクセスするためにコンテナを起動します", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "ライトに切り替える", diff --git a/src/locales/translated/ko.json b/src/locales/translated/ko.json index 4c7263e2..ecd5b767 100644 --- a/src/locales/translated/ko.json +++ b/src/locales/translated/ko.json @@ -23,12 +23,12 @@ "passwordBased": "비밀번호 기반", "folders": "폴더", "noCredentialsMatchFilters": "필터 조건에 맞는 자격 증명이 없습니다.", - "noCredentialsYet": "아직 자격 증명이 생성되지 않았습니다.", - "createFirstCredential": "첫 번째 자격증명을 만드세요", + "noCredentialsYet": "아직 생성된 자격 증명이 없습니다", + "createFirstCredential": "첫 번째 자격 증명을 만드세요", "failedToFetchCredentials": "자격 증명을 가져오는 데 실패했습니다.", "credentialDeletedSuccessfully": "자격 증명이 성공적으로 삭제되었습니다.", "failedToDeleteCredential": "자격 증명 삭제에 실패했습니다.", - "confirmDeleteCredential": "자격 증명 \"{{name}}\"을 삭제하시겠습니까?", + "confirmDeleteCredential": "Are you sure you want to delete credential \"{{name}}\"?", "credentialCreatedSuccessfully": "자격 증명이 성공적으로 생성되었습니다.", "credentialUpdatedSuccessfully": "자격 증명이 성공적으로 업데이트되었습니다.", "failedToSaveCredential": "자격 증명을 저장하는 데 실패했습니다.", @@ -44,6 +44,8 @@ "passwordRequired": "비밀번호가 필요합니다", "sshKeyRequired": "SSH 키가 필요합니다.", "credentialAddedSuccessfully": "자격 증명 \"{{name}}\"이 성공적으로 추가되었습니다.", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "일반적인", "description": "설명", "folder": "접는 사람", @@ -184,6 +186,32 @@ "renameFolder": "폴더 이름 변경", "idLabel": "ID:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "오류: {{error}}", "dragging": "드래그 중 {{fileName}}", @@ -197,9 +225,9 @@ "sshTools": { "title": "SSH 도구", "closeTools": "SSH 도구를 닫습니다", - "keyRecording": "주요 녹음", - "startKeyRecording": "시작 키 녹음", - "stopKeyRecording": "키 녹음 중지", + "keyRecording": "키 매크로", + "startKeyRecording": "매크로 기록", + "stopKeyRecording": "매크로 중지", "selectTerminals": "터미널을 선택하세요:", "typeCommands": "명령어를 입력하세요(모든 키 지원):", "commandsWillBeSent": "명령은 {{count}} 선택된 터미널로 전송됩니다.", @@ -211,13 +239,13 @@ } }, "snippets": { - "title": "짧은 발췌", + "title": "스니펫", "new": "새로운 스니펫", - "create": "코드 조각 생성", - "edit": "코드 조각 편집", - "run": "달리다", - "empty": "아직 스니펫이 없습니다.", - "emptyHint": "자주 사용하는 명령어를 저장할 수 있는 코드 조각을 만드세요.", + "create": "스니펫 생성", + "edit": "스니펫 편집", + "run": "실행", + "empty": "아직 설정된 스니펫이 없습니다", + "emptyHint": "자주 사용하는 명령어를 저장할 수 있는 스니펫을 만드세요", "searchSnippets": "검색 스니펫...", "name": "이름", "description": "설명", @@ -229,20 +257,20 @@ "contentRequired": "명령어가 필요합니다.", "createDescription": "빠른 실행을 위해 새로운 명령 스니펫을 만드세요.", "editDescription": "이 명령 조각을 편집하세요", - "deleteConfirmTitle": "코드 조각 삭제", + "deleteConfirmTitle": "스니펫 삭제", "deleteConfirmDescription": "\"{{name}}\"을 삭제하시겠습니까?", - "createSuccess": "코드 조각이 성공적으로 생성되었습니다.", - "updateSuccess": "코드 조각이 성공적으로 업데이트되었습니다.", + "createSuccess": "스니펫이 성공적으로 생성되었습니다.", + "updateSuccess": "스니펫이 성공적으로 업데이트되었습니다", "deleteSuccess": "스니펫이 성공적으로 삭제되었습니다.", - "createFailed": "코드 조각을 생성하는 데 실패했습니다.", - "updateFailed": "코드 조각 업데이트에 실패했습니다.", - "deleteFailed": "코드 조각을 삭제하는 데 실패했습니다.", - "failedToFetch": "코드 조각을 가져오는 데 실패했습니다.", + "createFailed": "스니펫을 생성하는 데 실패했습니다", + "updateFailed": "스니펫 업데이트에 실패했습니다", + "deleteFailed": "스니펫을 삭제하는 데 실패했습니다", + "failedToFetch": "스니펫을 가져오는 데 실패했습니다.", "executeSuccess": "실행 중: {{name}}", "copySuccess": "\"{{name}}\"를 클립보드에 복사했습니다.", - "runTooltip": "터미널에서 다음 코드 조각을 실행하세요.", - "copyTooltip": "코드 조각을 클립보드에 복사합니다", - "editTooltip": "이 코드 조각을 수정하세요", + "runTooltip": "터미널에서 다음 스니펫을 실행하세요", + "copyTooltip": "스니펫을 클립보드에 복사합니다", + "editTooltip": "이 스니펫을 수정하세요", "deleteTooltip": "이 부분을 삭제하세요", "newFolder": "새 폴더", "reorderSameFolder": "같은 폴더 내에서만 스니펫 순서를 변경할 수 있습니다.", @@ -275,7 +303,7 @@ "commandHistory": { "title": "역사", "searchPlaceholder": "검색 명령...", - "noTerminal": "활성화된 단말기 없음", + "noTerminal": "활성화된 터미널 없음", "noTerminalHint": "터미널을 열어 명령 기록을 확인하세요.", "empty": "아직 명령 기록이 없습니다.", "emptyHint": "현재 실행 중인 터미널에서 명령어를 실행하여 터미널의 히스토리를 구축합니다.", @@ -319,10 +347,10 @@ }, "serverConfig": { "title": "서버 구성", - "description": "Termix 서버 URL을 구성하여 백엔드 서비스에 연결하십시오.", + "description": "Termix 서버 URL을 구성하여 백엔드 서비스에 연결하십시오", "serverUrl": "서버 URL", - "enterServerUrl": "서버 URL을 입력해 주세요.", - "testConnectionFirst": "먼저 연결 상태를 테스트해 주세요.", + "enterServerUrl": "서버 URL을 입력해 주세요", + "testConnectionFirst": "먼저 연결 상태를 테스트해 주세요", "connectionSuccess": "연결 성공!", "connectionFailed": "연결 실패", "connectionError": "연결 오류가 발생했습니다", @@ -333,19 +361,19 @@ "saveError": "설정 저장 오류", "saving": "절약...", "saveConfig": "설정 저장", - "helpText": "Termix 서버가 실행 중인 URL을 입력하십시오(예: http://localhost:30001 또는 https://your-server.com).", + "helpText": "Termix 서버가 실행 중인 URL을 입력하십시오(예: http://localhost:30001 또는 https://your-server.com)", "warning": "경고", - "notValidatedWarning": "URL 유효성 검사에 실패했습니다. URL이 올바른지 확인하세요.", + "notValidatedWarning": "URL 유효성 검사에 실패했습니다. URL 이 올바른지 확인하세요", "changeServer": "서버 변경", - "mustIncludeProtocol": "서버 URL은 http:// 또는 https://로 시작해야 합니다." + "mustIncludeProtocol": "서버 URL은 http:// 또는 https://로 시작해야 합니다" }, "versionCheck": { "error": "버전 확인 오류", - "checkFailed": "업데이트 확인에 실패했습니다.", - "upToDate": "앱이 최신 버전입니다.", + "checkFailed": "업데이트 확인에 실패했습니다", + "upToDate": "앱이 최신 버전입니다", "currentVersion": "현재 {{version}}버전을 실행 중입니다.", "updateAvailable": "업데이트 가능", - "newVersionAvailable": "새 버전이 나왔습니다! 현재 {{current}}을 실행 중이지만 {{latest}} 을 사용할 수 있습니다.", + "newVersionAvailable": "새로운 버전이 있습니다! 현재 {{current}} 버전을 사용 중이며, {{latest}} 버전을 사용할 수 있습니다.", "releasedOn": "{{date}}에 출시됨", "downloadUpdate": "업데이트 다운로드", "dismiss": "해고하다", @@ -365,7 +393,7 @@ "continue": "계속하다", "maintenance": "유지", "degraded": "타락한", - "discord": "불화", + "discord": "디스코드", "error": "오류", "warning": "경고", "info": "정보", @@ -386,7 +414,8 @@ "updateAvailable": "업데이트 가능", "sshPath": "SSH 경로", "localPath": "로컬 경로", - "appName": "터믹스", + "appName": "Termix", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "사이드바 너비 재설정", "dragToResizeSidebar": "드래그하여 사이드바 크기를 조절하세요", "noAuthCredentials": "이 SSH 호스트에 대한 인증 자격 증명을 사용할 수 없습니다.", @@ -436,7 +465,7 @@ "no": "아니요", "ok": "좋아요", "enabled": "활성화됨", - "disabled": "장애가 있는", + "disabled": "사용 안 함", "important": "중요한", "notEnabled": "비활성화됨", "settingUp": "설정 중...", @@ -464,16 +493,18 @@ "retry": "다시 해 보다", "checking": "확인 중...", "checkingDatabase": "데이터베이스 연결을 확인하는 중...", + "checkingAuthentication": "Checking authentication...", "actions": "행위", "remove": "제거하다", "revoke": "취소", - "create": "만들다" + "create": "만들다", + "update": "Update" }, "nav": { "home": "집", "hosts": "호스트", "credentials": "신임장", - "terminal": "단말기", + "terminal": "터미널", "docker": "도커", "tunnels": "터널", "fileManager": "파일 관리자", @@ -481,7 +512,7 @@ "admin": "관리자", "userProfile": "사용자 프로필", "tools": "도구", - "snippets": "짧은 발췌", + "snippets": "스니펫", "newTab": "새 탭", "splitScreen": "분할 화면", "closeTab": "탭 닫기", @@ -489,7 +520,12 @@ "hostManager": "호스트 관리자", "cannotSplitTab": "이 탭을 분할할 수 없습니다.", "tabNavigation": "탭 탐색", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "관리자 설정", @@ -537,6 +573,7 @@ "userRegistration": "사용자 등록", "allowNewAccountRegistration": "새 계정 등록을 허용합니다", "allowPasswordLogin": "사용자 이름/비밀번호 로그인 허용", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "필수 입력란이 누락되었습니다: {{fields}}", "oidcConfigurationUpdated": "OIDC 구성이 성공적으로 업데이트되었습니다!", "failedToFetchOidcConfig": "OIDC 구성을 가져오는 데 실패했습니다.", @@ -622,7 +659,7 @@ "encryptionStatus": "암호화 상태", "encryptionEnabled": "암호화 활성화됨", "enabled": "활성화됨", - "disabled": "장애가 있는", + "disabled": "사용 안 함", "keyId": "키 ID", "created": "생성됨", "migrationStatus": "이민 상태", @@ -848,6 +885,13 @@ "autoStartContainer": "컨테이너 실행 시 자동 시작", "autoStartDesc": "컨테이너가 시작될 때 이 터널을 자동으로 시작합니다.", "addConnection": "터널 연결 추가", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "비밀번호 인증을 위해서는 SSH 비밀번호가 필요합니다.", "sshpassRequiredDesc": "터널에서 암호 인증을 사용하려면 시스템에 sshpass가 설치되어 있어야 합니다.", "otherInstallMethods": "기타 설치 방법:", @@ -855,13 +899,16 @@ "or": "또는", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "윈도우", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "SSH 서버 구성이 필요합니다", "sshServerConfigDesc": "터널 연결의 경우 SSH 서버에서 포트 포워딩을 허용하도록 구성해야 합니다.", "gatewayPortsYes": "원격 포트를 모든 인터페이스에 바인딩합니다.", "allowTcpForwardingYes": "포트 포워딩을 활성화하려면", "permitRootLoginYes": "루트 사용자를 터널링에 사용하는 경우", - "editSshConfig": "/etc/ssh/sshd_config 파일을 편집하고 SSH를 재시작하세요: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "업로드", "authentication": "입증", "password": "비밀번호", @@ -891,11 +938,11 @@ "existingKey": "기존 키 (클릭하여 변경)", "existingCredential": "기존 자격 증명 (클릭하여 변경)", "addTagsSpaceToAdd": "태그 추가 (추가할 공간)", - "terminalBadge": "단말기", + "terminalBadge": "터미널", "tunnelBadge": "터널", "fileManagerBadge": "파일 관리자", "general": "일반적인", - "terminal": "단말기", + "terminal": "터미널", "tunnel": "터널", "fileManager": "파일 관리자", "serverStats": "서버 통계", @@ -1090,12 +1137,25 @@ "proxyNode": "프록시 노드", "proxyType": "프록시 유형", "quickActions": "빠른 조치", - "quickActionsDescription": "빠른 실행 기능을 사용하면 이 서버에서 SSH 코드 조각을 실행하는 사용자 지정 버튼을 만들 수 있습니다. 이러한 버튼은 서버 통계 페이지 상단에 표시되어 빠르게 접근할 수 있습니다.", + "quickActionsDescription": "빠른 실행 기능을 사용하면 이 서버에서 SSH 스니펫을 실행하는 사용자 지정 버튼을 만들 수 있습니다. 이러한 버튼은 서버 통계 페이지 상단에 표시되어 빠르게 접근할 수 있습니다.", "quickActionsList": "빠른 실행 목록", "addQuickAction": "빠른 실행 추가", "quickActionName": "액션 이름", "noSnippetFound": "스니펫을 찾을 수 없습니다.", "quickActionsOrder": "빠른 실행 버튼은 서버 통계 페이지에 위 목록 순서대로 표시됩니다.", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "고급 인증 설정", "sudoPasswordAutoFill": "Sudo 비밀번호 자동 완성", "sudoPasswordAutoFillDesc": "sudo 명령어가 암호를 입력하라는 메시지를 표시할 때 SSH 암호를 자동으로 입력하도록 제안합니다.", @@ -1115,6 +1175,15 @@ "addVariable": "변수 추가", "docker": "도커", "openDocker": "오픈 도커", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "이 호스트에서는 Docker가 활성화되어 있지 않습니다. Docker 기능을 사용하려면 호스트 설정에서 Docker를 활성화하십시오.", "validating": "Docker 유효성 검사 중...", "error": "오류", @@ -1205,7 +1274,7 @@ "noLogsAvailable": "로그 파일이 없습니다." }, "terminal": { - "title": "단말기", + "title": "터미널", "connect": "호스트에 연결", "disconnect": "연결을 끊으세요", "clear": "분명한", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "인증 코드", "totpPlaceholder": "000000", "totpVerify": "확인하다", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "비밀번호를 입력하시겠습니까?", "sudoPasswordPopupHint": "Enter 키를 눌러 삽입하고, Esc 키를 눌러 닫습니다.", "sudoPasswordPopupConfirm": "끼워 넣다", - "sudoPasswordPopupDismiss": "해고하다" + "sudoPasswordPopupDismiss": "해고하다", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "파일 관리자", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} 성공적으로 삭제되었습니다", "itemsDeletedSuccessfully": "{{count}} 항목이 성공적으로 삭제되었습니다", "failedToDeleteItems": "항목 삭제에 실패했습니다", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "파일을 여기에 드롭하여 업로드하세요", "emptyFolder": "이 폴더는 비어 있습니다", "itemCount": "{{count}} 항목", @@ -1416,7 +1515,7 @@ "dragSystemFilesToUpload": "시스템 파일을 여기에 드래그하여 업로드하세요.", "dragFilesToWindowToDownload": "파일을 창 밖으로 드래그하여 다운로드하세요.", "openTerminalHere": "터미널을 여기에서 여세요", - "run": "달리다", + "run": "실행", "saveToSystem": "다른 이름으로 저장...", "selectLocationToSave": "저장할 위치를 선택하세요", "openTerminalInFolder": "이 폴더에서 터미널을 엽니다.", @@ -1531,8 +1630,11 @@ "fileTooLarge": "파일 크기가 너무 큽니다: {{error}}", "sshConnectionFailed": "SSH 연결에 실패했습니다. {{name}} ({{ip}}:{{port}})에 대한 연결을 확인하십시오.", "loadFileFailed": "파일 로드 실패: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "성공적으로 연결되었습니다", "totpVerificationFailed": "TOTP 인증 실패", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "인증 코드:", "changePermissions": "권한 변경", "changePermissionsDesc": "파일 권한을 수정하세요", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "권한 변경에 실패했습니다" }, "tunnel": { - "noTunnelsConfigured": "구성된 터널이 없습니다", - "configureTunnelsInHostSettings": "시작하려면 호스트 관리자에서 터널 연결을 구성하십시오." + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH 터널", @@ -1600,7 +1712,7 @@ "unknownConnectionStatus": "알려지지 않은", "portMapping": "포트 {{sourcePort}} → {{endpointHost}}:{{endpointPort}}", "endpointHostNotFound": "엔드포인트 호스트를 찾을 수 없습니다.", - "discord": "불화", + "discord": "디스코드", "githubIssue": "GitHub 이슈", "forHelp": "도움을 요청합니다" }, @@ -1624,6 +1736,8 @@ "refreshStatus": "상태 새로 고침", "fileManagerAlreadyOpen": "이 호스트에 대해 파일 관리자가 이미 열려 있습니다.", "openFileManager": "파일 관리자 열기", + "connecting": "연결 중...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU", "naCpus": "해당 없음 CPU(들)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "서버 메트릭을 가져오는 데 실패했습니다.", "failedToFetchHomeData": "홈 데이터를 가져오는 데 실패했습니다.", "loadingMetrics": "지표를 불러오는 중...", - "connecting": "연결 중...", "refreshing": "상쾌한...", "serverOffline": "서버 오프라인", "cannotFetchMetrics": "오프라인 서버에서 메트릭을 가져올 수 없습니다.", @@ -1682,7 +1795,34 @@ "executingQuickAction": "{{name}}실행 중...", "quickActionSuccess": "{{name}} 성공적으로 완료되었습니다", "quickActionFailed": "{{name}} 실패", - "quickActionError": "{{name}}실행에 실패했습니다." + "quickActionError": "{{name}}실행에 실패했습니다.", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH 서버 관리자", @@ -1824,7 +1964,11 @@ "emailExists": "이메일이 이미 존재합니다.", "loadFailed": "데이터를 불러오는 데 실패했습니다.", "saveError": "저장에 실패했습니다", - "sessionExpired": "세션이 만료되었습니다. 다시 로그인해 주세요." + "sessionExpired": "세션이 만료되었습니다. 다시 로그인해 주세요.", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "성공적으로 저장되었습니다", @@ -1879,9 +2023,12 @@ "appearance": "모습", "languageLocalization": "언어 및 현지화", "fileManagerSettings": "파일 관리자", - "terminalSettings": "단말기", + "terminalSettings": "터미널", "hostSidebarSettings": "호스트 및 사이드바", - "snippetsSettings": "짧은 발췌", + "snippetsSettings": "스니펫", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "현재 비밀번호", "passwordChangedSuccess": "비밀번호가 변경되었습니다! 다시 로그인해 주세요.", "failedToChangePassword": "비밀번호 변경에 실패했습니다. 현재 비밀번호를 확인하고 다시 시도해 주세요.", @@ -1890,7 +2037,9 @@ "themeDark": "어두운", "themeSystem": "체계", "appearanceDesc": "애플리케이션의 색상 테마를 선택하세요", - "terminalSyntaxHighlightingDesc": "터미널 출력에서 명령어, 경로, IP 주소 및 로그 레벨을 자동으로 강조 표시합니다." + "terminalSyntaxHighlightingDesc": "터미널 출력에서 명령어, 경로, IP 주소 및 로그 레벨을 자동으로 강조 표시합니다.", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "버전 정보를 불러오는 데 실패했습니다." @@ -1978,7 +2127,7 @@ "maintenance": "유지", "degraded": "타락한", "noTunnelConnections": "구성된 터널 연결이 없습니다.", - "discord": "불화", + "discord": "디스코드", "connectToSshForOperations": "파일 작업을 사용하려면 SSH에 연결하십시오.", "uploadFile": "파일 업로드", "newFile": "새 파일", @@ -2084,10 +2233,11 @@ "mobileAppDocumentation": "모바일 앱 문서화" }, "dashboard": { - "title": "계기반", + "title": "대시보드", + "loading": "Loading dashboard...", "github": "깃허브", - "support": "지원하다", - "discord": "불화", + "support": "문의하기", + "discord": "디스코드", "donate": "기부하세요", "serverOverview": "서버 개요", "version": "버전", @@ -2114,7 +2264,88 @@ "noServerData": "서버 데이터가 없습니다.", "cpu": "CPU", "ram": "숫양", - "notAvailable": "해당 없음" + "notAvailable": "해당 없음", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "호스트 공유", @@ -2291,10 +2522,10 @@ "openServerDetails": "오픈 서버 세부 정보", "openFileManager": "파일 관리자 열기", "edit": "편집하다", - "links": "모래밭", + "links": "링크", "github": "깃허브", - "support": "지원하다", - "discord": "불화", + "support": "문의하기", + "discord": "디스코드", "donate": "기부하세요", "press": "누르다", "toToggle": "토글하려면", @@ -2306,9 +2537,15 @@ "notEnabled": "이 호스트에서는 Docker가 활성화되어 있지 않습니다.", "validating": "Docker 유효성 검사 중...", "connectingToHost": "호스트에 연결 중...", + "connecting": "연결 중...", "error": "오류", "errorCode": "오류 코드: {{code}}", "version": "도커 {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP 인증에 실패했습니다. 다시 시도해 주세요.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "인증 코드를 입력하세요", + "loadingContainers": "컨테이너 적재 중...", "containerStarted": "컨테이너 {{name}} 시작됨", "failedToStartContainer": "컨테이너 {{name}}시작에 실패했습니다.", "containerStopped": "컨테이너 {{name}} 가 중지되었습니다.", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "컨테이너 '{{name}}'를 정말로 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "runningContainerWarning": "경고: 이 컨테이너는 현재 실행 중입니다. 제거하려면 먼저 컨테이너가 중지되어야 합니다.", "removing": "풀이...", - "loadingContainers": "컨테이너 적재 중...", "noContainersFound": "컨테이너를 찾을 수 없습니다.", "noContainersFoundHint": "이 호스트에는 사용 가능한 Docker 컨테이너가 없습니다.", "searchPlaceholder": "검색 컨테이너...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "컨테이너에서 분리됨", "containerMustBeRunning": "콘솔에 접속하려면 컨테이너가 실행 중이어야 합니다.", "authenticationRequired": "인증 필요", - "verificationCodePrompt": "인증 코드를 입력하세요", - "totpVerificationFailed": "TOTP 인증에 실패했습니다. 다시 시도해 주세요.", "connectedTo": "{{containerName}}에 연결됨", "disconnected": "연결이 끊어졌습니다", "consoleError": "콘솔 오류", @@ -2382,7 +2616,6 @@ "bash": "세게 때리다", "sh": "쉿", "ash": "금연 건강 증진 협회", - "connecting": "연결 중...", "connect": "연결하다", "disconnect": "연결을 끊으세요", "notConnected": "연결되지 않음", @@ -2393,7 +2626,37 @@ "logs": "로그", "stats": "통계", "consoleTab": "콘솔", - "startContainerToAccess": "콘솔에 접속하려면 컨테이너를 시작하세요." + "startContainerToAccess": "콘솔에 접속하려면 컨테이너를 시작하세요.", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "조명으로 전환", diff --git a/src/locales/translated/nl.json b/src/locales/translated/nl.json index 08ac5954..f1e9117e 100644 --- a/src/locales/translated/nl.json +++ b/src/locales/translated/nl.json @@ -44,6 +44,8 @@ "passwordRequired": "Wachtwoord is vereist", "sshKeyRequired": "SSH sleutel is vereist", "credentialAddedSuccessfully": "Toegangsgegevens \"{{name}}\" succesvol toegevoegd", + "savingCredential": "Inloggegevens worden opgeslagen...", + "updatingCredential": "Inloggegevens bijwerken...", "general": "Algemeen", "description": "Beschrijving", "folder": "Map", @@ -184,6 +186,32 @@ "renameFolder": "Map hernoemen", "idLabel": "ID:" }, + "quickConnect": { + "title": "Snel verbinden", + "description": "Maak direct verbinding met een terminal of bestandsbeheerder sessie zonder een hostconfiguratie op te slaan", + "ipAddress": "IP-adres of hostnaam", + "port": "Poort", + "username": "Gebruikersnaam", + "password": "Wachtwoord", + "key": "SSH persoonlijke sleutel", + "keyPassword": "Sleutelwachtwoord (optioneel)", + "keyType": "Type sleutel", + "uploadFile": "Bestand uploaden", + "pasteKey": "Plak Sleutel", + "credential": "Toegangsgegevens", + "overrideUsername": "Aanmeldgebruikersnaam overschrijven", + "overrideUsernameDesc": "Gebruik een andere gebruikersnaam dan degene die is opgeslagen in de inloggegevens", + "connectTerminal": "Verbinden met terminal", + "connectFileManager": "Verbinding maken met bestandsbeheer", + "cancel": "annuleren", + "passwordRequired": "Wachtwoord is vereist", + "keyRequired": "SSH sleutel is vereist", + "credentialRequired": "Inlogselectie is vereist", + "connectionEstablished": "Verbinding met succes gemaakt", + "connectionFailed": "Verbinding maken mislukt", + "autoDetect": "Automatisch detecteren", + "authentication": "Authenticatie" + }, "dragIndicator": { "error": "Fout: {{error}}", "dragging": "Slepen {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH Pad", "localPath": "Lokaal pad", "appName": "Termixen", + "openInNewTab": "Openen in nieuw tabblad", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Sleep om de zijbalk aan te passen", "noAuthCredentials": "Geen verificatiegegevens beschikbaar voor deze SSH host", @@ -464,10 +493,12 @@ "retry": "Opnieuw", "checking": "Controleren...", "checkingDatabase": "Database-verbinding controleren...", + "checkingAuthentication": "Authenticatie controleren...", "actions": "acties", "remove": "Verwijderen", "revoke": "Revoke", - "create": "Aanmaken" + "create": "Aanmaken", + "update": "Vernieuwen" }, "nav": { "home": "Startpagina", @@ -489,7 +520,12 @@ "hostManager": "Host Manager", "cannotSplitTab": "Kan dit tabblad niet splitsen", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Wachtwoord kopiëren", + "copySudoPassword": "Sudo wachtwoord kopiëren", + "passwordCopied": "Wachtwoord gekopieerd naar klembord", + "sudoPasswordCopied": "Sudo wachtwoord gekopieerd naar klembord", + "noPasswordAvailable": "Geen wachtwoord beschikbaar" }, "admin": { "title": "Beheerder Instellingen", @@ -537,6 +573,7 @@ "userRegistration": "Registratie gebruiker", "allowNewAccountRegistration": "Sta nieuwe accountregistratie toe", "allowPasswordLogin": "Gebruikersnaam en wachtwoord toestaan", + "allowPasswordReset": "Wachtwoord opnieuw instellen via resetcode toestaan", "missingRequiredFields": "Ontbrekende verplichte velden: {{fields}}", "oidcConfigurationUpdated": "OIDC configuratie succesvol bijgewerkt!", "failedToFetchOidcConfig": "Ophalen van OIDC configuratie mislukt", @@ -848,6 +885,13 @@ "autoStartContainer": "Start automatisch bij opstarten van Container", "autoStartDesc": "Automatisch deze tunnel starten wanneer de container wordt gelanceerd", "addConnection": "Tunnel verbinding toevoegen", + "tunnelType": "Tunnel type", + "tunnelTypeLocal": "Lokaal (-L)", + "tunnelTypeRemote": "Afstandsbediening (-R)", + "tunnelTypeLocalDesc": "Lokale poort doorsturen naar eindpunt op afstand", + "tunnelTypeRemoteDesc": "Doorsturen van externe poort naar lokale machine", + "tunnelForwardDescriptionLocal": "Deze tunnel zal verkeer van lokale poort {{sourcePort}} doorsturen naar poort {{endpointPort}} op de eindmachine.", + "tunnelForwardDescriptionRemote": "Deze tunnel zal verkeer van poort {{sourcePort}} op de bron machine doorsturen (huidige verbindingsdetails in algemene tab) naar poort {{endpointPort}} op de eindpuntmachine.", "sshpassRequired": "Sshpass vereist voor wachtwoordverificatie", "sshpassRequiredDesc": "Voor wachtwoord authenticatie in tunnels, moet sshpass op het systeem geïnstalleerd zijn.", "otherInstallMethods": "Andere installatiemethoden:", @@ -855,13 +899,16 @@ "or": "of", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Vensters", + "windows": "Windows (WSL, geen officiële binary)", "sshServerConfigRequired": "SSH-serverconfiguratie vereist", "sshServerConfigDesc": "Voor tunnelverbindingen moet de SSH-server geconfigureerd worden om port forwarding:", "gatewayPortsYes": "om externe poorten te binden aan alle interfaces", "allowTcpForwardingYes": "om port forwarding te activeren", "permitRootLoginYes": "als root gebruiker gebruikt wordt voor tunneling", - "editSshConfig": "Bewerken /etc/ssh/sshd_config en herstart SSH: sudo systemctl herstart sshd", + "editSshConfig": "Het SSH configuratiebestand bewerken:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Herstart daarna de SSH service:", + "restartSshCommand": "sudo systemctl sshd opnieuw starten", "upload": "Uploaden", "authentication": "Authenticatie", "password": "Wachtwoord", @@ -1096,6 +1143,19 @@ "quickActionName": "Actie naam", "noSnippetFound": "Geen snippet gevonden", "quickActionsOrder": "Snelle actie knoppen worden weergegeven in de bovenstaande volgorde op de server statistieken pagina", + "sidebarCustomization": "Sidebar knop aanpassen", + "sidebarCustomizationDesc": "Kies welke acties worden weergegeven als snelle knoppen in de zijbalk. Acties die niet worden weergegeven als knoppen worden weergegeven in het uitklapmenu.", + "showTerminalInSidebar": "Toon terminal knop", + "showTerminalInSidebarDesc": "Toon terminal als een snelle knop in de zijbalk", + "showFileManagerInSidebar": "Toon bestandsbeheer-knop", + "showFileManagerInSidebarDesc": "Toon bestandsbeheer als een snelle knop in de zijbalk", + "showTunnelInSidebar": "Toon Tunnel knop", + "showTunnelInSidebarDesc": "Toon tunnelbeheer als een snelle knop in de zijbalk", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Geavanceerde verificatie-instellingen", "sudoPasswordAutoFill": "Sudo Wachtwoord automatisch invullen", "sudoPasswordAutoFillDesc": "Automatisch aanbieden om SSH wachtwoord in te voegen bij sudo verzoeken voor wachtwoord", @@ -1115,6 +1175,15 @@ "addVariable": "Variabele toevoegen", "docker": "Docker", "openDocker": "Open Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker is niet ingeschakeld voor deze host. Zet het aan in Hostinstellingen om de Docker-functies te gebruiken.", "validating": "Docker valideren...", "error": "Foutmelding", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Verificatie Code", "totpPlaceholder": "000000", "totpVerify": "Verifiëren", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Wachtwoord invoeren?", "sudoPasswordPopupHint": "Druk op Enter om in te voegen, Esc om te sluiten", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Uitschakelen" + "sudoPasswordPopupDismiss": "Uitschakelen", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Bestands Beheer", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} succesvol verwijderd", "itemsDeletedSuccessfully": "{{count}} items succesvol verwijderd", "failedToDeleteItems": "Kan items niet verwijderen", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Sleep bestanden hier om te uploaden", "emptyFolder": "Deze map is leeg", "itemCount": "{{count}} items", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Bestand te groot: {{error}}", "sshConnectionFailed": "SSH verbinding mislukt. Controleer uw verbinding met {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Bestand laden mislukt: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Succesvol verbonden", "totpVerificationFailed": "TOTP-verificatie mislukt", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Verificatiecode:", "changePermissions": "Rechten wijzigen", "changePermissionsDesc": "Wijzig bestandsrechten voor", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Permissies wijzigen mislukt" }, "tunnel": { - "noTunnelsConfigured": "Geen tunnels geconfigureerd", - "configureTunnelsInHostSettings": "Configureer tunnelverbindingen in de Host Manager om te starten" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH tunnels", @@ -1624,6 +1736,8 @@ "refreshStatus": "Status vernieuwen", "fileManagerAlreadyOpen": "Bestandsbeheerder is al geopend voor deze host", "openFileManager": "Bestandsbeheer openen", + "connecting": "Verbinden...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU's", "naCpus": "N/A CPU(s)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Kan serverstatistieken niet ophalen", "failedToFetchHomeData": "Thuisgegevens ophalen mislukt", "loadingMetrics": "Metrieken laden...", - "connecting": "Verbinden...", "refreshing": "Vernieuwen...", "serverOffline": "Server offline", "cannotFetchMetrics": "Kan statistieken niet ophalen van offline server", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Uitvoeren {{name}}...", "quickActionSuccess": "{{name}} succesvol voltooid", "quickActionFailed": "{{name}} is mislukt", - "quickActionError": "Kan {{name}} niet uitvoeren" + "quickActionError": "Kan {{name}} niet uitvoeren", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH SERVER MANAGER", @@ -1824,7 +1964,11 @@ "emailExists": "E-mail bestaat al", "loadFailed": "Laden van gegevens mislukt", "saveError": "Opslaan mislukt", - "sessionExpired": "Sessie verlopen - Log opnieuw in" + "sessionExpired": "Sessie verlopen - Log opnieuw in", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Succesvol opgeslagen", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Host & Sidebar", "snippetsSettings": "Tekstbouwstenen", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Huidig wachtwoord", "passwordChangedSuccess": "Wachtwoord succesvol gewijzigd! Log opnieuw in.", "failedToChangePassword": "Wijzigen van wachtwoord mislukt. Controleer uw huidige wachtwoord en probeer het opnieuw.", @@ -1890,7 +2037,9 @@ "themeDark": "Donker", "themeSystem": "Systeem", "appearanceDesc": "Selecteer het kleurenthema voor de toepassing", - "terminalSyntaxHighlightingDesc": "Automatisch commando's, pad en IP's markeren en levels loggen in de einduitvoer" + "terminalSyntaxHighlightingDesc": "Automatisch commando's, pad en IP's markeren en levels loggen in de einduitvoer", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Fout bij het laden van versie informatie" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Dashboard", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Ondersteuning", "discord": "Onenigheid", @@ -2114,7 +2264,88 @@ "noServerData": "Geen servergegevens beschikbaar", "cpu": "CPU", "ram": "RAM", - "notAvailable": "N/B" + "notAvailable": "N/B", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Deel host", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker is niet ingeschakeld voor deze host", "validating": "Docker valideren...", "connectingToHost": "Verbinden met host...", + "connecting": "Verbinden...", "error": "Foutmelding", "errorCode": "Foutcode: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP-verificatie mislukt. Probeer het opnieuw.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Voer verificatiecode in", + "loadingContainers": "containers laden...", "containerStarted": "Container {{name}} gestart", "failedToStartContainer": "Kan container {{name}} niet starten", "containerStopped": "Container {{name}} gestopt", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Weet u zeker dat u de container '{{name}}' wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", "runningContainerWarning": "Waarschuwing: Deze container is momenteel actief. Verwijderen zal de container eerst stoppen.", "removing": "Verwijderen...", - "loadingContainers": "containers laden...", "noContainersFound": "Geen containers gevonden", "noContainersFoundHint": "Er zijn geen Docker containers beschikbaar op deze host", "searchPlaceholder": "Zoek containers...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Verbinding met container verbroken", "containerMustBeRunning": "Container moet worden uitgevoerd voor toegangsconsole", "authenticationRequired": "Authenticatie vereist", - "verificationCodePrompt": "Voer verificatiecode in", - "totpVerificationFailed": "TOTP-verificatie mislukt. Probeer het opnieuw.", "connectedTo": "Verbonden met {{containerName}}", "disconnected": "Losgekoppeld", "consoleError": "Console fout", @@ -2382,7 +2616,6 @@ "bash": "Basis", "sh": "sha", "ash": "as", - "connecting": "Verbinden...", "connect": "Verbinden", "disconnect": "Verbreek", "notConnected": "Niet verbonden", @@ -2393,7 +2626,37 @@ "logs": "Logboeken", "stats": "Statistieken", "consoleTab": "Console", - "startContainerToAccess": "Start de container voor toegang tot de console" + "startContainerToAccess": "Start de container voor toegang tot de console", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Overschakelen naar licht", diff --git a/src/locales/translated/no.json b/src/locales/translated/no.json index 46761bbc..63203ac3 100644 --- a/src/locales/translated/no.json +++ b/src/locales/translated/no.json @@ -44,6 +44,8 @@ "passwordRequired": "Passord er påkrevd", "sshKeyRequired": "SSH-privatnøkkel er påkrevd", "credentialAddedSuccessfully": "Legitimasjonen «{{name}}» ble lagt til", + "savingCredential": "Lagrer legitimasjon ...", + "updatingCredential": "Oppdaterer legitimasjon ...", "general": "Generelt", "description": "Beskrivelse", "folder": "Mappe", @@ -184,6 +186,32 @@ "renameFolder": "Endre mappenavn", "idLabel": "ID:" }, + "quickConnect": { + "title": "Kjapp tilkobling", + "description": "Koble direkte til en terminal eller filbehandlerøkt uten å lagre en vertskonfigurasjon", + "ipAddress": "IP adresse eller vertsnavn", + "port": "Port", + "username": "Brukernavn", + "password": "Passord", + "key": "Private SSH-nøkkel", + "keyPassword": "Nøkkel passord (valgfritt)", + "keyType": "Type nøkkel", + "uploadFile": "Last opp fil", + "pasteKey": "Lim inn nøkkel", + "credential": "Påloggingsrettigheter", + "overrideUsername": "Overstyr påloggingsbrukernavn", + "overrideUsernameDesc": "Bruk et annet brukernavn enn det som er lagret i legitimasjonen", + "connectTerminal": "Koble til terminal", + "connectFileManager": "Koble til filbehandler", + "cancel": "Avbryt", + "passwordRequired": "Passord er påkrevd", + "keyRequired": "SSH-nøkkel kreves", + "credentialRequired": "Valg av legitimasjon kreves", + "connectionEstablished": "Tilkobling vellykket", + "connectionFailed": "Kunne ikke opprette tilkobling", + "autoDetect": "Automatisk gjenkjenning", + "authentication": "Autentisering" + }, "dragIndicator": { "error": "Feil: {{error}}", "dragging": "Dra {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH-sti", "localPath": "Lokal sti", "appName": "Termiks", + "openInNewTab": "Åpne i ny fane", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Dra for å endre størrelse på sidepanelet", "noAuthCredentials": "Ingen autentiseringslegitimasjon tilgjengelig for denne SSH-verten", @@ -464,10 +493,12 @@ "retry": "Prøv igjen", "checking": "Kontrollerer...", "checkingDatabase": "Kontrollerer databaseforbindelse...", + "checkingAuthentication": "Kontrollerer autentisering...", "actions": "Handlinger", "remove": "Fjern", "revoke": "Revoke", - "create": "Opprett" + "create": "Opprett", + "update": "Oppdater" }, "nav": { "home": "Hjem", @@ -489,7 +520,12 @@ "hostManager": "Vertadministrator", "cannotSplitTab": "Kan ikke dele denne fanen", "tabNavigation": "Fanenavigering", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Kopier passordet", + "copySudoPassword": "Kopier Sudo passord", + "passwordCopied": "Passordet er kopiert til utklippstavlen", + "sudoPasswordCopied": "Sudo-passordet ble kopiert til utklippstavlen", + "noPasswordAvailable": "Ingen passord tilgjengelig" }, "admin": { "title": "Administratorinnstillinger", @@ -537,6 +573,7 @@ "userRegistration": "Brukerregistrering", "allowNewAccountRegistration": "Tillat registrering av nye kontoer", "allowPasswordLogin": "Tillat innlogging med brukernavn/passord", + "allowPasswordReset": "Tillat tilbakestilling av passord via tilbakestillingskode", "missingRequiredFields": "Mangler påkrevde felt: {{fields}}", "oidcConfigurationUpdated": "OIDC-konfigurasjonen ble oppdatert!", "failedToFetchOidcConfig": "Kunne ikke hente OIDC-konfigurasjon", @@ -848,6 +885,13 @@ "autoStartContainer": "Autostart ved containeroppstart", "autoStartDesc": "Start denne tunnelen automatisk når containeren starter", "addConnection": "Legg til tunneltilkobling", + "tunnelType": "Type tunnel", + "tunnelTypeLocal": "Lokal (-L)", + "tunnelTypeRemote": "Ekstern (-R)", + "tunnelTypeLocalDesc": "Videresend lokal port til fjern endepunkt", + "tunnelTypeRemoteDesc": "Videresend ekstern port til lokal maskin", + "tunnelForwardDescriptionLocal": "Denne tunnelen vil videresende trafikk fra lokal port {{sourcePort}} til port {{endpointPort}} på sluttmaskinen.", + "tunnelForwardDescriptionRemote": "Denne tunnelen vil videresende trafikk fra port {{sourcePort}} på kildemaskinen (nåværende tilkoblingsdetaljer i generell fan) som skal port {{endpointPort}} på endepunktsmaskinen.", "sshpassRequired": "sshpass kreves for passordautentisering", "sshpassRequiredDesc": "For passordautentisering i tunneler må sshpass være installert på systemet.", "otherInstallMethods": "Andre installasjonsmetoder:", @@ -855,13 +899,16 @@ "or": "eller", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Vinduer", + "windows": "Windows (WSL, ingen offisiell binært)", "sshServerConfigRequired": "SSH-serverkonfigurasjon kreves", "sshServerConfigDesc": "For tunneltilkoblinger må SSH-serveren konfigureres til å tillate portvideresending:", "gatewayPortsYes": "for å binde eksterne porter til alle grensesnitt", "allowTcpForwardingYes": "for å aktivere portvideresending", "permitRootLoginYes": "hvis du bruker root-bruker for tunneler", - "editSshConfig": "Rediger /etc/ssh/sshd_config og start SSH på nytt: sudo systemctl restart sshd", + "editSshConfig": "Rediger SSH-konfigurasjonsfilen:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Deretter restarte SSH-tjenesten:", + "restartSshCommand": "omstart av sudo systemctl", "upload": "Last opp", "authentication": "Autentisering", "password": "Passord", @@ -1096,6 +1143,19 @@ "quickActionName": "Handlingsnavn", "noSnippetFound": "Ingen snippet funnet", "quickActionsOrder": "Hurtighandlingsknapper vises i rekkefølgen ovenfor på siden Serverstatistikk", + "sidebarCustomization": "Tilpasning av sidepanelknapp", + "sidebarCustomizationDesc": "Velg hvilke handlinger som vises som hurtigknapper i sidepanelet. Handlinger som ikke vises da knappene vises i nedtrekksmenyen.", + "showTerminalInSidebar": "Vis knapp for terminal", + "showTerminalInSidebarDesc": "Vis terminal som en hurtigknapp i sidepanelet", + "showFileManagerInSidebar": "Vis knapp for filbehandling", + "showFileManagerInSidebarDesc": "Vis filbehandler som en hurtigknapp i sidepanelet", + "showTunnelInSidebar": "Vis Tunnelsesknapp", + "showTunnelInSidebarDesc": "Vis tunnelbehandling som en hurtigknapp i sidepanelet", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Avanserte autentiseringsinnstillinger", "sudoPasswordAutoFill": "Sudo passord autoutfyll", "sudoPasswordAutoFillDesc": "Tilby deg automatisk SSH passord når overordnet mål for passord", @@ -1115,6 +1175,15 @@ "addVariable": "Legg til variabel", "docker": "Docker", "openDocker": "Åpne Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Leger er ikke aktivert for denne verten. Aktiver dette i Vertsinnstillingene for å bruke Docker-funksjoner.", "validating": "Validerer Docker...", "error": "Feil", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Verifiseringskode", "totpPlaceholder": "000000", "totpVerify": "Verifiser", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Sette inn passord?", "sudoPasswordPopupHint": "Trykk på Enter for å sette inn, Esc for å fjerne", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Avvis" + "sudoPasswordPopupDismiss": "Avvis", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Filbehandler", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} ble slettet", "itemsDeletedSuccessfully": "{{count}} elementer ble slettet", "failedToDeleteItems": "Kunne ikke slette elementer", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Slipp filer her for å laste opp", "emptyFolder": "Denne mappen er tom", "itemCount": "{{count}} elementer", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Fil for stor: {{error}}", "sshConnectionFailed": "SSH-tilkobling mislyktes. Kontroller tilkoblingen til {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Kunne ikke laste fil: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Tilkoblet", "totpVerificationFailed": "TOTP-verifisering mislyktes", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Bekreftelseskode:", "changePermissions": "Endre tillatelser", "changePermissionsDesc": "Endre filtillatelser for", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Kunne ikke endre tillatelser" }, "tunnel": { - "noTunnelsConfigured": "Ingen tunnelels konfigurert", - "configureTunnelsInHostSettings": "Konfigurer tunnelforbindelser i Host Manager for å komme i gang" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH-tunneler", @@ -1624,6 +1736,8 @@ "refreshStatus": "Oppdater status", "fileManagerAlreadyOpen": "Filutforsker er allerede åpen for denne verten", "openFileManager": "Åpne filutforsker", + "connecting": "Tilkobler...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} Prosessor", "cpuCores_other": "{{count}} CPU-er", "naCpus": "N/A CPU(er)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Kunne ikke hente servermålinger", "failedToFetchHomeData": "Kunne ikke hente hjemmedata", "loadingMetrics": "Laster målinger...", - "connecting": "Tilkobler...", "refreshing": "Oppdaterer...", "serverOffline": "Server frakoblet", "cannotFetchMetrics": "Kan ikke hente målinger fra frakoblet server", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Utfører {{name}}...", "quickActionSuccess": "{{name}} fullført", "quickActionFailed": "{{name}} mislyktes", - "quickActionError": "Kunne ikke utføre {{name}}" + "quickActionError": "Kunne ikke utføre {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH-SERVERMANAGER", @@ -1824,7 +1964,11 @@ "emailExists": "E-post finnes allerede", "loadFailed": "Kunne ikke laste data", "saveError": "Kunne ikke lagre", - "sessionExpired": "Økten er utløpt – logg inn på nytt" + "sessionExpired": "Økten er utløpt – logg inn på nytt", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Lagret", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Verts- og sidepanelet", "snippetsSettings": "Snippets", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Nåværende passord", "passwordChangedSuccess": "Passord endret! Logg inn igjen.", "failedToChangePassword": "Kunne ikke endre passord. Kontroller nåværende passord og prøv igjen.", @@ -1890,7 +2037,9 @@ "themeDark": "Mørk", "themeSystem": "Systemadministrasjon", "appearanceDesc": "Velg fargetemaet for applikasjonen", - "terminalSyntaxHighlightingDesc": "Automatisk markerer kommandoer, stier, IP-adresser og loggnivåer i terminalen" + "terminalSyntaxHighlightingDesc": "Automatisk markerer kommandoer, stier, IP-adresser og loggnivåer i terminalen", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Kunne ikke laste versjonsinformasjon" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Dashbord", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Hjelp", "discord": "Splid", @@ -2114,7 +2264,88 @@ "noServerData": "Ingen serverdata tilgjengelig", "cpu": "Prosessor", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Del verten", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker er ikke aktivert for denne verten", "validating": "Validerer Docker...", "connectingToHost": "Kobler til vert...", + "connecting": "Tilkobler...", "error": "Feil", "errorCode": "Feilkode: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP-verifisering mislyktes. Vennligst prøv igjen.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Angi bekreftelseskode", + "loadingContainers": "Laster containere ...", "containerStarted": "Beholder {{name}} startet", "failedToStartContainer": "Kan ikke starte container {{name}}", "containerStopped": "Beholder {{name}} stoppet", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Er du sikker på at du vil fjerne containeren '{{name}}'? Denne handlingen kan ikke angres.", "runningContainerWarning": "Advarsel: Denne beholderen kjører. Fjerning av den vil stoppe beholderen først.", "removing": "Fjerner...", - "loadingContainers": "Laster containere ...", "noContainersFound": "Ingen beholdere funnet", "noContainersFoundHint": "Ingen Docker beholdere er tilgjengelig på denne verten", "searchPlaceholder": "Søk etter beholdere...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Koblet fra beholderen", "containerMustBeRunning": "Container må kjøre for å få tilgang til konsollen", "authenticationRequired": "Autentisering kreves", - "verificationCodePrompt": "Angi bekreftelseskode", - "totpVerificationFailed": "TOTP-verifisering mislyktes. Vennligst prøv igjen.", "connectedTo": "Koblet til {{containerName}}", "disconnected": "Frakoblet", "consoleError": "Konsoll feil", @@ -2382,7 +2616,6 @@ "bash": "Baskisk", "sh": "i.i.", "ash": "aske", - "connecting": "Tilkobler...", "connect": "Nettverk", "disconnect": "Frakoblet", "notConnected": "Ikke tilkoblet", @@ -2393,7 +2626,37 @@ "logs": "Logger", "stats": "Statistikk", "consoleTab": "Konsoll", - "startContainerToAccess": "Start beholderen for å få tilgang til konsollen" + "startContainerToAccess": "Start beholderen for å få tilgang til konsollen", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Bytt til lys", diff --git a/src/locales/translated/pl.json b/src/locales/translated/pl.json index 52a440bd..29491fc9 100644 --- a/src/locales/translated/pl.json +++ b/src/locales/translated/pl.json @@ -44,6 +44,8 @@ "passwordRequired": "Hasło jest wymagane", "sshKeyRequired": "Klucz SSH jest wymagany", "credentialAddedSuccessfully": "Pomyślnie dodano poświadczenie \"{{name}}\"", + "savingCredential": "Zapisywanie danych logowania...", + "updatingCredential": "Aktualizowanie poświadczenia...", "general": "Ogólny", "description": "Opis", "folder": "Folder", @@ -184,6 +186,32 @@ "renameFolder": "Zmień nazwę folderu", "idLabel": "ID:" }, + "quickConnect": { + "title": "Szybkie połączenie", + "description": "Podłącz bezpośrednio do sesji terminala lub menedżera plików bez zapisywania konfiguracji hosta", + "ipAddress": "Adres IP lub nazwa hosta", + "port": "Port", + "username": "Nazwa użytkownika", + "password": "Hasło", + "key": "Klucz prywatny SSH", + "keyPassword": "Hasło klucza (opcjonalne)", + "keyType": "Typ klucza", + "uploadFile": "Prześlij plik", + "pasteKey": "Wklej klucz", + "credential": "Dane logowania", + "overrideUsername": "Zastąp nazwę użytkownika", + "overrideUsernameDesc": "Użyj innej nazwy użytkownika niż ta przechowywana w danych logowania", + "connectTerminal": "Połącz z terminalem", + "connectFileManager": "Podłącz do Menedżera plików", + "cancel": "Anuluj", + "passwordRequired": "Hasło jest wymagane", + "keyRequired": "Klucz SSH jest wymagany", + "credentialRequired": "Wybór poświadczeń jest wymagany", + "connectionEstablished": "Połączenie nawiązane pomyślnie", + "connectionFailed": "Nie udało się nawiązać połączenia", + "autoDetect": "Automatyczne wykrywanie", + "authentication": "Uwierzytelnianie" + }, "dragIndicator": { "error": "Błąd: {{error}}", "dragging": "Przeciąganie {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Ścieżka SSH", "localPath": "Ścieżka lokalna", "appName": "Termiks", + "openInNewTab": "Otwórz w nowej karcie", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Przeciągnij, aby zmienić rozmiar paska bocznego", "noAuthCredentials": "Brak danych uwierzytelniających dla tego hosta SSH", @@ -464,10 +493,12 @@ "retry": "Ponów próbę", "checking": "Sprawdzanie...", "checkingDatabase": "Sprawdzanie połączenia z bazą danych...", + "checkingAuthentication": "Sprawdzanie uwierzytelniania...", "actions": "Akcje", "remove": "Usuń", "revoke": "Revoke", - "create": "Utwórz" + "create": "Utwórz", + "update": "Aktualizuj" }, "nav": { "home": "Strona główna", @@ -489,7 +520,12 @@ "hostManager": "Host Manager", "cannotSplitTab": "Nie można podzielić tej karty", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Skopiuj hasło", + "copySudoPassword": "Skopiuj hasło Sudo", + "passwordCopied": "Hasło skopiowane do schowka", + "sudoPasswordCopied": "Hasło Sudo skopiowane do schowka", + "noPasswordAvailable": "Hasło nie jest dostępne" }, "admin": { "title": "Ustawienia administratora", @@ -537,6 +573,7 @@ "userRegistration": "Rejestracja użytkownika", "allowNewAccountRegistration": "Zezwalaj na rejestrację nowego konta", "allowPasswordLogin": "Zezwalaj na logowanie użytkownika/hasła", + "allowPasswordReset": "Zezwalaj na resetowanie hasła przez kod resetowania", "missingRequiredFields": "Brakuje wymaganych pól: {{fields}}", "oidcConfigurationUpdated": "Konfiguracja OIDC zaktualizowana pomyślnie!", "failedToFetchOidcConfig": "Nie udało się pobrać konfiguracji OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Automatyczne uruchamianie przy uruchomieniu kontenera", "autoStartDesc": "Automatycznie uruchom ten tunel po uruchomieniu kontenera", "addConnection": "Dodaj połączenie tunelu", + "tunnelType": "Typ tunelu", + "tunnelTypeLocal": "Lokalna (-L)", + "tunnelTypeRemote": "Zdalny (-R)", + "tunnelTypeLocalDesc": "Przekieruj port lokalny do zdalnego punktu końcowego", + "tunnelTypeRemoteDesc": "Przekieruj zdalny port do lokalnej maszyny", + "tunnelForwardDescriptionLocal": "Ten tunel przeniesie ruch z lokalnego portu {{sourcePort}} do portu {{endpointPort}} na maszynie punktu końcowego.", + "tunnelForwardDescriptionRemote": "Ten tunel przeniesie ruch z portu {{sourcePort}} na maszynie źródłowej (bieżące szczegóły połączenia w zakładce) do portu {{endpointPort}} na maszynie punktu końcowego.", "sshpassRequired": "Sshpass wymagany do uwierzytelniania hasła", "sshpassRequiredDesc": "Dla uwierzytelniania hasła w tunelach sshpass musi być zainstalowany w systemie.", "otherInstallMethods": "Inne metody instalacji:", @@ -855,13 +899,16 @@ "or": "lub", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Okna", + "windows": "Windows (WSL, brak oficjalnych binarnych)", "sshServerConfigRequired": "Konfiguracja serwera SSH jest wymagana", "sshServerConfigDesc": "W przypadku połączeń z tunelem serwer SSH musi być skonfigurowany, aby umożliwić przekazywanie portu:", "gatewayPortsYes": "aby powiązać zdalne porty ze wszystkimi interfejsami", "allowTcpForwardingYes": "aby włączyć przekazywanie portów", "permitRootLoginYes": "jeśli używasz głównego użytkownika do tunelowania", - "editSshConfig": "Edytuj /etc/ssh/sshd_config i zrestartuj SSH: sudo systemctl restart sshd", + "editSshConfig": "Edytuj plik konfiguracyjny SSH:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Następnie uruchom ponownie usługę SSH:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Prześlij", "authentication": "Uwierzytelnianie", "password": "Hasło", @@ -1096,6 +1143,19 @@ "quickActionName": "Nazwa akcji", "noSnippetFound": "Nie znaleziono snippet", "quickActionsOrder": "Przyciski szybkiego działania pojawią się w kolejności wymienionej powyżej na stronie Statystyki Serwera", + "sidebarCustomization": "Dostosowanie przycisku paska bocznego", + "sidebarCustomizationDesc": "Wybierz, które akcje pojawiają się jako przyciski szybkich na pasku bocznym. Akcje nie będą wyświetlane jako przyciski w rozwijanym menu.", + "showTerminalInSidebar": "Pokaż przycisk Terminal", + "showTerminalInSidebarDesc": "Wyświetl terminal jako szybki przycisk na pasku bocznym", + "showFileManagerInSidebar": "Pokaż przycisk Menedżera Plików", + "showFileManagerInSidebarDesc": "Wyświetl menedżer plików jako przycisk szybki na pasku bocznym", + "showTunnelInSidebar": "Pokaż przycisk tunelu", + "showTunnelInSidebarDesc": "Wyświetl zarządzanie tunelem jako szybki przycisk na pasku bocznym", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Zaawansowane ustawienia uwierzytelniania", "sudoPasswordAutoFill": "Automatyczne wypełnienie hasła Sudo", "sudoPasswordAutoFillDesc": "Automatycznie zaoferuj wstawianie hasła SSH gdy sudo pyta o hasło", @@ -1115,6 +1175,15 @@ "addVariable": "Dodaj zmienną", "docker": "Dokujący", "openDocker": "Otwórz doker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker nie jest włączony dla tego hosta. Włącz go w Ustawieniach hosta, aby używać funkcji Dockera.", "validating": "Sprawdzanie poprawności Docker...", "error": "Błąd", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Kod weryfikacyjny", "totpPlaceholder": "000000", "totpVerify": "Weryfikacja", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Wprowadzić hasło?", "sudoPasswordPopupHint": "Naciśnij Enter, aby wstawić, Esc, aby odrzucić", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Odrzuć" + "sudoPasswordPopupDismiss": "Odrzuć", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Menedżer plików", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} został usunięty", "itemsDeletedSuccessfully": "{{count}} elementów pomyślnie usunięto", "failedToDeleteItems": "Nie udało się usunąć elementów", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Upuść pliki tutaj, aby przesłać", "emptyFolder": "Ten folder jest pusty", "itemCount": "{{count}} przedmiotów", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Plik za duży: {{error}}", "sshConnectionFailed": "Połączenie SSH nie powiodło się. Sprawdź swoje połączenie z {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Nie udało się załadować pliku: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Połączono pomyślnie", "totpVerificationFailed": "Weryfikacja TOTP nie powiodła się", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Kod weryfikacyjny:", "changePermissions": "Zmień uprawnienia", "changePermissionsDesc": "Modyfikuj uprawnienia pliku dla", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Nie udało się zmienić uprawnień" }, "tunnel": { - "noTunnelsConfigured": "Brak skonfigurowanych tuneli", - "configureTunnelsInHostSettings": "Skonfiguruj połączenia tuneli w Menedżerze hostów, aby rozpocząć" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "Tunele SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "Odśwież status", "fileManagerAlreadyOpen": "Menedżer plików jest już otwarty dla tego hosta", "openFileManager": "Otwórz menedżera plików", + "connecting": "Łączenie...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU", "naCpus": "Brak CPU(ów)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Nie udało się pobrać metryki serwera", "failedToFetchHomeData": "Nie udało się pobrać danych domowych", "loadingMetrics": "Ładowanie metrów...", - "connecting": "Łączenie...", "refreshing": "Odświeżanie...", "serverOffline": "Serwer offline", "cannotFetchMetrics": "Nie można pobrać metryki z serwera offline", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Wykonywanie {{name}}...", "quickActionSuccess": "Ukończono {{name}}", "quickActionFailed": "{{name}} nie powiódł się", - "quickActionError": "Nie udało się wykonać {{name}}" + "quickActionError": "Nie udało się wykonać {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "ZARZĄDZANIE SERWEREM SSH", @@ -1824,7 +1964,11 @@ "emailExists": "Adres e-mail już istnieje", "loadFailed": "Nie udało się załadować danych", "saveError": "Nie udało się zapisać", - "sessionExpired": "Sesja wygasła - zaloguj się ponownie" + "sessionExpired": "Sesja wygasła - zaloguj się ponownie", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Zapisano pomyślnie", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Pasek hosta i boczny", "snippetsSettings": "Fragmenty", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Bieżące hasło", "passwordChangedSuccess": "Hasło zmienione pomyślnie! Zaloguj się ponownie.", "failedToChangePassword": "Nie udało się zmienić hasła. Sprawdź swoje aktualne hasło i spróbuj ponownie.", @@ -1890,7 +2037,9 @@ "themeDark": "Ciemny", "themeSystem": "System", "appearanceDesc": "Wybierz kolor motywu dla aplikacji", - "terminalSyntaxHighlightingDesc": "Automatycznie podświetl polecenia, ścieżki, adresy IP i poziomy logów na wyjściu terminalu" + "terminalSyntaxHighlightingDesc": "Automatycznie podświetl polecenia, ścieżki, adresy IP i poziomy logów na wyjściu terminalu", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Nie udało się załadować informacji o wersji" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Pulpit", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Wsparcie", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Brak dostępnych danych serwera", "cpu": "Procesor", "ram": "RAM", - "notAvailable": "Nie dotyczy." + "notAvailable": "Nie dotyczy.", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Udostępnij hosta", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker nie jest włączony dla tego hosta", "validating": "Sprawdzanie poprawności Docker...", "connectingToHost": "Łączenie z hostem...", + "connecting": "Łączenie...", "error": "Błąd", "errorCode": "Kod błędu: {{code}}", "version": "Dokator {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Weryfikacja TOTP nie powiodła się. Spróbuj ponownie.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Wprowadź kod weryfikacyjny", + "loadingContainers": "Ładowanie kontenerów...", "containerStarted": "Pojemnik {{name}} został uruchomiony", "failedToStartContainer": "Nie udało się uruchomić kontenera {{name}}", "containerStopped": "Pojemnik {{name}} zatrzymany", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Czy na pewno chcesz usunąć kontenera '{{name}}'? Tej akcji nie można cofnąć.", "runningContainerWarning": "Ostrzeżenie: Ten kontener jest obecnie uruchomiony. Usunięcie go zatrzyma najpierw kontener", "removing": "Usuwanie...", - "loadingContainers": "Ładowanie kontenerów...", "noContainersFound": "Nie znaleziono kontenerów", "noContainersFoundHint": "Pojemniki dokujące nie są dostępne dla tego hosta", "searchPlaceholder": "Szukaj kontenerów...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Odłączony od kontenera", "containerMustBeRunning": "Kontener musi być uruchomiony, aby uzyskać dostęp do konsoli", "authenticationRequired": "Wymagane uwierzytelnienie", - "verificationCodePrompt": "Wprowadź kod weryfikacyjny", - "totpVerificationFailed": "Weryfikacja TOTP nie powiodła się. Spróbuj ponownie.", "connectedTo": "Połączono z {{containerName}}", "disconnected": "Rozłączony", "consoleError": "Błąd konsoli", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "pl", "ash": "popiół", - "connecting": "Łączenie...", "connect": "Połącz", "disconnect": "Rozłącz", "notConnected": "Nie połączono", @@ -2393,7 +2626,37 @@ "logs": "Logi", "stats": "Statystyki", "consoleTab": "Konsola", - "startContainerToAccess": "Uruchom kontener aby uzyskać dostęp do konsoli" + "startContainerToAccess": "Uruchom kontener aby uzyskać dostęp do konsoli", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Przełącz na światło", diff --git a/src/locales/translated/pt.json b/src/locales/translated/pt.json index da7828c3..33737369 100644 --- a/src/locales/translated/pt.json +++ b/src/locales/translated/pt.json @@ -44,6 +44,8 @@ "passwordRequired": "A senha é obrigatória", "sshKeyRequired": "Chave SSH é necessária", "credentialAddedSuccessfully": "Credencial \"{{name}}\" adicionado com sucesso", + "savingCredential": "Salvando credencial...", + "updatingCredential": "Atualizando credencial...", "general": "Gerais", "description": "Descrição:", "folder": "pasta", @@ -184,6 +186,32 @@ "renameFolder": "Renomear pasta", "idLabel": "ID:" }, + "quickConnect": { + "title": "Conexão rápida", + "description": "Conectar diretamente a uma sessão de terminal ou gerenciador de arquivos sem salvar uma configuração de host", + "ipAddress": "Endereço IP ou Nome de Host", + "port": "Porta", + "username": "Usuário:", + "password": "Palavra-passe", + "key": "Chave privada SSH", + "keyPassword": "Senha Chave (Opcional)", + "keyType": "Tipo de chave", + "uploadFile": "Enviar Arquivo", + "pasteKey": "Colar Chave", + "credential": "Credencial", + "overrideUsername": "Substituir o nome de usuário credencial", + "overrideUsernameDesc": "Use um nome de usuário diferente do armazenado na credencial", + "connectTerminal": "Conectar ao Terminal", + "connectFileManager": "Conectar ao Gerenciador de Arquivos", + "cancel": "cancelar", + "passwordRequired": "A senha é obrigatória", + "keyRequired": "Chave SSH é necessária", + "credentialRequired": "A seleção de credenciais é necessária", + "connectionEstablished": "Conexão estabelecida com sucesso", + "connectionFailed": "Falha ao estabelecer conexão", + "autoDetect": "Detecção automática", + "authentication": "Autenticação" + }, "dragIndicator": { "error": "Erro: {{error}}", "dragging": "Arrastando {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Caminho SSH", "localPath": "Caminho local", "appName": "Termix", + "openInNewTab": "Abrir em nova aba", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Arraste para redimensionar a barra lateral", "noAuthCredentials": "Não há credenciais de autenticação disponíveis para este host SSH", @@ -464,10 +493,12 @@ "retry": "Repetir", "checking": "Verificandochar@@0", "checkingDatabase": "Verificando conexão com o banco de dados...", + "checkingAuthentication": "Verificando autenticação...", "actions": "Ações.", "remove": "Excluir", "revoke": "Revoke", - "create": "Crio" + "create": "Crio", + "update": "Atualização" }, "nav": { "home": "Residencial", @@ -489,7 +520,12 @@ "hostManager": "Gerenciador de Host", "cannotSplitTab": "Não é possível dividir esta aba", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copiar Senha", + "copySudoPassword": "Copiar Senha do Sudo", + "passwordCopied": "Senha copiada para área de transferência", + "sudoPasswordCopied": "Senha sudo copiada para área de transferência", + "noPasswordAvailable": "Nenhuma senha disponível" }, "admin": { "title": "Configurações de administrador", @@ -537,6 +573,7 @@ "userRegistration": "Registro de Usuário", "allowNewAccountRegistration": "Permitir o registro de novas contas", "allowPasswordLogin": "Permitir login do usuário/senha", + "allowPasswordReset": "Permitir redefinição de senha via código de redefinição", "missingRequiredFields": "Faltam campos obrigatórios: {{fields}}", "oidcConfigurationUpdated": "Configuração OIDC atualizada com sucesso!", "failedToFetchOidcConfig": "Falha ao buscar a configuração OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Iniciar automaticamente no lançamento do contêiner", "autoStartDesc": "Iniciar automaticamente este túnel quando o contêiner iniciar", "addConnection": "Adicionar Conexão de Túnel", + "tunnelType": "Tipo de túnel", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remoto (-R)", + "tunnelTypeLocalDesc": "Encaminhar porta local para o ponto de extremidade remota", + "tunnelTypeRemoteDesc": "Encaminhar porta remota para a máquina local", + "tunnelForwardDescriptionLocal": "Este túnel irá encaminhar o tráfego da porta local {{sourcePort}} para a porta {{endpointPort}} na máquina de extremidade.", + "tunnelForwardDescriptionRemote": "Este túnel irá encaminhar o tráfego da porta {{sourcePort}} na máquina de origem (detalhes atuais da conexão em geral) para a porta {{endpointPort}} na máquina de fim de linha.", "sshpassRequired": "Sshpass necessário para autenticação de senha", "sshpassRequiredDesc": "Para autenticação de senha nos túneis, o sshpass deve ser instalado no sistema.", "otherInstallMethods": "Outros métodos de instalação:", @@ -855,13 +899,16 @@ "or": "ou", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Janelas", + "windows": "Windows (WSL, sem binário oficial)", "sshServerConfigRequired": "Configuração do servidor SSH necessária", "sshServerConfigDesc": "Para as conexões do túnel, o servidor SSH deve ser configurado para permitir encaminhamento de portas:", "gatewayPortsYes": "vincular portas remotas a todas as interfaces", "allowTcpForwardingYes": "para habilitar o encaminhamento de porta", "permitRootLoginYes": "se estiver usando um usuário root para tunelamento", - "editSshConfig": "Editar /etc/ssh/sshd_config e reiniciar o SSH: sudo systemctl restart sshd", + "editSshConfig": "Editar o arquivo de configuração SSH:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Em seguida, reinicie o serviço SSH:", + "restartSshCommand": "sudo systemctl reinicia sshd", "upload": "Transferir", "authentication": "Autenticação", "password": "Palavra-passe", @@ -1096,6 +1143,19 @@ "quickActionName": "Nome da ação", "noSnippetFound": "Nenhum snippet encontrado", "quickActionsOrder": "Os botões de ação rápida aparecerão na ordem listada acima na página de estatísticas do servidor", + "sidebarCustomization": "Personalização do botão barra lateral", + "sidebarCustomizationDesc": "Escolha quais ações aparecem como botões rápidos na barra lateral. As ações não aparecem como botões irão aparecer no menu suspenso.", + "showTerminalInSidebar": "Mostrar Botão do Terminal", + "showTerminalInSidebarDesc": "Exibir o terminal como um botão rápido na barra lateral", + "showFileManagerInSidebar": "Mostrar botão do Gerenciador de Arquivos", + "showFileManagerInSidebarDesc": "Exibir o gerenciador de arquivos como um botão rápido na barra lateral", + "showTunnelInSidebar": "Mostrar Botão do Túnel", + "showTunnelInSidebarDesc": "Exibir o gerenciamento do túnel como um botão rápido na barra lateral", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Configurações avançadas de autenticação", "sudoPasswordAutoFill": "Auto-preenchimento de Senha Sudo", "sudoPasswordAutoFillDesc": "Oferecer automaticamente a senha de SSH quando sudo solicitar senha", @@ -1115,6 +1175,15 @@ "addVariable": "Adicionar Variável", "docker": "Atracador", "openDocker": "Abrir Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "O Docker não está habilitado para este host. Habilite nas configurações de Host para usar os recursos Docker.", "validating": "Validando o Docker...", "error": "ERRO", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Código de verificação", "totpPlaceholder": "000000", "totpVerify": "Verificar", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Inserir senha?", "sudoPasswordPopupHint": "Pressione Enter para inserir, Esc para dispensar", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Descartar" + "sudoPasswordPopupDismiss": "Descartar", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Gerenciador de Arquivos", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} excluído com sucesso", "itemsDeletedSuccessfully": "Itens {{count}} excluídos com sucesso", "failedToDeleteItems": "Falha ao excluir itens", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Solte os arquivos aqui para enviar", "emptyFolder": "Esta pasta está vazia", "itemCount": "Itens de {{count}}", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Arquivo muito grande: {{error}}", "sshConnectionFailed": "Falha na conexão SSH. Por favor, verifique sua conexão com {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Falha ao carregar arquivo: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Conectado com sucesso", "totpVerificationFailed": "Falha na verificação TOTP", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Código de verificação:", "changePermissions": "Alterar permissões", "changePermissionsDesc": "Modificar permissões de arquivos para", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Falha ao alterar permissões" }, "tunnel": { - "noTunnelsConfigured": "Nenhum túnel configurado", - "configureTunnelsInHostSettings": "Configure conexões de túnel no Gerenciador de Host para começar" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "Túneis SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "Atualizar status", "fileManagerAlreadyOpen": "Gerenciador de arquivos já aberto para este host", "openFileManager": "Abrir Gerenciador de Arquivos", + "connecting": "Conectandochar@@0", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "CPU {{count}}", "cpuCores_other": "{{count}} CPUs", "naCpus": "N/A CPU(s)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Falha ao buscar métricas do servidor", "failedToFetchHomeData": "Falha ao obter dados de tela inicial", "loadingMetrics": "Carregando métricas...", - "connecting": "Conectandochar@@0", "refreshing": "Atualizando...", "serverOffline": "Servidor Offline", "cannotFetchMetrics": "Não é possível buscar métricas do servidor offline", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Executando {{name}}...", "quickActionSuccess": "{{name}} completado com sucesso", "quickActionFailed": "{{name}} falhou", - "quickActionError": "Falha ao executar {{name}}" + "quickActionError": "Falha ao executar {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "GERENCIADOR DE SERVIDOR SSH", @@ -1824,7 +1964,11 @@ "emailExists": "E-mail já existe", "loadFailed": "Não foi possível carregar os dados", "saveError": "Falha ao salvar", - "sessionExpired": "Sessão expirou - por favor faça o login novamente" + "sessionExpired": "Sessão expirou - por favor faça o login novamente", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Salvo com Sucesso", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Host e Barra Lateral", "snippetsSettings": "Trechos", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Palavra-passe Atual", "passwordChangedSuccess": "Senha alterada com sucesso! Por favor, faça login novamente.", "failedToChangePassword": "Falha ao alterar a senha. Por favor, verifique sua senha atual e tente novamente.", @@ -1890,7 +2037,9 @@ "themeDark": "Escuro", "themeSystem": "SISTEMA", "appearanceDesc": "Selecione o tema de cores para o aplicativo", - "terminalSyntaxHighlightingDesc": "Destacar automaticamente comandos, caminhos, IPs e níveis de log na saída do terminal" + "terminalSyntaxHighlightingDesc": "Destacar automaticamente comandos, caminhos, IPs e níveis de log na saída do terminal", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Falha ao carregar informações da versão" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Painel", + "loading": "Loading dashboard...", "github": "GitHub", "support": "SUPORTE", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Nenhum dado de servidor disponível", "cpu": "cpu", "ram": "RAM", - "notAvailable": "N/D" + "notAvailable": "N/D", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Host de compartilhamento", @@ -2306,9 +2537,15 @@ "notEnabled": "O Docker não está habilitado para este host", "validating": "Validando o Docker...", "connectingToHost": "Conectando ao host...", + "connecting": "Conectandochar@@0", "error": "ERRO", "errorCode": "Código de erro: {{code}}", "version": "{{version}} Docker", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Falha na verificação TOTP. Tente novamente.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Inserir código de verificação", + "loadingContainers": "Carregando contêineres...", "containerStarted": "Contêiner {{name}} iniciado", "failedToStartContainer": "Falha ao iniciar o contêiner {{name}}", "containerStopped": "O contêiner {{name}} parou", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Você tem certeza que deseja remover o contêiner '{{name}}'? Esta ação não pode ser desfeita.", "runningContainerWarning": "Aviso: Este contêiner está em execução no momento. Removê-lo irá parar o contêiner primeiro.", "removing": "Removendo...", - "loadingContainers": "Carregando contêineres...", "noContainersFound": "Nenhum contêiner encontrado", "noContainersFoundHint": "Nenhum contêiner Docker está disponível neste host", "searchPlaceholder": "Procurar contêineres...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Desconectado do contêiner", "containerMustBeRunning": "O contêiner deve estar em execução para acessar o console", "authenticationRequired": "Autenticação requerida", - "verificationCodePrompt": "Inserir código de verificação", - "totpVerificationFailed": "Falha na verificação TOTP. Tente novamente.", "connectedTo": "Conectado a {{containerName}}", "disconnected": "Desconectado", "consoleError": "Erro de console", @@ -2382,7 +2616,6 @@ "bash": "Pancada", "sh": "estrito", "ash": "cinzas", - "connecting": "Conectandochar@@0", "connect": "Conectar", "disconnect": "Desconectar", "notConnected": "Não conectado", @@ -2393,7 +2626,37 @@ "logs": "Registros", "stats": "Estatísticas", "consoleTab": "Console", - "startContainerToAccess": "Iniciar o contêiner para acessar o console" + "startContainerToAccess": "Iniciar o contêiner para acessar o console", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Trocar para Claro", diff --git a/src/locales/translated/ro.json b/src/locales/translated/ro.json index a91e718e..b25dff9a 100644 --- a/src/locales/translated/ro.json +++ b/src/locales/translated/ro.json @@ -44,6 +44,8 @@ "passwordRequired": "Parola este obligatorie", "sshKeyRequired": "Cheia SSH este necesară", "credentialAddedSuccessfully": "Acreditare: „{{name}}” adăugat cu succes", + "savingCredential": "Salvare acreditare...", + "updatingCredential": "Actualizare acreditare...", "general": "Generalități", "description": "Descriere", "folder": "Dosar", @@ -184,6 +186,32 @@ "renameFolder": "Redenumire folder", "idLabel": "ID:" }, + "quickConnect": { + "title": "Conectare rapidă", + "description": "Conectează-te direct la o sesiune de administrare a fișierelor fără a salva o configurație gazdă", + "ipAddress": "Adresă IP sau nume gazdă", + "port": "Portul", + "username": "Nume", + "password": "Parolă", + "key": "Cheie Privată SSH", + "keyPassword": "Parolă cheie (opțional)", + "keyType": "Tip cheie", + "uploadFile": "Incarca fisier", + "pasteKey": "Lipește cheia", + "credential": "Acreditări", + "overrideUsername": "Suprascrie utilizatorul de acreditare", + "overrideUsernameDesc": "Utilizați un nume de utilizator diferit față de cel stocat în acreditările", + "connectTerminal": "Conectează-te la Terminal", + "connectFileManager": "Conectează-te la Managerul de Fișiere", + "cancel": "Anulează", + "passwordRequired": "Parola este obligatorie", + "keyRequired": "Cheia SSH este necesară", + "credentialRequired": "Selecția acreditărilor este necesară", + "connectionEstablished": "Conexiune stabilită cu succes", + "connectionFailed": "Crearea conexiunii a eșuat", + "autoDetect": "Detectare automată", + "authentication": "Autentificare" + }, "dragIndicator": { "error": "Eroare: {{error}}", "dragging": "Draging {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Cale SSH", "localPath": "Cale locală", "appName": "Termen", + "openInNewTab": "Deschide într-o filă nouă", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Trageți pentru a redimensiona bara laterală", "noAuthCredentials": "Acreditările de autentificare nu sunt disponibile pentru această gazdă SSH", @@ -464,10 +493,12 @@ "retry": "Reîncercați", "checking": "Verificare...", "checkingDatabase": "Verificare conexiune la baza de date...", + "checkingAuthentication": "Verificare autentificare...", "actions": "Acțiuni", "remove": "Elimină", "revoke": "Revoke", - "create": "Crează" + "create": "Crează", + "update": "Actualizare" }, "nav": { "home": "Acasă", @@ -489,7 +520,12 @@ "hostManager": "Manager Gazdă", "cannotSplitTab": "Nu se poate împărți această filă", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copiază parola", + "copySudoPassword": "Copiază parola Sudo", + "passwordCopied": "Parola a fost copiată în clipboard", + "sudoPasswordCopied": "Parolă Sudo copiată în clipboard", + "noPasswordAvailable": "Nici o parolă disponibilă" }, "admin": { "title": "Setări Admin", @@ -537,6 +573,7 @@ "userRegistration": "Înregistrare utilizator", "allowNewAccountRegistration": "Permite înregistrarea unui cont nou", "allowPasswordLogin": "Permiteți username/password login", + "allowPasswordReset": "Permite resetarea parolei prin codul de resetare", "missingRequiredFields": "Câmpuri obligatorii lipsă: {{fields}}", "oidcConfigurationUpdated": "Configurație OIDC actualizată cu succes!", "failedToFetchOidcConfig": "Nu s-a reușit preluarea configurației OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Pornire automată la lansarea containerului", "autoStartDesc": "Pornește automat acest tunel atunci când containerul este lansat", "addConnection": "Adaugă conexiune Tunel", + "tunnelType": "Tip tunel", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Distanta (-R)", + "tunnelTypeLocalDesc": "Redirecționează portul local la distanță", + "tunnelTypeRemoteDesc": "Înaintează portul de la distanță către mașina locală", + "tunnelForwardDescriptionLocal": "Acest tunel va redirecționa traficul din portul local {{sourcePort}} către portul {{endpointPort}} pe mașina de final.", + "tunnelForwardDescriptionRemote": "Acest tunel va redirecționa traficul de la portul {{sourcePort}} de pe aparatul sursă (detaliile curente ale conexiunii în general tab) către portul {{endpointPort}} pe aparatul de control.", "sshpassRequired": "Sshpass necesar pentru Autentificarea Parolei", "sshpassRequiredDesc": "Pentru autentificarea cu parolă în tuneluri, sshpass trebuie să fie instalat în sistem.", "otherInstallMethods": "Alte metode de instalare:", @@ -855,13 +899,16 @@ "or": "sau", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Ferestre", + "windows": "Windows (WSL, fără binar oficial)", "sshServerConfigRequired": "Este necesară configurarea serverului SSH", "sshServerConfigDesc": "Pentru conexiunile tunelului, serverul SSH trebuie să fie configurat pentru a permite portul de înaintare:", "gatewayPortsYes": "pentru a lega porturile de la distanţă de toate interfeţele", "allowTcpForwardingYes": "pentru a permite redirecționarea portului", "permitRootLoginYes": "dacă folosește utilizator root pentru tunelare", - "editSshConfig": "Editați /etc/ssh/sshd_config și reporniți SSH: sudo systemctl reporniți sshd", + "editSshConfig": "Editează fișierul de configurare SSH:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Apoi reporniți serviciul SSH:", + "restartSshCommand": "sudo systemctl repornire sshd", "upload": "Incarca", "authentication": "Autentificare", "password": "Parolă", @@ -1096,6 +1143,19 @@ "quickActionName": "Nume acţiune", "noSnippetFound": "Nici un snippet găsit", "quickActionsOrder": "Butoanele de acţiune rapidă vor apărea în ordinea listate mai sus pe pagina de Statistici Server", + "sidebarCustomization": "Personalizare buton bară laterală", + "sidebarCustomizationDesc": "Alegeți ce acțiuni apar ca butoane rapide în bara laterală. Acțiunile care nu sunt afișate ca butoane vor apărea în meniul derulant.", + "showTerminalInSidebar": "Afișare buton terminal", + "showTerminalInSidebarDesc": "Afişează terminalul ca un buton rapid în bara laterală", + "showFileManagerInSidebar": "Arată butonul Manager de Fișiere", + "showFileManagerInSidebarDesc": "Afișează managerul de fișiere ca un buton rapid în bara laterală", + "showTunnelInSidebar": "Arată butonul tunel", + "showTunnelInSidebarDesc": "Afișează gestionarea tunelului ca un buton rapid în bara laterală", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Setări avansate de autentificare", "sudoPasswordAutoFill": "Completare automată parolă Sudo", "sudoPasswordAutoFillDesc": "Oferă automat introducerea parolei SSH atunci când solicită parola", @@ -1115,6 +1175,15 @@ "addVariable": "Adaugă variabilă", "docker": "Doctor", "openDocker": "Deschide Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Dockerul nu este activat pentru această gazdă. Activați-l în Setările Gazdei pentru a utiliza funcțiile Docker.", "validating": "Se validează Doctorul...", "error": "Eroare", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Cod de verificare", "totpPlaceholder": "000000", "totpVerify": "Verifică", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Introduceți parola?", "sudoPasswordPopupHint": "Apăsați Enter pentru inserare, Esc pentru a respinge", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Renunţaţi" + "sudoPasswordPopupDismiss": "Renunţaţi", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Manager fişiere", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} șters cu succes", "itemsDeletedSuccessfully": "{{count}} elemente șterse cu succes", "failedToDeleteItems": "Ștergerea elementelor a eșuat", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Plasați fișierele aici pentru a le încărca", "emptyFolder": "Acest dosar este gol", "itemCount": "{{count}} articole", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Fișier prea mare: {{error}}", "sshConnectionFailed": "Conexiunea SSH a eșuat. Verificați conexiunea la {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Eroare la încărcarea fișierului: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Conectat cu succes", "totpVerificationFailed": "Verificarea TOTP a eșuat", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Cod de verificare:", "changePermissions": "Schimbă Permisiunile", "changePermissionsDesc": "Modifică permisiunile fişierului pentru", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Schimbarea permisiunilor a eșuat" }, "tunnel": { - "noTunnelsConfigured": "Nicio tuneluri configurată", - "configureTunnelsInHostSettings": "Configurați conexiunile tunelului în Managerul de Gazdă pentru a începe" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "Tuneluri SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "Reîmprospătare stare", "fileManagerAlreadyOpen": "Gestionarul de fişiere este deja deschis pentru această gazdă", "openFileManager": "Deschide managerul de fişiere", + "connecting": "Conectare...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} procesoare", "naCpus": "N/un procesor", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Preluarea valorilor serverului a eșuat", "failedToFetchHomeData": "Preluarea datelor de acasă a eșuat", "loadingMetrics": "Se încarcă măsurile...", - "connecting": "Conectare...", "refreshing": "Reîmprospătare...", "serverOffline": "Server offline", "cannotFetchMetrics": "Valorile nu pot fi preluate de pe serverul offline", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Executând {{name}}...", "quickActionSuccess": "{{name}} completat cu succes", "quickActionFailed": "{{name}} a eșuat", - "quickActionError": "Eșec la executarea {{name}}" + "quickActionError": "Eșec la executarea {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "GESTIONAREA SERVER SSH", @@ -1824,7 +1964,11 @@ "emailExists": "E-mailul există deja", "loadFailed": "Încărcarea datelor a eșuat", "saveError": "Salvarea nu a reușit", - "sessionExpired": "Sesiunea a expirat - vă rugăm să vă autentificați din nou" + "sessionExpired": "Sesiunea a expirat - vă rugăm să vă autentificați din nou", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Salvat cu succes", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Găzduire și bară laterală", "snippetsSettings": "Snippet-uri", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Parola curentă", "passwordChangedSuccess": "Parola a fost schimbată! Te rugăm să te autentifici din nou.", "failedToChangePassword": "Modificarea parolei a eșuat. Te rugăm să verifici parola curentă și să încerci din nou.", @@ -1890,7 +2037,9 @@ "themeDark": "Întunecat", "themeSystem": "Sistem", "appearanceDesc": "Selectaţi tema de culoare pentru aplicaţie", - "terminalSyntaxHighlightingDesc": "Evidențiază automat comenzile, căile de acces, IP-urile și nivelurile de log în ieșirea terminalului" + "terminalSyntaxHighlightingDesc": "Evidențiază automat comenzile, căile de acces, IP-urile și nivelurile de log în ieșirea terminalului", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Încărcarea informațiilor versiunii a eșuat" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Panou", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Suport", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Nu sunt disponibile date de server", "cpu": "procesor", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Distribuie gazda", @@ -2306,9 +2537,15 @@ "notEnabled": "Dockerul nu este activat pentru această gazdă", "validating": "Se validează Doctorul...", "connectingToHost": "Conectare la gazdă...", + "connecting": "Conectare...", "error": "Eroare", "errorCode": "Cod eroare: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Verificarea TOTP a eșuat. Încercați din nou.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Introduceți codul de verificare", + "loadingContainers": "Se încarcă containerele...", "containerStarted": "Container {{name}} a început", "failedToStartContainer": "Pornirea containerului {{name}} a eșuat", "containerStopped": "Container {{name}} oprit", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Sunteți sigur că doriți să eliminați containerul '{{name}}'? Această acțiune nu poate fi anulată.", "runningContainerWarning": "Avertisment: Acest recipient rulează. Scoaterea va opri mai întâi containerul.", "removing": "Eliminare...", - "loadingContainers": "Se încarcă containerele...", "noContainersFound": "Nici un container găsit", "noContainersFoundHint": "Nu sunt containere docker disponibile pe această gazdă", "searchPlaceholder": "Căutare containere...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Deconectat de la container", "containerMustBeRunning": "Containerul trebuie să ruleze pentru a accesa consola", "authenticationRequired": "Este necesară autentificarea", - "verificationCodePrompt": "Introduceți codul de verificare", - "totpVerificationFailed": "Verificarea TOTP a eșuat. Încercați din nou.", "connectedTo": "Conectat la {{containerName}}", "disconnected": "Deconectat", "consoleError": "Eroare de consolă", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "pânză", "ash": "cenuşă", - "connecting": "Conectare...", "connect": "Conectează-te", "disconnect": "Deconectare", "notConnected": "Nu este conectat", @@ -2393,7 +2626,37 @@ "logs": "Jurnale", "stats": "Statistici", "consoleTab": "Consolă", - "startContainerToAccess": "Porniți containerul pentru a accesa consola" + "startContainerToAccess": "Porniți containerul pentru a accesa consola", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Comutați la lumină", diff --git a/src/locales/translated/ru.json b/src/locales/translated/ru.json index a8b4fe60..314be7c3 100644 --- a/src/locales/translated/ru.json +++ b/src/locales/translated/ru.json @@ -44,6 +44,8 @@ "passwordRequired": "Требуется пароль", "sshKeyRequired": "Требуется SSH ключ", "credentialAddedSuccessfully": "Учетные данные \"{{name}}\" успешно добавлены", + "savingCredential": "Сохранение учетных данных...", + "updatingCredential": "Обновление учетных данных...", "general": "Общие положения", "description": "Описание", "folder": "Папка", @@ -184,6 +186,32 @@ "renameFolder": "Переименовать папку", "idLabel": "ID:" }, + "quickConnect": { + "title": "Быстрое подключение", + "description": "Подключиться непосредственно к терминалу или сессии файлового менеджера без сохранения конфигурации хоста", + "ipAddress": "IP-адрес или имя хоста", + "port": "Порт", + "username": "Имя пользователя", + "password": "Пароль", + "key": "SSH закрытый ключ", + "keyPassword": "Пароль ключа (необязательно)", + "keyType": "Тип ключа", + "uploadFile": "Загрузить файл", + "pasteKey": "Вставить ключ", + "credential": "Полномочия", + "overrideUsername": "Переопределить имя пользователя", + "overrideUsernameDesc": "Используйте другое имя пользователя, чем тот, который хранится в учетных данных", + "connectTerminal": "Подключиться к терминалу", + "connectFileManager": "Подключиться к файловому менеджеру", + "cancel": "Отмена", + "passwordRequired": "Требуется пароль", + "keyRequired": "Требуется SSH ключ", + "credentialRequired": "Требуется выбор учетных данных", + "connectionEstablished": "Соединение успешно установлено", + "connectionFailed": "Не удалось установить соединение", + "autoDetect": "Автоопределение", + "authentication": "Проверка подлинности" + }, "dragIndicator": { "error": "Ошибка: {{error}}", "dragging": "Перетаскивание {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Путь SSH", "localPath": "Локальный путь", "appName": "Термикс", + "openInNewTab": "Открыть в новой вкладке", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Перетащите для изменения размера боковой панели", "noAuthCredentials": "Нет учетных данных для этого SSH хоста", @@ -464,10 +493,12 @@ "retry": "Повторить", "checking": "Проверка...", "checkingDatabase": "Проверка подключения к базе данных...", + "checkingAuthentication": "Проверка подлинности...", "actions": "Действия", "remove": "Удалить", "revoke": "Revoke", - "create": "Создать" + "create": "Создать", + "update": "Обновить" }, "nav": { "home": "Домашний", @@ -489,7 +520,12 @@ "hostManager": "Менеджер хостов", "cannotSplitTab": "Нельзя разделить эту вкладку", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Скопировать пароль", + "copySudoPassword": "Скопировать пароль Sudo", + "passwordCopied": "Пароль скопирован в буфер обмена", + "sudoPasswordCopied": "Sudo пароль скопирован в буфер обмена", + "noPasswordAvailable": "Пароль не доступен" }, "admin": { "title": "Админ настройки", @@ -537,6 +573,7 @@ "userRegistration": "Регистрация пользователя", "allowNewAccountRegistration": "Разрешить регистрацию нового аккаунта", "allowPasswordLogin": "Разрешить логин и пароль", + "allowPasswordReset": "Разрешить сброс пароля через код сброса", "missingRequiredFields": "Отсутствуют обязательные поля: {{fields}}", "oidcConfigurationUpdated": "Конфигурация OIDC успешно обновлена!", "failedToFetchOidcConfig": "Не удалось получить конфигурацию OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Автозапуск при запуске контейнера", "autoStartDesc": "Автоматически запускать этот туннель при запуске контейнера", "addConnection": "Добавить туннельное соединение", + "tunnelType": "Тип туннеля", + "tunnelTypeLocal": "Локальный (-L)", + "tunnelTypeRemote": "Удалённый (-R)", + "tunnelTypeLocalDesc": "Переслать локальный порт на удаленную конечную точку", + "tunnelTypeRemoteDesc": "Переслать удаленный порт на локальную машину", + "tunnelForwardDescriptionLocal": "Этот туннель будет перенаправлять трафик с локального порта {{sourcePort}} в порт {{endpointPort}} на конечной машине.", + "tunnelForwardDescriptionRemote": "Этот туннель будет перенаправлять трафик с порта {{sourcePort}} на исходной машине (текущая информация о соединении) на порт {{endpointPort}} на конечной машине.", "sshpassRequired": "Для аутентификации пароля требуется Sshpass", "sshpassRequiredDesc": "Для аутентификации паролей в туннелях в системе должен быть установлен sshpass.", "otherInstallMethods": "Другие методы установки:", @@ -855,13 +899,16 @@ "or": "или", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Окна", + "windows": "Windows (WSL, нет официального двоичного файла)", "sshServerConfigRequired": "Требуется настройка SSH сервера", "sshServerConfigDesc": "Для туннельных соединений SSH сервер должен быть настроен для проброса портов:", "gatewayPortsYes": "привязка удаленных портов ко всем интерфейсам", "allowTcpForwardingYes": "чтобы включить пересылку портов", "permitRootLoginYes": "если пользователь root для туннелирования", - "editSshConfig": "Редактировать /etc/ssh/sshd_config и перезапустить SSH: sudo systemctl перезапустить sshd", + "editSshConfig": "Редактировать файл конфигурации SSH:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Затем перезапустите службу SSH:", + "restartSshCommand": "sudo systemctl перезапуск sshd", "upload": "Выгрузить", "authentication": "Проверка подлинности", "password": "Пароль", @@ -1096,6 +1143,19 @@ "quickActionName": "Название действия", "noSnippetFound": "Сниппет не найден", "quickActionsOrder": "Кнопки быстрых действий появятся в порядке, указанном выше на странице Статистика сервера", + "sidebarCustomization": "Настройка кнопок боковой панели", + "sidebarCustomizationDesc": "Выберите, какие действия отображаются как быстрые кнопки на боковой панели. Действия не отображаются в выпадающем меню.", + "showTerminalInSidebar": "Показать кнопку терминала", + "showTerminalInSidebarDesc": "Отображать терминал как кнопку быстрого доступа в боковой панели", + "showFileManagerInSidebar": "Показать кнопку диспетчера файлов", + "showFileManagerInSidebarDesc": "Показывать файловый менеджер как кнопку быстрого доступа в боковой панели", + "showTunnelInSidebar": "Показать кнопку Туннеля", + "showTunnelInSidebarDesc": "Отображать управление туннелями как кнопку быстрого доступа в боковой панели", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Расширенные настройки аутентификации", "sudoPasswordAutoFill": "Автозаполнение пароля", "sudoPasswordAutoFillDesc": "Автоматически предлагать вставить SSH пароль при запросах sudo к паролю", @@ -1115,6 +1175,15 @@ "addVariable": "Добавить переменную", "docker": "Докер", "openDocker": "Открыть докер", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Для этого узла Docker не включен. Включите его в настройках хоста, чтобы использовать функции Docker.", "validating": "Проверка докера...", "error": "Ошибка", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Проверочный код", "totpPlaceholder": "000000", "totpVerify": "Подтвердить", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Вставить пароль?", "sudoPasswordPopupHint": "Нажмите Enter для вставки, Esc для отключения", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Отклонить" + "sudoPasswordPopupDismiss": "Отклонить", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Файловый менеджер", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} успешно удален", "itemsDeletedSuccessfully": "{{count}} элементы успешно удалены", "failedToDeleteItems": "Не удалось удалить элементы", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Перетащите файлы сюда, чтобы загрузить", "emptyFolder": "Эта папка пуста", "itemCount": "{{count}} элементов", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Файл слишком большой: {{error}}", "sshConnectionFailed": "Не удалось подключиться к SSH. Пожалуйста, проверьте подключение к {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Не удалось загрузить файл: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Подключено успешно", "totpVerificationFailed": "Ошибка проверки TOTP", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Код подтверждения:", "changePermissions": "Изменить права доступа", "changePermissionsDesc": "Изменение прав доступа к файлу для", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Не удалось изменить права доступа" }, "tunnel": { - "noTunnelsConfigured": "Туннели не настроены", - "configureTunnelsInHostSettings": "Настроить туннельные соединения в менеджере хостов для начала" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH туннели", @@ -1624,6 +1736,8 @@ "refreshStatus": "Обновить статус", "fileManagerAlreadyOpen": "Файловый менеджер уже открыт для этого узла", "openFileManager": "Открыть файловый менеджер", + "connecting": "Подключение...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} ЦП", "cpuCores_other": "{{count}} ядер", "naCpus": "Н/А ЦП(и)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Не удалось получить метрики сервера", "failedToFetchHomeData": "Не удалось получить данные о доме", "loadingMetrics": "Загрузка метрик...", - "connecting": "Подключение...", "refreshing": "Обновление...", "serverOffline": "Сервер оффлайн", "cannotFetchMetrics": "Не удается получить метрики с сервера оффлайн", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Выполнение {{name}}...", "quickActionSuccess": "{{name}} успешно завершен", "quickActionFailed": "{{name}} не удалось", - "quickActionError": "Не удалось выполнить {{name}}" + "quickActionError": "Не удалось выполнить {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "УПРАВЛЕНИЕ СЕРВЕРА ССИ", @@ -1824,7 +1964,11 @@ "emailExists": "Адрес электронной почты уже существует", "loadFailed": "Не удалось загрузить данные", "saveError": "Не удалось сохранить", - "sessionExpired": "Истек срок действия сессии - пожалуйста, войдите снова" + "sessionExpired": "Истек срок действия сессии - пожалуйста, войдите снова", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Сохранено успешно", @@ -1882,6 +2026,9 @@ "terminalSettings": "Терминал", "hostSidebarSettings": "Узел и боковая панель", "snippetsSettings": "Сниппеты", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Текущий пароль", "passwordChangedSuccess": "Пароль успешно изменен! Пожалуйста, войдите снова.", "failedToChangePassword": "Не удалось изменить пароль. Пожалуйста, проверьте ваш текущий пароль и повторите попытку.", @@ -1890,7 +2037,9 @@ "themeDark": "Тёмная", "themeSystem": "Система", "appearanceDesc": "Выберите цвет темы для приложения", - "terminalSyntaxHighlightingDesc": "Автоматически выделять команды, пути, IP-адреса и уровни журнала в выводе терминала" + "terminalSyntaxHighlightingDesc": "Автоматически выделять команды, пути, IP-адреса и уровни журнала в выводе терминала", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Не удалось загрузить информацию о версии" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Панель", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Поддержка", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Нет доступных данных сервера", "cpu": "ЦП", "ram": "RAM", - "notAvailable": "Н/Д" + "notAvailable": "Н/Д", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Поделиться хостом", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker не включен для этого узла", "validating": "Проверка докера...", "connectingToHost": "Подключение к хосту...", + "connecting": "Подключение...", "error": "Ошибка", "errorCode": "Код ошибки: {{code}}", "version": "Докер {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Ошибка проверки TOTP. Пожалуйста, попробуйте еще раз.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Введите код подтверждения", + "loadingContainers": "Загрузка контейнеров...", "containerStarted": "Запущен контейнер {{name}}", "failedToStartContainer": "Не удалось запустить контейнер {{name}}", "containerStopped": "Контейнер {{name}} остановлен", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Вы уверены, что хотите удалить контейнер '{{name}}'? Это действие нельзя отменить.", "runningContainerWarning": "Предупреждение: Этот контейнер в настоящее время запущен. Удаление его сначала остановит контейнер.", "removing": "Удаление...", - "loadingContainers": "Загрузка контейнеров...", "noContainersFound": "Контейнеры не найдены", "noContainersFoundHint": "На этом узле нет доступных контейнеров Docker", "searchPlaceholder": "Поиск контейнеров...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Отключено от контейнера", "containerMustBeRunning": "Контейнер должен быть запущен для доступа к консоли", "authenticationRequired": "Требуется аутентификация", - "verificationCodePrompt": "Введите код подтверждения", - "totpVerificationFailed": "Ошибка проверки TOTP. Пожалуйста, попробуйте еще раз.", "connectedTo": "Подключено к {{containerName}}", "disconnected": "Отключено", "consoleError": "Ошибка консоли", @@ -2382,7 +2616,6 @@ "bash": "Баш", "sh": "сч", "ash": "пепел", - "connecting": "Подключение...", "connect": "Подключиться", "disconnect": "Отключиться", "notConnected": "Не подключен", @@ -2393,7 +2626,37 @@ "logs": "Логи", "stats": "Статистика", "consoleTab": "Консоль", - "startContainerToAccess": "Запустите контейнер для доступа к консоли" + "startContainerToAccess": "Запустите контейнер для доступа к консоли", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Переключиться на светлый", diff --git a/src/locales/translated/sr.json b/src/locales/translated/sr.json index d9d4cdcd..216e1318 100644 --- a/src/locales/translated/sr.json +++ b/src/locales/translated/sr.json @@ -44,6 +44,8 @@ "passwordRequired": "Лозинка је потребна", "sshKeyRequired": "SSH кључ је потребан", "credentialAddedSuccessfully": "Акредитив „{{name}}“ је успешно додат", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "Опште", "description": "Опис", "folder": "Фасцикла", @@ -184,6 +186,32 @@ "renameFolder": "Преименуј фасциклу", "idLabel": "ИД:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "Грешка: {{error}}", "dragging": "Превлачење {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH путања", "localPath": "Локална путања", "appName": "Термикс", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "Ресетуј ширину бочне траке", "dragToResizeSidebar": "Превуците да бисте променили величину бочне траке", "noAuthCredentials": "Нема доступних акредитива за аутентификацију за овај SSH хост", @@ -464,10 +493,12 @@ "retry": "Покушај поново", "checking": "Провера...", "checkingDatabase": "Провера везе са базом података...", + "checkingAuthentication": "Checking authentication...", "actions": "Акције", "remove": "Уклони", "revoke": "Поништи", - "create": "Креирај" + "create": "Креирај", + "update": "Update" }, "nav": { "home": "Дом", @@ -489,7 +520,12 @@ "hostManager": "Менаџер домаћина", "cannotSplitTab": "Није могуће поделити ову картицу", "tabNavigation": "Навигација по картицама", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "Администраторска подешавања", @@ -537,6 +573,7 @@ "userRegistration": "Регистрација корисника", "allowNewAccountRegistration": "Дозволи регистрацију новог налога", "allowPasswordLogin": "Дозволи пријаву корисничким именом/лозинком", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "Недостају обавезна поља: {{fields}}", "oidcConfigurationUpdated": "OIDC конфигурација је успешно ажурирана!", "failedToFetchOidcConfig": "Није успело преузимање OIDC конфигурације", @@ -848,6 +885,13 @@ "autoStartContainer": "Аутоматски старт при покретању контејнера", "autoStartDesc": "Аутоматски покрени овај тунел када се контејнер покрене", "addConnection": "Додај везу са тунелом", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "Sshpass је потребан за аутентификацију лозинком", "sshpassRequiredDesc": "За аутентификацију лозинком у тунелима, sshpass мора бити инсталиран на систему.", "otherInstallMethods": "Други начини инсталације:", @@ -855,13 +899,16 @@ "or": "или", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Прозори", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "Потребна је конфигурација SSH сервера", "sshServerConfigDesc": "За тунелске везе, SSH сервер мора бити конфигурисан да дозволи прослеђивање портова:", "gatewayPortsYes": "повезивање удаљених портова са свим интерфејсима", "allowTcpForwardingYes": "да бисте омогућили прослеђивање портова", "permitRootLoginYes": "ако се користи root корисник за тунелирање", - "editSshConfig": "Измените /etc/ssh/sshd_config и поново покрените SSH: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Отпреми", "authentication": "Аутентификација", "password": "Лозинка", @@ -1096,6 +1143,19 @@ "quickActionName": "Назив акције", "noSnippetFound": "Није пронађен исечак", "quickActionsOrder": "Дугмад за брзе акције ће се појавити редоследом наведеним горе на страници са статистиком сервера", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Напредна подешавања аутентификације", "sudoPasswordAutoFill": "Аутоматско попуњавање лозинке за Судо", "sudoPasswordAutoFillDesc": "Аутоматски понуди унос SSH лозинке када sudo затражи лозинку", @@ -1115,6 +1175,15 @@ "addVariable": "Додај променљиву", "docker": "Докер", "openDocker": "Отвори Докер", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Докер није омогућен за овај хост. Омогућите га у подешавањима хоста да бисте користили Докер функције.", "validating": "Валидација Докера...", "error": "Грешка", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Верификациони код", "totpPlaceholder": "000000", "totpVerify": "Верификуј", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Унети лозинку?", "sudoPasswordPopupHint": "Притисните Enter да бисте унели, Esc да бисте одбацили", "sudoPasswordPopupConfirm": "Уметни", - "sudoPasswordPopupDismiss": "Одбаци" + "sudoPasswordPopupDismiss": "Одбаци", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Менаџер датотека", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} је успешно обрисано", "itemsDeletedSuccessfully": "{{count}} ставке су успешно обрисане", "failedToDeleteItems": "Брисање ставки није успело", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Отпустите датотеке овде да бисте их отпремили", "emptyFolder": "Ова фасцикла је празна", "itemCount": "{{count}} ставке", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Датотека је превелика: {{error}}", "sshConnectionFailed": "SSH веза није успела. Молимо вас да проверите везу са {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Није успело учитавање датотеке: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Успешно повезано", "totpVerificationFailed": "Верификација TOTP-а није успела", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Верификациони код:", "changePermissions": "Промени дозволе", "changePermissionsDesc": "Измените дозволе за датотеке за", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Промена дозвола није успела" }, "tunnel": { - "noTunnelsConfigured": "Није конфигурисан ниједан тунел", - "configureTunnelsInHostSettings": "Конфигуришите тунелске везе у Host Manager-у да бисте започели" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH тунели", @@ -1624,6 +1736,8 @@ "refreshStatus": "Освежи статус", "fileManagerAlreadyOpen": "Менаџер датотека је већ отворен за овај хост", "openFileManager": "Отвори менаџер датотека", + "connecting": "Повезивање...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} Процесор", "cpuCores_other": "{{count}} процесори", "naCpus": "Н/Д процесор(и)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Није успело преузимање метрика сервера", "failedToFetchHomeData": "Преузимање кућних података није успело", "loadingMetrics": "Учитавање метрика...", - "connecting": "Повезивање...", "refreshing": "Освежавање...", "serverOffline": "Сервер ван мреже", "cannotFetchMetrics": "Није могуће преузети метрике са офлајн сервера", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Извршава се {{name}}...", "quickActionSuccess": "{{name}} успешно завршено", "quickActionFailed": "{{name}} није успело", - "quickActionError": "Није успело извршавање {{name}}" + "quickActionError": "Није успело извршавање {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH МЕНАЏЕР СЕРВЕРА", @@ -1824,7 +1964,11 @@ "emailExists": "Имејл адреса већ постоји", "loadFailed": "Учитавање података није успело", "saveError": "Чување није успело", - "sessionExpired": "Сесија је истекла - молимо вас да се поново пријавите" + "sessionExpired": "Сесија је истекла - молимо вас да се поново пријавите", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Успешно сачувано", @@ -1882,6 +2026,9 @@ "terminalSettings": "Терминал", "hostSidebarSettings": "Домаћин и бочна трака", "snippetsSettings": "Исечци", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Тренутна лозинка", "passwordChangedSuccess": "Лозинка је успешно промењена! Молимо вас да се поново пријавите.", "failedToChangePassword": "Промена лозинке није успела. Проверите тренутну лозинку и покушајте поново.", @@ -1890,7 +2037,9 @@ "themeDark": "Тамно", "themeSystem": "Систем", "appearanceDesc": "Изаберите тему боја за апликацију", - "terminalSyntaxHighlightingDesc": "Аутоматски истакните команде, путање, IP адресе и нивое логова у терминалном излазу" + "terminalSyntaxHighlightingDesc": "Аутоматски истакните команде, путање, IP адресе и нивое логова у терминалном излазу", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Учитавање информација о верзији није успело" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Контролна табла", + "loading": "Loading dashboard...", "github": "ГитХаб", "support": "Подршка", "discord": "Неслагање", @@ -2114,7 +2264,88 @@ "noServerData": "Нема доступних података са сервера", "cpu": "Процесор", "ram": "РАМ меморија", - "notAvailable": "Н/Д" + "notAvailable": "Н/Д", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Дели хост", @@ -2306,9 +2537,15 @@ "notEnabled": "Докер није омогућен за овај хост", "validating": "Валидација Докера...", "connectingToHost": "Повезивање са хостом...", + "connecting": "Повезивање...", "error": "Грешка", "errorCode": "Код грешке: {{code}}", "version": "Докер {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Верификација TOTP-а није успела. Молимо покушајте поново.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Унесите верификациони код", + "loadingContainers": "Учитавање контејнера...", "containerStarted": "Контејнер {{name}} је покренут", "failedToStartContainer": "Покретање контејнера {{name}}није успело", "containerStopped": "Контејнер {{name}} је заустављен", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Да ли сте сигурни да желите да уклоните контејнер '{{name}}'? Ова радња се не може поништити.", "runningContainerWarning": "Упозорење: Овај контејнер је тренутно покренут. Његово уклањање ће прво зауставити рад контејнера.", "removing": "Уклањање...", - "loadingContainers": "Учитавање контејнера...", "noContainersFound": "Нису пронађени контејнери", "noContainersFoundHint": "На овом хосту нису доступни Docker контејнери", "searchPlaceholder": "Претражи контејнере...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Искључено из контејнера", "containerMustBeRunning": "Контејнер мора бити покренут да би се приступило конзоли", "authenticationRequired": "Потребна је аутентификација", - "verificationCodePrompt": "Унесите верификациони код", - "totpVerificationFailed": "Верификација TOTP-а није успела. Молимо покушајте поново.", "connectedTo": "Повезано са {{containerName}}", "disconnected": "Искључено", "consoleError": "Грешка конзоле", @@ -2382,7 +2616,6 @@ "bash": "Баш", "sh": "ш", "ash": "пепео", - "connecting": "Повезивање...", "connect": "Повежи се", "disconnect": "Прекини везу", "notConnected": "Није повезано", @@ -2393,7 +2626,37 @@ "logs": "Дневници", "stats": "Статистика", "consoleTab": "Конзола", - "startContainerToAccess": "Покрените контејнер да бисте приступили конзоли" + "startContainerToAccess": "Покрените контејнер да бисте приступили конзоли", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Пребаци на светло", diff --git a/src/locales/translated/sv.json b/src/locales/translated/sv.json index 64de1041..0de6c3b4 100644 --- a/src/locales/translated/sv.json +++ b/src/locales/translated/sv.json @@ -44,6 +44,8 @@ "passwordRequired": "Lösenord krävs", "sshKeyRequired": "SSH-nyckel krävs", "credentialAddedSuccessfully": "Credential \"{{name}}\" har lagts till", + "savingCredential": "Sparar inloggningsuppgifter...", + "updatingCredential": "Uppdaterar användarinformation...", "general": "Allmänt", "description": "Beskrivning", "folder": "Mapp", @@ -184,6 +186,32 @@ "renameFolder": "Döp om mapp", "idLabel": "ID:" }, + "quickConnect": { + "title": "Snabb anslutning", + "description": "Anslut direkt till en terminal- eller filhanterarsession utan att spara en värdkonfiguration", + "ipAddress": "IP-adress eller värdnamn", + "port": "Port", + "username": "Användarnamn", + "password": "Lösenord", + "key": "SSH privat nyckel", + "keyPassword": "Nyckellösenord (valfritt)", + "keyType": "Nyckel typ", + "uploadFile": "Ladda upp fil", + "pasteKey": "Klistra in nyckel", + "credential": "Uppgifter", + "overrideUsername": "Åsidosätt Användarnamn", + "overrideUsernameDesc": "Använd ett annat användarnamn än det som sparats i inloggningsuppgifterna", + "connectTerminal": "Anslut till terminal", + "connectFileManager": "Anslut till filhanteraren", + "cancel": "Avbryt", + "passwordRequired": "Lösenord krävs", + "keyRequired": "SSH-nyckel krävs", + "credentialRequired": "Behörighetsval krävs", + "connectionEstablished": "Anslutningen har upprättats", + "connectionFailed": "Det gick inte att upprätta kontakt", + "autoDetect": "Identifiera automatiskt", + "authentication": "Autentisering" + }, "dragIndicator": { "error": "Fel: {{error}}", "dragging": "Dra {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH sökväg", "localPath": "Lokal sökväg", "appName": "Termix", + "openInNewTab": "Öppna i ny flik", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Dra för att ändra storlek på sidofältet", "noAuthCredentials": "Inga autentiseringsuppgifter tillgängliga för denna SSH-värd", @@ -464,10 +493,12 @@ "retry": "Försök igen", "checking": "Kontrollerar...", "checkingDatabase": "Kontrollerar databasanslutning...", + "checkingAuthentication": "Kontrollerar autentisering...", "actions": "Åtgärder", "remove": "Radera", "revoke": "Revoke", - "create": "Skapa" + "create": "Skapa", + "update": "Uppdatera" }, "nav": { "home": "Hem", @@ -489,7 +520,12 @@ "hostManager": "Värdhanterare", "cannotSplitTab": "Kan inte dela den här fliken", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Kopiera lösenord", + "copySudoPassword": "Kopiera Sudo lösenord", + "passwordCopied": "Lösenord kopierat till urklipp", + "sudoPasswordCopied": "Sudo lösenord kopierat till urklipp", + "noPasswordAvailable": "Inget lösenord tillgängligt" }, "admin": { "title": "Administratörsinställningar", @@ -537,6 +573,7 @@ "userRegistration": "Registrering av användare", "allowNewAccountRegistration": "Tillåt registrering av nytt konto", "allowPasswordLogin": "Tillåt inloggning med användarnamn/lösenord", + "allowPasswordReset": "Tillåt återställning av lösenord via återställningskod", "missingRequiredFields": "Obligatoriska fält saknas: {{fields}}", "oidcConfigurationUpdated": "OIDC-konfigurationen har uppdaterats!", "failedToFetchOidcConfig": "Kunde inte hämta OIDC-konfiguration", @@ -848,6 +885,13 @@ "autoStartContainer": "Starta automatiskt vid lansering av behållare", "autoStartDesc": "Starta automatiskt denna tunnel när behållaren startar", "addConnection": "Lägg till tunnelanslutning", + "tunnelType": "Typ av tunnel", + "tunnelTypeLocal": "Lokal (-L)", + "tunnelTypeRemote": "Fjärrkontroll (-R)", + "tunnelTypeLocalDesc": "Vidarebefordra lokal port till fjärrslutpunkt", + "tunnelTypeRemoteDesc": "Vidarebefordra fjärranslutning till lokal maskin", + "tunnelForwardDescriptionLocal": "Denna tunnel kommer att vidarebefordra trafik från lokal port {{sourcePort}} till port {{endpointPort}} på slutpunktsmaskinen.", + "tunnelForwardDescriptionRemote": "Denna tunnel kommer att vidarebefordra trafik från port {{sourcePort}} på källmaskinen (aktuella anslutningsdetaljer i allmän flik) till port {{endpointPort}} på slutpunktsmaskinen.", "sshpassRequired": "Sshpass krävs för lösenordsautentisering", "sshpassRequiredDesc": "För lösenordsautentisering i tunnlar måste sshpass installeras på systemet.", "otherInstallMethods": "Andra installationsmetoder:", @@ -855,13 +899,16 @@ "or": "eller", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Fönster", + "windows": "Windows (WSL, ingen officiell binär)", "sshServerConfigRequired": "SSH-serverkonfiguration krävs", "sshServerConfigDesc": "För tunnelanslutningar måste SSH-servern konfigureras för att tillåta portvidarebefordran:", "gatewayPortsYes": "att binda fjärrportar till alla gränssnitt", "allowTcpForwardingYes": "för att aktivera portvidarebefordran", "permitRootLoginYes": "om du använder root-användare för tunneling", - "editSshConfig": "Redigera /etc/ssh/sshd_config och starta om SSH: sudo systemctl starta om sshd", + "editSshConfig": "Redigera SSH-konfigurationsfilen:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Starta sedan om SSH-tjänsten:", + "restartSshCommand": "sudo systemctl starta om sshd", "upload": "Ladda upp", "authentication": "Autentisering", "password": "Lösenord", @@ -1096,6 +1143,19 @@ "quickActionName": "Åtgärdens namn", "noSnippetFound": "Ingen textkod hittades", "quickActionsOrder": "Snabbkommandon visas i den ordning som anges ovan på serverstatistiksidan", + "sidebarCustomization": "Anpassning av sidomknapp", + "sidebarCustomizationDesc": "Välj vilka åtgärder som visas som snabbknappar i sidofältet. Åtgärder som inte visas som knappar visas i rullgardinsmenyn.", + "showTerminalInSidebar": "Visa terminalknapp", + "showTerminalInSidebarDesc": "Visa terminalen som en snabbknapp i sidofältet", + "showFileManagerInSidebar": "Visa filhanterarknappen", + "showFileManagerInSidebarDesc": "Visa filhanteraren som en snabbknapp i sidofältet", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Avancerade autentiseringsinställningar", "sudoPasswordAutoFill": "Sudo Lösenord Auto-Fill", "sudoPasswordAutoFillDesc": "Erbjuder automatiskt att infoga SSH-lösenord när sudo ber om lösenord", @@ -1115,6 +1175,15 @@ "addVariable": "Lägg till variabel", "docker": "Docker", "openDocker": "Öppna Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker är inte aktiverat för den här värden. Aktivera den i Värdsinställningar för att använda Docker-funktioner.", "validating": "Validerar docker...", "error": "Fel", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Verifieringskod", "totpPlaceholder": "000000", "totpVerify": "Verifiera", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Infoga lösenord?", "sudoPasswordPopupHint": "Tryck Enter för att infoga Esc för att avfärda", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Avfärda" + "sudoPasswordPopupDismiss": "Avfärda", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Filhanterare", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} har tagits bort", "itemsDeletedSuccessfully": "{{count}} objekt har tagits bort", "failedToDeleteItems": "Misslyckades att ta bort objekt", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Släpp filer här för att ladda upp", "emptyFolder": "Denna mapp är tom", "itemCount": "{{count}} objekt", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Filen är för stor: {{error}}", "sshConnectionFailed": "SSH-anslutningen misslyckades. Kontrollera din anslutning till {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Det gick inte att ladda filen: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Ansluten lyckades", "totpVerificationFailed": "TOTP-verifiering misslyckades", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Verifieringskod:", "changePermissions": "Ändra behörigheter", "changePermissionsDesc": "Ändra filrättigheter för", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Det gick inte att ändra behörigheter" }, "tunnel": { - "noTunnelsConfigured": "Inga tunnlar konfigurerade", - "configureTunnelsInHostSettings": "Konfigurera tunnelanslutningar i värdhanteraren för att komma igång" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH-tunnlar", @@ -1624,6 +1736,8 @@ "refreshStatus": "Status för uppdatering", "fileManagerAlreadyOpen": "Filhanteraren är redan öppen för denna värd", "openFileManager": "Öppna filhanteraren", + "connecting": "Ansluter...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} processorer", "naCpus": "N/A CPU(er)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Det gick inte att hämta servervärden", "failedToFetchHomeData": "Kunde inte hämta hemdata", "loadingMetrics": "Laddar mätvärden...", - "connecting": "Ansluter...", "refreshing": "Uppdaterar...", "serverOffline": "Servern offline", "cannotFetchMetrics": "Kan inte hämta mätvärden från offline-server", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Kör {{name}}...", "quickActionSuccess": "{{name}} slutförd", "quickActionFailed": "{{name}} misslyckades", - "quickActionError": "Det gick inte att köra {{name}}" + "quickActionError": "Det gick inte att köra {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH SERVER MANAGER", @@ -1824,7 +1964,11 @@ "emailExists": "E-postadressen finns redan", "loadFailed": "Det gick inte att ladda data", "saveError": "Det gick inte att spara", - "sessionExpired": "Sessionen löpte ut - logga in igen" + "sessionExpired": "Sessionen löpte ut - logga in igen", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Sparades framgångsrikt", @@ -1882,6 +2026,9 @@ "terminalSettings": "Terminal", "hostSidebarSettings": "Värd och sidofält", "snippetsSettings": "Textmoduler", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Nuvarande lösenord", "passwordChangedSuccess": "Lösenordet har ändrats! Logga in igen.", "failedToChangePassword": "Det gick inte att ändra lösenordet. Kontrollera ditt nuvarande lösenord och försök igen.", @@ -1890,7 +2037,9 @@ "themeDark": "Mörk", "themeSystem": "System", "appearanceDesc": "Välj färgtema för applikationen", - "terminalSyntaxHighlightingDesc": "Markera automatiskt kommandon, sökvägar, IP-adresser och loggnivåer i terminalutdata" + "terminalSyntaxHighlightingDesc": "Markera automatiskt kommandon, sökvägar, IP-adresser och loggnivåer i terminalutdata", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Det gick inte att ladda versionsinformation" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Instrumentpanel", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Stöd", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Ingen serverdata tillgänglig", "cpu": "CPU", "ram": "RAM", - "notAvailable": "N/A" + "notAvailable": "N/A", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Dela värd", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker är inte aktiverat för denna värd", "validating": "Validerar docker...", "connectingToHost": "Ansluter till värd...", + "connecting": "Ansluter...", "error": "Fel", "errorCode": "Felkod: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP-verifiering misslyckades. Försök igen.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Ange verifieringskod", + "loadingContainers": "Laddar behållare...", "containerStarted": "Behållare {{name}} startad", "failedToStartContainer": "Det gick inte att starta behållare {{name}}", "containerStopped": "Behållare {{name}} stoppad", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Är du säker på att du vill ta bort behållaren '{{name}}'? Åtgärden kan inte ångras.", "runningContainerWarning": "Varning: Denna behållare körs just nu. Borttagning av den kommer att stoppa behållaren först.", "removing": "Tar bort...", - "loadingContainers": "Laddar behållare...", "noContainersFound": "Inga behållare hittades", "noContainersFoundHint": "Inga Docker-behållare finns tillgängliga på denna värd", "searchPlaceholder": "Sök behållare...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Frånkopplad från behållare", "containerMustBeRunning": "Behållare måste köras för att komma åt konsolen", "authenticationRequired": "Autentisering krävs", - "verificationCodePrompt": "Ange verifieringskod", - "totpVerificationFailed": "TOTP-verifiering misslyckades. Försök igen.", "connectedTo": "Ansluten till {{containerName}}", "disconnected": "Frånkopplad", "consoleError": "Fel vid konsol", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "aska", - "connecting": "Ansluter...", "connect": "Anslut", "disconnect": "Koppla från", "notConnected": "Inte ansluten", @@ -2393,7 +2626,37 @@ "logs": "Loggar", "stats": "Statistik", "consoleTab": "Konsol", - "startContainerToAccess": "Starta behållaren för att komma åt konsolen" + "startContainerToAccess": "Starta behållaren för att komma åt konsolen", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Växla till ljus", diff --git a/src/locales/translated/th.json b/src/locales/translated/th.json index 44b7e3e1..184e5ab7 100644 --- a/src/locales/translated/th.json +++ b/src/locales/translated/th.json @@ -44,6 +44,8 @@ "passwordRequired": "ต้องใส่รหัสผ่าน", "sshKeyRequired": "จำเป็นต้องใช้คีย์ SSH", "credentialAddedSuccessfully": "เพิ่มข้อมูลประจำตัว \"{{name}}\" สำเร็จแล้ว", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "ทั่วไป", "description": "คำอธิบาย", "folder": "โฟลเดอร์", @@ -184,6 +186,32 @@ "renameFolder": "เปลี่ยนชื่อโฟลเดอร์", "idLabel": "รหัสประจำตัว:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "ข้อผิดพลาด: {{error}}", "dragging": "การลาก {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "เส้นทาง SSH", "localPath": "เส้นทางท้องถิ่น", "appName": "เทอร์มิกซ์", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "รีเซ็ตความกว้างของแถบด้านข้าง", "dragToResizeSidebar": "ลากเพื่อปรับขนาดแถบด้านข้าง", "noAuthCredentials": "ไม่มีข้อมูลรับรองการตรวจสอบสิทธิ์สำหรับโฮสต์ SSH นี้", @@ -464,10 +493,12 @@ "retry": "ลองใหม่อีกครั้ง", "checking": "กำลังตรวจสอบ...", "checkingDatabase": "กำลังตรวจสอบการเชื่อมต่อฐานข้อมูล...", + "checkingAuthentication": "Checking authentication...", "actions": "การกระทำ", "remove": "ลบ", "revoke": "ถอน", - "create": "สร้าง" + "create": "สร้าง", + "update": "Update" }, "nav": { "home": "บ้าน", @@ -489,7 +520,12 @@ "hostManager": "ผู้จัดการโฮสต์", "cannotSplitTab": "ไม่สามารถแบ่งแท็บนี้ได้", "tabNavigation": "การนำทางแท็บ", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "การตั้งค่าผู้ดูแลระบบ", @@ -537,6 +573,7 @@ "userRegistration": "การลงทะเบียนผู้ใช้", "allowNewAccountRegistration": "อนุญาตให้ลงทะเบียนบัญชีใหม่", "allowPasswordLogin": "อนุญาตให้เข้าสู่ระบบด้วยชื่อผู้ใช้/รหัสผ่าน", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "กรอกข้อมูลในช่องที่จำเป็นไม่ครบถ้วน: {{fields}}", "oidcConfigurationUpdated": "การกำหนดค่า OIDC ได้รับการอัปเดตเรียบร้อยแล้ว!", "failedToFetchOidcConfig": "ไม่สามารถดึงข้อมูลการกำหนดค่า OIDC ได้", @@ -848,6 +885,13 @@ "autoStartContainer": "เริ่มการทำงานอัตโนมัติเมื่อคอนเทนเนอร์เริ่มทำงาน", "autoStartDesc": "เริ่มอุโมงค์นี้โดยอัตโนมัติเมื่อคอนเทนเนอร์เริ่มทำงาน", "addConnection": "เพิ่มการเชื่อมต่ออุโมงค์", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "ต้องใช้ SSHPass เพื่อยืนยันรหัสผ่าน", "sshpassRequiredDesc": "สำหรับการตรวจสอบสิทธิ์ด้วยรหัสผ่านในอุโมงค์เชื่อมต่อ ต้องติดตั้ง sshpass ไว้ในระบบ", "otherInstallMethods": "วิธีการติดตั้งอื่นๆ:", @@ -855,13 +899,16 @@ "or": "หรือ", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "ระบบปฏิบัติการ macOS", - "windows": "วินโดวส์", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "ต้องกำหนดค่าเซิร์ฟเวอร์ SSH", "sshServerConfigDesc": "สำหรับการเชื่อมต่อผ่านอุโมงค์ เซิร์ฟเวอร์ SSH ต้องได้รับการกำหนดค่าให้สามารถส่งต่อพอร์ตได้:", "gatewayPortsYes": "เพื่อเชื่อมโยงพอร์ตระยะไกลเข้ากับอินเทอร์เฟซทั้งหมด", "allowTcpForwardingYes": "เพื่อเปิดใช้งานการส่งต่อพอร์ต", "permitRootLoginYes": "หากใช้ผู้ใช้ root สำหรับการสร้างอุโมงค์", - "editSshConfig": "แก้ไขไฟล์ /etc/ssh/sshd_config แล้วรีสตาร์ท SSH: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "อัปโหลด", "authentication": "การตรวจสอบสิทธิ์", "password": "รหัสผ่าน", @@ -1096,6 +1143,19 @@ "quickActionName": "ชื่อการกระทำ", "noSnippetFound": "ไม่พบตัวอย่างโค้ด", "quickActionsOrder": "ปุ่มดำเนินการด่วนจะปรากฏตามลำดับที่ระบุไว้ข้างต้นในหน้าสถิติเซิร์ฟเวอร์", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "การตั้งค่าการตรวจสอบสิทธิ์ขั้นสูง", "sudoPasswordAutoFill": "การกรอกรหัสผ่านอัตโนมัติของ Sudo", "sudoPasswordAutoFillDesc": "เสนอให้ใส่รหัสผ่าน SSH โดยอัตโนมัติเมื่อคำสั่ง sudo แจ้งให้ป้อนรหัสผ่าน", @@ -1115,6 +1175,15 @@ "addVariable": "เพิ่มตัวแปร", "docker": "ด็อกเกอร์", "openDocker": "เปิด Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker ยังไม่ได้เปิดใช้งานสำหรับโฮสต์นี้ โปรดเปิดใช้งานใน การตั้งค่าโฮสต์ เพื่อใช้งานคุณสมบัติของ Docker", "validating": "กำลังตรวจสอบความถูกต้องของ Docker...", "error": "ข้อผิดพลาด", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "รหัสยืนยัน", "totpPlaceholder": "000000", "totpVerify": "ตรวจสอบ", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "ใส่รหัสผ่าน?", "sudoPasswordPopupHint": "กด Enter เพื่อแทรก กด Esc เพื่อปิด", "sudoPasswordPopupConfirm": "แทรก", - "sudoPasswordPopupDismiss": "อนุญาตให้ออกไป" + "sudoPasswordPopupDismiss": "อนุญาตให้ออกไป", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "ตัวจัดการไฟล์", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} ลบสำเร็จแล้ว", "itemsDeletedSuccessfully": "รายการ {{count}} ถูกลบสำเร็จแล้ว", "failedToDeleteItems": "ไม่สามารถลบรายการได้", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "ลากไฟล์มาวางที่นี่เพื่ออัปโหลด", "emptyFolder": "โฟลเดอร์นี้ว่างเปล่า", "itemCount": "{{count}} รายการ", @@ -1531,8 +1630,11 @@ "fileTooLarge": "ไฟล์มีขนาดใหญ่เกินไป: {{error}}", "sshConnectionFailed": "การเชื่อมต่อ SSH ล้มเหลว โปรดตรวจสอบการเชื่อมต่อของคุณกับ {{name}} ({{ip}}:{{port}})", "loadFileFailed": "ไม่สามารถโหลดไฟล์ได้: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "เชื่อมต่อสำเร็จแล้ว", "totpVerificationFailed": "การตรวจสอบ TOTP ล้มเหลว", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "รหัสยืนยัน:", "changePermissions": "เปลี่ยนสิทธิ์การเข้าถึง", "changePermissionsDesc": "แก้ไขสิทธิ์การเข้าถึงไฟล์สำหรับ", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "ไม่สามารถเปลี่ยนสิทธิ์ได้" }, "tunnel": { - "noTunnelsConfigured": "ไม่มีการกำหนดค่าอุโมงค์", - "configureTunnelsInHostSettings": "กำหนดค่าการเชื่อมต่ออุโมงค์ใน Host Manager เพื่อเริ่มต้นใช้งาน" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "อุโมงค์ SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "รีเฟรชสถานะ", "fileManagerAlreadyOpen": "โปรแกรมจัดการไฟล์เปิดใช้งานอยู่แล้วสำหรับโฮสต์นี้", "openFileManager": "เปิดตัวจัดการไฟล์", + "connecting": "กำลังเชื่อมต่อ...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} ซีพียู", "cpuCores_other": "{{count}} ซีพียู", "naCpus": "ไม่มีข้อมูล CPU", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "ไม่สามารถดึงข้อมูลเมตริกของเซิร์ฟเวอร์ได้", "failedToFetchHomeData": "ไม่สามารถดึงข้อมูลบ้านได้", "loadingMetrics": "กำลังโหลดข้อมูลสถิติ...", - "connecting": "กำลังเชื่อมต่อ...", "refreshing": "สดชื่น...", "serverOffline": "เซิร์ฟเวอร์ออฟไลน์", "cannotFetchMetrics": "ไม่สามารถดึงข้อมูลเมตริกจากเซิร์ฟเวอร์ออฟไลน์ได้", @@ -1682,7 +1795,34 @@ "executingQuickAction": "กำลังดำเนินการ {{name}}...", "quickActionSuccess": "{{name}} เสร็จสมบูรณ์เรียบร้อยแล้ว", "quickActionFailed": "{{name}} ล้มเหลว", - "quickActionError": "ไม่สามารถดำเนินการ {{name}}ได้" + "quickActionError": "ไม่สามารถดำเนินการ {{name}}ได้", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "ตัวจัดการเซิร์ฟเวอร์ SSH", @@ -1824,7 +1964,11 @@ "emailExists": "อีเมลนี้มีอยู่แล้ว", "loadFailed": "ไม่สามารถโหลดข้อมูลได้", "saveError": "บันทึกไม่สำเร็จ", - "sessionExpired": "เซッションหมดอายุแล้ว โปรดเข้าสู่ระบบอีกครั้ง" + "sessionExpired": "เซッションหมดอายุแล้ว โปรดเข้าสู่ระบบอีกครั้ง", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "บันทึกสำเร็จแล้ว", @@ -1882,6 +2026,9 @@ "terminalSettings": "เทอร์มินัล", "hostSidebarSettings": "โฮสต์และแถบด้านข้าง", "snippetsSettings": "เศษเสี้ยว", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "รหัสผ่านปัจจุบัน", "passwordChangedSuccess": "เปลี่ยนรหัสผ่านสำเร็จแล้ว! โปรดเข้าสู่ระบบอีกครั้ง", "failedToChangePassword": "ไม่สามารถเปลี่ยนรหัสผ่านได้ โปรดตรวจสอบรหัสผ่านปัจจุบันของคุณแล้วลองใหม่อีกครั้ง", @@ -1890,7 +2037,9 @@ "themeDark": "มืด", "themeSystem": "ระบบ", "appearanceDesc": "เลือกธีมสีสำหรับแอปพลิเคชัน", - "terminalSyntaxHighlightingDesc": "ไฮไลต์คำสั่ง เส้นทาง ที่อยู่ IP และระดับการบันทึกในเอาต์พุตเทอร์มินัลโดยอัตโนมัติ" + "terminalSyntaxHighlightingDesc": "ไฮไลต์คำสั่ง เส้นทาง ที่อยู่ IP และระดับการบันทึกในเอาต์พุตเทอร์มินัลโดยอัตโนมัติ", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "ไม่สามารถโหลดข้อมูลเวอร์ชันได้" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "แดชบอร์ด", + "loading": "Loading dashboard...", "github": "กิตฮับ", "support": "สนับสนุน", "discord": "ดิสคอร์ด", @@ -2114,7 +2264,88 @@ "noServerData": "ไม่มีข้อมูลเซิร์ฟเวอร์", "cpu": "ซีพียู", "ram": "แรม", - "notAvailable": "ไม่มีข้อมูล" + "notAvailable": "ไม่มีข้อมูล", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "แชร์โฮสต์", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker ไม่ได้เปิดใช้งานสำหรับโฮสต์นี้", "validating": "กำลังตรวจสอบความถูกต้องของ Docker...", "connectingToHost": "กำลังเชื่อมต่อกับโฮสต์...", + "connecting": "กำลังเชื่อมต่อ...", "error": "ข้อผิดพลาด", "errorCode": "รหัสข้อผิดพลาด: {{code}}", "version": "ด็อกเกอร์ {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "การตรวจสอบ TOTP ล้มเหลว โปรดลองอีกครั้ง", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "ป้อนรหัสยืนยัน", + "loadingContainers": "กำลังขนถ่ายตู้คอนเทนเนอร์...", "containerStarted": "คอนเทนเนอร์ {{name}} เริ่มทำงานแล้ว", "failedToStartContainer": "ไม่สามารถเริ่มต้นคอนเทนเนอร์ได้ {{name}}", "containerStopped": "คอนเทนเนอร์ {{name}} หยุดทำงานแล้ว", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "คุณแน่ใจหรือไม่ว่าต้องการลบคอนเทนเนอร์ '{{name}}'? การกระทำนี้ไม่สามารถย้อนกลับได้", "runningContainerWarning": "คำเตือน: ขณะนี้คอนเทนเนอร์นี้กำลังทำงานอยู่ การลบคอนเทนเนอร์นี้จะหยุดการทำงานของคอนเทนเนอร์ก่อน", "removing": "กำลังลบ...", - "loadingContainers": "กำลังขนถ่ายตู้คอนเทนเนอร์...", "noContainersFound": "ไม่พบภาชนะบรรจุใดๆ", "noContainersFoundHint": "ไม่มีคอนเทนเนอร์ Docker ให้บริการบนโฮสต์นี้", "searchPlaceholder": "ค้นหาตู้คอนเทนเนอร์...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "ตัดการเชื่อมต่อจากคอนเทนเนอร์", "containerMustBeRunning": "ต้องรอให้คอนเทนเนอร์ทำงานอยู่จึงจะสามารถเข้าถึงคอนโซลได้", "authenticationRequired": "จำเป็นต้องยืนยันตัวตน", - "verificationCodePrompt": "ป้อนรหัสยืนยัน", - "totpVerificationFailed": "การตรวจสอบ TOTP ล้มเหลว โปรดลองอีกครั้ง", "connectedTo": "เชื่อมต่อกับ {{containerName}}", "disconnected": "ตัดการเชื่อมต่อ", "consoleError": "ข้อผิดพลาดของคอนโซล", @@ -2382,7 +2616,6 @@ "bash": "ทุบตี", "sh": "ช", "ash": "เถ้า", - "connecting": "กำลังเชื่อมต่อ...", "connect": "เชื่อมต่อ", "disconnect": "ตัดการเชื่อมต่อ", "notConnected": "ไม่ได้เชื่อมต่อ", @@ -2393,7 +2626,37 @@ "logs": "บันทึก", "stats": "สถิติ", "consoleTab": "คอนโซล", - "startContainerToAccess": "เริ่มคอนเทนเนอร์เพื่อเข้าถึงคอนโซล" + "startContainerToAccess": "เริ่มคอนเทนเนอร์เพื่อเข้าถึงคอนโซล", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "เปลี่ยนเป็นโหมดสว่าง", diff --git a/src/locales/translated/tr.json b/src/locales/translated/tr.json index fad4f123..19237367 100644 --- a/src/locales/translated/tr.json +++ b/src/locales/translated/tr.json @@ -44,6 +44,8 @@ "passwordRequired": "Şifre gereklidir.", "sshKeyRequired": "SSH anahtarı gereklidir.", "credentialAddedSuccessfully": "Kimlik bilgisi \"{{name}}\" başarıyla eklendi", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "Genel", "description": "Tanım", "folder": "Dosya", @@ -184,6 +186,32 @@ "renameFolder": "Klasörü yeniden adlandır", "idLabel": "İD:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "Hata: {{error}}", "dragging": "Sürükleme {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH Yolu", "localPath": "Yerel Yol", "appName": "Termix", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "Kenar çubuğu genişliğini sıfırla", "dragToResizeSidebar": "Kenar çubuğunu yeniden boyutlandırmak için sürükleyin.", "noAuthCredentials": "Bu SSH sunucusu için kullanılabilir kimlik doğrulama bilgisi bulunmamaktadır.", @@ -464,10 +493,12 @@ "retry": "Tekrar dene", "checking": "Kontrol ediliyor...", "checkingDatabase": "Veritabanı bağlantısı kontrol ediliyor...", + "checkingAuthentication": "Checking authentication...", "actions": "Eylemler", "remove": "Kaldırmak", "revoke": "Geri çekmek", - "create": "Yaratmak" + "create": "Yaratmak", + "update": "Update" }, "nav": { "home": "Ev", @@ -489,7 +520,12 @@ "hostManager": "Sunucu Yöneticisi", "cannotSplitTab": "Bu sekmeyi bölemezsiniz.", "tabNavigation": "Sekme Gezinme", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "Yönetici Ayarları", @@ -537,6 +573,7 @@ "userRegistration": "Kullanıcı Kaydı", "allowNewAccountRegistration": "Yeni hesap kaydına izin ver", "allowPasswordLogin": "Kullanıcı adı/şifre ile giriş yapılmasına izin ver", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "Gerekli alanlar eksik: {{fields}}", "oidcConfigurationUpdated": "OIDC yapılandırması başarıyla güncellendi!", "failedToFetchOidcConfig": "OIDC yapılandırması alınamadı.", @@ -848,6 +885,13 @@ "autoStartContainer": "Konteyner Başlatıldığında Otomatik Başlatma", "autoStartDesc": "Konteyner başlatıldığında bu tüneli otomatik olarak başlat.", "addConnection": "Tünel Bağlantısı Ekle", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "Parola doğrulaması için SSH şifresi gereklidir.", "sshpassRequiredDesc": "Tünellerde parola kimlik doğrulaması için sistemde sshpass kurulu olmalıdır.", "otherInstallMethods": "Diğer kurulum yöntemleri:", @@ -855,13 +899,16 @@ "or": "veya", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Windows", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "SSH Sunucusu Yapılandırması Gereklidir", "sshServerConfigDesc": "Tünel bağlantıları için SSH sunucusunun port yönlendirmesine izin verecek şekilde yapılandırılması gerekir:", "gatewayPortsYes": "Uzak portları tüm arayüzlere bağlamak", "allowTcpForwardingYes": "port yönlendirmeyi etkinleştirmek için", "permitRootLoginYes": "tünelleme için root kullanıcısı kullanılıyorsa", - "editSshConfig": "/etc/ssh/sshd_config dosyasını düzenleyin ve SSH'yi yeniden başlatın: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Yüklemek", "authentication": "Kimlik doğrulama", "password": "Şifre", @@ -1096,6 +1143,19 @@ "quickActionName": "Eylem adı", "noSnippetFound": "Hiçbir kod parçacığı bulunamadı.", "quickActionsOrder": "Hızlı işlem düğmeleri, Sunucu İstatistikleri sayfasında yukarıda listelenen sırayla görünecektir.", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Gelişmiş Kimlik Doğrulama Ayarları", "sudoPasswordAutoFill": "Sudo Parolası Otomatik Doldurma", "sudoPasswordAutoFillDesc": "sudo parola istediğinde otomatik olarak SSH parolasını girme seçeneği sun.", @@ -1115,6 +1175,15 @@ "addVariable": "Değişken Ekle", "docker": "Liman işçisi", "openDocker": "Open Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Bu sunucuda Docker etkinleştirilmemiş. Docker özelliklerini kullanmak için Sunucu Ayarları'ndan etkinleştirin.", "validating": "Docker doğrulaması yapılıyor...", "error": "Hata", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Doğrulama Kodu", "totpPlaceholder": "000000", "totpVerify": "Doğrulamak", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Şifrenizi girin?", "sudoPasswordPopupHint": "Eklemek için Enter'a, silmek için Esc'ye basın.", "sudoPasswordPopupConfirm": "Sokmak", - "sudoPasswordPopupDismiss": "Azletmek" + "sudoPasswordPopupDismiss": "Azletmek", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Dosya Yöneticisi", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} başarıyla silindi", "itemsDeletedSuccessfully": "{{count}} öğe başarıyla silindi", "failedToDeleteItems": "Öğeleri silme işlemi başarısız oldu.", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Yüklemek için dosyaları buraya sürükleyin.", "emptyFolder": "Bu klasör boş.", "itemCount": "{{count}} öğe", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Dosya çok büyük: {{error}}", "sshConnectionFailed": "SSH bağlantısı başarısız oldu. Lütfen {{name}} ({{ip}}:{{port}}) adresine olan bağlantınızı kontrol edin.", "loadFileFailed": "Dosya yüklenemedi: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Bağlantı başarıyla kuruldu.", "totpVerificationFailed": "TOTP doğrulaması başarısız oldu", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Doğrulama kodu:", "changePermissions": "İzinleri Değiştir", "changePermissionsDesc": "Dosya izinlerini değiştirin", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "İzinleri değiştirme işlemi başarısız oldu." }, "tunnel": { - "noTunnelsConfigured": "Hiçbir tünel yapılandırılmadı.", - "configureTunnelsInHostSettings": "Başlamak için Ana Bilgisayar Yöneticisi'nde tünel bağlantılarını yapılandırın." + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH Tünelleri", @@ -1624,6 +1736,8 @@ "refreshStatus": "Yenileme Durumu", "fileManagerAlreadyOpen": "Dosya yöneticisi bu sunucu için zaten açık.", "openFileManager": "Dosya Yöneticisini Açın", + "connecting": "Bağlanıyor...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU'lar", "naCpus": "N/A CPU(lar)", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Sunucu metrikleri alınamadı.", "failedToFetchHomeData": "Ev verilerini alma başarısız oldu.", "loadingMetrics": "Ölçümler yükleniyor...", - "connecting": "Bağlanıyor...", "refreshing": "Ferahlatıcı...", "serverOffline": "Sunucu Çevrimdışı", "cannotFetchMetrics": "Çevrimdışı sunucudan ölçümler alınamıyor.", @@ -1682,7 +1795,34 @@ "executingQuickAction": "{{name}}yürütülüyor...", "quickActionSuccess": "{{name}} başarıyla tamamlandı", "quickActionFailed": "{{name}} başarısız oldu", - "quickActionError": "{{name}}yürütülemedi" + "quickActionError": "{{name}}yürütülemedi", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH SUNUCU YÖNETİCİSİ", @@ -1824,7 +1964,11 @@ "emailExists": "E-posta zaten mevcut.", "loadFailed": "Veriler yüklenemedi.", "saveError": "Kaydetme başarısız oldu", - "sessionExpired": "Oturumunuzun süresi doldu - lütfen tekrar giriş yapın." + "sessionExpired": "Oturumunuzun süresi doldu - lütfen tekrar giriş yapın.", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Başarıyla kaydedildi.", @@ -1882,6 +2026,9 @@ "terminalSettings": "terminal", "hostSidebarSettings": "Sunucu ve Yan Menü", "snippetsSettings": "Kısa bölümler", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Mevcut Şifre", "passwordChangedSuccess": "Şifre başarıyla değiştirildi! Lütfen tekrar giriş yapın.", "failedToChangePassword": "Parola değiştirme işlemi başarısız oldu. Lütfen mevcut parolanızı kontrol edin ve tekrar deneyin.", @@ -1890,7 +2037,9 @@ "themeDark": "Karanlık", "themeSystem": "Sistem", "appearanceDesc": "Uygulama için renk temasını seçin.", - "terminalSyntaxHighlightingDesc": "Terminal çıktısında komutları, yolları, IP adreslerini ve günlük seviyelerini otomatik olarak vurgula." + "terminalSyntaxHighlightingDesc": "Terminal çıktısında komutları, yolları, IP adreslerini ve günlük seviyelerini otomatik olarak vurgula.", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Sürüm bilgileri yüklenemedi." @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Kontrol Paneli", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Destek", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Sunucu verisi mevcut değil.", "cpu": "İşlemci", "ram": "Veri deposu", - "notAvailable": "Yok" + "notAvailable": "Yok", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Paylaşımlı Sunucu", @@ -2306,9 +2537,15 @@ "notEnabled": "Bu sunucu için Docker etkinleştirilmemiş.", "validating": "Docker doğrulaması yapılıyor...", "connectingToHost": "Sunucuya bağlanılıyor...", + "connecting": "Bağlanıyor...", "error": "Hata", "errorCode": "Hata kodu: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP doğrulaması başarısız oldu. Lütfen tekrar deneyin.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Doğrulama kodunu girin", + "loadingContainers": "Konteynerler yükleniyor...", "containerStarted": "Konteyner {{name}} başlatıldı", "failedToStartContainer": "{{name}}kapsayıcısı başlatılamadı.", "containerStopped": "Konteyner {{name}} durduruldu", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "'{{name}}' kapsayıcısını kaldırmak istediğinizden emin misiniz? Bu işlem geri alınamaz.", "runningContainerWarning": "Uyarı: Bu konteyner şu anda çalışıyor. Kaldırılması durumunda konteyner önce durdurulacaktır.", "removing": "Kaldırılıyor...", - "loadingContainers": "Konteynerler yükleniyor...", "noContainersFound": "Hiçbir konteyner bulunamadı.", "noContainersFoundHint": "Bu sunucuda hiçbir Docker kapsayıcısı mevcut değil.", "searchPlaceholder": "Konteynerleri ara...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Konteynerden bağlantı kesildi.", "containerMustBeRunning": "Konsola erişmek için konteynerin çalışır durumda olması gerekir.", "authenticationRequired": "Kimlik doğrulama gereklidir.", - "verificationCodePrompt": "Doğrulama kodunu girin", - "totpVerificationFailed": "TOTP doğrulaması başarısız oldu. Lütfen tekrar deneyin.", "connectedTo": "{{containerName}}ile bağlantılı", "disconnected": "Bağlantı kesildi", "consoleError": "Konsol hatası", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "ş", "ash": "kül", - "connecting": "Bağlanıyor...", "connect": "Bağlamak", "disconnect": "Bağlantıyı kes", "notConnected": "Bağlı değil", @@ -2393,7 +2626,37 @@ "logs": "Günlükler", "stats": "İstatistikler", "consoleTab": "Konsol", - "startContainerToAccess": "Konsola erişmek için konteyneri başlatın." + "startContainerToAccess": "Konsola erişmek için konteyneri başlatın.", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Işığa geç", diff --git a/src/locales/translated/uk.json b/src/locales/translated/uk.json index f4cfdc4f..bbbc4b9e 100644 --- a/src/locales/translated/uk.json +++ b/src/locales/translated/uk.json @@ -44,6 +44,8 @@ "passwordRequired": "Потрібен пароль", "sshKeyRequired": "Потрібен SSH ключ", "credentialAddedSuccessfully": "Обліковку \"{{name}}\" успішно додано", + "savingCredential": "Збереження облікових даних...", + "updatingCredential": "Оновлення облікових даних...", "general": "Загальні налаштування", "description": "Опис", "folder": "Тека", @@ -184,6 +186,32 @@ "renameFolder": "Перейменувати папку", "idLabel": "ID:" }, + "quickConnect": { + "title": "Швидке підключення", + "description": "Підключитися безпосередньо до терміналу або файлового менеджера без збереження конфігурації хоста", + "ipAddress": "IP-адреса або ім'я хоста", + "port": "Порт", + "username": "Ім'я користувача", + "password": "Пароль", + "key": "Приватний ключ SSH", + "keyPassword": "Пароль ключа (необов'язково)", + "keyType": "Тип ключа", + "uploadFile": "Завантажити файл", + "pasteKey": "Вставити ключ", + "credential": "Облікові дані", + "overrideUsername": "Перевизначити ім'я користувача", + "overrideUsernameDesc": "Використовувати інше ім'я користувача, ніж той, що зберігається в облікових даних", + "connectTerminal": "Підключення до терміналу", + "connectFileManager": "Підключення до файлового менеджера", + "cancel": "Скасувати", + "passwordRequired": "Потрібен пароль", + "keyRequired": "Потрібен SSH ключ", + "credentialRequired": "Необхідний вибір облікових даних", + "connectionEstablished": "З'єднання успішно встановлено", + "connectionFailed": "Не вдалося встановити підключення", + "autoDetect": "Автоматичне визначення", + "authentication": "Автентифікація" + }, "dragIndicator": { "error": "Помилка: {{error}}", "dragging": "Перетягування {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Шлях до SSH", "localPath": "Локальний шлях", "appName": "Термі", + "openInNewTab": "Відкрити у новій вкладці", "resetSidebarWidth": "Reset sidebar width", "dragToResizeSidebar": "Перетягніть для зміни розміру бічної панелі", "noAuthCredentials": "Немає облікових даних для цього SSH хосту", @@ -464,10 +493,12 @@ "retry": "Повторити спробу", "checking": "Перевірка...", "checkingDatabase": "Перевірка підключення до бази даних...", + "checkingAuthentication": "Перевірка автентифікації...", "actions": "Дії", "remove": "Видалити", "revoke": "Revoke", - "create": "Створити" + "create": "Створити", + "update": "Оновити" }, "nav": { "home": "Домашній екран", @@ -489,7 +520,12 @@ "hostManager": "Менеджер хостів", "cannotSplitTab": "Неможливо розділити цю вкладку", "tabNavigation": "Tab Navigation", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Копіювати пароль", + "copySudoPassword": "Копіювати пароль судо", + "passwordCopied": "Пароль скопійовано до буфера обміну", + "sudoPasswordCopied": "Пароль Sudo скопійовано до буфера обміну", + "noPasswordAvailable": "Немає доступного пароля" }, "admin": { "title": "Адміністративні налаштування", @@ -537,6 +573,7 @@ "userRegistration": "Реєстрація користувача", "allowNewAccountRegistration": "Дозволити реєстрацію нових акаунтів", "allowPasswordLogin": "Дозволити логін / пароль", + "allowPasswordReset": "Дозволити скидання пароля за допомогою коду скидання", "missingRequiredFields": "Відсутні обов'язкові поля: {{fields}}", "oidcConfigurationUpdated": "Налаштування OIDC успішно оновлено!", "failedToFetchOidcConfig": "Не вдалося отримати конфігурацію OIDC", @@ -848,6 +885,13 @@ "autoStartContainer": "Автоматичний запуск при запуску контейнерів", "autoStartDesc": "Автоматично запускати цей тунель при запуску контейнера", "addConnection": "Додати тунельне з'єднання", + "tunnelType": "Тип тунелю", + "tunnelTypeLocal": "Локальний (-L)", + "tunnelTypeRemote": "Віддалений (-R)", + "tunnelTypeLocalDesc": "Переслати локальний порт до віддаленої точки", + "tunnelTypeRemoteDesc": "Переслати віддалений порт на локальний комп’ютер", + "tunnelForwardDescriptionLocal": "Цей тунель переміститься трафік із локального порту {{sourcePort}} в порт {{endpointPort}} на машині кінцевої точки.", + "tunnelForwardDescriptionRemote": "Цей тунель переведе трафік з порту {{sourcePort}} на вихідному машині (дані про поточне підключення в загальній вкладці) до порту {{endpointPort}} на машині кінцевої точки.", "sshpassRequired": "Необхідно Sshpass для автентифікації пароля", "sshpassRequiredDesc": "Для аутентифікації пароля в тунелях, Sshpass повинен бути встановлений на системі.", "otherInstallMethods": "Інші методи встановлення:", @@ -855,13 +899,16 @@ "or": "або", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Вікна", + "windows": "Windows (WSL, немає офіційного двійкового файлів", "sshServerConfigRequired": "Вимагається конфігурація SSH сервера", "sshServerConfigDesc": "Для підключення тунелю, повинен бути налаштований SSH сервер для дозволу пересилки порту:", "gatewayPortsYes": "зв'язати віддалені порти в всі інтерфейси", "allowTcpForwardingYes": "увімкнути переадресацію порту", "permitRootLoginYes": "якщо використовується root користувач для tunneling", - "editSshConfig": "Редагувати /etc/ssh/sshd_config і перезавантажити SSH: sudo systemctl перезапустити sshd", + "editSshConfig": "Відредагуйте SSH файл конфігурації:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Перезапустити інтерфейс SSH:", + "restartSshCommand": "sudo systemctl перезавантаження sshd", "upload": "Вивантажити", "authentication": "Автентифікація", "password": "Пароль", @@ -1096,6 +1143,19 @@ "quickActionName": "Назва дії", "noSnippetFound": "Сніпет не знайдено", "quickActionsOrder": "Кнопки швидкої дії з'являтимуться в замовленні, вказаному вище на сторінці Статистики Сервера", + "sidebarCustomization": "Налаштування кнопок бічної панелі", + "sidebarCustomizationDesc": "Виберіть, які дії з'являються у бічній панелі. Дії не відображатимуться у випадаючому меню.", + "showTerminalInSidebar": "Показати кнопку терміналу", + "showTerminalInSidebarDesc": "Відображати термінал як швидку кнопку на бічній панелі", + "showFileManagerInSidebar": "Показати кнопку файлового менеджера", + "showFileManagerInSidebarDesc": "Відображати файловий менеджер як швидку кнопку на бічній панелі", + "showTunnelInSidebar": "Показувати кнопку тунелю", + "showTunnelInSidebarDesc": "Відображати керування тунелями як швидку кнопку в бічній панелі", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Розширені налаштування автентифікації", "sudoPasswordAutoFill": "Автозаповнення судо-пароля", "sudoPasswordAutoFillDesc": "Автоматично пропонувати вставку паролю SSH, коли sudo запитує пароль", @@ -1115,6 +1175,15 @@ "addVariable": "Додати змінну", "docker": "Докер", "openDocker": "Відкрити Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker вимкнений для цього хоста. Увімкніть його в налаштуваннях Хоста, щоб використовувати Docker функції.", "validating": "Перевірка Docker...", "error": "Помилка", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Код підтвердження", "totpPlaceholder": "000000", "totpVerify": "Перевірити", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Введіть пароль?", "sudoPasswordPopupHint": "Натисніть Enter, щоб вставити, Esc для відхилення", "sudoPasswordPopupConfirm": "Insert", - "sudoPasswordPopupDismiss": "Відхилити" + "sudoPasswordPopupDismiss": "Відхилити", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Файловий менеджер", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} успішно видалено", "itemsDeletedSuccessfully": "{{count}} елементів успішно видалено", "failedToDeleteItems": "Не вдалося видалити елементи", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Для завантаження перетягніть файли", "emptyFolder": "Ця папка порожня", "itemCount": "Елементи {{count}}", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Файл занадто великий: {{error}}", "sshConnectionFailed": "Не вдалося встановити SSH підключення. Будь ласка, перевірте підключення до {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Не вдалося завантажити файл: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Успішно підключено", "totpVerificationFailed": "Збій верифікації TOTP", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Код перевірки:", "changePermissions": "Змінити дозволи для додатку", "changePermissionsDesc": "Змінити дозволи для файлу", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Не вдалося змінити дозволи" }, "tunnel": { - "noTunnelsConfigured": "Тунелі не налаштовано", - "configureTunnelsInHostSettings": "Налаштування з'єднання тунелів в менеджері хоста для запуску" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH тунелі", @@ -1624,6 +1736,8 @@ "refreshStatus": "Оновити статус", "fileManagerAlreadyOpen": "Файловий менеджер вже відкритий для цього хосту", "openFileManager": "Відкрити файловий менеджер", + "connecting": "З’єднання...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} ЦП", "cpuCores_other": "{{count}} ЦП", "naCpus": "N/A ЦП", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Не вдалося отримати метрику сервера", "failedToFetchHomeData": "Не вдалося отримати дані про дім", "loadingMetrics": "Завантаження метрики...", - "connecting": "З’єднання...", "refreshing": "Оновлення...", "serverOffline": "Сервер не в мережі", "cannotFetchMetrics": "Не вдається отримати метрики з сервера офлайн", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Виконання {{name}}...", "quickActionSuccess": "{{name}} успішно завершено", "quickActionFailed": "{{name}} не вдалося", - "quickActionError": "Не вдалося виконати {{name}}" + "quickActionError": "Не вдалося виконати {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH КЕРУВАННЯ СЕРВЕР", @@ -1824,7 +1964,11 @@ "emailExists": "Такий email вже існує", "loadFailed": "Не вдалося завантажити дані", "saveError": "Не вдалося зберегти", - "sessionExpired": "Сесія минула - будь ласка, увійдіть знову" + "sessionExpired": "Сесія минула - будь ласка, увійдіть знову", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Успішно збережено", @@ -1882,6 +2026,9 @@ "terminalSettings": "Термінал", "hostSidebarSettings": "Хост і бічна панель", "snippetsSettings": "Сніпети", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Поточний пароль", "passwordChangedSuccess": "Пароль успішно змінений! Будь ласка, увійдіть знову.", "failedToChangePassword": "Не вдалося змінити пароль. Будь ласка, перевірте поточний пароль і спробуйте ще раз.", @@ -1890,7 +2037,9 @@ "themeDark": "Темна", "themeSystem": "Система", "appearanceDesc": "Виберіть колірну тему для додатку", - "terminalSyntaxHighlightingDesc": "Автоматично підсвічувати команди, шляхи, IP і рівні логів в терміналі" + "terminalSyntaxHighlightingDesc": "Автоматично підсвічувати команди, шляхи, IP і рівні логів в терміналі", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Не вдалося завантажити інформацію про версію" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Приладна дошка", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Підтримка", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Немає даних про сервер", "cpu": "ЦП", "ram": "RAM", - "notAvailable": "Н/А" + "notAvailable": "Н/А", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Поділитися хостом", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker вимкнений для цього хосту", "validating": "Перевірка Docker...", "connectingToHost": "Підключення до хоста...", + "connecting": "З’єднання...", "error": "Помилка", "errorCode": "Код помилки: {{code}}", "version": "Докер {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP підтвердження не вдалося. Будь ласка, спробуйте ще раз.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Введіть код підтвердження", + "loadingContainers": "Завантаження контейнерів...", "containerStarted": "Контейнер {{name}} запущено", "failedToStartContainer": "Не вдалося почати контейнер {{name}}", "containerStopped": "Контейнер {{name}} зупинено", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Ви впевнені, що хочете видалити контейнер '{{name}}'? Цю дію неможливо скасувати.", "runningContainerWarning": "Увага: цей контейнер зараз запущений. Видаляння його призведе до зупинки контейнера.", "removing": "Видалення...", - "loadingContainers": "Завантаження контейнерів...", "noContainersFound": "Контейнери не знайдено", "noContainersFoundHint": "Немає Docker контейнерів для цього хосту", "searchPlaceholder": "Пошук контейнерів...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Від'єднаний від контейнера", "containerMustBeRunning": "Контейнер повинен виконуватися для доступу до консолі", "authenticationRequired": "Потрібна аутентифікація", - "verificationCodePrompt": "Введіть код підтвердження", - "totpVerificationFailed": "TOTP підтвердження не вдалося. Будь ласка, спробуйте ще раз.", "connectedTo": "Підключено до {{containerName}}", "disconnected": "Від’єднано", "consoleError": "Консольна помилка", @@ -2382,7 +2616,6 @@ "bash": "Баш", "sh": "висока", "ash": "попіл", - "connecting": "З’єднання...", "connect": "Підключитися", "disconnect": "Від'єднатись", "notConnected": "Не підключено", @@ -2393,7 +2626,37 @@ "logs": "Логи", "stats": "Статистика", "consoleTab": "Консоль", - "startContainerToAccess": "Запустити контейнер для доступу до консолі" + "startContainerToAccess": "Запустити контейнер для доступу до консолі", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Світла перемкнутись у режим", diff --git a/src/locales/translated/vi.json b/src/locales/translated/vi.json index 1a84536d..0900cc98 100644 --- a/src/locales/translated/vi.json +++ b/src/locales/translated/vi.json @@ -44,6 +44,8 @@ "passwordRequired": "Cần có mật khẩu.", "sshKeyRequired": "Cần có khóa SSH.", "credentialAddedSuccessfully": "Thông tin xác thực \"{{name}}\" đã được thêm thành công", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "Tổng quan", "description": "Sự miêu tả", "folder": "Thư mục", @@ -184,6 +186,32 @@ "renameFolder": "Đổi tên thư mục", "idLabel": "NHẬN DẠNG:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "Lỗi: {{error}}", "dragging": "Kéo {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "Đường dẫn SSH", "localPath": "Đường đi địa phương", "appName": "Termix", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "Đặt lại chiều rộng thanh bên", "dragToResizeSidebar": "Kéo để thay đổi kích thước thanh bên", "noAuthCredentials": "Không có thông tin xác thực nào khả dụng cho máy chủ SSH này.", @@ -464,10 +493,12 @@ "retry": "Thử lại", "checking": "Đang kiểm tra...", "checkingDatabase": "Kiểm tra kết nối cơ sở dữ liệu...", + "checkingAuthentication": "Checking authentication...", "actions": "Hành động", "remove": "Di dời", "revoke": "Thu hồi", - "create": "Tạo nên" + "create": "Tạo nên", + "update": "Update" }, "nav": { "home": "Trang chủ", @@ -489,7 +520,12 @@ "hostManager": "Quản lý máy chủ", "cannotSplitTab": "Không thể chia tab này", "tabNavigation": "Điều hướng bằng tab", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "Cài đặt quản trị", @@ -537,6 +573,7 @@ "userRegistration": "Đăng ký người dùng", "allowNewAccountRegistration": "Cho phép đăng ký tài khoản mới", "allowPasswordLogin": "Cho phép đăng nhập bằng tên người dùng/mật khẩu", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "Thiếu các trường bắt buộc: {{fields}}", "oidcConfigurationUpdated": "Cấu hình OIDC đã được cập nhật thành công!", "failedToFetchOidcConfig": "Không thể tải cấu hình OIDC.", @@ -848,6 +885,13 @@ "autoStartContainer": "Tự động khởi động khi mở container", "autoStartDesc": "Tự động khởi động đường hầm này khi container được khởi chạy.", "addConnection": "Thêm kết nối đường hầm", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "Cần có SSHpass để xác thực mật khẩu.", "sshpassRequiredDesc": "Để xác thực mật khẩu trong đường hầm, sshpass phải được cài đặt trên hệ thống.", "otherInstallMethods": "Các phương pháp lắp đặt khác:", @@ -855,13 +899,16 @@ "or": "hoặc", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "Windows", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "Cần cấu hình máy chủ SSH.", "sshServerConfigDesc": "Đối với các kết nối đường hầm, máy chủ SSH phải được cấu hình để cho phép chuyển tiếp cổng:", "gatewayPortsYes": "để liên kết các cổng từ xa với tất cả các giao diện", "allowTcpForwardingYes": "để bật chuyển tiếp cổng", "permitRootLoginYes": "nếu sử dụng người dùng root để tạo đường hầm", - "editSshConfig": "Chỉnh sửa tệp /etc/ssh/sshd_config và khởi động lại SSH: sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "Tải lên", "authentication": "Xác thực", "password": "Mật khẩu", @@ -1096,6 +1143,19 @@ "quickActionName": "Tên hành động", "noSnippetFound": "Không tìm thấy đoạn mã nào.", "quickActionsOrder": "Các nút thao tác nhanh sẽ xuất hiện theo thứ tự được liệt kê ở trên trên trang Thống kê máy chủ.", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "Cài đặt xác thực nâng cao", "sudoPasswordAutoFill": "Tự động điền mật khẩu Sudo", "sudoPasswordAutoFillDesc": "Tự động đề nghị nhập mật khẩu SSH khi lệnh sudo yêu cầu mật khẩu.", @@ -1115,6 +1175,15 @@ "addVariable": "Thêm biến", "docker": "Docker", "openDocker": "Mở Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "Docker chưa được kích hoạt trên máy chủ này. Hãy kích hoạt nó trong Cài đặt máy chủ để sử dụng các tính năng của Docker.", "validating": "Đang xác thực Docker...", "error": "Lỗi", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "Mã xác minh", "totpPlaceholder": "000000", "totpVerify": "Xác minh", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "Nhập mật khẩu?", "sudoPasswordPopupHint": "Nhấn Enter để chèn, Esc để xóa", "sudoPasswordPopupConfirm": "Chèn", - "sudoPasswordPopupDismiss": "Miễn nhiệm" + "sudoPasswordPopupDismiss": "Miễn nhiệm", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "Trình quản lý tập tin", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} đã xóa thành công", "itemsDeletedSuccessfully": "{{count}} mục đã được xóa thành công", "failedToDeleteItems": "Không thể xóa các mục", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "Kéo thả tệp vào đây để tải lên", "emptyFolder": "Thư mục này trống", "itemCount": "{{count}} mục", @@ -1531,8 +1630,11 @@ "fileTooLarge": "Tệp quá lớn: {{error}}", "sshConnectionFailed": "Kết nối SSH thất bại. Vui lòng kiểm tra kết nối của bạn tới {{name}} ({{ip}}:{{port}})", "loadFileFailed": "Không thể tải tệp: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "Kết nối thành công", "totpVerificationFailed": "Xác thực TOTP thất bại", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "Mã xác minh:", "changePermissions": "Thay đổi quyền", "changePermissionsDesc": "Thay đổi quyền truy cập tệp cho", @@ -1548,8 +1650,18 @@ "failedToChangePermissions": "Không thể thay đổi quyền truy cập" }, "tunnel": { - "noTunnelsConfigured": "Chưa có đường hầm nào được cấu hình.", - "configureTunnelsInHostSettings": "Cấu hình các kết nối đường hầm trong Trình quản lý máy chủ để bắt đầu." + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "Đường hầm SSH", @@ -1624,6 +1736,8 @@ "refreshStatus": "Làm mới trạng thái", "fileManagerAlreadyOpen": "Trình quản lý tập tin đã được mở cho máy chủ này.", "openFileManager": "Mở trình quản lý tệp", + "connecting": "Đang kết nối...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU", "naCpus": "Không áp dụng CPU", @@ -1639,7 +1753,6 @@ "failedToFetchMetrics": "Không thể lấy số liệu thống kê máy chủ", "failedToFetchHomeData": "Không thể tải dữ liệu trang chủ.", "loadingMetrics": "Đang tải số liệu...", - "connecting": "Đang kết nối...", "refreshing": "Thật sảng khoái...", "serverOffline": "Máy chủ ngoại tuyến", "cannotFetchMetrics": "Không thể lấy số liệu từ máy chủ ngoại tuyến.", @@ -1682,7 +1795,34 @@ "executingQuickAction": "Đang thực thi {{name}}...", "quickActionSuccess": "{{name}} đã hoàn thành thành công", "quickActionFailed": "{{name}} thất bại", - "quickActionError": "Không thể thực thi {{name}}" + "quickActionError": "Không thể thực thi {{name}}", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "QUẢN LÝ MÁY CHỦ SSH", @@ -1824,7 +1964,11 @@ "emailExists": "Email này đã tồn tại.", "loadFailed": "Không thể tải dữ liệu", "saveError": "Không thể lưu", - "sessionExpired": "Phiên đăng nhập đã hết hạn - vui lòng đăng nhập lại." + "sessionExpired": "Phiên đăng nhập đã hết hạn - vui lòng đăng nhập lại.", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "Đã lưu thành công", @@ -1882,6 +2026,9 @@ "terminalSettings": "Phần cuối", "hostSidebarSettings": "Máy chủ & Thanh bên", "snippetsSettings": "Những đoạn trích", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "Mật khẩu hiện tại", "passwordChangedSuccess": "Mật khẩu đã được thay đổi thành công! Vui lòng đăng nhập lại.", "failedToChangePassword": "Không thể thay đổi mật khẩu. Vui lòng kiểm tra mật khẩu hiện tại của bạn và thử lại.", @@ -1890,7 +2037,9 @@ "themeDark": "Tối tăm", "themeSystem": "Hệ thống", "appearanceDesc": "Chọn chủ đề màu sắc cho ứng dụng.", - "terminalSyntaxHighlightingDesc": "Tự động tô sáng các lệnh, đường dẫn, địa chỉ IP và cấp độ nhật ký trong đầu ra thiết bị đầu cuối." + "terminalSyntaxHighlightingDesc": "Tự động tô sáng các lệnh, đường dẫn, địa chỉ IP và cấp độ nhật ký trong đầu ra thiết bị đầu cuối.", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "Không thể tải thông tin phiên bản" @@ -2085,6 +2234,7 @@ }, "dashboard": { "title": "Bảng điều khiển", + "loading": "Loading dashboard...", "github": "GitHub", "support": "Ủng hộ", "discord": "Discord", @@ -2114,7 +2264,88 @@ "noServerData": "Không có dữ liệu máy chủ nào khả dụng", "cpu": "CPU", "ram": "ĐẬP", - "notAvailable": "Không áp dụng" + "notAvailable": "Không áp dụng", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "Chia sẻ máy chủ", @@ -2306,9 +2537,15 @@ "notEnabled": "Docker chưa được kích hoạt trên máy chủ này.", "validating": "Đang xác thực Docker...", "connectingToHost": "Đang kết nối với máy chủ...", + "connecting": "Đang kết nối...", "error": "Lỗi", "errorCode": "Mã lỗi: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "Xác thực TOTP không thành công. Vui lòng thử lại.", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "Nhập mã xác minh", + "loadingContainers": "Đang xếp hàng vào container...", "containerStarted": "Container {{name}} đã khởi động", "failedToStartContainer": "Không thể khởi động container {{name}}", "containerStopped": "Container {{name}} đã dừng", @@ -2335,7 +2572,6 @@ "confirmRemoveContainer": "Bạn có chắc chắn muốn xóa vùng chứa '{{name}}' không? Hành động này không thể hoàn tác.", "runningContainerWarning": "Cảnh báo: Container này hiện đang chạy. Việc xóa container này sẽ dừng container trước khi thực thi.", "removing": "Đang xóa...", - "loadingContainers": "Đang xếp hàng vào container...", "noContainersFound": "Không tìm thấy thùng chứa nào", "noContainersFoundHint": "Hiện không có container Docker nào khả dụng trên máy chủ này.", "searchPlaceholder": "Tìm kiếm container...", @@ -2370,8 +2606,6 @@ "disconnectedFromContainer": "Đã ngắt kết nối khỏi container", "containerMustBeRunning": "Container phải đang chạy để truy cập bảng điều khiển.", "authenticationRequired": "Cần xác thực", - "verificationCodePrompt": "Nhập mã xác minh", - "totpVerificationFailed": "Xác thực TOTP không thành công. Vui lòng thử lại.", "connectedTo": "Đã kết nối với {{containerName}}", "disconnected": "Đã ngắt kết nối", "consoleError": "Lỗi bảng điều khiển", @@ -2382,7 +2616,6 @@ "bash": "Bash", "sh": "sh", "ash": "tro", - "connecting": "Đang kết nối...", "connect": "Kết nối", "disconnect": "Ngắt kết nối", "notConnected": "Không kết nối", @@ -2393,7 +2626,37 @@ "logs": "Nhật ký", "stats": "Thống kê", "consoleTab": "Bảng điều khiển", - "startContainerToAccess": "Khởi động container để truy cập bảng điều khiển." + "startContainerToAccess": "Khởi động container để truy cập bảng điều khiển.", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "Chuyển sang chế độ sáng", diff --git a/src/locales/translated/zh.json b/src/locales/translated/zh.json index dd4fd94f..735822bc 100644 --- a/src/locales/translated/zh.json +++ b/src/locales/translated/zh.json @@ -44,6 +44,8 @@ "passwordRequired": "需要密碼", "sshKeyRequired": "需要 SSH 金鑰", "credentialAddedSuccessfully": "憑證“{{name}}”已成功添加", + "savingCredential": "Saving credential...", + "updatingCredential": "Updating credential...", "general": "一般的", "description": "描述", "folder": "資料夾", @@ -184,6 +186,32 @@ "renameFolder": "重新命名資料夾", "idLabel": "ID:" }, + "quickConnect": { + "title": "Quick Connect", + "description": "Connect directly to a terminal or file manager session without saving a host configuration", + "ipAddress": "IP Address or Hostname", + "port": "Port", + "username": "Username", + "password": "Password", + "key": "SSH Private Key", + "keyPassword": "Key Password (Optional)", + "keyType": "Key Type", + "uploadFile": "Upload File", + "pasteKey": "Paste Key", + "credential": "Credential", + "overrideUsername": "Override Credential Username", + "overrideUsernameDesc": "Use a different username than the one stored in the credential", + "connectTerminal": "Connect to Terminal", + "connectFileManager": "Connect to File Manager", + "cancel": "Cancel", + "passwordRequired": "Password is required", + "keyRequired": "SSH key is required", + "credentialRequired": "Credential selection is required", + "connectionEstablished": "Connection established successfully", + "connectionFailed": "Failed to establish connection", + "autoDetect": "Auto Detect", + "authentication": "Authentication" + }, "dragIndicator": { "error": "錯誤: {{error}}", "dragging": "拖曳 {{fileName}}", @@ -387,6 +415,7 @@ "sshPath": "SSH路徑", "localPath": "本地路徑", "appName": "特米克斯", + "openInNewTab": "Open in New Tab", "resetSidebarWidth": "重置側邊欄寬度", "dragToResizeSidebar": "拖曳即可調整側邊欄大小", "noAuthCredentials": "此 SSH 主機沒有可用的身份驗證憑證", @@ -464,10 +493,12 @@ "retry": "重試", "checking": "檢查...", "checkingDatabase": "正在檢查資料庫連線...", + "checkingAuthentication": "Checking authentication...", "actions": "行動", "remove": "消除", "revoke": "撤銷", - "create": "創造" + "create": "創造", + "update": "Update" }, "nav": { "home": "家", @@ -489,7 +520,12 @@ "hostManager": "主機管理器", "cannotSplitTab": "無法拆分此標籤頁", "tabNavigation": "標籤導航", - "hostTabTitle": "{{username}}@{{ip}}:{{port}}" + "hostTabTitle": "{{username}}@{{ip}}:{{port}}", + "copyPassword": "Copy Password", + "copySudoPassword": "Copy Sudo Password", + "passwordCopied": "Password copied to clipboard", + "sudoPasswordCopied": "Sudo password copied to clipboard", + "noPasswordAvailable": "No password available" }, "admin": { "title": "管理員設定", @@ -537,6 +573,7 @@ "userRegistration": "用戶註冊", "allowNewAccountRegistration": "允許新帳戶註冊", "allowPasswordLogin": "允許使用者名稱/密碼登入", + "allowPasswordReset": "Allow password reset via reset code", "missingRequiredFields": "缺少必填欄位: {{fields}}", "oidcConfigurationUpdated": "OIDC配置更新成功!", "failedToFetchOidcConfig": "取得 OIDC 配置失敗", @@ -848,6 +885,13 @@ "autoStartContainer": "容器啟動時自動啟動", "autoStartDesc": "容器啟動時自動啟動此隧道", "addConnection": "新增隧道連接", + "tunnelType": "Tunnel Type", + "tunnelTypeLocal": "Local (-L)", + "tunnelTypeRemote": "Remote (-R)", + "tunnelTypeLocalDesc": "Forward local port to remote endpoint", + "tunnelTypeRemoteDesc": "Forward remote port to local machine", + "tunnelForwardDescriptionLocal": "This tunnel will forward traffic from local port {{sourcePort}} to port {{endpointPort}} on the endpoint machine.", + "tunnelForwardDescriptionRemote": "This tunnel will forward traffic from port {{sourcePort}} on the source machine (current connection details in general tab) to port {{endpointPort}} on the endpoint machine.", "sshpassRequired": "密碼驗證需要使用 SSH 密碼", "sshpassRequiredDesc": "對於隧道中的密碼認證,系統上必須安裝 sshpass。", "otherInstallMethods": "其他安裝方法:", @@ -855,13 +899,16 @@ "or": "或者", "centosRhelFedora": "CentOS/RHEL/Fedora", "macos": "macOS", - "windows": "視窗", + "windows": "Windows (WSL, no official binary)", "sshServerConfigRequired": "需要設定 SSH 伺服器", "sshServerConfigDesc": "對於隧道連接,必須設定 SSH 伺服器以允許連接埠轉送:", "gatewayPortsYes": "將遠端連接埠綁定到所有介面", "allowTcpForwardingYes": "啟用連接埠轉送", "permitRootLoginYes": "如果使用root使用者進行隧道連接", - "editSshConfig": "編輯 /etc/ssh/sshd_config 檔案並重新啟動 SSH 服務:sudo systemctl restart sshd", + "editSshConfig": "Edit the SSH configuration file:", + "sshConfigPath": "/etc/ssh/sshd_config", + "restartSshService": "Then restart the SSH service:", + "restartSshCommand": "sudo systemctl restart sshd", "upload": "上傳", "authentication": "驗證", "password": "密碼", @@ -1096,6 +1143,19 @@ "quickActionName": "動作名稱", "noSnippetFound": "未找到程式碼片段", "quickActionsOrder": "伺服器統計頁面上將按上述順序顯示快捷操作按鈕。", + "sidebarCustomization": "Sidebar Button Customization", + "sidebarCustomizationDesc": "Choose which actions appear as quick buttons in the sidebar. Actions not shown as buttons will appear in the dropdown menu.", + "showTerminalInSidebar": "Show Terminal Button", + "showTerminalInSidebarDesc": "Display terminal as a quick button in the sidebar", + "showFileManagerInSidebar": "Show File Manager Button", + "showFileManagerInSidebarDesc": "Display file manager as a quick button in the sidebar", + "showTunnelInSidebar": "Show Tunnel Button", + "showTunnelInSidebarDesc": "Display tunnel management as a quick button in the sidebar", + "showDockerInSidebar": "Show Docker Button", + "showDockerInSidebarDesc": "Display docker management as a quick button in the sidebar", + "showServerStatsInSidebar": "Show Server Stats Button", + "showServerStatsInSidebarDesc": "Display server statistics as a quick button in the sidebar", + "atLeastOneActionRequired": "At least one enabled action must be shown in the sidebar", "advancedAuthSettings": "進階身份驗證設定", "sudoPasswordAutoFill": "Sudo 密碼自動填充", "sudoPasswordAutoFillDesc": "當 sudo 提示輸入密碼時,自動提示輸入 SSH 密碼", @@ -1115,6 +1175,15 @@ "addVariable": "新增變數", "docker": "Docker", "openDocker": "Open Docker", + "copyFullScreenUrl": "Copy Full-Screen URL", + "fullScreenUrlCopied": "Full-screen URL copied to clipboard", + "failedToCopyUrl": "Failed to copy URL to clipboard", + "copyTerminalUrl": "Copy Terminal URL", + "copyFileManagerUrl": "Copy File Manager URL", + "copyTunnelUrl": "Copy Tunnel URL", + "copyServerStatsUrl": "Copy Server Stats URL", + "copyDockerUrl": "Copy Docker URL", + "fullScreenUrlTooltip": "Copy URL to open this app in full-screen mode", "notEnabled": "此主機未啟用 Docker。請在主機設定中啟用 Docker 以使用 Docker 功能。", "validating": "正在驗證 Docker...", "error": "錯誤", @@ -1241,10 +1310,34 @@ "totpCodeLabel": "驗證碼", "totpPlaceholder": "000000", "totpVerify": "核實", + "warpgateAuthRequired": "Warpgate Authentication Required", + "warpgateSecurityKey": "Security Key", + "warpgateAuthUrl": "Authentication URL", + "warpgateOpenBrowser": "Open in Browser", + "warpgateContinue": "I've Completed Authentication", + "warpgateTimeout": "Warpgate authentication timeout. Please reconnect.", "sudoPasswordPopupTitle": "輸入密碼?", "sudoPasswordPopupHint": "按 Enter 鍵插入,按 Esc 鍵關閉", "sudoPasswordPopupConfirm": "插入", - "sudoPasswordPopupDismiss": "解僱" + "sudoPasswordPopupDismiss": "解僱", + "websocketAbnormalClose": "Connection closed unexpectedly. This may be due to a reverse proxy or SSL configuration issue. Please check server logs.", + "totpInvalid": "Invalid code. Please try again.", + "authMethodFallback": "{{method}} authentication failed. Trying alternative method...", + "authenticationRequired": "Authentication required", + "connectionLogTitle": "Connection Log", + "connectionLogCopy": "Copy logs to clipboard", + "connectionLogClear": "Clear logs", + "connectionLogEmpty": "No connection logs yet", + "connectionLogConnecting": "Connecting to host...", + "connectionLogCopied": "Connection logs copied to clipboard", + "connectionLogCopyFailed": "Failed to copy logs to clipboard", + "allAuthMethodsFailed": "All authentication methods failed. Please check your credentials.", + "methodNotSupported": "Server does not support {{method}} authentication. Available methods: {{available}}", + "retryWithMethod": "Retry with {{method}}", + "automaticFallback": "Automatically trying {{method}} authentication...", + "totpTimeout": "TOTP verification timeout. Please reconnect.", + "passwordTimeout": "Password verification timeout. Please reconnect.", + "connectionRejected": "Connection rejected by server. Please check your authentication and network configuration." }, "fileManager": { "title": "文件管理器", @@ -1327,6 +1420,12 @@ "itemDeletedSuccessfully": "{{type}} 已成功刪除", "itemsDeletedSuccessfully": "{{count}} 項目已成功刪除", "failedToDeleteItems": "刪除項目失敗", + "sudoPasswordRequired": "Administrator Password Required", + "enterSudoPassword": "Enter sudo password to continue this operation", + "sudoPassword": "Sudo password", + "sudoOperationFailed": "Sudo operation failed", + "sudoAuthFailed": "Sudo authentication failed", + "deleteOperation": "Delete files/folders", "dragFilesToUpload": "文件拖放到這裡即可上傳", "emptyFolder": "此資料夾為空。", "itemCount": "{{count}} 項目", @@ -1371,10 +1470,6 @@ "downloadSuccess": "文件下載成功", "downloadFailed": "文件下載失敗", "permissionDenied": "没有权限", - "sudoAuthFailed": "Sudo 认证失败,请检查密码", - "accessDirectory": "访问此目录", - "deleteOperation": "删除这些项目", - "sudoOperationFailed": "Sudo 操作失败", "checkDockerLogs": "查看 Docker 日誌以取得詳細的錯誤訊息", "internalServerError": "發生內部伺服器錯誤", "serverError": "伺服器錯誤", @@ -1535,8 +1630,11 @@ "fileTooLarge": "文件過大: {{error}}", "sshConnectionFailed": "SSH 連線失敗。請檢查您與 {{name}} ({{ip}}:{{port}}) 的連線。", "loadFileFailed": "檔案載入失敗: {{error}}", + "connecting": "Connecting...", "connectedSuccessfully": "連線成功", "totpVerificationFailed": "TOTP驗證失敗", + "warpgateVerificationFailed": "Warpgate authentication failed", + "authenticationFailed": "Authentication failed", "verificationCodePrompt": "驗證碼:", "changePermissions": "更改權限", "changePermissionsDesc": "修改檔案權限", @@ -1552,8 +1650,18 @@ "failedToChangePermissions": "更改權限失敗" }, "tunnel": { - "noTunnelsConfigured": "未配置隧道", - "configureTunnelsInHostSettings": "首先在主機管理員中設定隧道連接,即可開始使用。" + "log": { + "connecting": "Establishing tunnel connection...", + "sourceConnecting": "Connecting to source host {{host}}...", + "sourceConnected": "Connected to source host", + "endpointResolving": "Resolving endpoint host {{host}}...", + "endpointResolved": "Endpoint host resolved", + "forwarding": "Setting up port forwarding {{localPort}} → {{remotePort}}...", + "connected": "Tunnel established successfully", + "retrying": "Connection failed, retrying in {{countdown}}s (attempt {{attempt}}/{{max}})...", + "retryExhausted": "Max retry attempts reached", + "error": "Tunnel connection failed: {{error}}" + } }, "tunnels": { "title": "SSH隧道", @@ -1628,6 +1736,8 @@ "refreshStatus": "刷新狀態", "fileManagerAlreadyOpen": "此主機的檔案管理器已開啟", "openFileManager": "開啟文件管理器", + "connecting": "正在連接...", + "connectionFailed": "Failed to connect to server", "cpuCores_one": "{{count}} CPU", "cpuCores_other": "{{count}} CPU", "naCpus": "N/A CPU", @@ -1643,7 +1753,6 @@ "failedToFetchMetrics": "取得伺服器指標失敗", "failedToFetchHomeData": "取得家庭數據失敗", "loadingMetrics": "正在加載指標...", - "connecting": "正在連接...", "refreshing": "令人耳目一新…", "serverOffline": "伺服器離線", "cannotFetchMetrics": "無法從離線伺服器取得指標", @@ -1686,7 +1795,34 @@ "executingQuickAction": "正在執行 {{name}}...", "quickActionSuccess": "{{name}} 已成功完成", "quickActionFailed": "{{name}} 失敗", - "quickActionError": "執行 {{name}}失敗" + "quickActionError": "執行 {{name}}失敗", + "ports": { + "title": "Listening Ports", + "protocol": "Protocol", + "port": "Port", + "address": "Address", + "state": "State", + "process": "Process", + "noData": "No listening ports data" + }, + "firewall": { + "title": "Firewall", + "active": "Active", + "inactive": "Inactive", + "notDetected": "Not Detected", + "policy": "Policy", + "rules": "rules", + "noRules": "No rules", + "noData": "No firewall data available", + "action": "Action", + "protocol": "Proto", + "port": "Port", + "source": "Source", + "accept": "ACCEPT", + "drop": "DROP", + "reject": "REJECT", + "anywhere": "Anywhere" + } }, "auth": { "tagline": "SSH 伺服器管理員", @@ -1828,7 +1964,11 @@ "emailExists": "電子郵件已存在", "loadFailed": "資料載入失敗", "saveError": "保存失敗", - "sessionExpired": "會話已過期 - 請重新登錄" + "sessionExpired": "會話已過期 - 請重新登錄", + "totpRateLimited": "Rate limited: Too many TOTP verification attempts. Please try again later.", + "totpRateLimitedWithTime": "Rate limited: Too many TOTP verification attempts. Please wait {{time}} seconds before trying again.", + "resetCodeRateLimited": "Rate limited: Too many verification attempts. Please try again later.", + "resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again." }, "messages": { "saveSuccess": "保存成功", @@ -1886,6 +2026,9 @@ "terminalSettings": "終端", "hostSidebarSettings": "主機和側邊欄", "snippetsSettings": "片段", + "updateSettings": "Updates", + "disableUpdateCheck": "Disable Update Check", + "disableUpdateCheckDesc": "Stop checking for new versions on startup and dashboard. Reduces network requests.", "currentPassword": "目前密碼", "passwordChangedSuccess": "密碼已成功更改!請重新登入。", "failedToChangePassword": "密碼更改失敗。請檢查您目前的密碼並重試。", @@ -1894,7 +2037,9 @@ "themeDark": "黑暗的", "themeSystem": "系統", "appearanceDesc": "選擇應用程式的顏色主題", - "terminalSyntaxHighlightingDesc": "自動高亮顯示終端輸出中的指令、路徑、IP位址和日誌等級" + "terminalSyntaxHighlightingDesc": "自動高亮顯示終端輸出中的指令、路徑、IP位址和日誌等級", + "enableCommandPaletteShortcut": "Enable Command Palette Shortcut", + "enableCommandPaletteShortcutDesc": "Double-tap left Shift to open the Command Palette for quick access to hosts" }, "user": { "failedToLoadVersionInfo": "版本資訊載入失敗" @@ -2089,6 +2234,7 @@ }, "dashboard": { "title": "儀表板", + "loading": "Loading dashboard...", "github": "GitHub", "support": "支援", "discord": "Discord", @@ -2118,7 +2264,88 @@ "noServerData": "伺服器資料不可用", "cpu": "中央處理器", "ram": "記憶體", - "notAvailable": "不適用" + "notAvailable": "不適用", + "customizeLayout": "Customize Dashboard", + "dashboardSettings": "Dashboard Settings", + "enableDisableCards": "Enable/Disable Cards", + "resetLayout": "Reset to Default", + "serverOverviewCard": "Server Overview", + "recentActivityCard": "Recent Activity", + "networkGraphCard": "Network Graph", + "networkGraph": "Network Graph", + "quickActionsCard": "Quick Actions", + "serverStatsCard": "Server Stats" + }, + "networkGraph": { + "title": "Network Graph", + "addHost": "Add Host", + "addGroup": "Add Group", + "addLink": "Add Link", + "deleteSelected": "Delete Selected", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "resetView": "Reset View", + "exportJson": "Export JSON", + "importJson": "Import JSON", + "selectHost": "Select Host", + "chooseHost": "Choose a host...", + "parentGroup": "Parent Group", + "noGroup": "No Group", + "groupName": "Group Name", + "color": "Color", + "source": "Source", + "target": "Target", + "moveToGroup": "Move to Group", + "selectGroup": "Select group...", + "addConnection": "Add Connection", + "hostDetails": "Host Details", + "connectToHost": "Connect to Host", + "openTerminal": "Open Terminal", + "openFileManager": "Open File Manager", + "openTunnel": "Open Tunnels", + "openDocker": "Open Docker", + "openServerStats": "Open Server Details", + "moveToGroupAction": "Move to Group", + "removeFromGroup": "Remove from Group", + "addHostHere": "Add Host Here", + "editGroup": "Edit Group", + "delete": "Delete", + "cancel": "Cancel", + "add": "Add", + "create": "Create", + "update": "Update", + "move": "Move", + "connect": "Connect", + "close": "Close", + "createGroup": "Create Group", + "noAvailableHosts": "No available hosts", + "selectSourcePlaceholder": "Select Source...", + "selectTargetPlaceholder": "Select Target...", + "invalidFile": "Invalid File", + "hostAlreadyExists": "Host is already in the topology", + "sourceTargetMustDiffer": "Source and target must be different", + "connectionExists": "Connection already exists", + "unknown": "Unknown", + "name": "Name", + "ip": "IP", + "status": "Status", + "id": "ID", + "failedToLoadData": "Failed to load network topology data", + "failedToAddNode": "Failed to add node", + "sourceDifferentFromTarget": "Source and target must be different", + "exportJSON": "Export JSON", + "importJSON": "Import JSON", + "searchHost": "Search hosts...", + "noHostFound": "No hosts found", + "searchGroup": "Search groups...", + "noGroupFound": "No groups found", + "searchNode": "Search nodes...", + "noNodeFound": "No nodes found", + "terminal": "Terminal", + "fileManager": "File Manager", + "tunnel": "Tunnel", + "docker": "Docker", + "serverStats": "Server Stats" }, "rbac": { "shareHost": "共享主機", @@ -2310,9 +2537,15 @@ "notEnabled": "此主機未啟用 Docker", "validating": "正在驗證 Docker...", "connectingToHost": "正在連接主機...", + "connecting": "正在連接...", "error": "錯誤", "errorCode": "錯誤代碼: {{code}}", "version": "Docker {{version}}", + "connectionFailed": "Failed to connect to Docker", + "totpVerificationFailed": "TOTP驗證失敗,請重試。", + "warpgateVerificationFailed": "Warpgate authentication failed. Please try again.", + "verificationCodePrompt": "請輸入驗證碼", + "loadingContainers": "正在裝載貨櫃…", "containerStarted": "容器 {{name}} 已啟動", "failedToStartContainer": "啟動容器失敗 {{name}}", "containerStopped": "容器 {{name}} 已停止", @@ -2339,7 +2572,6 @@ "confirmRemoveContainer": "您確定要刪除容器“{{name}}”嗎?此操作無法撤銷。", "runningContainerWarning": "警告:此容器目前正在運行。移除此容器會先停止其運作。", "removing": "移除…", - "loadingContainers": "正在裝載貨櫃…", "noContainersFound": "未找到容器", "noContainersFoundHint": "此主機上沒有可用的 Docker 容器", "searchPlaceholder": "搜尋容器…", @@ -2374,8 +2606,6 @@ "disconnectedFromContainer": "與容器斷開連接", "containerMustBeRunning": "容器必須正在運行才能存取控制台", "authenticationRequired": "需要身份驗證", - "verificationCodePrompt": "請輸入驗證碼", - "totpVerificationFailed": "TOTP驗證失敗,請重試。", "connectedTo": "連接到 {{containerName}}", "disconnected": "斷開連接", "consoleError": "控制台錯誤", @@ -2386,7 +2616,6 @@ "bash": "巴什", "sh": "什", "ash": "灰", - "connecting": "正在連接...", "connect": "連接", "disconnect": "斷開", "notConnected": "未連接", @@ -2397,7 +2626,37 @@ "logs": "紀錄", "stats": "統計數據", "consoleTab": "安慰", - "startContainerToAccess": "啟動容器以存取控制台" + "startContainerToAccess": "啟動容器以存取控制台", + "log": { + "connecting": "Connecting to Docker host...", + "authStarted": "Resolving authentication credentials...", + "totpRequired": "TOTP verification required", + "warpgateRequired": "Warpgate authentication required", + "sessionCreated": "Docker SSH session established", + "sessionReady": "Ready for Docker operations", + "error": "Docker connection failed: {{error}}" + } + }, + "stats": { + "log": { + "connecting": "Starting metrics collection...", + "existingSession": "Using existing metrics session", + "totpVerifying": "TOTP verification required", + "sessionEstablished": "Metrics session established", + "collecting": "Collecting server metrics", + "heartbeat": "Keeping connection alive", + "stopped": "Metrics collection stopped", + "error": "Metrics collection failed: {{error}}" + } + }, + "sftp": { + "log": { + "connecting": "Connecting to SFTP server...", + "jumpHost": "Connecting via jump host {{host}}...", + "connected": "SFTP connection established", + "authFailed": "Authentication failed", + "error": "SFTP operation failed: {{error}}" + } }, "theme": { "switchToLight": "切換到燈光",