mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-08-29 18:31:33 +00:00
+2


![copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>](/assets/img/avatar_default.png)



![dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>](/assets/img/avatar_default.png)


Luke Gustafson
XtraLarge <>
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
L.H.
default-student
Brad Baker
copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Copilot Autofix powered by AI
Brennan Neoh
brennanneoh
XtraLarge
ZacharyZcR
1a26628a48
* fix: general bug fixes * fix: general qol additions * ci(deps): bump actions/setup-node in the github-actions group (#1068) Bumps the github-actions group with 1 update: [actions/setup-node](https://github.com/actions/setup-node). Updates `actions/setup-node` from 6 to 7 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps-dev): bump the dev-patch-updates group with 28 updates (#1069) Bumps the dev-patch-updates group with 28 updates: | Package | From | To | | --- | --- | --- | | [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) | `2.5.2` | `2.5.4` | | [@codemirror/view](https://github.com/codemirror/view) | `6.43.5` | `6.43.6` | | [@radix-ui/react-accordion](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/accordion) | `1.2.15` | `1.2.17` | | [@radix-ui/react-alert-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/alert-dialog) | `1.1.18` | `1.1.20` | | [@radix-ui/react-checkbox](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/checkbox) | `1.3.6` | `1.3.8` | | [@radix-ui/react-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dialog) | `1.1.18` | `1.1.20` | | [@radix-ui/react-dropdown-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dropdown-menu) | `2.1.19` | `2.1.21` | | [@radix-ui/react-label](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/label) | `2.1.11` | `2.1.12` | | [@radix-ui/react-popover](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/popover) | `1.1.18` | `1.1.20` | | [@radix-ui/react-progress](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/progress) | `1.1.11` | `1.1.13` | | [@radix-ui/react-scroll-area](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/scroll-area) | `1.2.13` | `1.2.15` | | [@radix-ui/react-select](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/select) | `2.3.2` | `2.3.4` | | [@radix-ui/react-separator](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/separator) | `1.1.11` | `1.1.12` | | [@radix-ui/react-slider](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/slider) | `1.4.2` | `1.4.4` | | [@radix-ui/react-switch](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/switch) | `1.3.2` | `1.3.4` | | [@radix-ui/react-tabs](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/tabs) | `1.1.16` | `1.1.18` | | [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/tooltip) | `1.2.11` | `1.2.13` | | [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.3.2` | `4.3.3` | | [@uiw/codemirror-extensions-langs](https://github.com/uiwjs/react-codemirror) | `4.25.10` | `4.25.11` | | [@uiw/codemirror-theme-github](https://github.com/uiwjs/react-codemirror) | `4.25.10` | `4.25.11` | | [@uiw/react-codemirror](https://github.com/uiwjs/react-codemirror) | `4.25.10` | `4.25.11` | | [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.9` | `4.1.10` | | [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.1.9` | `4.1.10` | | [i18next](https://github.com/i18next/i18next) | `26.3.4` | `26.3.6` | | [radix-ui](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/radix-ui) | `1.6.1` | `1.6.3` | | [react-i18next](https://github.com/i18next/react-i18next) | `17.0.8` | `17.0.10` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.3.2` | `4.3.3` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.9` | `4.1.10` | Updates `@biomejs/biome` from 2.5.2 to 2.5.4 - [Release notes](https://github.com/biomejs/biome/releases) - [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md) - [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.5.4/packages/@biomejs/biome) Updates `@codemirror/view` from 6.43.5 to 6.43.6 - [Changelog](https://github.com/codemirror/view/blob/main/CHANGELOG.md) - [Commits](https://github.com/codemirror/view/commits) Updates `@radix-ui/react-accordion` from 1.2.15 to 1.2.17 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/accordion/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/accordion) Updates `@radix-ui/react-alert-dialog` from 1.1.18 to 1.1.20 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/alert-dialog/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/alert-dialog) Updates `@radix-ui/react-checkbox` from 1.3.6 to 1.3.8 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/checkbox/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/checkbox) Updates `@radix-ui/react-dialog` from 1.1.18 to 1.1.20 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dialog/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dialog) Updates `@radix-ui/react-dropdown-menu` from 2.1.19 to 2.1.21 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dropdown-menu/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dropdown-menu) Updates `@radix-ui/react-label` from 2.1.11 to 2.1.12 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/label/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/label) Updates `@radix-ui/react-popover` from 1.1.18 to 1.1.20 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/popover/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/popover) Updates `@radix-ui/react-progress` from 1.1.11 to 1.1.13 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/progress/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/progress) Updates `@radix-ui/react-scroll-area` from 1.2.13 to 1.2.15 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/scroll-area/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/scroll-area) Updates `@radix-ui/react-select` from 2.3.2 to 2.3.4 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/select/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/select) Updates `@radix-ui/react-separator` from 1.1.11 to 1.1.12 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/separator/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/separator) Updates `@radix-ui/react-slider` from 1.4.2 to 1.4.4 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/slider/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/slider) Updates `@radix-ui/react-switch` from 1.3.2 to 1.3.4 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/switch/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/switch) Updates `@radix-ui/react-tabs` from 1.1.16 to 1.1.18 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/tabs/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/tabs) Updates `@radix-ui/react-tooltip` from 1.2.11 to 1.2.13 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/tooltip/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/tooltip) Updates `@tailwindcss/vite` from 4.3.2 to 4.3.3 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/@tailwindcss-vite) Updates `@uiw/codemirror-extensions-langs` from 4.25.10 to 4.25.11 - [Release notes](https://github.com/uiwjs/react-codemirror/releases) - [Commits](https://github.com/uiwjs/react-codemirror/compare/v4.25.10...v4.25.11) Updates `@uiw/codemirror-theme-github` from 4.25.10 to 4.25.11 - [Release notes](https://github.com/uiwjs/react-codemirror/releases) - [Commits](https://github.com/uiwjs/react-codemirror/compare/v4.25.10...v4.25.11) Updates `@uiw/react-codemirror` from 4.25.10 to 4.25.11 - [Release notes](https://github.com/uiwjs/react-codemirror/releases) - [Commits](https://github.com/uiwjs/react-codemirror/compare/v4.25.10...v4.25.11) Updates `@vitest/coverage-v8` from 4.1.9 to 4.1.10 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/coverage-v8) Updates `@vitest/ui` from 4.1.9 to 4.1.10 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/ui) Updates `i18next` from 26.3.4 to 26.3.6 - [Release notes](https://github.com/i18next/i18next/releases) - [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next/compare/v26.3.4...v26.3.6) Updates `radix-ui` from 1.6.1 to 1.6.3 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/radix-ui/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/radix-ui) Updates `react-i18next` from 17.0.8 to 17.0.10 - [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/react-i18next/compare/v17.0.8...v17.0.10) Updates `tailwindcss` from 4.3.2 to 4.3.3 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/tailwindcss) Updates `vitest` from 4.1.9 to 4.1.10 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/vitest) --- updated-dependencies: - dependency-name: "@biomejs/biome" dependency-version: 2.5.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@codemirror/view" dependency-version: 6.43.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-accordion" dependency-version: 1.2.17 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-alert-dialog" dependency-version: 1.1.20 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-checkbox" dependency-version: 1.3.8 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-dialog" dependency-version: 1.1.20 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-dropdown-menu" dependency-version: 2.1.21 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-label" dependency-version: 2.1.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-popover" dependency-version: 1.1.20 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-progress" dependency-version: 1.1.13 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-scroll-area" dependency-version: 1.2.15 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-select" dependency-version: 2.3.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-separator" dependency-version: 1.1.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-slider" dependency-version: 1.4.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-switch" dependency-version: 1.3.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-tabs" dependency-version: 1.1.18 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-tooltip" dependency-version: 1.2.13 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@tailwindcss/vite" dependency-version: 4.3.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@uiw/codemirror-extensions-langs" dependency-version: 4.25.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@uiw/codemirror-theme-github" dependency-version: 4.25.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@uiw/react-codemirror" dependency-version: 4.25.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@vitest/coverage-v8" dependency-version: 4.1.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@vitest/ui" dependency-version: 4.1.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: i18next dependency-version: 26.3.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: radix-ui dependency-version: 1.6.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: react-i18next dependency-version: 17.0.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: tailwindcss dependency-version: 4.3.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: vitest dependency-version: 4.1.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump ws in the prod-patch-updates group (#1071) Bumps the prod-patch-updates group with 1 update: [ws](https://github.com/websockets/ws). Updates `ws` from 8.21.0 to 8.21.1 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.21.0...8.21.1) --- updated-dependencies: - dependency-name: ws dependency-version: 8.21.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-patch-updates ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump the major-updates group with 2 updates (#1072) Bumps the major-updates group with 2 updates: [nanoid](https://github.com/ai/nanoid) and [typescript](https://github.com/microsoft/TypeScript). Updates `nanoid` from 5.1.16 to 6.0.0 - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/5.1.16...6.0.0) Updates `typescript` from 6.0.3 to 7.0.2 - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](https://github.com/microsoft/TypeScript/commits) --- updated-dependencies: - dependency-name: nanoid dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: major-updates - dependency-name: typescript dependency-version: 7.0.2 dependency-type: direct:development update-type: version-update:semver-major dependency-group: major-updates ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: general qol additions and new analytics/telemetrics feature * fix: incorrect version sent to posthog * feat: add multiplayer/shared sessions for terminal and guacd * feat: rework Electron desktop app to run standalone-first with optional two-way sync to a remote Termix server * Fix Guacamole tab visibility lifecycle (#1074) Co-authored-by: default-student <default-student@github.com> Co-authored-by: Luke Gustafson <88517757+LukeGus@users.noreply.github.com> * fix(alerts): send channel config as object payload instead of JSON string (#1075) * fix tmux-monitor tailscale issue (#1076) * Initial plan * fix(tmux-monitor): explicitly handle tailscale auth in PanePreview hostConfig For Tailscale-auth hosts the pane-preview attach path was building the Terminal hostConfig with only the generic spread of host fields. This could omit or mismap auth-critical details and trigger a plain TCP/SSH reachability path that doesn't work with Tailscale-only SSH endpoints. The fix branches on `host.authType === "tailscale"` and: - Carries `authType: "tailscale"` explicitly so the backend always selects the Tailscale-aware PTY path regardless of how the host object evolves. - Derives `port` from `host.sshPort ?? host.port` so Tailscale SSH endpoints on a non-default SSH port are reached correctly. - Leaves all non-tailscale auth types on the unchanged code path. Reattach (bumping instanceId + attachNonce) continues to work because terminalHostConfig is recomputed on every render with the latest instanceIdRef.current value. * refactor(tmux-monitor): simplify tailscale port logic with extracted variable Address code review feedback: extract resolvedPort into a local variable to avoid the duplicated `host.sshPort ?? host.port` expression that was assigned to both `port` and `sshPort`. Restructure as an if/else block instead of an IIFE for readability. * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * chore: run prettier * chore: update beta release text * fix: cant update credential of an RDP host * feat: add custom key shortcuts * feat: add support for MFA over SSH * fix: Invalid websocket frame causing code 10006 crash triggering restart loop * fix(net): correct SSRF blocklist false-positive blocking all outbound IPv4 (#1079) * fix: correct IPv4-mapped-IPv6 blocklist entry blocking all outbound IPv4 ::ffff:0:0/96 in the IPv6 blocklist matches every IPv4 address once mapped, since Node's BlockList compares addresses in their mapped form internally regardless of the declared family. This caused safeOutboundFetch to reject all IPv4-resolved destinations as private, breaking outbound requests (e.g. ntfy/webhook notifications) whenever DNS resolved to IPv4. Replaced with individual mapped ranges mirroring the existing IPv4 blocklist. * test: cover isBlockedAddress and link the Node BlockList citation Exports isBlockedAddress so its family-crossing behavior around IPv4-mapped-IPv6 addresses can actually be asserted, instead of relying on manual container debugging to notice a regression. Also swaps the prior "Node's BlockList compares addresses in mapped form" comment for one citing the documented example in the Node docs (https://nodejs.org/api/net.html#class-netblocklist), since that behavior isn't otherwise obvious from the addSubnet/check call sites. Related: Termix-SSH/Support#1024 * refactor: derive IPv6 mirror from IPv4 list, split DNS error messages Two follow-ups from review: - The IPv6 blocklist previously hand-duplicated each IPv4 range as its IPv4-mapped-IPv6 equivalent. Nothing enforced the two stayed in sync, which is exactly how the original bug (a mismatched ::ffff:0:0/96 entry blocking all IPv4) was introduced in the first place. Now derived from a single blockedIpv4Ranges list in one loop. - The connect.lookup hook threw the same "Private destinations are not allowed" for both an empty DNS result and an actually-blocked address. An empty result is a resolution failure, not a privacy decision, and conflating the two is the same kind of opaque-error problem that made this bug slow to diagnose in production. Split into distinct messages. Also extracted the lookup hook itself (createDnsLookupHook) so it can be unit-tested against a fake resolver directly, instead of only through a real fetch()/Agent call — the bug lived entirely in this callback, and undici wraps any error thrown here as a generic "fetch failed" TypeError, which is why isolating it matters for testability. --------- Co-authored-by: brennanneoh <497569+brennanneoh@users.noreply.github.com> * fix(ssh): do not offer chacha20-poly1305 without the native ssh2 binding (#1081) The availability probe treated a working OpenSSL "chacha20" cipher as proof that chacha20-poly1305@openssh.com is usable. It is not: ssh2 pure-JS chacha20-poly1305 corrupts the transport, so the peer aborts the KEX ("incomplete message [preauth]") and the connection times out. Easy to hit on jump-host connections whose target sshd negotiates chacha20-poly1305 first. Only trust the native binding (sshcrypto.node); otherwise leave the cipher disabled so filterCiphers() drops it and AES-GCM is negotiated instead. Co-authored-by: XtraLarge <> * fix: add Swiss German server layout (#1078) * chore: update release notes * feat: continue improving desktop app 2-way sync with logic fixes and a migration dialog * fix: dekstop app showing auth form without syncing * feat: create desktop auto sessions for existing setups * feat: add electron backend killing * fix: electron login and session related bugs and updated readme for v2.6.0 * chore: finalize release notes * fix: click to expand hosts including extra bottom margin * fix: desktop auth modal failing to log users in * fix: desktop app failing to sync * fix: reverse proxy causing sync error * chore: lint, format, and bump version to 2.6.0 * chore: sync Crowdin translations for 2.6.0 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: L.H. <117188168+default-student@users.noreply.github.com> Co-authored-by: default-student <default-student@github.com> Co-authored-by: Brad Baker <xyzulu@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Brennan Neoh <brennanneoh@users.noreply.github.com> Co-authored-by: brennanneoh <497569+brennanneoh@users.noreply.github.com> Co-authored-by: XtraLarge <eMail@WilliWerres.de> Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
3686 lines
169 KiB
JSON
3686 lines
169 KiB
JSON
{
|
||
"termixId": {
|
||
"title": "Termix ID",
|
||
"loadFailed": "Termix ID 加载失败",
|
||
"claimTitle": "认领您的 Termix ID",
|
||
"claimIntro": "选择一个唯一的用户名。您的 SSH 公钥将发布在一个公开 URL 上,您可以将该 URL 添加到任意服务器的 authorized_keys 文件中。",
|
||
"handleLabel": "用户名",
|
||
"handlePlaceholder": "alice",
|
||
"checking": "检查中…",
|
||
"available": "可用",
|
||
"taken": "已被占用",
|
||
"invalidHandle": "仅允许小写字母、数字、- 和 _",
|
||
"descriptionLabel": "描述(可选)",
|
||
"descriptionPlaceholder": "工作笔记本和手机密钥",
|
||
"create": "创建 Termix ID",
|
||
"created": "Termix ID 已创建",
|
||
"createFailed": "创建 Termix ID 失败",
|
||
"deleteConfirm": "删除您的 Termix ID 和所有已发布的密钥?您配置的服务器将保留密钥,直到您手动移除。",
|
||
"deleted": "Termix ID 已删除",
|
||
"deleteFailed": "删除 Termix ID 失败",
|
||
"copyFailed": "复制失败",
|
||
"resolverUrlLabel": "公开解析器 URL",
|
||
"provisionLabel": "配置服务器",
|
||
"publishTitle": "发布公钥",
|
||
"generate": "生成",
|
||
"generateTooltip": "生成 Ed25519 密钥对 — 发布公钥并将私钥下载到您的设备",
|
||
"saveToVault": "保存到凭据",
|
||
"keyPlaceholder": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5... user@host",
|
||
"labelPlaceholder": "标签(可选)",
|
||
"add": "添加",
|
||
"importFromCredential": "或从已存储的凭据导入",
|
||
"keyPublished": "密钥已发布",
|
||
"addKeyFailed": "添加密钥失败",
|
||
"generatedSaved": "密钥对已生成并保存到您的凭据库。私钥也已下载。",
|
||
"generatedOnly": "密钥对已生成 — 私钥已下载(仅显示一次)。",
|
||
"generateFailed": "密钥生成失败",
|
||
"imported": "密钥已从凭据导入",
|
||
"importFailed": "导入密钥失败",
|
||
"noKeys": "尚未发布公钥。",
|
||
"keysTitle": "已发布的密钥",
|
||
"published": "已发布",
|
||
"hidden": "隐藏",
|
||
"keyRemoved": "密钥已移除",
|
||
"removeKeyFailed": "移除密钥失败",
|
||
"updateKeyFailed": "更新密钥失败",
|
||
"fromVault": "来自凭据 Vault",
|
||
"linkedToTermixId": "通过 Termix ID 发布",
|
||
"selectCredential": "选择凭据...",
|
||
"import": "导入",
|
||
"caTitle": "证书颁发机构",
|
||
"caIntro": "在服务器上信任此 CA,它将接受您签名的任何证书。轮换可一次性吊销所有证书;证书也会自动过期。",
|
||
"caEnable": "启用 CA",
|
||
"caEnabled": "CA 已启用",
|
||
"caCreateFailed": "启用 CA 失败",
|
||
"caPublicKeyLabel": "CA 公钥",
|
||
"caTrustLabel": "在服务器上信任(以 root 身份运行)",
|
||
"caRotate": "轮换",
|
||
"caRotateConfirm": "轮换 CA?其已签名的所有证书将停止被接受,必须重新签发。",
|
||
"caRotated": "CA 已轮换 — 先前证书已吊销",
|
||
"caRotateFailed": "轮换 CA 失败",
|
||
"caDelete": "移除 CA",
|
||
"caDeleteConfirm": "移除证书颁发机构?",
|
||
"caDeleted": "CA 已移除",
|
||
"caDeleteFailed": "移除 CA 失败",
|
||
"caValidityLabel": "证书有效期(天)",
|
||
"issueCert": "证书",
|
||
"issueCertTooltip": "为此密钥签发一个 SSH 证书,由您的 CA 签名",
|
||
"certIssued": "证书已签发并下载",
|
||
"certIssueFailed": "签发证书失败"
|
||
},
|
||
"credentials": {
|
||
"folders": "文件夹",
|
||
"folder": "文件夹",
|
||
"password": "密码",
|
||
"key": "密钥",
|
||
"sshPrivateKey": "SSH 私钥",
|
||
"upload": "上传",
|
||
"keyPassword": "密钥密码",
|
||
"sshKey": "SSH 密钥",
|
||
"uploadPrivateKeyFile": "上传私钥文件",
|
||
"searchCredentials": "搜索凭据...",
|
||
"addCredential": "添加凭据",
|
||
"caCertificate": "CA 证书 (-cert.pub)",
|
||
"caCertificateDescription": "可选:上传或粘贴 CA 签名的证书文件(例如 id_ed25519-cert.pub)。当您的 SSH 服务器使用基于证书的授权时需要。",
|
||
"uploadCertFile": "上传 -cert.pub 文件",
|
||
"clearCert": "清除",
|
||
"certLoaded": "证书已加载",
|
||
"certPublicKeyLabel": "CA 证书",
|
||
"certTypeLabel": "证书类型",
|
||
"pasteOrUploadCert": "粘贴或上传一个 -cert.pub 证书...",
|
||
"hasCaCert": "已有 CA 证书",
|
||
"noCaCert": "无 CA 证书",
|
||
"noPublicKeyAvailable": "没有公钥可用。请先打开凭据编辑器。",
|
||
"deployCommandCopied": "部署命令已复制",
|
||
"sortCredentials": "排序凭据",
|
||
"sortDefault": "默认顺序",
|
||
"sortNameAsc": "名称(A → Z)",
|
||
"sortNameDesc": "名称(Z → A)",
|
||
"sortUsernameAsc": "用户名(A → Z)",
|
||
"sortUsernameDesc": "用户名(Z → A)",
|
||
"filterCredentials": "筛选凭据",
|
||
"filterClearAll": "清除筛选",
|
||
"filterTypeGroup": "类型",
|
||
"filterTypePassword": "密码",
|
||
"filterTypeKey": "SSH 密钥",
|
||
"filterTagsGroup": "标签"
|
||
},
|
||
"homepage": {
|
||
"title": "主页",
|
||
"addWidget": "添加小部件",
|
||
"editWidget": "编辑小部件",
|
||
"deleteWidget": "删除",
|
||
"widgetTypes": "小部件类型",
|
||
"serviceLink": "服务链接",
|
||
"folder": "文件夹",
|
||
"clock": "时钟",
|
||
"notes": "笔记",
|
||
"hostStatus": "主机状态",
|
||
"bookmarkList": "书签",
|
||
"zoomIn": "放大",
|
||
"zoomOut": "缩小",
|
||
"resetView": "重置视图",
|
||
"lockLayout": "锁定布局",
|
||
"unlockLayout": "解锁布局",
|
||
"noWidgets": "右键单击或点击 + 来添加第一个小部件",
|
||
"openFullView": "打开完整视图",
|
||
"previewTitle": "首页预览",
|
||
"cancel": "取消",
|
||
"save": "保存",
|
||
"title_label": "标题",
|
||
"widgetTitlePlaceholder": "小组件标题(可选)",
|
||
"url": "URL",
|
||
"imageUrl": "自定义图片 URL",
|
||
"imageUrlHint": "留空将自动使用网站图标",
|
||
"showImage": "显示图片",
|
||
"description": "描述",
|
||
"color": "颜色",
|
||
"icon": "图标",
|
||
"expanded": "默认展开",
|
||
"timezone": "时区",
|
||
"showSeconds": "显示秒",
|
||
"format12h": "12 小时制",
|
||
"format24h": "24 小时制",
|
||
"content": "内容",
|
||
"backgroundColor": "背景颜色",
|
||
"host": "主机",
|
||
"showMetrics": "显示指标",
|
||
"links": "链接",
|
||
"addLink": "添加链接",
|
||
"linkLabel": "标签",
|
||
"linkUrl": "URL",
|
||
"removeLink": "移除",
|
||
"categoryLinks": "链接",
|
||
"categoryInfo": "信息",
|
||
"categorySystem": "系统",
|
||
"widgetServiceLinkDesc": "可点击的磁贴,链接到服务 URL",
|
||
"widgetFolderDesc": "将相关小组件分组的容器",
|
||
"widgetClockDesc": "带有可配置时区的实时时钟",
|
||
"widgetNotesDesc": "Markdown 笔记小组件",
|
||
"widgetHostStatusDesc": "显示 SSH 主机的实时 CPU、内存和磁盘",
|
||
"widgetBookmarkListDesc": "快速链接列表",
|
||
"copyLink": "复制链接",
|
||
"linkCopied": "链接已复制!",
|
||
"location": "位置",
|
||
"temperatureUnit": "温度单位",
|
||
"showForecast": "显示三日天气预报",
|
||
"scrolling": "允许滚动",
|
||
"feedUrl": "订阅源 URL",
|
||
"maxItems": "最大条目数",
|
||
"showDescription": "显示描述",
|
||
"widgetWeatherName": "天气",
|
||
"widgetWeatherDesc": "实时天气信息",
|
||
"widgetIframeName": "iFrame 嵌入",
|
||
"widgetIframeDesc": "在 iframe 中嵌入任意 URL",
|
||
"widgetRssName": "RSS 订阅源",
|
||
"widgetRssDesc": "显示 RSS 或 Atom 订阅源中的条目",
|
||
"dragToFolder": "拖动小组件至此或点击 + 添加",
|
||
"showDisk": "显示磁盘使用情况",
|
||
"addToFolder": "添加小组件到文件夹",
|
||
"noHostSelected": "未选择主机",
|
||
"metricsNotAvailable": "指标不可用",
|
||
"selectHost": "选择主机...",
|
||
"displayedMetrics": "显示指标",
|
||
"metricCpu": "CPU",
|
||
"metricMemory": "内存",
|
||
"metricDisk": "磁盘",
|
||
"metricUptime": "运行时间",
|
||
"metricSystem": "系统",
|
||
"metricOs": "操作系统",
|
||
"metricKernel": "内核",
|
||
"metricHostname": "主机名",
|
||
"metricNetwork": "网络",
|
||
"metricProcesses": "进程",
|
||
"metricProcessesTotal": "总数",
|
||
"metricProcessesRunning": "运行中",
|
||
"categoryMonitoring": "监控",
|
||
"loading": "加载中...",
|
||
"noData": "暂无数据",
|
||
"allClear": "一切正常",
|
||
"acknowledgeAlert": "确认告警",
|
||
"noPingUrls": "未配置 URL",
|
||
"pingLabel": "标签",
|
||
"addPingUrl": "添加 URL",
|
||
"showLatency": "显示延迟",
|
||
"refreshInterval": "刷新间隔",
|
||
"seconds": "秒",
|
||
"filterActivityTypes": "过滤类型",
|
||
"filterTypesHint": "留空显示全部",
|
||
"showTimestamp": "显示时间戳",
|
||
"uptimeUnavailable": "运行时间不可用",
|
||
"uptimeLabel": "运行时间",
|
||
"overviewVersion": "版本",
|
||
"overviewUpdate": "已是最新",
|
||
"overviewUpdateAvailable": "有可用更新",
|
||
"overviewDatabase": "数据库",
|
||
"overviewUptime": "运行时间",
|
||
"noHosts": "未配置主机",
|
||
"hostGridHosts": "主机",
|
||
"hostGridAllHint": "留空显示所有主机",
|
||
"columns": "列",
|
||
"showIp": "显示 IP 地址",
|
||
"connectionType": "连接类型",
|
||
"layout": "布局",
|
||
"showStatus": "显示状态",
|
||
"showHostName": "显示主机名称",
|
||
"noDockerActivity": "无 Docker 活动",
|
||
"noActivity": "无活动",
|
||
"showAcknowledged": "显示已确认",
|
||
"showCurrentValue": "显示当前值",
|
||
"chartMetric": "指标",
|
||
"metricRange": "范围",
|
||
"widgetMetricsChartName": "指标图表",
|
||
"widgetMetricsChartDesc": "主机的历史 CPU、内存、磁盘或网络图表",
|
||
"widgetHostGridName": "主机网格",
|
||
"widgetHostGridDesc": "SSH 主机状态的网格视图",
|
||
"widgetAlertFeedName": "告警信息流",
|
||
"widgetAlertFeedDesc": "实时告警触发信息,支持确认操作",
|
||
"widgetPingStatusName": "Ping 状态",
|
||
"widgetPingStatusDesc": "一个或多个 URL 的 HTTP ping 状态",
|
||
"widgetRecentActivityName": "近期活动",
|
||
"widgetRecentActivityDesc": "可滚动的近期 Termix 活动信息流",
|
||
"widgetTermixUptimeName": "Termix 运行时间",
|
||
"widgetTermixUptimeDesc": "Termix 服务器的实时运行时间计数器",
|
||
"widgetSystemOverviewName": "系统概览",
|
||
"widgetSystemOverviewDesc": "一目了然地查看 Termix 版本、数据库运行状况和运行时间",
|
||
"widgetSshQuickConnectName": "SSH 快速连接",
|
||
"widgetSshQuickConnectDesc": "一键打开 SSH 会话的按钮",
|
||
"widgetDockerActivityName": "Docker 活动",
|
||
"widgetDockerActivityDesc": "所有主机上最近的 Docker 容器事件",
|
||
"widgetCalendarName": "日历",
|
||
"widgetCalendarDesc": "月历,高亮显示今天",
|
||
"widgetCountdownName": "倒计时",
|
||
"widgetCountdownDesc": "倒计时至目标日期",
|
||
"widgetSearchBarName": "搜索栏",
|
||
"widgetSearchBarDesc": "快速网页搜索小部件",
|
||
"widgetTextBannerName": "文本横幅",
|
||
"widgetTextBannerDesc": "用于画布的粗体标签或分区标题",
|
||
"widgetImageWidgetName": "图像",
|
||
"widgetImageWidgetDesc": "显示来自 URL 的图像",
|
||
"widgetMarkdownNotesName": "Markdown 笔记",
|
||
"widgetMarkdownNotesDesc": "支持内联 Markdown 渲染的富文本笔记",
|
||
"widgetCustomApiName": "自定义 API",
|
||
"widgetCustomApiDesc": "从任何 JSON API 获取并显示数据",
|
||
"widgetServiceGridName": "服务网格",
|
||
"widgetServiceGridDesc": "可配置的服务磁贴链接网格",
|
||
"widgetDashboardLinksName": "仪表板链接",
|
||
"widgetDashboardLinksDesc": "显示您在仪表板中配置的服务链接",
|
||
"widgetSearchLinksName": "搜索快捷方式",
|
||
"widgetSearchLinksDesc": "带内联输入的快速搜索快捷按钮",
|
||
"widgetLinkTreeName": "链接树",
|
||
"widgetLinkTreeDesc": "带标题的分组链接部分",
|
||
"calMon": "一",
|
||
"calTue": "二",
|
||
"calWed": "三",
|
||
"calThu": "四",
|
||
"calFri": "五",
|
||
"calSat": "六",
|
||
"calSun": "日",
|
||
"startOnMonday": "从周一开始",
|
||
"countdownNoDate": "未设置目标日期",
|
||
"countdownPast": "事件已过",
|
||
"countdownDays": "天",
|
||
"countdownHours": "小时",
|
||
"countdownMinutes": "分钟",
|
||
"countdownSeconds": "秒",
|
||
"countdownLabel": "标签",
|
||
"countdownLabelPlaceholder": "例如:发布日",
|
||
"countdownShowDays": "显示天数",
|
||
"countdownShowHours": "显示小时",
|
||
"targetDate": "目标日期",
|
||
"searchEngine": "搜索引擎",
|
||
"customSearchUrl": "自定义搜索 URL",
|
||
"searchPlaceholder": "搜索...",
|
||
"searchGo": "搜索",
|
||
"searchPlaceholderLabel": "占位符文本",
|
||
"searchPlaceholderHint": "搜索输入框中显示的文本",
|
||
"openInNewTab": "在新标签页中打开",
|
||
"searchQueryPlaceholder": "输入查询...",
|
||
"noSearchShortcuts": "未配置快捷方式",
|
||
"addSearchShortcut": "添加快捷方式",
|
||
"fontSize": "字体大小",
|
||
"textAlign": "文本对齐",
|
||
"fontWeight": "字体粗细",
|
||
"clearColor": "清除颜色",
|
||
"imageFit": "图片适应",
|
||
"imageLinkUrl": "链接 URL",
|
||
"noImage": "未设置图片 URL",
|
||
"altText": "替代文本",
|
||
"altTextPlaceholder": "描述图片",
|
||
"renderMarkdown": "渲染 Markdown",
|
||
"displayMode": "显示模式",
|
||
"displayField": "显示字段",
|
||
"jsonPath": "JSON 路径",
|
||
"customApiLabel": "标签",
|
||
"customApiLabelPlaceholder": "例如:温度",
|
||
"customApiUnit": "单位",
|
||
"customApiNoUrl": "未配置 API URL",
|
||
"customApiError": "获取失败",
|
||
"customApiNotArray": "响应不是数组",
|
||
"addService": "添加服务",
|
||
"showLabels": "显示标签",
|
||
"iconSize": "图标大小",
|
||
"noDashboardLinks": "未配置仪表板链接",
|
||
"noLimit": "无限制",
|
||
"sectionHeading": "分区标题",
|
||
"addSection": "添加分区",
|
||
"compactMode": "紧凑模式",
|
||
"showDetailed": "显示详情",
|
||
"selectHosts": "选择主机",
|
||
"allHosts": "所有主机",
|
||
"listLayout": "列表",
|
||
"gridLayout": "网格",
|
||
"terminal": "终端",
|
||
"files": "文件",
|
||
"docker": "Docker",
|
||
"range15m": "15 分钟",
|
||
"range1h": "1 小时",
|
||
"range6h": "6 小时",
|
||
"range24h": "24 小时",
|
||
"metricNetRx": "网络下载",
|
||
"metricNetTx": "网络上传",
|
||
"severityFilter": "告警级别筛选",
|
||
"filterAll": "全部",
|
||
"accentColor": "强调色",
|
||
"widgetSshTerminalName": "SSH 终端",
|
||
"widgetSshTerminalDesc": "连接到已配置主机的内联 SSH 终端",
|
||
"sshTerminalNoHost": "未配置主机",
|
||
"sshTerminalConnect": "连接",
|
||
"sshTerminalAutoConnect": "加载时自动连接",
|
||
"widgetQuickConnectName": "快速连接",
|
||
"widgetQuickConnectDesc": "一键启动按钮,适用于主机上的任何连接类型",
|
||
"connectionTypes": "连接类型",
|
||
"connType_terminal": "终端",
|
||
"connType_files": "文件管理器",
|
||
"connType_docker": "Docker",
|
||
"connType_tunnel": "隧道",
|
||
"connType_host-metrics": "主机指标",
|
||
"connType_rdp": "RDP",
|
||
"connType_vnc": "VNC",
|
||
"connType_telnet": "Telnet",
|
||
"widgetFileManagerName": "文件管理器",
|
||
"widgetFileManagerDesc": "用于已配置主机的嵌入式 SFTP 文件管理器",
|
||
"widgetDockerName": "Docker 管理器",
|
||
"widgetDockerDesc": "用于已配置主机的嵌入式 Docker 容器管理器",
|
||
"widgetTunnelName": "隧道管理器",
|
||
"widgetTunnelDesc": "用于已配置主机的嵌入式 SSH 隧道管理器",
|
||
"widgetNoHostSelected": "未配置主机"
|
||
},
|
||
"serverConfig": {
|
||
"title": "服务器配置",
|
||
"description": "配置 Termix 服务器 URL 以连接到后端服务",
|
||
"serverUrl": "服务器 URL",
|
||
"enterServerUrl": "请输入服务器 URL",
|
||
"saveFailed": "保存配置失败",
|
||
"saveError": "保存配置出错",
|
||
"saving": "保存中...",
|
||
"saveConfig": "保存配置",
|
||
"helpText": "输入 Termix 服务器运行的 URL(例如 http://localhost:30001 或 https://your-server.com)",
|
||
"changeServer": "更改服务器",
|
||
"mustIncludeProtocol": "服务器 URL 必须以 http:// 或 https:// 开头",
|
||
"allowInvalidCertificate": "允许无效证书",
|
||
"allowInvalidCertificateDesc": "仅用于可信的自托管服务器,证书为自签名或 IP 地址证书。",
|
||
"useEmbedded": "使用本地服务器",
|
||
"embeddedDesc": "使用内置本地服务器运行 Termix(无需远程服务器)",
|
||
"embeddedConnecting": "正在连接本地服务器...",
|
||
"embeddedNotReady": "本地服务器尚未就绪,请稍候再试。",
|
||
"localServer": "本地服务器",
|
||
"savedServers": "已保存的服务器",
|
||
"noSavedServers": "无已保存的服务器",
|
||
"removeServer": "移除"
|
||
},
|
||
"migrationNotice": {
|
||
"title": "Termix Desktop 现在可以独立运行",
|
||
"body1": "此应用以前直接连接到您的 Termix 服务器。现在已重新设计,可完全独立运行,将主机和凭据存储在本地,因此即使离线也能正常工作。与自托管 Termix 服务器的双向同步现在是可选的。",
|
||
"body2": "您现有的主机和凭据仍然在 {{url}}上。启用远程同步并重新连接到该服务器,即可恢复它们并保持两者同步。",
|
||
"dismiss": "现在不要",
|
||
"setUpSync": "设置远程同步"
|
||
},
|
||
"remoteSync": {
|
||
"title": "远程同步",
|
||
"description": "您可以选择将此桌面应用程序连接到自托管的 Termix 服务器,以便在不同设备间同步主机名、凭据和代码片段。无论是否连接,该应用程序始终可以完全离线运行。",
|
||
"notConnected": "未连接",
|
||
"connected": "已连接",
|
||
"connectedTo": "已连接至 {{url}}",
|
||
"lastSynced": "上次同步时间 {{time}}",
|
||
"neverSynced": "从未同步",
|
||
"syncError": "同步错误: {{message}}",
|
||
"needsReauth": "登录已过期",
|
||
"connectButton": "连接到服务器",
|
||
"disconnectButton": "断开",
|
||
"syncNowButton": "立即同步",
|
||
"syncing": "正在同步...",
|
||
"serverUrl": "服务器 URL",
|
||
"enterServerUrl": "请输入服务器网址",
|
||
"mustIncludeProtocol": "服务器 URL 必须以 http:// 或 https:// 开头。",
|
||
"connectionTestFailed": "无法通过该 URL 连接到 Termix 服务器",
|
||
"allowInvalidCertificate": "允许无效证书",
|
||
"allowInvalidCertificateDesc": "仅适用于具有自签名证书或 IP 地址证书的受信任的自托管服务器。",
|
||
"savedServers": "已保存的服务器",
|
||
"removeServer": "消除",
|
||
"continueButton": "继续",
|
||
"cancelButton": "取消",
|
||
"signInTitle": "登录到 {{url}}",
|
||
"originTitle": "连接源",
|
||
"originDescription": "选择 SSH 连接的默认发起位置。此设置可针对每个主机进行单独设置。",
|
||
"originLocal": "此设备(本地网络)",
|
||
"originRemote": "远程服务器",
|
||
"bannerReconnect": "重新连接",
|
||
"bannerMessage": "远程同步需要重新验证"
|
||
},
|
||
"versionCheck": {
|
||
"error": "版本检查错误",
|
||
"checkFailed": "检查更新失败",
|
||
"upToDate": "应用已是最新",
|
||
"currentVersion": "您正在运行版本 {{version}}",
|
||
"updateAvailable": "有可用更新",
|
||
"newVersionAvailable": "新版本可用!您当前版本为 {{current}},最新版本为 {{latest}}。",
|
||
"betaVersion": "测试版",
|
||
"betaVersionDesc": "您正在运行 {{current}},比最新稳定版 {{latest}} 更新。",
|
||
"releasedOn": "发布于 {{date}}",
|
||
"downloadUpdate": "下载更新",
|
||
"checking": "正在检查更新...",
|
||
"checkUpdates": "检查更新",
|
||
"checkingUpdates": "正在检查更新...",
|
||
"updateRequired": "需要更新"
|
||
},
|
||
"common": {
|
||
"close": "关闭",
|
||
"minimize": "最小化",
|
||
"online": "在线",
|
||
"offline": "离线",
|
||
"unknown": "未知",
|
||
"continue": "继续",
|
||
"maintenance": "维护",
|
||
"degraded": "降级",
|
||
"error": "错误",
|
||
"warning": "警告",
|
||
"unsavedChanges": "未保存的更改",
|
||
"dismiss": "忽略",
|
||
"loading": "加载中...",
|
||
"optional": "可选",
|
||
"connect": "连接",
|
||
"copied": "已复制",
|
||
"connecting": "连接中...",
|
||
"updateAvailable": "更新可用",
|
||
"appName": "Termix",
|
||
"openInNewTab": "在新标签页中打开",
|
||
"noReleases": "无版本",
|
||
"updatesAndReleases": "更新与发布",
|
||
"newVersionAvailable": "新版本 ({{version}}) 可用。",
|
||
"failedToFetchUpdateInfo": "获取更新信息失败",
|
||
"preRelease": "预发布",
|
||
"noReleasesFound": "未找到发布版本。",
|
||
"cancel": "取消",
|
||
"username": "用户名",
|
||
"login": "登录",
|
||
"logout": "注销",
|
||
"register": "注册",
|
||
"password": "密码",
|
||
"confirmPassword": "确认密码",
|
||
"back": "返回",
|
||
"save": "保存",
|
||
"saving": "保存中...",
|
||
"delete": "删除",
|
||
"rename": "重命名",
|
||
"edit": "编辑",
|
||
"add": "添加",
|
||
"confirm": "确认",
|
||
"no": "否",
|
||
"or": "或",
|
||
"next": "下一步",
|
||
"previous": "上一个",
|
||
"refresh": "刷新",
|
||
"language": "语言",
|
||
"checking": "检查中...",
|
||
"checkingDatabase": "正在检查数据库连接...",
|
||
"checkingAuthentication": "正在检查身份验证...",
|
||
"backendReconnected": "服务器连接已恢复",
|
||
"connectionDegraded": "服务器连接丢失,正在恢复中...",
|
||
"reload": "重新加载",
|
||
"remove": "移除",
|
||
"create": "创建",
|
||
"update": "更新",
|
||
"copy": "复制",
|
||
"copyFailed": "复制到剪贴板失败",
|
||
"maximize": "最大化",
|
||
"restore": "恢复",
|
||
"of": "共",
|
||
"saved": "已保存",
|
||
"deleted": "已删除",
|
||
"deleteFailed": "删除失败",
|
||
"saveFailed": "保存失败",
|
||
"required": "必填"
|
||
},
|
||
"nav": {
|
||
"home": "首页",
|
||
"terminal": "终端",
|
||
"docker": "Docker",
|
||
"tunnels": "隧道",
|
||
"fileManager": "文件管理器",
|
||
"serverStats": "主机指标",
|
||
"hostMetrics": "主机指标",
|
||
"admin": "管理",
|
||
"termixId": "ID",
|
||
"userProfile": "用户资料",
|
||
"splitScreen": "分屏",
|
||
"confirmClose": "关闭当前会话?",
|
||
"close": "关闭",
|
||
"cancel": "取消",
|
||
"sshManager": "SSH 管理器",
|
||
"cannotSplitTab": "无法拆分此标签页",
|
||
"hostTabTitle": "{{username}}@{{ip}}:{{port}}",
|
||
"copyPassword": "复制密码",
|
||
"copySudoPassword": "复制 Sudo 密码",
|
||
"passwordCopied": "密码已复制到剪贴板",
|
||
"noPasswordAvailable": "没有可用的密码",
|
||
"failedToCopyPassword": "复制密码失败",
|
||
"refreshTab": "刷新连接",
|
||
"renameTab": "重命名标签页",
|
||
"openFileManager": "打开文件管理器",
|
||
"dashboard": "仪表盘",
|
||
"networkGraph": "网络拓扑图",
|
||
"tmuxMonitor": "Tmux 监视器",
|
||
"homepage": "首页",
|
||
"quickConnect": "快速连接",
|
||
"sshTools": "SSH 工具",
|
||
"history": "历史记录",
|
||
"sessionLogs": "会话日志",
|
||
"hosts": "主机",
|
||
"snippets": "代码片段",
|
||
"hostManager": "主机管理器",
|
||
"credentials": "凭据",
|
||
"connections": "连接",
|
||
"alerts": "告警",
|
||
"serial": "串口",
|
||
"roleAdministrator": "管理员",
|
||
"roleUser": "用户"
|
||
},
|
||
"hosts": {
|
||
"hosts": "主机",
|
||
"noHosts": "没有 SSH 主机",
|
||
"retry": "重试",
|
||
"refresh": "刷新",
|
||
"optional": "可选",
|
||
"downloadSample": "下载示例",
|
||
"failedToDeleteHost": "删除 {{name}} 失败",
|
||
"importSkipExisting": "导入(跳过已有)",
|
||
"importSSHConfig": "从 SSH 配置导入",
|
||
"connectionDetails": "连接详情",
|
||
"ssh": "SSH",
|
||
"telnet": "Telnet",
|
||
"remoteDesktop": "远程桌面",
|
||
"port": "端口",
|
||
"username": "用户名",
|
||
"folder": "文件夹",
|
||
"tags": "标签",
|
||
"pin": "固定",
|
||
"addHost": "添加主机",
|
||
"editHost": "编辑主机",
|
||
"cloneHost": "克隆主机",
|
||
"enableTerminal": "启用终端",
|
||
"enableTunnel": "启用隧道",
|
||
"enableFileManager": "启用文件管理器",
|
||
"enableDocker": "启用 Docker",
|
||
"defaultPath": "默认路径",
|
||
"connection": "连接",
|
||
"upload": "上传",
|
||
"authentication": "认证",
|
||
"password": "密码",
|
||
"key": "密钥",
|
||
"credential": "凭据",
|
||
"none": "无",
|
||
"sshPrivateKey": "SSH 私钥",
|
||
"keyType": "密钥类型",
|
||
"uploadFile": "上传文件",
|
||
"tabGeneral": "常规",
|
||
"tabSsh": "SSH",
|
||
"tabTerminal": "终端",
|
||
"tabRdp": "RDP",
|
||
"tabVnc": "VNC",
|
||
"tabTunnels": "隧道",
|
||
"tabDocker": "Docker",
|
||
"tabFiles": "文件",
|
||
"tabStats": "主机指标",
|
||
"tabHostMetrics": "主机指标",
|
||
"tabTelnet": "Telnet",
|
||
"tabSharing": "共享",
|
||
"tabAuthentication": "认证",
|
||
"terminal": "终端",
|
||
"tunnel": "隧道",
|
||
"fileManager": "文件管理器",
|
||
"serverStats": "主机指标",
|
||
"status": "状态",
|
||
"folderRenamed": "文件夹 \"{{oldName}}\" 已成功重命名为 \"{{newName}}\"",
|
||
"failedToRenameFolder": "重命名文件夹失败",
|
||
"movedToFolder": "已将 {{count}} 台主机移至 \"{{folder}}\"",
|
||
"editHostTooltip": "编辑主机",
|
||
"statusChecks": "状态检查",
|
||
"metricsCollection": "指标采集",
|
||
"metricsInterval": "指标采集间隔",
|
||
"metricsIntervalDesc": "采集服务器统计信息的频率(5 秒 - 1 小时)",
|
||
"behavior": "行为",
|
||
"themePreview": "主题预览",
|
||
"theme": "主题",
|
||
"fontFamily": "字体族",
|
||
"fontSize": "字体大小",
|
||
"letterSpacing": "字母间距",
|
||
"lineHeight": "行高",
|
||
"cursorStyle": "光标样式",
|
||
"cursorBlink": "光标闪烁",
|
||
"scrollbackBuffer": "回滚缓冲区",
|
||
"bellStyle": "响铃样式",
|
||
"rightClickSelectsWord": "右键单击选择单词",
|
||
"fastScrollModifier": "快速滚动修饰键",
|
||
"fastScrollSensitivity": "快速滚动灵敏度",
|
||
"sshAgentForwarding": "SSH 代理转发",
|
||
"backspaceMode": "退格模式",
|
||
"startupSnippet": "启动代码片段",
|
||
"selectSnippet": "选择代码片段",
|
||
"forceKeyboardInteractive": "强制键盘交互认证",
|
||
"overrideCredentialUsername": "覆盖凭据用户名",
|
||
"overrideCredentialUsernameDesc": "使用上方指定的用户名代替凭据中的用户名",
|
||
"oidcUsernameHint": "使用 $oidc.preferred_username 替代您的 OIDC 登录名。",
|
||
"tailscaleUsernameHint": "这必须是您在 Tailscale 身份中被授予的 Unix 用户,但不一定是 root 用户。",
|
||
"jumpHostChain": "跳板主机链",
|
||
"portKnocking": "端口敲门",
|
||
"addKnock": "添加端口",
|
||
"addProxyNode": "添加节点",
|
||
"proxyNode": "代理节点",
|
||
"proxyType": "代理类型",
|
||
"quickActions": "快捷操作",
|
||
"sudoPasswordAutoFill": "Sudo 密码自动填充",
|
||
"sudoPassword": "Sudo 密码",
|
||
"keepaliveInterval": "保持连接间隔(毫秒)",
|
||
"moshCommand": "MOSH 命令",
|
||
"environmentVariables": "环境变量",
|
||
"addVariable": "添加变量",
|
||
"docker": "Docker",
|
||
"copyTerminalUrl": "复制终端 URL",
|
||
"copyFileManagerUrl": "复制文件管理器 URL",
|
||
"copyRemoteDesktopUrl": "复制远程桌面 URL",
|
||
"failedToConnect": "连接控制台失败",
|
||
"connect": "连接",
|
||
"disconnect": "断开连接",
|
||
"start": "启动",
|
||
"enableStatusCheck": "启用状态检查",
|
||
"enableMetrics": "启用指标",
|
||
"bulkUpdateFailed": "批量更新失败",
|
||
"selectAll": "全选",
|
||
"deselectAll": "取消全选",
|
||
"protocols": "协议",
|
||
"secureShell": "SSH",
|
||
"virtualNetwork": "虚拟网络",
|
||
"unencryptedShell": "未加密 Shell",
|
||
"addressIp": "地址 / IP",
|
||
"friendlyName": "友好名称",
|
||
"macAddress": "MAC 地址",
|
||
"wolBroadcastAddress": "WoL 广播地址",
|
||
"wolBroadcastAddressDesc": "可选的定向广播,用于 Docker/路由网络(例如 192.168.1.255)。留空则使用 255.255.255.255。",
|
||
"folderAndAdvanced": "文件夹与高级设置",
|
||
"privateNotes": "私密备注",
|
||
"privateNotesPlaceholder": "有关此服务器的详细信息...",
|
||
"pinToTop": "置顶",
|
||
"pinToTopDesc": "始终在列表顶部显示此主机",
|
||
"portKnockingSequence": "端口敲门序列",
|
||
"addKnockBtn": "添加敲门",
|
||
"noPortKnocking": "未配置端口敲门。",
|
||
"knockPort": "敲门端口",
|
||
"protocol": "协议",
|
||
"delayAfterMs": "延迟(毫秒)",
|
||
"useSocks5Proxy": "使用 SOCKS5 代理",
|
||
"useSocks5ProxyDesc": "通过代理服务器路由连接",
|
||
"connectionOrigin": "连接源",
|
||
"connectionOriginDesc": "此主机 SSH 连接的来源位置。会覆盖桌面应用程序的全局默认值。",
|
||
"connectionOriginDefault": "使用默认值",
|
||
"connectionOriginLocal": "此设备(本地网络)",
|
||
"connectionOriginRemote": "远程服务器",
|
||
"proxyHost": "代理主机",
|
||
"proxyPort": "代理端口",
|
||
"proxyUsername": "代理用户名",
|
||
"proxyPassword": "代理密码",
|
||
"proxySingleMode": "单代理",
|
||
"proxyChainMode": "代理链",
|
||
"you": "你",
|
||
"jumpHostChainLabel": "跳板主机链",
|
||
"addJumpBtn": "添加跳板",
|
||
"noJumpHosts": "未配置跳板主机。",
|
||
"selectAServer": "选择服务器...",
|
||
"sshPort": "SSH 端口",
|
||
"authMethod": "认证方式",
|
||
"storedCredential": "已存储凭据",
|
||
"selectACredential": "选择凭据...",
|
||
"vaultProfile": "Vault 签名者配置文件",
|
||
"selectAVaultProfile": "选择 Vault 配置文件...",
|
||
"vaultProfileHint": "设置来自共享配置文件;连接时将使用 OIDC 登录 Vault。不会存储任何机密。",
|
||
"vaultNewProfile": "新建配置文件",
|
||
"vaultManageProfiles": "管理 Vault 配置文件",
|
||
"vaultAddrLabel": "Vault 地址",
|
||
"vaultNamespaceLabel": "命名空间",
|
||
"vaultOidcMountLabel": "OIDC 认证挂载点",
|
||
"vaultOidcRoleLabel": "OIDC 角色",
|
||
"vaultSshMountLabel": "SSH 机密挂载点",
|
||
"vaultSshRoleLabel": "SSH 签名者角色",
|
||
"vaultValidPrincipalsLabel": "有效主体",
|
||
"vaultKeyTypeLabel": "临时密钥类型",
|
||
"vaultSharedLabel": "与所有用户共享",
|
||
"vaultCreateProfile": "创建配置文件",
|
||
"vaultProfileCreated": "Vault 配置文件已创建",
|
||
"vaultProfileSaved": "Vault 配置文件已保存",
|
||
"vaultProfileDeleted": "Vault 配置文件已删除",
|
||
"vaultProfileSaveFailed": "保存 Vault 配置文件失败",
|
||
"vaultProfileDeleteFailed": "删除 Vault 配置文件失败",
|
||
"vaultSaveProfile": "保存配置文件",
|
||
"vaultProfileValidationError": "名称、Vault 地址和 SSH 签名者角色为必填项",
|
||
"vaultNoProfiles": "暂无 Vault 配置文件。",
|
||
"vaultSharedBadge": "共享",
|
||
"keyTypeLabel": "密钥类型",
|
||
"keyTypeAuto": "自动检测",
|
||
"keyPasteTab": "粘贴",
|
||
"keyUploadTab": "上传",
|
||
"keyFileLoaded": "密钥文件已加载",
|
||
"keyUploadClick": "点击上传 .pem / .key / .ppk",
|
||
"clearKey": "清除密钥",
|
||
"keySaved": "SSH 密钥已保存",
|
||
"keyReplaceNotice": "在下方粘贴新密钥以替换",
|
||
"keyPassphraseSaved": "密码短语已保存,输入以更改",
|
||
"replaceKey": "替换密钥",
|
||
"docsLink": "查看文档",
|
||
"opksshLabel": "OPKSSH",
|
||
"opksshDesc": "使用身份提供商登录此主机,而非密码或密钥。需要在服务器上设置 OPKSSH。",
|
||
"warpgateLabel": "Warpgate 网关",
|
||
"warpgateDesc": "此主机通过 Warpgate SSH 代理连接。Termix 将在认证后自动处理基于浏览器的审批流程。",
|
||
"agentLabel": "SSH 代理",
|
||
"agentDesc": "使用运行在 Termix 服务器上的 SSH 代理进行认证(Bitwarden、1Password、gpg-agent、KeeAgent、ssh-agent)。代理必须在托管 Termix 的机器上运行。",
|
||
"agentSocketPathLabel": "代理套接字路径",
|
||
"agentSocketPathPlaceholder": "留空以使用 SSH_AUTH_SOCK",
|
||
"agentSocketPathHint": "留空以从 SSH_AUTH_SOCK 环境变量自动检测,或输入自定义套接字路径(例如 /run/user/1000/gnupg/S.gpg-agent.ssh)。",
|
||
"tailscaleDeviceSelect": "选择 Tailscale 设备",
|
||
"tailscaleDeviceSelectPlaceholder": "选择设备...",
|
||
"tailscaleNoApiKey": "未配置 Tailscale API 密钥。请在管理设置中添加一个以启用设备发现。",
|
||
"tailscaleDocsLink": "查看文档",
|
||
"tailscaleLoadingDevices": "正在加载设备...",
|
||
"tailscaleNoDevices": "在您的 tailnet 中未找到设备。",
|
||
"tailscaleDeviceAutoFill": "选择设备将自动填充主机 IP 地址。",
|
||
"forceKeyboardInteractiveLabel": "强制键盘交互",
|
||
"forceKeyboardInteractiveShortDesc": "即使存在密钥也强制手动输入密码",
|
||
"allowLegacyAlgorithmsLabel": "允许旧版算法",
|
||
"allowLegacyAlgorithmsDesc": "启用已弃用的 SSH 算法(ssh-dss、ssh-rsa、diffie-hellman-group1-sha1、hmac-md5、3des-cbc),以便连接无法升级的旧设备。",
|
||
"insecure": "不安全",
|
||
"terminalAppearance": "终端外观",
|
||
"colorTheme": "颜色主题",
|
||
"fontFamilyLabel": "字体",
|
||
"fontSizeLabel": "字体大小",
|
||
"cursorStyleLabel": "光标样式",
|
||
"letterSpacingPx": "字母间距 (px)",
|
||
"lineHeightLabel": "行高",
|
||
"bellStyleLabel": "响铃样式",
|
||
"backspaceModeLabel": "退格模式",
|
||
"cursorBlinking": "光标闪烁",
|
||
"cursorBlinkingDesc": "为终端光标启用闪烁动画",
|
||
"rightClickSelectsWordLabel": "右键选择单词",
|
||
"rightClickSelectsWordShortDesc": "右键点击时选中光标下的单词",
|
||
"backgroundImageLabel": "背景图片 URL",
|
||
"backgroundImageDesc": "终端背景图片的可选 URL",
|
||
"backgroundImageOpacityLabel": "背景图片不透明度",
|
||
"customThemeColors": "自定义颜色",
|
||
"customThemeBackground": "背景色",
|
||
"customThemeForeground": "前景色",
|
||
"customThemeCursor": "光标颜色",
|
||
"customThemeCursorAccent": "光标强调色",
|
||
"customThemeSelection": "选中色",
|
||
"customThemeAnsiColors": "ANSI 颜色",
|
||
"customThemeBlack": "黑色",
|
||
"customThemeRed": "红色",
|
||
"customThemeGreen": "绿色",
|
||
"customThemeYellow": "黄色",
|
||
"customThemeBlue": "蓝色",
|
||
"customThemeMagenta": "品红",
|
||
"customThemeCyan": "青色",
|
||
"customThemeWhite": "白色",
|
||
"customThemeBrightBlack": "亮黑色",
|
||
"customThemeBrightRed": "亮红色",
|
||
"customThemeBrightGreen": "亮绿色",
|
||
"customThemeBrightYellow": "亮黄色",
|
||
"customThemeBrightBlue": "亮蓝色",
|
||
"customThemeBrightMagenta": "亮品红",
|
||
"customThemeBrightCyan": "亮青色",
|
||
"customThemeBrightWhite": "亮白色",
|
||
"customThemeResetTooltip": "重置为默认值",
|
||
"savedThemesLabel": "已保存的主题",
|
||
"saveAsGlobalTheme": "另存为全局主题",
|
||
"saveGlobalThemeNamePrompt": "请为此主题输入名称",
|
||
"saveGlobalThemeSuccess": "主题已保存",
|
||
"saveGlobalThemeError": "主题保存失败",
|
||
"applyGlobalThemeTooltip": "应用此主题",
|
||
"deleteGlobalThemeTooltip": "删除此主题",
|
||
"noSavedThemes": "尚未保存任何主题",
|
||
"syntaxHighlightingLabel": "语法高亮",
|
||
"syntaxHighlightingDesc": "对终端输出着色(错误、路径、IP、时间戳)",
|
||
"syntaxHighlightingCategories": "高亮类别",
|
||
"syntaxHighlightingCategoriesDesc": "选择要着色的内容类型",
|
||
"syntaxCategoryLogLevels": "日志级别",
|
||
"syntaxCategoryLogLevelsDesc": "error, warn, info, debug, fatal",
|
||
"syntaxCategoryPaths": "文件路径",
|
||
"syntaxCategoryPathsDesc": "/usr/share/doc, ~/file.txt",
|
||
"syntaxCategoryTimestamps": "时间戳",
|
||
"syntaxCategoryTimestampsDesc": "[12:34:56], 2024-01-15",
|
||
"syntaxCategoryIpAddresses": "IP 地址",
|
||
"syntaxCategoryIpAddressesDesc": "192.168.1.1, 10.0.0.1:8080",
|
||
"syntaxCategoryUrls": "URL",
|
||
"syntaxCategoryUrlsDesc": "https://example.com",
|
||
"syntaxCategoryNumbers": "标记数字",
|
||
"syntaxCategoryNumbersDesc": "端口 8080, 退出 1, 状态 404",
|
||
"behaviorAndAdvanced": "行为与高级设置",
|
||
"scrollbackBufferLabel": "回滚缓冲区",
|
||
"scrollbackMaxLines": "保留在历史记录中的最大行数",
|
||
"sshAgentForwardingLabel": "SSH 代理转发",
|
||
"sshAgentForwardingShortDesc": "将本地 SSH 密钥传递给此主机",
|
||
"useSSHTitleLabel": "使用 SSH 窗口标题",
|
||
"useSSHTitleDesc": "使用 shell 的窗口标题更新标签页标题,而非主机名",
|
||
"enableAutoMosh": "启用自动 Mosh",
|
||
"enableAutoMoshDesc": "若可用,优先使用 Mosh 而非 SSH",
|
||
"enableAutoTmux": "启用自动 Tmux",
|
||
"enableAutoTmuxDesc": "自动启动或附加到 tmux 会话",
|
||
"enableSessionLogging": "会话日志记录",
|
||
"enableSessionLoggingDesc": "记录终端会话输出以供日后查看",
|
||
"allowSessionSharing": "允许会话共享",
|
||
"allowSessionSharingDesc": "允许通过链接或其他方式分享此主机上的实时会话。",
|
||
"enableCommandHistory": "命令历史",
|
||
"enableCommandHistoryDesc": "记录此终端中运行的命令,用于历史记录和自动补全",
|
||
"linkClickBehaviorLabel": "链接点击行为",
|
||
"linkClickBehaviorDesc": "控制点击终端中链接时的行为。选择“默认”以遵循应用级设置。",
|
||
"linkClickBehaviorDefault": "默认(遵循应用设置)",
|
||
"linkClickBehaviorConfirm": "显示弹出窗口以打开或复制",
|
||
"linkClickBehaviorDirect": "直接打开",
|
||
"sudoPasswordAutoFillLabel": "Sudo 密码自动填充",
|
||
"sudoPasswordAutoFillShortDesc": "提示时自动提供 sudo 密码",
|
||
"sudoPasswordAutoFillDesc": "存储 sudo 密码,以便主机指标、终端提示和其他操作可以自动运行特权命令。",
|
||
"sudoPasswordLabel": "Sudo 密码",
|
||
"environmentVariablesLabel": "环境变量",
|
||
"addVariableBtn": "添加变量",
|
||
"noEnvVars": "未配置环境变量。",
|
||
"fastScrollModifierLabel": "快速滚动修饰键",
|
||
"fastScrollSensitivityLabel": "快速滚动灵敏度",
|
||
"moshCommandLabel": "Mosh 命令",
|
||
"startupSnippetLabel": "启动代码片段",
|
||
"keepaliveIntervalLabel": "保活间隔(秒)",
|
||
"maxKeepaliveMisses": "最大保活失败次数",
|
||
"tunnelSettings": "隧道设置",
|
||
"enableTunneling": "启用隧道",
|
||
"enableTunnelingDesc": "为此主机启用 SSH 隧道功能",
|
||
"serverTunnelsSection": "服务器隧道",
|
||
"addTunnelBtn": "添加隧道",
|
||
"noTunnelsConfigured": "未配置隧道。",
|
||
"tunnelLabel": "隧道 {{number}}",
|
||
"tunnelType": "隧道类型",
|
||
"tunnelModeLocalDesc": "将本地端口转发到远程服务器(或可从其访问的主机)上的端口。",
|
||
"tunnelModeRemoteDesc": "将远程服务器上的端口转发回您机器上的本地端口。",
|
||
"tunnelModeDynamicDesc": "在本地端口上创建 SOCKS5 代理,用于动态端口转发。",
|
||
"sameHost": "此主机(直接隧道)",
|
||
"endpointHost": "端点主机",
|
||
"endpointHostPlaceholder": "相同主机、SSH 主机或可访问的主机/IP",
|
||
"endpointPort": "端点端口",
|
||
"bindHost": "绑定主机",
|
||
"sourcePort": "源端口",
|
||
"maxRetries": "最大重试次数",
|
||
"retryIntervalS": "重试间隔(秒)",
|
||
"autoStartLabel": "自动启动",
|
||
"autoStartDesc": "主机加载时自动连接此隧道",
|
||
"tunnelConnecting": "隧道连接中...",
|
||
"tunnelDisconnected": "隧道已断开连接",
|
||
"failedToConnectTunnel": "连接失败",
|
||
"failedToDisconnectTunnel": "断开连接失败",
|
||
"dockerIntegration": "Docker 集成",
|
||
"enableDockerMonitor": "启用 Docker",
|
||
"enableDockerMonitorDesc": "通过 Docker 监控和管理此主机上的容器",
|
||
"containerRuntime": "容器运行时",
|
||
"containerRuntimeDesc": "选择此主机上用于容器管理的 CLI",
|
||
"containerRuntimeDocker": "Docker",
|
||
"containerRuntimePodman": "Podman",
|
||
"enableTmuxMonitor": "启用 Tmux 监控",
|
||
"enableTmuxMonitorDesc": "在 Tmux 监控中显示此主机,并将其 tmux 操作添加到侧边栏",
|
||
"tabProxmox": "Proxmox",
|
||
"proxmoxIntegration": "Proxmox 集成",
|
||
"enableProxmox": "启用 Proxmox",
|
||
"enableProxmoxDesc": "将此主机标记为 Proxmox 节点。启用从此主机直接进行客户机发现和导入。",
|
||
"proxmoxDefaultAuthType": "默认认证类型",
|
||
"proxmoxDefaultAuthTypeDesc": "应用于导入的客户机主机的认证方法。选择与您连接客户机的方式相匹配的认证类型。",
|
||
"authTypePassword": "密码",
|
||
"authTypeKey": "SSH 密钥",
|
||
"authTypeCredential": "凭据",
|
||
"authTypeOpkssh": "OPKSSH",
|
||
"authTypeNone": "无",
|
||
"proxmoxDefaultCredential": "默认凭据",
|
||
"proxmoxDefaultCredentialDesc": "当认证类型设置为凭据时,用于导入的客户主机的凭据。",
|
||
"proxmoxWindowsDetection": "Windows / RDP 检测",
|
||
"proxmoxWindowsDetectionDesc": "逗号分隔的名称模式,匹配时触发 RDP 而非 SSH(不区分大小写)",
|
||
"proxmoxDockerDetection": "Docker 检测",
|
||
"proxmoxDockerDetectionDesc": "逗号分隔的名称模式,为匹配的客户主机启用 Docker",
|
||
"proxmoxPreferredRanges": "首选 IP 范围",
|
||
"proxmoxPreferredRangesDesc": "逗号分隔的前缀,按优先级顺序用于当客户主机有多个网络接口时的 IP 选择",
|
||
"proxmoxAutoSync": "自动同步客户主机",
|
||
"proxmoxAutoSyncDesc": "在会话未锁定时定期发现此 Proxmox 节点,并创建或更新导入的客户主机。",
|
||
"proxmoxSyncInterval": "同步间隔(分钟)",
|
||
"proxmoxSyncIntervalDesc": "最小 5 分钟。调度器会跳过已锁定的用户会话。",
|
||
"proxmoxMarkMissing": "标记缺失的客户主机",
|
||
"proxmoxMarkMissingDesc": "当之前导入的客户主机消失时,添加 proxmox-missing 标签,而非删除它。",
|
||
"proxmoxLastSync": "上次同步",
|
||
"proxmoxLastSyncNever": "尚未同步",
|
||
"proxmoxLastSyncNoResult": "无结果详情",
|
||
"proxmoxLastSyncSummary": "已创建 {{created}},已更新 {{updated}},已标记缺失 {{markedMissing}},已跳过 {{skipped}}",
|
||
"proxmoxLastSyncStatus": {
|
||
"success": "成功",
|
||
"error": "失败",
|
||
"pending": "待处理"
|
||
},
|
||
"proxmoxDiscoverAction": "发现并导入 Proxmox 客户主机",
|
||
"proxmoxImportTitle": "从 Proxmox 导入",
|
||
"proxmoxSelectHost": "选择 Proxmox 主机…",
|
||
"proxmoxDiscover": "发现",
|
||
"proxmoxDiscovering": "正在发现…",
|
||
"proxmoxDiscoverGuests": "发现客户主机",
|
||
"proxmoxGuestsSelected_one": "{{count}} 个客户主机 — 已选择 {{selected}} 个",
|
||
"proxmoxGuestsSelected_other": "{{count}} 个客户主机 — 已选择 {{selected}} 个",
|
||
"proxmoxSelectAll": "全选",
|
||
"proxmoxDeselectAll": "取消全选",
|
||
"proxmoxNoGuests": "此 Proxmox 节点上未找到客户主机。",
|
||
"proxmoxImportButton_one": "导入 {{count}} 个主机",
|
||
"proxmoxImportButton_other": "导入 {{count}} 个主机",
|
||
"proxmoxResultImported": "已导入 {{count}} 个",
|
||
"proxmoxResultUpdated": "已更新 {{count}} 个",
|
||
"proxmoxResultFailed": "已失败 {{count}} 个",
|
||
"proxmoxResultSkippedNoIp": "{{count}} 已跳过(未找到 IP 地址)",
|
||
"proxmoxImportComplete": "Proxmox 导入完成:{{summary}}",
|
||
"proxmoxDiscoveryFailed": "发现失败",
|
||
"proxmoxImportFailed": "导入失败",
|
||
"enableFileManagerMonitor": "启用文件管理器",
|
||
"enableFileManagerMonitorDesc": "通过 SFTP 浏览和管理此主机上的文件",
|
||
"scpLegacyLabel": "SCP 传统模式",
|
||
"scpLegacyDesc": "对不支持 SFTP 子系统的服务器使用传统文件传输(例如嵌入式或最小化 SSH 服务器)。",
|
||
"defaultPathLabel": "默认路径",
|
||
"fileManagerPathHint": "为此主机启动文件管理器时要打开的目录。",
|
||
"statusChecksLabel": "状态检查",
|
||
"enableStatusChecks": "启用状态检查",
|
||
"enableStatusChecksDesc": "定期 ping 此主机以验证可用性",
|
||
"useGlobalInterval": "使用全局间隔",
|
||
"useGlobalIntervalDesc": "使用服务器范围的状态检查间隔覆盖",
|
||
"checkIntervalS": "检查间隔(秒)",
|
||
"checkIntervalDesc": "每次连接 ping 之间的秒数",
|
||
"metricsCollectionLabel": "指标收集",
|
||
"enableMetricsLabel": "启用指标",
|
||
"enableMetricsDesc": "从此主机收集 CPU、RAM、磁盘和其他指标",
|
||
"useGlobalMetrics": "使用全局间隔",
|
||
"useGlobalMetricsDesc": "使用服务器范围的指标间隔覆盖",
|
||
"metricsIntervalS": "指标间隔(秒)",
|
||
"metricsIntervalDesc2": "指标快照之间的秒数",
|
||
"visibleWidgets": "可见小部件",
|
||
"widgetsMovedToHostMetrics": "卡片现在可在“主机指标”选项卡中直接添加、排列和调整大小。打开此主机的“主机指标”,使用“自定义”选择要显示的卡片。",
|
||
"cpuUsageLabel": "CPU 使用率",
|
||
"cpuUsageDesc": "CPU 百分比、负载平均值、迷你图",
|
||
"memoryLabel": "内存使用率",
|
||
"memoryDesc": "RAM 使用、交换、缓存",
|
||
"storageLabel": "磁盘使用率",
|
||
"storageDesc": "每个挂载点的磁盘使用情况",
|
||
"networkLabel": "网络接口",
|
||
"networkDesc": "接口列表和带宽",
|
||
"uptimeLabel": "运行时间",
|
||
"uptimeDesc": "系统运行时间和启动时间",
|
||
"systemInfoLabel": "系统信息",
|
||
"systemInfoDesc": "操作系统、内核、主机名、架构",
|
||
"recentLoginsLabel": "最近登录",
|
||
"recentLoginsDesc": "成功和失败的登录事件",
|
||
"topProcessesLabel": "顶级进程",
|
||
"topProcessesDesc": "PID、CPU%、MEM%、命令",
|
||
"listeningPortsLabel": "监听端口",
|
||
"listeningPortsDesc": "带进程和状态的开放端口",
|
||
"firewallLabel": "防火墙",
|
||
"firewallDesc": "防火墙、AppArmor、SELinux 状态",
|
||
"quickActionsLabel": "快速操作",
|
||
"quickActionsToolbar": "快速操作以按钮形式显示在主机指标工具栏中,以便一键执行命令。",
|
||
"noQuickActions": "尚无快速操作。",
|
||
"buttonLabel": "按钮标签",
|
||
"selectSnippetPlaceholder": "选择代码片段...",
|
||
"addActionBtn": "添加操作",
|
||
"hostSharedSuccessfully": "主机共享成功",
|
||
"failedToShareHost": "共享主机失败",
|
||
"accessRevoked": "访问权限已撤销",
|
||
"failedToRevokeAccess": "撤销访问权限失败",
|
||
"cancelBtn": "取消",
|
||
"savingBtn": "保存中...",
|
||
"addHostBtn": "添加主机",
|
||
"hostUpdated": "主机已更新",
|
||
"hostCreated": "主机已创建",
|
||
"failedToSave": "保存主机失败",
|
||
"credentialUpdated": "凭据已更新",
|
||
"credentialCreated": "凭据已创建",
|
||
"failedToSaveCredential": "保存凭据失败",
|
||
"credentialNameRequired": "请输入凭据名称",
|
||
"credentialAuthRequired": "添加密码、SSH 密钥或两者",
|
||
"createCredentialFromHostBtn": "创建凭证",
|
||
"createCredentialFromHostTitle": "从主机创建凭据",
|
||
"createCredentialFromHostDesc": "创建一个可重用、可共享的凭据条目,其中预先填充了此主机的当前用户名、密码和/或 SSH 密钥。",
|
||
"backToHosts": "返回主机列表",
|
||
"backToCredentials": "返回凭据列表",
|
||
"pinned": "已固定",
|
||
"noHostsFound": "未找到主机",
|
||
"tryDifferentTerm": "尝试其他搜索词",
|
||
"addFirstHost": "添加第一个主机以开始使用",
|
||
"noCredentialsFound": "未找到凭据",
|
||
"addCredentialBtn": "添加凭据",
|
||
"updateCredentialBtn": "更新凭据",
|
||
"features": "功能",
|
||
"noFolder": "(无文件夹)",
|
||
"deleteSelected": "删除",
|
||
"exitSelection": "退出选择",
|
||
"importSkip": "导入(跳过现有)",
|
||
"importOverwrite": "导入(覆盖)",
|
||
"collapseBtn": "折叠",
|
||
"importExportBtn": "导入 / 导出",
|
||
"hostStatusesRefreshed": "主机状态已刷新",
|
||
"failedToRefreshHosts": "无法刷新主机",
|
||
"movedHostTo": "已将 {{host}} 移至 \"{{folder}}\"",
|
||
"failedToMoveHost": "无法移动主机",
|
||
"folderRenamedTo": "已将文件夹重命名为 \"{{name}}\"",
|
||
"deletedFolder": "已删除文件夹 \"{{name}}\"",
|
||
"failedToDeleteFolder": "无法删除文件夹",
|
||
"deleteAllInFolder": "删除 \"{{name}}\" 中的所有主机?此操作不可撤销。",
|
||
"folderPickerPlaceholder": "无文件夹",
|
||
"folderPickerSearch": "搜索或创建(使用 / 创建子文件夹)...",
|
||
"folderPickerNone": "无文件夹",
|
||
"folderPickerCreate": "创建 \"{{path}}\"",
|
||
"folderPickerEmpty": "无匹配的文件夹",
|
||
"newFolder": "新建文件夹",
|
||
"createFolderTitle": "创建文件夹",
|
||
"editFolderTitle": "编辑文件夹",
|
||
"folderDialogDescription": "选择名称、颜色和图标。使用 / 来嵌套文件夹。",
|
||
"folderNameLabel": "文件夹名称",
|
||
"folderNamePlaceholder": "例如:生产环境/Web",
|
||
"folderNestingHint": "使用 / 分隔层级以创建嵌套文件夹。",
|
||
"folderColor": "颜色",
|
||
"folderIcon": "图标",
|
||
"folderCredential": "凭据",
|
||
"folderCredentialNone": "未分配凭证",
|
||
"folderCredentialHint": "此文件夹中使用“存储凭据”身份验证但未选择自身凭据的主机将继承此凭据。",
|
||
"folderPreview": "预览",
|
||
"folderNameFallback": "未命名文件夹",
|
||
"createFolderButton": "创建文件夹",
|
||
"saveFolderButton": "保存文件夹",
|
||
"cancel": "取消",
|
||
"iconSearchPlaceholder": "搜索图标...",
|
||
"openAllSessions": "打开所有会话",
|
||
"editFolder": "编辑文件夹",
|
||
"deleteFolder": "删除文件夹",
|
||
"folderSaved": "文件夹已保存",
|
||
"failedToSaveFolder": "无法保存文件夹",
|
||
"folderDeleted": "已删除文件夹 \"{{name}}\"",
|
||
"deleteFolderConfirm": "删除 \"{{name}}\" 及其 {{count}} 个主机?此操作不可撤销。",
|
||
"failedToMoveHosts": "无法移动主机",
|
||
"expandAll": "展开所有文件夹",
|
||
"collapseAll": "折叠所有文件夹",
|
||
"moreActions": "更多",
|
||
"groupBy": "分组",
|
||
"GroupByFolder": "文件夹",
|
||
"GroupByTag": "标签",
|
||
"GroupByStatus": "状态",
|
||
"GroupByProtocol": "协议",
|
||
"GroupByAuth": "认证类型",
|
||
"groupUngrouped": "未分组",
|
||
"deletedHost": "已删除 {{name}}",
|
||
"copiedToClipboard": "已复制到剪贴板",
|
||
"terminalUrlCopied": "终端 URL 已复制",
|
||
"fileManagerUrlCopied": "文件管理器 URL 已复制",
|
||
"tunnelUrlCopied": "隧道 URL 已复制",
|
||
"dockerUrlCopied": "Docker URL 已复制",
|
||
"hostMetricsUrlCopied": "主机监控 URL 已复制",
|
||
"tmuxMonitorUrlCopied": "Tmux 监视器 URL 已复制",
|
||
"rdpUrlCopied": "RDP URL 已复制",
|
||
"vncUrlCopied": "VNC URL 已复制",
|
||
"telnetUrlCopied": "Telnet URL 已复制",
|
||
"remoteDesktopUrlCopied": "远程桌面 URL 已复制",
|
||
"expandActions": "展开操作",
|
||
"collapseActions": "收起操作",
|
||
"wakeOnLanAction": "网络唤醒",
|
||
"wakeOnLanSuccess": "已向 {{name}} 发送魔术包",
|
||
"wakeOnLanError": "发送魔术包失败",
|
||
"cloneHostAction": "克隆主机",
|
||
"copyAddress": "复制地址",
|
||
"copyLink": "复制链接",
|
||
"copyTerminalUrlAction": "复制终端 URL",
|
||
"copyFileManagerUrlAction": "复制文件管理器 URL",
|
||
"copyTunnelUrlAction": "复制隧道 URL",
|
||
"copyDockerUrlAction": "复制 Docker URL",
|
||
"copyHostMetricsUrlAction": "复制主机监控 URL",
|
||
"copyTmuxMonitorUrlAction": "复制 Tmux 监视器 URL",
|
||
"copyRdpUrlAction": "复制 RDP URL",
|
||
"copyVncUrlAction": "复制 VNC URL",
|
||
"copyTelnetUrlAction": "复制 Telnet URL",
|
||
"copyRemoteDesktopUrlAction": "复制远程桌面 URL",
|
||
"deleteCredentialConfirm": "删除凭据 \"{{name}}\"?",
|
||
"deletedCredential": "已删除 {{name}}",
|
||
"deploySSHKeyTitle": "部署 SSH 密钥",
|
||
"deployingBtn": "部署中...",
|
||
"deployBtn": "部署",
|
||
"failedToDeployKey": "部署密钥失败",
|
||
"deleteHostsConfirm": "删除 {{count}} 台主机{{plural}}?此操作无法撤销。",
|
||
"movedToRoot": "已移至根目录",
|
||
"enableTerminalFeature": "启用终端",
|
||
"disableTerminalFeature": "禁用终端",
|
||
"enableFilesFeature": "启用文件",
|
||
"disableFilesFeature": "禁用文件",
|
||
"enableTunnelsFeature": "启用隧道",
|
||
"disableTunnelsFeature": "禁用隧道",
|
||
"enableDockerFeature": "启用 Docker",
|
||
"disableDockerFeature": "禁用 Docker",
|
||
"enableProxmoxFeature": "启用 Proxmox",
|
||
"disableProxmoxFeature": "禁用 Proxmox",
|
||
"addTagsPlaceholder": "添加标签...",
|
||
"authDetails": "认证详情",
|
||
"credType": "类型",
|
||
"generateKeyPairDesc": "生成新的密钥对,私钥和公钥将自动填写。",
|
||
"generatingKey": "生成中...",
|
||
"generateLabel": "生成 {{label}}",
|
||
"uploadFileBtn": "上传文件",
|
||
"keyPassphraseOptional": "密钥密码(可选)",
|
||
"sshPublicKeyOptional": "SSH 公钥(可选)",
|
||
"publicKeyGenerated": "公钥已生成",
|
||
"failedToGeneratePublicKey": "未能生成公钥",
|
||
"publicKeyCopied": "公钥已复制",
|
||
"keyPairGenerated": "{{label}} 密钥对已生成",
|
||
"failedToGenerateKeyPair": "未能生成密钥对",
|
||
"searchHostsPlaceholder": "搜索主机、地址、标签…",
|
||
"searchCredentialsPlaceholder": "搜索凭据…",
|
||
"refreshBtn": "刷新",
|
||
"addTag": "添加标签...",
|
||
"deleteConfirmBtn": "删除",
|
||
"tunnelRequirementsText": "SSH 服务器必须在 /etc/ssh/sshd_config 中设置 GatewayPorts yes、AllowTcpForwarding yes 和 PermitRootLogin yes。",
|
||
"deleteHostConfirm": "删除 \"{{name}}\"?",
|
||
"enableAtLeastOneProtocol": "请至少启用上述一种协议以配置认证和连接设置。",
|
||
"keyPassphrase": "密钥密码",
|
||
"connectBtn": "连接",
|
||
"disconnectBtn": "断开",
|
||
"basicInformation": "基本信息",
|
||
"authDetailsSection": "认证详情",
|
||
"credTypeLabel": "类型",
|
||
"hostsTab": "主机",
|
||
"credentialsTab": "凭据",
|
||
"selectMultiple": "多选",
|
||
"selectHosts": "选择主机",
|
||
"connectionLabel": "连接",
|
||
"authenticationLabel": "认证",
|
||
"generateKeyPairTitle": "生成密钥对",
|
||
"generateKeyPairDescription": "生成新的密钥对,私钥和公钥将自动填入。",
|
||
"generateFromPrivateKey": "从私钥生成",
|
||
"refreshBtn2": "刷新",
|
||
"exitSelectionTitle": "退出选择",
|
||
"exportAll": "导出全部",
|
||
"exportForSharing": "导出共享",
|
||
"addHostBtn2": "添加主机",
|
||
"addCredentialBtn2": "添加凭据",
|
||
"checkingHostStatuses": "正在检查主机状态...",
|
||
"pinnedSection": "已置顶",
|
||
"hostsExported": "主机已成功导出",
|
||
"hostsShareExported": "可共享的主机已成功导出",
|
||
"exportFailed": "导出主机失败",
|
||
"sampleDownloaded": "示例文件已下载",
|
||
"failedToDeleteCredential2": "删除凭据失败",
|
||
"noFolderOption": "(无文件夹)",
|
||
"nSelected": "已选择 {{count}} 项",
|
||
"featuresMenu": "功能",
|
||
"moveMenu": "移动",
|
||
"connectSelected": "连接所选",
|
||
"cancelSelection": "取消",
|
||
"deployDialogDesc": "将 {{name}} 部署到主机的 authorized_keys 文件中。",
|
||
"targetHostLabel": "目标主机",
|
||
"selectHostOption": "选择主机...",
|
||
"keyDeployedSuccess": "密钥部署成功",
|
||
"failedToDeployKey2": "部署密钥失败",
|
||
"deletedCount": "已删除 {{count}} 个主机",
|
||
"failedToDeleteCount": "删除 {{count}} 个主机失败",
|
||
"duplicatedHost": "已复制 \"{{name}}\"",
|
||
"failedToDuplicateHost": "复制主机失败",
|
||
"updatedCount": "已更新 {{count}} 台主机",
|
||
"friendlyNameLabel": "友好名称",
|
||
"descriptionLabel": "描述",
|
||
"loadingHost": "正在加载主机...",
|
||
"loadingHosts": "正在加载主机...",
|
||
"loadingCredentials": "正在加载凭据...",
|
||
"noHostsYet": "暂无主机",
|
||
"noHostsMatchSearch": "没有匹配搜索的主机",
|
||
"hostNotFound": "未找到主机",
|
||
"searchHosts": "搜索主机...",
|
||
"sortHosts": "排序主机",
|
||
"sortDefault": "默认顺序",
|
||
"sortNameAsc": "名称 (A → Z)",
|
||
"sortNameDesc": "名称 (Z → A)",
|
||
"sortIpAsc": "IP 地址 (升序)",
|
||
"sortIpDesc": "IP 地址 (降序)",
|
||
"sortOnlineFirst": "在线优先",
|
||
"sortOfflineFirst": "离线优先",
|
||
"sortPinnedFirst": "已固定优先",
|
||
"filterHosts": "筛选主机",
|
||
"filterClearAll": "清除筛选条件",
|
||
"filterStatusGroup": "状态",
|
||
"filterOnline": "在线",
|
||
"filterOffline": "离线",
|
||
"filterPinned": "已固定",
|
||
"filterAuthGroup": "认证类型",
|
||
"filterAuthPassword": "密码",
|
||
"filterAuthKey": "SSH 密钥",
|
||
"filterAuthCredential": "凭据",
|
||
"filterAuthNone": "无",
|
||
"filterAuthOpkssh": "OPKSSH",
|
||
"filterProtocolGroup": "协议",
|
||
"filterProtocolSsh": "SSH",
|
||
"filterProtocolRdp": "RDP",
|
||
"filterProtocolVnc": "VNC",
|
||
"filterProtocolTelnet": "Telnet",
|
||
"filterFeaturesGroup": "功能",
|
||
"filterFeatureTerminal": "终端",
|
||
"filterFeatureFileManager": "文件管理器",
|
||
"filterFeatureTunnel": "隧道",
|
||
"filterFeatureDocker": "Docker",
|
||
"filterTagsGroup": "标签",
|
||
"shareHost": "共享主机",
|
||
"shareHostTitle": "共享:{{name}}",
|
||
"shareFolder": "共享文件夹",
|
||
"shareFolderTitle": "共享文件夹: {{name}}",
|
||
"folderSharedSuccessfully": "文件夹中的共享主机 {{count}}",
|
||
"failedToShareFolder": "共享文件夹失败",
|
||
"sharing": {
|
||
"loadError": "加载共享数据失败,请重试。",
|
||
"shareWithSection": "共享给",
|
||
"usersTab": "用户",
|
||
"rolesTab": "角色",
|
||
"searchPlaceholder": "搜索用户或角色...",
|
||
"noMatches": "未找到匹配项",
|
||
"permissionLevelLabel": "权限级别",
|
||
"levels": {
|
||
"connect": {
|
||
"label": "连接",
|
||
"description": "仅打开会话:终端、远程桌面、文件管理器、隧道和 Docker。无权访问主机配置。"
|
||
},
|
||
"view": {
|
||
"label": "查看",
|
||
"description": "连接,并查看主机配置。凭据信息从不显示。"
|
||
},
|
||
"edit": {
|
||
"label": "编辑",
|
||
"description": "查看,并修改主机。凭据可替换但不可读取;凭据分配仅限所有者。"
|
||
},
|
||
"manage": {
|
||
"label": "管理",
|
||
"description": "编辑,并与其他用户共享主机、更改权限级别及撤销访问。"
|
||
}
|
||
},
|
||
"expiryLabel": "访问有效期",
|
||
"expiry": {
|
||
"never": "永不过期",
|
||
"oneHour": "1 小时",
|
||
"oneDay": "24 小时",
|
||
"sevenDays": "7 天",
|
||
"thirtyDays": "30 天",
|
||
"custom": "自定义"
|
||
},
|
||
"customHoursPlaceholder": "过期前的小时数",
|
||
"shareButton": "共享",
|
||
"shareWithCount": "共享({{count}})",
|
||
"currentAccess": "当前访问权限",
|
||
"noAccessEntries": "此主机尚未共享",
|
||
"folderShareSummary": "此文件夹中的 {{shared}} 主机(共 {{total}} )共享",
|
||
"grantedBy": "授权者",
|
||
"expires": "过期时间",
|
||
"expired": "已过期",
|
||
"never": "永不过期",
|
||
"revoke": "撤销",
|
||
"accessUpdated": "访问权限已更新",
|
||
"accessUpdateFailed": "更新访问权限失败",
|
||
"sharedBadge": "已共享",
|
||
"sharedBadgeTooltip": "由 {{owner}} 共享({{level}} 访问权限)",
|
||
"viewOnlyBanner": "此主机由 {{owner}} 与您共享,仅限查看权限。配置为只读。",
|
||
"sharedEditBanner": "此主机由 {{owner}} 与您共享,具有编辑权限。更改将应用于真实主机;凭据引用只能由所有者更改。",
|
||
"ownerOnlyControl": "仅主机所有者可更改此项"
|
||
},
|
||
"guac": {
|
||
"connection": "连接",
|
||
"authentication": "认证",
|
||
"storedCredential": "已存储凭据",
|
||
"noCredential": "无凭据(下方直接填写凭据)",
|
||
"authMethod": "认证方法",
|
||
"authTypeDirect": "直接",
|
||
"authTypeCredential": "凭据",
|
||
"authTypeNone": "没有任何",
|
||
"authTypeNoneDesc": "不会存储任何凭据。每次连接时,系统都会提示您输入用户名和密码;这些信息不会被保存。",
|
||
"selectCredential": "选择凭据...",
|
||
"connectionSettings": "连接设置",
|
||
"displaySettings": "显示设置",
|
||
"audioSettings": "音频设置",
|
||
"rdpPerformance": "RDP 性能",
|
||
"deviceRedirection": "设备重定向",
|
||
"session": "会话",
|
||
"gateway": "网关",
|
||
"remoteApp": "RemoteApp",
|
||
"clipboard": "剪贴板",
|
||
"sessionRecording": "会话录制",
|
||
"wakeOnLan": "网络唤醒",
|
||
"vncSettings": "VNC 设置",
|
||
"terminalSettings": "终端设置",
|
||
"rdpPort": "RDP 端口",
|
||
"username": "用户名",
|
||
"password": "密码",
|
||
"passwordSaved": "密码已保存,输入即可更改",
|
||
"domain": "域",
|
||
"securityMode": "安全模式",
|
||
"colorDepth": "颜色深度",
|
||
"width": "宽度",
|
||
"height": "高度",
|
||
"dpi": "DPI",
|
||
"resizeMethod": "调整大小方法",
|
||
"clientName": "客户端名称",
|
||
"initialProgram": "初始程序",
|
||
"serverLayout": "服务器布局",
|
||
"timezone": "时区",
|
||
"loadBalanceInfo": "负载均衡信息 / Cookie",
|
||
"loadBalanceInfoDesc": "RD 连接代理 Cookie,用于 RDS 场负载均衡(例如 tsv://MS Terminal Services Plugin.1.CollectionName)",
|
||
"guacdProxy": "guacd 代理",
|
||
"guacdHostname": "guacd 主机",
|
||
"guacdHostnamePlaceholder": "全局默认",
|
||
"guacdPort": "guacd 端口",
|
||
"guacdProxyDesc": "为此连接覆盖全局 guacd 实例。留空则使用全局配置的 guacd。",
|
||
"gatewayHostname": "网关主机名",
|
||
"gatewayPort": "网关端口",
|
||
"gatewayUsername": "网关用户名",
|
||
"gatewayPassword": "网关密码",
|
||
"gatewayDomain": "网关域",
|
||
"remoteAppProgram": "RemoteApp 程序",
|
||
"workingDirectory": "工作目录",
|
||
"arguments": "参数",
|
||
"normalizeLineEndings": "规范化行尾",
|
||
"recordingPath": "录制路径",
|
||
"recordingName": "录制名称",
|
||
"macAddress": "MAC 地址",
|
||
"broadcastAddress": "广播地址",
|
||
"udpPort": "UDP 端口",
|
||
"waitTimeS": "等待时间(秒)",
|
||
"driveName": "驱动器名称",
|
||
"drivePath": "驱动器路径",
|
||
"ignoreCertificate": "忽略证书",
|
||
"ignoreCertificateDesc": "允许连接到具有自签名证书的主机",
|
||
"forceLossless": "强制无损",
|
||
"forceLosslessDesc": "强制无损图像编码(质量更高,占用更多带宽)",
|
||
"disableAudio": "禁用音频",
|
||
"disableAudioDesc": "将远程会话的所有音频静音",
|
||
"enableAudioInput": "启用音频输入(麦克风)",
|
||
"enableAudioInputDesc": "将本地麦克风转发到远程会话",
|
||
"wallpaper": "壁纸",
|
||
"wallpaperDesc": "显示桌面壁纸(禁用可提高性能)",
|
||
"theming": "主题",
|
||
"themingDesc": "启用视觉主题和样式",
|
||
"fontSmoothing": "字体平滑",
|
||
"fontSmoothingDesc": "启用 ClearType 字体渲染",
|
||
"fullWindowDrag": "全窗口拖动",
|
||
"fullWindowDragDesc": "拖动时显示窗口内容",
|
||
"desktopComposition": "桌面合成",
|
||
"desktopCompositionDesc": "启用 Aero 玻璃效果",
|
||
"menuAnimations": "菜单动画",
|
||
"menuAnimationsDesc": "启用菜单淡入淡出与滑动动画",
|
||
"disableBitmapCaching": "禁用位图缓存",
|
||
"disableBitmapCachingDesc": "关闭位图缓存(可能有助于解决显示故障)",
|
||
"disableOffscreenCaching": "禁用离屏缓存",
|
||
"disableOffscreenCachingDesc": "关闭离屏缓存",
|
||
"disableGlyphCaching": "禁用字形缓存",
|
||
"disableGlyphCachingDesc": "关闭字形缓存",
|
||
"enableGfx": "启用 GFX",
|
||
"enableGfxDesc": "使用 RemoteFX 图形管道",
|
||
"enablePrinting": "启用打印",
|
||
"enablePrintingDesc": "将本地打印机重定向到远程会话",
|
||
"enableDriveRedirection": "启用驱动器重定向",
|
||
"enableDriveRedirectionDesc": "将本地文件夹映射为远程会话中的驱动器",
|
||
"createDrivePath": "创建驱动器路径",
|
||
"createDrivePathDesc": "如果文件夹不存在,则自动创建",
|
||
"disableDownload": "禁用下载",
|
||
"disableDownloadDesc": "禁止从远程会话下载文件",
|
||
"disableUpload": "禁用上传",
|
||
"disableUploadDesc": "禁止上传文件到远程会话",
|
||
"enableTouch": "启用触控",
|
||
"enableTouchDesc": "启用触控输入转发",
|
||
"consoleSession": "控制台会话",
|
||
"consoleSessionDesc": "连接到控制台(会话 0)而不是新会话",
|
||
"sendWolPacket": "发送 WOL 数据包",
|
||
"sendWolPacketDesc": "在连接前发送魔术包以唤醒此主机",
|
||
"disableCopy": "禁用复制",
|
||
"disableCopyDesc": "禁止从远程会话复制文本",
|
||
"disablePaste": "禁用粘贴",
|
||
"disablePasteDesc": "禁止粘贴文本到远程会话",
|
||
"createPathIfMissing": "如果路径不存在则创建",
|
||
"createPathIfMissingDesc": "自动创建录制目录",
|
||
"excludeOutput": "排除输出",
|
||
"excludeOutputDesc": "不录制屏幕输出(仅元数据)",
|
||
"excludeMouse": "排除鼠标",
|
||
"excludeMouseDesc": "不录制鼠标移动",
|
||
"includeKeystrokes": "包含击键",
|
||
"includeKeystrokesDesc": "除了屏幕输出外,还录制原始击键",
|
||
"vncPort": "VNC 端口",
|
||
"vncPassword": "VNC 密码",
|
||
"vncUsernameOptional": "用户名 (可选)",
|
||
"vncLeaveBlank": "如不需要请留空",
|
||
"cursorMode": "光标模式",
|
||
"swapRedBlue": "交换红/蓝",
|
||
"swapRedBlueDesc": "交换红蓝色彩通道 (可修复某些色彩问题)",
|
||
"readOnly": "只读",
|
||
"readOnlyDesc": "仅查看远程屏幕,不发送任何输入",
|
||
"telnetPort": "Telnet 端口",
|
||
"terminalType": "终端类型",
|
||
"fontName": "字体名称",
|
||
"fontSize": "字体大小",
|
||
"colorScheme": "配色方案",
|
||
"backspaceKey": "退格键",
|
||
"saveHostFirst": "请先保存主机。",
|
||
"sharingOptionsAfterSave": "保存主机后,共享选项可用。",
|
||
"permissionLevel": "权限级别",
|
||
"typeHeader": "类型",
|
||
"targetHeader": "目标",
|
||
"permissionHeader": "权限",
|
||
"cancelBtn": "取消",
|
||
"savingBtn": "保存中...",
|
||
"updateHostBtn": "更新主机",
|
||
"addHostBtn": "添加主机"
|
||
}
|
||
},
|
||
"commandPalette": {
|
||
"searchPlaceholder": "搜索主机、命令或设置...",
|
||
"quickActions": "快速操作",
|
||
"hostManager": "主机管理器",
|
||
"hostManagerDesc": "管理、添加或编辑主机",
|
||
"addNewHost": "添加新主机",
|
||
"addNewHostDesc": "注册新的主机",
|
||
"adminSettings": "管理设置",
|
||
"adminSettingsDesc": "配置系统偏好和用户",
|
||
"userProfile": "用户资料",
|
||
"userProfileDesc": "管理您的账户和偏好",
|
||
"addCredential": "添加凭据",
|
||
"addCredentialDesc": "存储 SSH 密钥或密码",
|
||
"tmuxMonitor": "Tmux 监控器",
|
||
"tmuxMonitorDesc": "监控主机上的 tmux 会话",
|
||
"recentActivity": "最近活动",
|
||
"serversAndHosts": "服务器与主机",
|
||
"noHostsFound": "未找到匹配 \"{{search}}\" 的主机",
|
||
"links": "链接",
|
||
"navigate": "导航",
|
||
"select": "选择",
|
||
"toggleWith": "切换:使用"
|
||
},
|
||
"splitScreen": {
|
||
"paneEmpty": "窗格 {{index}} - 空",
|
||
"noTabAssigned": "未分配标签页",
|
||
"focusedPane": "活动窗格"
|
||
},
|
||
"connections": {
|
||
"noConnections": "无连接",
|
||
"noConnectionsDesc": "打开终端、文件管理器或远程桌面以在此查看连接",
|
||
"connectedFor": "已连接 {{duration}}",
|
||
"connected": "已连接",
|
||
"disconnected": "已断开连接",
|
||
"closeTab": "关闭标签页",
|
||
"closeConnection": "关闭连接",
|
||
"forgetTab": "忘记",
|
||
"removeBackground": "移除",
|
||
"reconnect": "重新连接",
|
||
"reopenTab": "重新打开",
|
||
"sectionOpen": "打开",
|
||
"sectionBackground": "后台",
|
||
"backgroundDesc": "会话在断开连接后持续 30 分钟,可以重新连接",
|
||
"persisted": "已在后台保持连接",
|
||
"expiresIn": "将在 {{duration}} 后到期",
|
||
"search": "搜索连接...",
|
||
"noSearchResults": "没有连接匹配您的搜索",
|
||
"rename": "重命名会话",
|
||
"sectionSharedWithMe": "与我分享",
|
||
"sharedBy": "由 {{username}} 分享",
|
||
"join": "加入",
|
||
"sharedSessionLabel": "{{hostName}} (共享)"
|
||
},
|
||
"sessionSharing": {
|
||
"guestView": {
|
||
"loading": "正在连接到共享会话...",
|
||
"linkInvalid": "此分享链接无效、已过期或已被撤销。",
|
||
"rateLimited": "尝试次数过多,请稍后再试。",
|
||
"sessionEnded": "本次会议已结束",
|
||
"readOnlyBadge": "仅查看"
|
||
},
|
||
"modalTitle": "分享会话",
|
||
"shareButton": "分享",
|
||
"notReadyToShare": "会话尚未准备好共享",
|
||
"modeTab": {
|
||
"link": "关联",
|
||
"user": "用户"
|
||
},
|
||
"linkModeDescription": "任何人只要拥有此链接即可加入,无需注册账号。",
|
||
"userModeDescription": "将主机共享给已拥有此主机访问权限的特定用户。如果他们还没有访问权限,请先将主机共享给他们,或者使用链接代替。共享后,会话将显示在他们的“连接”选项卡中。",
|
||
"permissionLevel": {
|
||
"label": "权限级别",
|
||
"readOnly": "只读",
|
||
"readOnlyDescription": "可以观看直播,但无法打字或互动。",
|
||
"readWrite": "读写",
|
||
"readWriteDescription": "可以像会话所有者一样进行输入和互动。"
|
||
},
|
||
"expiryLabel": "链接过期",
|
||
"createLinkButton": "创建链接",
|
||
"createShareButton": "与用户分享",
|
||
"searchUsersPlaceholder": "搜索用户...",
|
||
"noUsersFound": "未找到用户",
|
||
"linkCreated": "已创建分享链接",
|
||
"linkCopied": "链接已复制到剪贴板",
|
||
"copyLink": "复制链接",
|
||
"shareCreated": "会话已共享。它将出现在对方的“连接”选项卡中。",
|
||
"shareFailed": "创建共享失败",
|
||
"userLacksHostAccess": "该用户目前没有访问此主机的权限。请先与其共享主机,或使用链接进行共享。",
|
||
"activeShares": "活跃股",
|
||
"noActiveShares": "本会话无活跃份额",
|
||
"revoke": "撤销",
|
||
"revokeConfirmTitle": "撤销此份额?",
|
||
"revokeConfirmDescription": "任何使用此共享文件夹的用户都将立即失去访问权限。",
|
||
"revoked": "股份被撤销",
|
||
"revokeFailed": "撤销股份失败",
|
||
"joinCount": "{{count}} 加入",
|
||
"joinCount_other": "{{count}} 加入",
|
||
"expiresAt": "过期时间 {{date}}",
|
||
"linkShareBadge": "关联",
|
||
"userShareBadge": "用户: {{username}}",
|
||
"loadSharesFailed": "无法加载活跃份额"
|
||
},
|
||
"guacamole": {
|
||
"connecting": "正在连接到 {{type}} 会话...",
|
||
"connectionError": "连接错误",
|
||
"connectionFailed": "连接失败",
|
||
"failedToConnect": "获取连接令牌失败",
|
||
"hostNotFound": "未找到主机",
|
||
"noHostSelected": "未选择主机",
|
||
"reconnect": "重新连接",
|
||
"retry": "重试",
|
||
"guacdUnavailable": "远程桌面服务 (guacd) 不可用。请确保 guacd 正在运行并可访问,且在管理设置中正确配置。",
|
||
"credentialPromptTitle": "输入 RDP 凭据",
|
||
"credentialPromptDescription": "此主机设置为在连接时提示输入凭据。这些凭据仅用于当前会话,不会被保存。",
|
||
"connect": "连接",
|
||
"ctrlAltDel": "Ctrl+Alt+Del",
|
||
"toolbar": {
|
||
"ctrlAltDel": "Ctrl+Alt+Del",
|
||
"winL": "Win+L (锁定屏幕)",
|
||
"winKey": "Windows 键",
|
||
"ctrl": "Ctrl",
|
||
"alt": "Alt",
|
||
"shift": "Shift",
|
||
"win": "Win",
|
||
"stickyActive": "{{key}}(已锁定 - 点击释放)",
|
||
"stickyInactive": "{{key}}(点击锁定)",
|
||
"esc": "Escape",
|
||
"tab": "Tab",
|
||
"home": "Home",
|
||
"end": "End",
|
||
"pageUp": "Page Up",
|
||
"pageDown": "Page Down",
|
||
"arrowUp": "Arrow Up",
|
||
"arrowDown": "Arrow Down",
|
||
"arrowLeft": "Arrow Left",
|
||
"arrowRight": "Arrow Right",
|
||
"fnToggle": "功能键",
|
||
"reconnect": "重新连接会话",
|
||
"collapse": "折叠工具栏",
|
||
"expand": "展开工具栏",
|
||
"dragHandle": "拖动以重新定位",
|
||
"switchToTrackpad": "切换到触控板模式(拖动移动光标,点击点击)",
|
||
"switchToTouch": "切换到触摸模式(直接点击你想点击的地方)"
|
||
}
|
||
},
|
||
"terminal": {
|
||
"connect": "连接到主机",
|
||
"clear": "清除",
|
||
"paste": "粘贴",
|
||
"reconnect": "重新连接",
|
||
"connectionLost": "连接丢失",
|
||
"connected": "已连接",
|
||
"clipboardWriteFailed": "复制到剪贴板失败。请确保页面通过 HTTPS 或 localhost 提供服务。",
|
||
"clipboardReadFailed": "从剪贴板读取失败。请确保已授予剪贴板权限。",
|
||
"clipboardHttpWarning": "粘贴需要 HTTPS。请使用 Ctrl+Shift+V 或通过 HTTPS 提供 Termix。",
|
||
"passwordPromptFillTitle": "将保存的密码填入此提示?",
|
||
"unknownError": "发生未知错误",
|
||
"websocketError": "WebSocket 连接错误",
|
||
"connecting": "正在连接…",
|
||
"noHostSelected": "未选择主机",
|
||
"reconnecting": "正在重新连接…({{attempt}}/{{max}})",
|
||
"reconnected": "重新连接成功",
|
||
"tmuxSessionCreated": "tmux 会话已创建:{{name}}",
|
||
"tmuxSessionAttached": "tmux 会话已附加:{{name}}",
|
||
"tmuxUnavailable": "远程主机上未安装 tmux,回退到标准 shell",
|
||
"tmuxSessionPickerTitle": "tmux 会话",
|
||
"tmuxSessionPickerDesc": "在此主机上发现现有 tmux 会话。选择一个重新连接或创建新会话。",
|
||
"tmuxWindows": "窗口",
|
||
"tmuxWindowCount": "{{count}} 个窗口",
|
||
"tmuxAttached": "已连接客户端",
|
||
"tmuxAttachedCount": "{{count}} 个已连接",
|
||
"tmuxLastActivity": "最后活动",
|
||
"tmuxTimeJustNow": "刚刚",
|
||
"tmuxTimeMinutes": "{{count}} 分钟前",
|
||
"tmuxTimeHours": "{{count}} 小时前",
|
||
"tmuxTimeDays": "{{count}} 天前",
|
||
"tmuxCreateNew": "启动新会话",
|
||
"tmuxCopyHint": "调整选择并按 Enter 复制到剪贴板",
|
||
"tmuxDetach": "从 tmux 会话分离",
|
||
"tmuxDetached": "已从 tmux 会话分离",
|
||
"maxReconnectAttemptsReached": "已达到最大重连尝试次数",
|
||
"closeTab": "关闭",
|
||
"connectionTimeout": "连接超时",
|
||
"terminalTitle": "终端 - {{host}}",
|
||
"terminalWithPath": "终端 - {{host}}:{{path}}",
|
||
"runTitle": "运行 {{command}} - {{host}}",
|
||
"totpRequired": "需要双因素认证",
|
||
"totpCodeLabel": "验证码",
|
||
"totpVerify": "验证",
|
||
"mfaPromptRequired": "需要身份验证",
|
||
"mfaPushRequired": "需要推送身份验证",
|
||
"mfaMenuPlaceholder": "请输入您的回复",
|
||
"mfaWaitingApproval": "正在等待设备审核通过……",
|
||
"mfaSendRequest": "发送请求",
|
||
"warpgateAuthRequired": "需要 Warpgate 认证",
|
||
"warpgateSecurityKey": "安全密钥",
|
||
"warpgateAuthUrl": "认证 URL",
|
||
"warpgateOpenBrowser": "在浏览器中打开",
|
||
"warpgateContinue": "我已完成认证",
|
||
"opksshAuthRequired": "需要 OPKSSH 认证",
|
||
"opksshAuthDescription": "在浏览器中完成认证以继续。此会话将在 24 小时内有效。",
|
||
"opksshOpenBrowser": "打开浏览器进行认证",
|
||
"opksshWaitingForAuth": "等待浏览器认证...",
|
||
"opksshAuthenticating": "正在处理认证...",
|
||
"opksshTimeout": "认证超时,请重试。",
|
||
"opksshAuthFailed": "认证失败,请检查凭据并重试。",
|
||
"opksshSignInWith": "使用 {{provider}} 登录",
|
||
"vaultAuthTitle": "需要 Vault 登录",
|
||
"vaultAuthDescription": "已打开窗口以登录 HashiCorp Vault。在该处完成登录;此连接将自动继续。",
|
||
"vaultAuthFailed": "Vault 认证失败,请重试。",
|
||
"vaultReopen": "重新打开登录窗口",
|
||
"sudoPasswordPopupTitle": "输入密码?",
|
||
"linkDialogTitle": "打开链接",
|
||
"linkDialogOpen": "打开",
|
||
"linkDialogCopy": "复制",
|
||
"websocketAbnormalClose": "连接意外关闭。这可能是因为反向代理或SSL配置问题。请检查服务器日志。",
|
||
"connectionLogTitle": "连接日志",
|
||
"connectionLogCopy": "复制日志到剪贴板",
|
||
"connectionLogEmpty": "暂无连接日志",
|
||
"connectionLogWaiting": "等待连接日志...",
|
||
"connectionLogCopied": "连接日志已复制到剪贴板",
|
||
"connectionLogCopyFailed": "复制日志到剪贴板失败",
|
||
"connectionRejected": "服务器拒绝了连接。请检查您的身份验证和网络配置。",
|
||
"hostKeyRejected": "SSH主机密钥验证被拒绝。连接已取消。",
|
||
"sessionTakenOver": "会话已在另一个标签页中打开。正在重新连接...",
|
||
"split": {
|
||
"splitTab": "拆分标签页",
|
||
"addToSplit": "添加到拆分",
|
||
"removeFromSplit": "从拆分中移除"
|
||
}
|
||
},
|
||
"fileManager": {
|
||
"noHostSelected": "未选择主机",
|
||
"initializingEditor": "正在初始化编辑器...",
|
||
"file": "文件",
|
||
"folder": "文件夹",
|
||
"uploadFile": "上传文件",
|
||
"downloadFile": "下载",
|
||
"extractArchive": "解压归档文件",
|
||
"extractingArchive": "正在解压 {{name}}...",
|
||
"archiveExtractedSuccessfully": "{{name}} 解压成功",
|
||
"extractFailed": "解压失败",
|
||
"compressFile": "压缩文件",
|
||
"compressFiles": "压缩文件",
|
||
"compressFilesDesc": "将 {{count}} 个项目压缩成一个归档文件",
|
||
"archiveName": "归档名称",
|
||
"enterArchiveName": "输入归档名称...",
|
||
"compressionFormat": "压缩格式",
|
||
"selectedFiles": "已选文件",
|
||
"andMoreFiles": "还有 {{count}} 个...",
|
||
"compress": "压缩",
|
||
"compressingFiles": "正在将 {{count}} 个项目压缩成 {{name}}...",
|
||
"filesCompressedSuccessfully": "{{name}} 创建成功",
|
||
"compressFailed": "压缩失败",
|
||
"edit": "编辑",
|
||
"preview": "预览",
|
||
"previous": "上一个",
|
||
"next": "下一个",
|
||
"pageXOfY": "第 {{current}} 页,共 {{total}} 页",
|
||
"zoomOut": "缩小",
|
||
"zoomIn": "放大",
|
||
"newFile": "新建文件",
|
||
"newFolder": "新建文件夹",
|
||
"rename": "重命名",
|
||
"uploading": "上传中...",
|
||
"uploadingFile": "正在上传 {{name}}...",
|
||
"fileName": "文件名",
|
||
"folderName": "文件夹名称",
|
||
"fileUploadedSuccessfully": "文件 \"{{name}}\" 上传成功",
|
||
"failedToUploadFile": "上传文件失败",
|
||
"fileDownloadedSuccessfully": "文件 \"{{name}}\" 下载成功",
|
||
"failedToDownloadFile": "下载文件失败",
|
||
"fileCreatedSuccessfully": "文件 \"{{name}}\" 创建成功",
|
||
"folderCreatedSuccessfully": "文件夹 \"{{name}}\" 创建成功",
|
||
"failedToCreateItem": "创建项目失败",
|
||
"operationFailed": "对 {{name}} 的 {{operation}} 操作失败:{{error}}",
|
||
"failedToResolveSymlink": "解析符号链接失败",
|
||
"itemsDeletedSuccessfully": "{{count}} 个项目删除成功",
|
||
"failedToDeleteItems": "删除项目失败",
|
||
"sudoPasswordRequired": "需要管理员密码",
|
||
"enterSudoPassword": "输入 sudo 密码以继续此操作",
|
||
"sudoPassword": "Sudo 密码",
|
||
"sudoOperationFailed": "Sudo 操作失败",
|
||
"sudoAuthFailed": "Sudo 认证失败",
|
||
"dragFilesToUpload": "将文件拖放到此处以上传",
|
||
"emptyFolder": "此文件夹为空",
|
||
"searchFiles": "搜索文件...",
|
||
"upload": "上传",
|
||
"selectHostToStart": "选择主机以开始文件管理",
|
||
"sshRequiredForFileManager": "文件管理器需要 SSH。此主机未启用 SSH。",
|
||
"failedToConnect": "连接 SSH 失败",
|
||
"failedToLoadDirectory": "加载目录失败",
|
||
"noSSHConnection": "没有可用的 SSH 连接",
|
||
"copy": "复制",
|
||
"cut": "剪切",
|
||
"paste": "粘贴",
|
||
"copyPath": "复制路径",
|
||
"copyPaths": "复制路径",
|
||
"delete": "删除",
|
||
"properties": "属性",
|
||
"refresh": "刷新",
|
||
"downloadFiles": "将 {{count}} 个文件下载到浏览器",
|
||
"copyFiles": "复制 {{count}} 个项目",
|
||
"cutFiles": "剪切 {{count}} 个项目",
|
||
"deleteFiles": "删除 {{count}} 个项目",
|
||
"filesCopiedToClipboard": "已将 {{count}} 个项目复制到剪贴板",
|
||
"filesCutToClipboard": "已将 {{count}} 个项目剪切到剪贴板",
|
||
"pathCopiedToClipboard": "路径已复制到剪贴板",
|
||
"pathsCopiedToClipboard": "已将 {{count}} 条路径复制到剪贴板",
|
||
"failedToCopyPath": "无法将路径复制到剪贴板",
|
||
"copyFolderLink": "复制文件夹链接",
|
||
"copyCurrentFolderLink": "复制当前文件夹链接",
|
||
"folderLinkCopied": "文件夹链接已复制到剪贴板",
|
||
"failedToCopyFolderLink": "无法复制文件夹链接",
|
||
"movedItems": "已移动 {{count}} 个项目",
|
||
"failedToDeleteItem": "删除项目失败",
|
||
"itemRenamedSuccessfully": "{{type}} 重命名成功",
|
||
"failedToRenameItem": "重命名项目失败",
|
||
"download": "下载",
|
||
"openExternalEditor": "在外部打开",
|
||
"chooseExternalEditor": "选择外部编辑器",
|
||
"externalEditorSelected": "已选择外部编辑器",
|
||
"externalEditorDesktopOnly": "外部编辑器仅在桌面应用中可用",
|
||
"externalEditorOpened": "已在外部编辑器中打开。在其中保存文件会将更改上传回服务器。",
|
||
"failedToOpenExternalEditor": "无法打开外部编辑器",
|
||
"failedToSelectExternalEditor": "无法选择外部编辑器",
|
||
"permissions": "权限",
|
||
"size": "大小",
|
||
"modified": "修改时间",
|
||
"path": "路径",
|
||
"confirmDelete": "确定要删除 {{name}} 吗?",
|
||
"permissionDenied": "权限被拒绝",
|
||
"serverError": "服务器错误",
|
||
"fileSavedSuccessfully": "文件已成功保存",
|
||
"failedToSaveFile": "保存文件失败",
|
||
"confirmDeleteSingleItem": "确定要永久删除“{{name}}”吗?",
|
||
"confirmDeleteMultipleItems": "确定要永久删除{{count}}个项目吗?",
|
||
"confirmDeleteMultipleItemsWithFolders": "确定要永久删除{{count}}个项目吗?这包括文件夹及其内容。",
|
||
"confirmDeleteFolder": "确定要永久删除文件夹“{{name}}”及其所有内容吗?",
|
||
"permanentDeleteWarning": "此操作无法撤销。项目将从服务器永久删除。",
|
||
"recent": "最近",
|
||
"pinned": "已固定",
|
||
"folderShortcuts": "文件夹快捷方式",
|
||
"failedToReconnectSSH": "重新连接SSH会话失败",
|
||
"openTerminalHere": "在此处打开终端",
|
||
"run": "运行",
|
||
"openTerminalInFolder": "在此文件夹中打开终端",
|
||
"openTerminalInFileLocation": "在文件位置打开终端",
|
||
"runningFile": "正在运行 - {{file}}",
|
||
"onlyRunExecutableFiles": "只能运行可执行文件",
|
||
"directories": "目录",
|
||
"removedFromRecentFiles": "已从最近文件中移除“{{name}}”",
|
||
"removeFailed": "移除失败",
|
||
"unpinnedSuccessfully": "已成功取消固定“{{name}}”",
|
||
"unpinFailed": "取消固定失败",
|
||
"removedShortcut": "已移除快捷方式“{{name}}”",
|
||
"removeShortcutFailed": "移除快捷方式失败",
|
||
"clearedAllRecentFiles": "已清空所有最近文件",
|
||
"clearFailed": "清空失败",
|
||
"removeFromRecentFiles": "从最近文件中移除",
|
||
"clearAllRecentFiles": "清空所有最近文件",
|
||
"unpinFile": "取消固定文件",
|
||
"removeShortcut": "移除快捷方式",
|
||
"pinFile": "固定文件",
|
||
"addToShortcuts": "添加到快捷方式",
|
||
"pasteFailed": "粘贴失败",
|
||
"noUndoableActions": "无可撤销的操作",
|
||
"undoCopySuccess": "已撤销复制操作:已删除{{count}}个已复制的文件",
|
||
"undoCopyFailedDelete": "撤销失败:无法删除任何已复制的文件",
|
||
"undoCopyFailedNoInfo": "撤销失败:找不到已复制的文件信息",
|
||
"undoMoveSuccess": "已撤销移动操作:已将{{count}}个文件移回原始位置",
|
||
"undoMoveFailedMove": "撤销失败:无法将任何文件移回",
|
||
"undoMoveFailedNoInfo": "撤销失败:找不到移动的文件信息",
|
||
"undoDeleteNotSupported": "删除操作无法撤销:文件已从服务器永久删除",
|
||
"undoTypeNotSupported": "不支持的撤销操作类型",
|
||
"undoOperationFailed": "撤销操作失败",
|
||
"unknownError": "未知错误",
|
||
"confirm": "确认",
|
||
"find": "查找...",
|
||
"replace": "替换",
|
||
"downloadInstead": "改为下载",
|
||
"keyboardShortcuts": "键盘快捷键",
|
||
"searchAndReplace": "查找和替换",
|
||
"editing": "编辑",
|
||
"search": "搜索",
|
||
"findNext": "查找下一个",
|
||
"findPrevious": "查找上一个",
|
||
"save": "保存",
|
||
"selectAll": "全选",
|
||
"undo": "撤销",
|
||
"redo": "重做",
|
||
"moveLineUp": "上移一行",
|
||
"moveLineDown": "下移一行",
|
||
"toggleComment": "切换注释",
|
||
"autoComplete": "自动补全",
|
||
"imageLoadError": "加载图像失败",
|
||
"startTyping": "开始键入...",
|
||
"unknownSize": "未知大小",
|
||
"fileIsEmpty": "文件为空",
|
||
"largeFileWarning": "大文件警告",
|
||
"largeFileWarningDesc": "该文件大小为 {{size}},以文本方式打开可能会导致性能问题。",
|
||
"fileNotFoundAndRemoved": "文件 \"{{name}}\" 未找到,已从最近/固定文件中移除",
|
||
"failedToLoadFile": "加载文件失败:{{error}}",
|
||
"serverErrorOccurred": "服务器发生错误,请稍后重试。",
|
||
"autoSaveFailed": "自动保存失败",
|
||
"fileAutoSaved": "文件已自动保存",
|
||
"moveFileFailed": "移动 {{name}} 失败",
|
||
"moveOperationFailed": "移动操作失败",
|
||
"canOnlyCompareFiles": "只能比较两个文件",
|
||
"comparingFiles": "正在比较文件:{{file1}} 和 {{file2}}",
|
||
"dragFailed": "拖动操作失败",
|
||
"filePinnedSuccessfully": "文件 \"{{name}}\" 固定成功",
|
||
"pinFileFailed": "固定文件失败",
|
||
"fileUnpinnedSuccessfully": "文件 \"{{name}}\" 取消固定成功",
|
||
"unpinFileFailed": "取消固定文件失败",
|
||
"shortcutAddedSuccessfully": "文件夹快捷方式 \"{{name}}\" 添加成功",
|
||
"addShortcutFailed": "添加快捷方式失败",
|
||
"operationCompletedSuccessfully": "成功{{operation}}了{{count}}个项目",
|
||
"operationCompleted": "{{operation}}了{{count}}个项目",
|
||
"downloadFileSuccess": "文件 {{name}} 下载成功",
|
||
"downloadFileFailed": "下载失败",
|
||
"moveTo": "移动到 {{name}}",
|
||
"diffCompareWith": "与 {{name}} 对比差异",
|
||
"dragOutsideToDownload": "拖到窗口外以下载 ({{count}} 个文件)",
|
||
"newFolderDefault": "新建文件夹",
|
||
"newFileDefault": "新建文件.txt",
|
||
"successfullyMovedItems": "成功移动 {{count}} 个项目到 {{target}}",
|
||
"move": "移动",
|
||
"searchInFile": "在文件中搜索 (Ctrl+F)",
|
||
"showKeyboardShortcuts": "显示键盘快捷键",
|
||
"decreaseFontSize": "缩小字体",
|
||
"increaseFontSize": "放大字体",
|
||
"startWritingMarkdown": "开始编写Markdown内容...",
|
||
"loadingFileComparison": "加载文件比较中...",
|
||
"reload": "重新加载",
|
||
"compare": "比较",
|
||
"sideBySide": "并排",
|
||
"inline": "内联",
|
||
"fileComparison": "文件比较: {{file1}} 对比 {{file2}}",
|
||
"fileTooLarge": "文件过大: {{error}}",
|
||
"sshConnectionFailed": "SSH 连接失败。请检查您到 {{name}} ({{ip}}:{{port}}) 的连接",
|
||
"loadFileFailed": "加载文件失败: {{error}}",
|
||
"connecting": "连接中...",
|
||
"connectedSuccessfully": "连接成功",
|
||
"totpVerificationFailed": "TOTP 验证失败",
|
||
"warpgateVerificationFailed": "Warpgate 认证失败",
|
||
"authenticationFailed": "认证失败",
|
||
"incorrectPassphrase": "密码错误。请重试。",
|
||
"verificationCodePrompt": "验证码:",
|
||
"changePermissions": "更改权限",
|
||
"currentPermissions": "当前权限",
|
||
"owner": "所有者",
|
||
"group": "组",
|
||
"others": "其他",
|
||
"read": "读取",
|
||
"write": "写入",
|
||
"execute": "执行",
|
||
"permissionsChangedSuccessfully": "权限修改成功",
|
||
"failedToChangePermissions": "权限修改失败",
|
||
"name": "名称",
|
||
"sortByName": "名称",
|
||
"sortByDate": "修改日期",
|
||
"sortBySize": "大小",
|
||
"ascending": "升序",
|
||
"descending": "降序",
|
||
"root": "根目录",
|
||
"new": "新建",
|
||
"sortBy": "排序方式",
|
||
"items": "项目",
|
||
"selected": "已选择",
|
||
"editor": "编辑器",
|
||
"octal": "八进制",
|
||
"storage": "存储",
|
||
"disk": "磁盘",
|
||
"used": "已用",
|
||
"of": "/",
|
||
"toggleSidebar": "切换侧边栏",
|
||
"cannotLoadPdf": "无法加载 PDF",
|
||
"pdfLoadError": "加载此 PDF 文件时出错。",
|
||
"loadingPdf": "正在加载 PDF...",
|
||
"loadingPage": "正在加载页面..."
|
||
},
|
||
"transfer": {
|
||
"copyToHost": "复制到主机…",
|
||
"moveToHost": "移动到主机…",
|
||
"copyItemsToHost": "复制 {{count}} 个项目到主机…",
|
||
"moveItemsToHost": "移动 {{count}} 个项目到主机…",
|
||
"noHostsConnected": "没有其他可用的文件管理器主机。",
|
||
"noHostsConnectedHint": "在主机管理器中添加启用文件管理器的其他 SSH 主机。",
|
||
"selectDestinationHost": "选择目标主机",
|
||
"destinationPath": "目标路径",
|
||
"recentDestinations": "最近目标",
|
||
"collapseRecentDestinations": "收起最近目标",
|
||
"expandRecentDestinations": "展开最近目标",
|
||
"browseFolders": "浏览目标文件夹",
|
||
"browseDestination": "浏览或输入路径",
|
||
"confirmCopy": "复制",
|
||
"confirmMove": "移动",
|
||
"transferring": "传输中…",
|
||
"compressing": "压缩中…",
|
||
"extracting": "解压中…",
|
||
"transferringItems": "正在传输 {{current}}/{{total}} 个项目…",
|
||
"transferSuccess": "传输完成",
|
||
"transferError": "传输失败",
|
||
"transferPartial": "传输完成,但有 {{count}} 个错误",
|
||
"transferPartialHint": "无法传输:{{paths}}",
|
||
"itemsSummary": "{{count}} 个项目",
|
||
"destMustBeDirectory": "对于多项目传输,目标必须是一个目录",
|
||
"selectThisFolder": "选择此文件夹",
|
||
"browsePathWillBeCreated": "此文件夹尚不存在,将在传输开始时创建。",
|
||
"browsePathError": "无法在目标主机上打开此路径。",
|
||
"goUp": "向上",
|
||
"copyFolderToHost": "复制文件夹到主机…",
|
||
"moveFolderToHost": "移动文件夹到主机…",
|
||
"hostReady": "就绪",
|
||
"hostConnecting": "连接中…",
|
||
"hostDisconnected": "未连接",
|
||
"hostAuthRequired": "需要身份验证 — 请先在此主机上打开文件管理器",
|
||
"hostConnectionFailed": "连接失败",
|
||
"metricsTitle": "传输耗时",
|
||
"metricsPrepare": "准备目标:{{duration}}",
|
||
"metricsCompress": "源端压缩:{{duration}}",
|
||
"metricsHopSourceRead": "源 → 服务器:{{throughput}}",
|
||
"metricsHopDestSftpWrite": "服务器 → 目标 (SFTP):{{throughput}}",
|
||
"metricsHopDestLocalWrite": "服务器 → 目标 (本地):{{throughput}}",
|
||
"metricsTransfer": "端到端:{{throughput}} ({{duration}})",
|
||
"metricsExtract": "目标端解压:{{duration}}",
|
||
"metricsSourceDelete": "从源端删除:{{duration}}",
|
||
"metricsTotal": "总计:{{duration}}",
|
||
"progressCompressing": "正在源主机上压缩…",
|
||
"progressExtracting": "正在目标端解压…",
|
||
"progressTransferring": "正在传输数据…",
|
||
"progressReconnecting": "重新连接中…",
|
||
"parallelSegmentsLabel": "并行传输通道",
|
||
"parallelSegmentsOption": "{{count}} 个通道",
|
||
"parallelSegmentsHint": "大文件会被拆分为 256 MB 的块。多个通道使用独立连接(如同同时进行多个传输),以获得更高的总吞吐量。",
|
||
"progressTotalSpeed": "{{speed}} 总计({{lanes}} 通道)",
|
||
"progressTransferringItems": "正在传输文件({{current}}/{{total}})…",
|
||
"progressBytes": "{{transferred}} / {{total}}",
|
||
"progressItems": "{{current}} / {{total}} 个文件",
|
||
"sourceNotDeletedPartial": "源文件已保留(部分传输)",
|
||
"jumpHostLimitation": "两个主机都必须能从 Termix 服务器访问。不支持直接的主机到主机路由。",
|
||
"cancel": "取消",
|
||
"methodLabel": "传输方式",
|
||
"methodAuto": "自动",
|
||
"methodTar": "Tar 归档",
|
||
"methodItemSftp": "逐文件 SFTP",
|
||
"methodAutoHint": "根据文件数量、大小和可压缩性选择 tar 或逐文件 SFTP。单个文件始终使用流式 SFTP。",
|
||
"methodTarHint": "在源端压缩,传输单个归档文件,在目标端解压。要求两个 Unix 主机都有 tar。",
|
||
"methodItemSftpHint": "通过 SFTP 逐个传输文件。适用于包括 Windows 在内的所有主机。",
|
||
"methodPreviewLoading": "正在计算传输方式…",
|
||
"methodPreviewError": "无法预览传输方式。启动时服务器仍会选择方式。",
|
||
"methodPreviewWillUseTar": "将使用:Tar 归档",
|
||
"methodPreviewWillUseItemSftp": "将使用:逐文件 SFTP",
|
||
"methodPreviewScanSummary": "{{fileCount}} 个文件,总计 {{totalSize}}(已在源主机上扫描)。",
|
||
"methodItemSftpLimitation": "每个文件使用相同的 SFTP 流(与单文件拷贝一样),一个接一个传输。所有文件的进度合并显示,因此大文件传输时进度条移动缓慢。",
|
||
"methodReason": {
|
||
"user_item_sftp": "您选择了逐文件 SFTP。",
|
||
"user_tar": "您选择了 Tar 归档。",
|
||
"tar_unavailable": "一个或多个主机上不可用 tar — 将转而使用逐文件 SFTP。",
|
||
"windows_host": "涉及 Windows 主机 — 不使用 tar。",
|
||
"auto_multi_large": "自动:多个文件,其中包括一个包含可压缩数据的大文件({{largestSize}})— tar 将其打包成一次传输。",
|
||
"auto_single_large_in_archive": "自动:此集合中有一个大文件({{largestSize}})— 使用逐文件 SFTP。",
|
||
"auto_many_incompressible": "自动:大部分为不可压缩数据 — 使用逐文件 SFTP。",
|
||
"auto_many_files": "自动:文件众多({{fileCount}})— tar 可减少逐文件开销。",
|
||
"auto_default": "自动:此集合使用逐文件 SFTP。"
|
||
},
|
||
"progressCancel": "取消",
|
||
"progressCancelling": "正在取消…",
|
||
"progressStalled": "已停滞",
|
||
"resumedHint": "已重新连接到在另一个窗口中启动的进行中的传输。",
|
||
"transferCancelled": "传输已取消",
|
||
"transferCancelledCopyHint": "目标位置可能残留部分文件。",
|
||
"transferCancelledMoveHint": "目标位置可能残留部分文件。源文件未被删除。",
|
||
"cleanupDestFiles": "清理目标位置",
|
||
"cleanupDestFilesSuccess": "已从目标位置删除部分文件",
|
||
"cleanupDestFilesPartial": "部分文件无法删除",
|
||
"cleanupDestFilesNothing": "目标位置无需清理",
|
||
"cleanupDestFilesError": "清理失败",
|
||
"retryTransfer": "重试",
|
||
"retryTransferError": "重试失败",
|
||
"transferFailedRetryHint": "部分数据已保留在目标位置。连接恢复后重试将继续。"
|
||
},
|
||
"tunnels": {
|
||
"noSshTunnels": "无 SSH 隧道",
|
||
"createFirstTunnelMessage": "您尚未创建任何 SSH 隧道。在主机管理器中配置隧道连接以开始使用。",
|
||
"connected": "已连接",
|
||
"disconnected": "已断开",
|
||
"connecting": "连接中...",
|
||
"error": "错误",
|
||
"canceling": "取消中...",
|
||
"connect": "连接",
|
||
"disconnect": "断开",
|
||
"cancel": "取消",
|
||
"port": "端口",
|
||
"localPort": "本地端口",
|
||
"remotePort": "远程端口",
|
||
"currentHostPort": "当前主机端口",
|
||
"endpointPort": "端点端口",
|
||
"bindIp": "本地 IP",
|
||
"endpointSshConfig": "端点 SSH 配置",
|
||
"endpointSshHost": "端点 SSH 主机",
|
||
"endpointSshHostPlaceholder": "选择已配置的主机",
|
||
"endpointSshHostRequired": "为每个客户端隧道选择一个端点 SSH 主机。",
|
||
"attempt": "尝试 {{current}}/{{max}}",
|
||
"nextRetryIn": "{{seconds}} 秒后重试",
|
||
"clientTunnels": "客户端隧道",
|
||
"clientTunnel": "客户端隧道",
|
||
"addClientTunnel": "添加客户端隧道",
|
||
"noClientTunnels": "此桌面未配置客户端隧道。",
|
||
"tunnelName": "隧道名称",
|
||
"remoteHost": "远程主机",
|
||
"autoStart": "自动启动",
|
||
"clientAutoStartDesc": "在此桌面客户端打开时启动并保持连接。",
|
||
"clientManualStartDesc": "从此行使用启动和停止。Termix 不会自动启动它。",
|
||
"clientRemoteServerNote": "远程转发可能需要在端点 SSH 服务器上设置 AllowTcpForwarding 和 GatewayPorts。此桌面断开连接时远程端口将关闭。",
|
||
"clientTunnelStarted": "客户端隧道已启动",
|
||
"clientTunnelStopped": "客户端隧道已停止",
|
||
"tunnelTestSucceeded": "隧道测试成功",
|
||
"tunnelTestFailed": "隧道测试失败",
|
||
"localSaved": "客户端隧道已保存",
|
||
"localSaveError": "保存本地客户端隧道失败",
|
||
"invalidBindIp": "本地 IP 必须是有效的 IPv4 地址。",
|
||
"invalidLocalTargetIp": "本地目标 IP 必须是有效的 IPv4 地址。",
|
||
"invalidLocalPort": "本地端口必须在 1 到 65535 之间。",
|
||
"invalidRemotePort": "远程端口必须在 1 到 65535 之间。",
|
||
"invalidLocalTargetPort": "本地目标端口必须在 1 到 65535 之间。",
|
||
"invalidEndpointPort": "端点端口必须在 1 到 65535 之间。",
|
||
"duplicateAutoStartBind": "只有一个自启动客户端隧道可以使用 {{bind}}。",
|
||
"manualControlError": "更新隧道状态失败。",
|
||
"active": "活跃",
|
||
"start": "启动",
|
||
"stop": "停止",
|
||
"test": "测试",
|
||
"type": "隧道类型",
|
||
"typeLocal": "本地 (-L)",
|
||
"typeRemote": "远程 (-R)",
|
||
"typeDynamic": "动态 (-D)",
|
||
"typeServerLocalDesc": "当前主机至端点。",
|
||
"typeServerRemoteDesc": "端点回连至当前主机。",
|
||
"typeClientLocalDesc": "本地计算机至端点。",
|
||
"typeClientRemoteDesc": "端点回连至本地计算机。",
|
||
"typeClientDynamicDesc": "本地计算机上的 SOCKS。",
|
||
"typeDynamicDesc": "通过 SSH 转发 SOCKS5 CONNECT 流量",
|
||
"forwardDescriptionServerLocal": "当前主机 {{sourcePort}} → 端点 {{endpointPort}}。",
|
||
"forwardDescriptionServerRemote": "端点 {{endpointPort}} → 当前主机 {{sourcePort}}。",
|
||
"forwardDescriptionServerDynamic": "当前主机上的 SOCKS {{sourcePort}}。",
|
||
"forwardDescriptionClientLocal": "本地 {{sourcePort}} → 远程 {{endpointPort}}。",
|
||
"forwardDescriptionClientRemote": "远程 {{sourcePort}} → 本地 {{endpointPort}}。",
|
||
"forwardDescriptionClientDynamic": "本地端口 {{sourcePort}} 上的 SOCKS。",
|
||
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{endpoint}}:{{remotePort}}",
|
||
"summaryClientRemote": "{{endpoint}}:{{remotePort}} → {{localHost}}:{{localPort}}",
|
||
"summaryClientDynamic": "{{localHost}}:{{localPort}} → SOCKS 通过 {{endpoint}}",
|
||
"autoNameClientLocal": "本地 {{localPort}} → {{endpoint}} {{remotePort}}",
|
||
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → 本地 {{localPort}}",
|
||
"autoNameClientDynamic": "SOCKS {{localPort}} 通过 {{endpoint}}",
|
||
"route": "路由:",
|
||
"lastStarted": "最后启动",
|
||
"lastTested": "最后测试",
|
||
"lastError": "最后错误",
|
||
"maxRetries": "最大重试次数",
|
||
"maxRetriesDescription": "最大重试尝试次数。",
|
||
"retryInterval": "重试间隔(秒)",
|
||
"retryIntervalDescription": "重试间隔等待时间。",
|
||
"local": "本地",
|
||
"remote": "远程",
|
||
"destination": "目标",
|
||
"host": "主机",
|
||
"mode": "模式",
|
||
"noHostSelected": "未选择主机",
|
||
"working": "处理中..."
|
||
},
|
||
"cardGrid": {
|
||
"dragToMove": "拖动以移动",
|
||
"dragToResize": "拖动以调整大小",
|
||
"changeWidth": "更改宽度",
|
||
"removeCard": "移除{{label}}",
|
||
"addCard": "添加",
|
||
"columns": "列数",
|
||
"empty": "无卡片。请使用下方添加按钮放置卡片。"
|
||
},
|
||
"hostMetrics": {
|
||
"cpu": "CPU",
|
||
"memory": "内存",
|
||
"disk": "磁盘",
|
||
"network": "网络",
|
||
"uptime": "运行时间",
|
||
"processes": "进程",
|
||
"available": "可用",
|
||
"free": "空闲",
|
||
"connecting": "连接中...",
|
||
"connectionFailed": "连接服务器失败",
|
||
"naCpus": "N/A CPU",
|
||
"cpuCores_one": "{{count}} 核心",
|
||
"cpuCores_other": "{{count}} 核心",
|
||
"cpuUsage": "CPU 使用率",
|
||
"memoryUsage": "内存使用率",
|
||
"diskUsage": "磁盘使用率",
|
||
"temperature": "温度",
|
||
"highestTemperature": "最高温度",
|
||
"failedToFetchHostConfig": "获取主机配置失败",
|
||
"serverOffline": "服务器离线",
|
||
"cannotFetchMetrics": "无法从离线服务器获取指标",
|
||
"totpFailed": "TOTP 验证失败",
|
||
"noneAuthNotSupported": "主机指标不支持 'none' 认证类型。",
|
||
"noHostSelected": "未选择主机",
|
||
"load": "负载",
|
||
"systemInfo": "系统信息",
|
||
"hostname": "主机名",
|
||
"operatingSystem": "操作系统",
|
||
"kernel": "内核",
|
||
"seconds": "秒",
|
||
"networkInterfaces": "网络接口",
|
||
"noInterfacesFound": "未找到网络接口",
|
||
"noProcessesFound": "未找到进程",
|
||
"processesTotal": "总计",
|
||
"processesRunning": "运行中",
|
||
"loginStats": "SSH 登录统计",
|
||
"noRecentLoginData": "无最近登录数据",
|
||
"executingQuickAction": "正在执行 {{name}}...",
|
||
"quickActionSuccess": "{{name}} 执行成功",
|
||
"quickActionFailed": "{{name}} 执行失败",
|
||
"quickActionError": "执行 {{name}} 失败",
|
||
"ports": {
|
||
"title": "监听端口",
|
||
"protocol": "协议",
|
||
"port": "端口",
|
||
"address": "地址",
|
||
"process": "进程",
|
||
"search": "搜索端口...",
|
||
"allProtocols": "全部",
|
||
"noData": "无监听端口数据"
|
||
},
|
||
"firewall": {
|
||
"title": "防火墙",
|
||
"inactive": "未激活",
|
||
"policy": "策略",
|
||
"rules": "规则",
|
||
"noRules": "该链中无规则",
|
||
"noData": "无可用防火墙数据",
|
||
"action": "操作",
|
||
"protocol": "协议",
|
||
"port": "端口",
|
||
"source": "来源",
|
||
"anywhere": "任意",
|
||
"chains": "链"
|
||
},
|
||
"loadAvg": "平均负载",
|
||
"swap": "交换空间",
|
||
"architecture": "架构",
|
||
"refresh": "刷新",
|
||
"retry": "重试",
|
||
"customize": "自定义布局",
|
||
"reset": "重置",
|
||
"tabLive": "实时",
|
||
"editModeInstructions": "拖动卡片可重新排序,拖动底部边缘可调整大小,使用宽度按钮可更改卡片的跨度。在下方添加或移除卡片。",
|
||
"managers": {
|
||
"services": "服务",
|
||
"processInspector": "进程查看器",
|
||
"logViewer": "日志查看器",
|
||
"cron": "定时任务",
|
||
"packages": "软件包",
|
||
"ssl": "SSL证书",
|
||
"firewall": "防火墙",
|
||
"users": "用户与权限",
|
||
"healthCheck": "健康检查",
|
||
"diskBreakdown": "磁盘详情",
|
||
"systemdTimers": "计时器",
|
||
"topMemory": "按内存占用排行",
|
||
"noData": "无数据",
|
||
"sudoHint": "在主机编辑器中为此主机设置 sudo 密码以启用特权操作。",
|
||
"filter": "筛选...",
|
||
"start": "启动",
|
||
"stop": "停止",
|
||
"restart": "重启",
|
||
"actionDone": "{{name}} 已更新",
|
||
"actionFailed": "操作失败",
|
||
"signalSent": "信号已发送至 PID {{pid}}",
|
||
"killHint": "单击:终止 (SIGTERM)。右键单击:强制终止 (SIGKILL)。",
|
||
"working": "处理中...",
|
||
"update": "更新",
|
||
"upgradeAll": "全部升级",
|
||
"allUpToDate": "所有内容均为最新",
|
||
"save": "保存",
|
||
"command": "命令",
|
||
"enabled": "已启用",
|
||
"cronSaved": "定时任务已更新",
|
||
"clients": "客户端",
|
||
"dryRun": "试运行",
|
||
"renew": "续期",
|
||
"noAcmeClient": "此主机上未找到 ACME 客户端 (certbot 或 acme.sh)。",
|
||
"addInputRule": "添加 INPUT 规则",
|
||
"firewallWarning": "更改仅在运行时有效,需持久化保存。小心不要将自己锁定在外。",
|
||
"ruleApplied": "规则已应用",
|
||
"invalidPort": "请输入有效端口 (1-65535)",
|
||
"newUsername": "新用户名",
|
||
"addUser": "添加",
|
||
"deleteUser": "删除用户",
|
||
"noHealthChecks": "尚未配置健康检查。",
|
||
"follow": "跟踪",
|
||
"noLogData": "无日志输出。",
|
||
"tree": "树形",
|
||
"enableDisable": "启用/禁用开机自启",
|
||
"grantSudo": "授予 sudo",
|
||
"revokeSudo": "撤销 sudo",
|
||
"sslIssueCert": "签发证书",
|
||
"sslExpired": "已过期",
|
||
"sslInDays": "{{days}} 天后",
|
||
"sslNeedDomain": "至少输入一个域名",
|
||
"sslIssued": "证书已签发",
|
||
"sslDomainsPlaceholder": "example.com, www.example.com",
|
||
"sslHttpStandalone": "HTTP (独立模式)",
|
||
"sslHttpWebroot": "HTTP (webroot)",
|
||
"sslDns": "DNS",
|
||
"sslDnsProvider": "DNS 提供商 (如 cloudflare)",
|
||
"sslIssueHint": "DNS 提供商凭据必须已在主机上配置。",
|
||
"sslRevoke": "吊销证书",
|
||
"sslRevoked": "证书已吊销",
|
||
"sslRevokeConfirm": "吊销并删除证书 \"{{name}}\"?此操作无法撤销。",
|
||
"healthRun": "运行",
|
||
"healthName": "名称",
|
||
"healthTarget": "主机 / 地址",
|
||
"healthAddCheck": "添加检查",
|
||
"healthSaved": "健康检查已保存",
|
||
"healthMissingFields": "每个检查都需要名称和目标",
|
||
"logFile": "文件",
|
||
"logUnit": "单元",
|
||
"logCustomPath": "自定义路径 (位于 /var/log 下,可选)",
|
||
"logGrep": "过滤行...",
|
||
"firewallPersist": "持久化规则",
|
||
"firewallPersisted": "防火墙规则已持久化",
|
||
"wireguard": "WireGuard",
|
||
"tailscale": "Tailscale",
|
||
"wgNotInstalled": "此主机未安装 WireGuard",
|
||
"wgNoInterfaces": "未配置 WireGuard 接口",
|
||
"wgInterfaceUp": "启用",
|
||
"wgInterfaceDown": "停用",
|
||
"wgBringingUp": "正在启用 {{name}}...",
|
||
"wgBringingDown": "正在停用 {{name}}...",
|
||
"wgInterfaceUpDone": "{{name}} 已启用",
|
||
"wgInterfaceDownDone": "{{name}} 已停用",
|
||
"wgListenPort": "端口",
|
||
"wgPublicKey": "公钥",
|
||
"wgEndpoint": "对端",
|
||
"wgAllowedIPs": "允许的 IP",
|
||
"wgLastHandshake": "上次握手",
|
||
"wgHandshakeNever": "从未",
|
||
"wgTransfer": "传输",
|
||
"tsNotInstalled": "此主机未安装 Tailscale",
|
||
"tsRunning": "运行中",
|
||
"tsStopped": "已停止",
|
||
"tsEnable": "连接",
|
||
"tsDisable": "断开连接",
|
||
"tsEnabling": "正在连接到 Tailscale...",
|
||
"tsDisabling": "正在断开 Tailscale 连接...",
|
||
"tsEnabled": "Tailscale 已连接",
|
||
"tsDisabled": "Tailscale 已断开连接",
|
||
"tsIPs": "Tailscale IP",
|
||
"tsPeers": "节点",
|
||
"tsOnline": "在线",
|
||
"tsOffline": "离线",
|
||
"tsExitNode": "出口节点",
|
||
"tsExitNodeActive": "出口节点活跃",
|
||
"tsHostname": "主机名"
|
||
}
|
||
},
|
||
"auth": {
|
||
"tagline": "自托管 SSH 及远程桌面管理",
|
||
"loginTitle": "欢迎回来",
|
||
"registerTitle": "创建账户",
|
||
"forgotPassword": "忘记密码?",
|
||
"rememberMe": "记住此设备30天(含 TOTP)",
|
||
"noAccount": "没有账号?",
|
||
"hasAccount": "已有账号?",
|
||
"twoFactorAuth": "双因素认证",
|
||
"enterCode": "输入验证码",
|
||
"backupCode": "或使用备用验证码",
|
||
"verifyCode": "验证",
|
||
"redirectingToApp": "正在重定向到应用...",
|
||
"sshAuthenticationRequired": "需要SSH身份验证",
|
||
"sshNoKeyboardInteractive": "键盘交互式验证不可用",
|
||
"sshAuthenticationFailed": "身份验证失败",
|
||
"sshAuthenticationTimeout": "身份验证超时",
|
||
"sshNoKeyboardInteractiveDescription": "服务器不支持键盘交互式验证。请提供密码或SSH密钥。",
|
||
"sshAuthFailedDescription": "提供的凭据不正确。请使用有效凭据重试。",
|
||
"sshTimeoutDescription": "身份验证尝试超时。请重试。",
|
||
"sshProvideCredentialsDescription": "请提供连接此主机的SSH凭据。",
|
||
"sshPasswordDescription": "输入SSH连接的密码。",
|
||
"sshKeyPasswordDescription": "如果SSH密钥已加密,请在此输入密码短语。",
|
||
"passphraseRequired": "需要密码短语",
|
||
"passphraseRequiredDescription": "SSH密钥已加密,请输入密码短语解锁。",
|
||
"back": "返回",
|
||
"firstUser": "首位用户",
|
||
"firstUserMessage": "您是首位用户,将被设为管理员。您可以在侧边栏用户下拉菜单中查看管理员设置。如果您认为这是个错误,请检查Docker日志,或在GitHub上创建问题。",
|
||
"external": "外部",
|
||
"loginWithExternal": "使用外部提供商登录",
|
||
"loginWithExternalDesc": "使用您配置的外部身份提供商登录",
|
||
"externalNotSupportedInElectron": "Electron应用尚不支持外部身份验证。请使用Web版本进行OIDC登录。",
|
||
"loginWithProvider": "使用{{name}}登录",
|
||
"orContinueWith": "或继续使用",
|
||
"ldapUsername": "LDAP 用户名",
|
||
"ldapPassword": "LDAP 密码",
|
||
"ldapSignIn": "登录",
|
||
"ldapLoginFailed": "LDAP登录失败",
|
||
"resetPasswordButton": "重置密码",
|
||
"sendResetCode": "发送重置验证码",
|
||
"resetCodeDesc": "输入用户名以接收密码重置验证码。验证码将记录在Docker容器日志中。",
|
||
"resetCode": "重置验证码",
|
||
"verifyCodeButton": "验证",
|
||
"enterResetCode": "输入Docker容器日志中该用户的6位数验证码:",
|
||
"newPassword": "新密码",
|
||
"confirmNewPassword": "确认密码",
|
||
"enterNewPassword": "请输入用户的新密码:",
|
||
"signUp": "注册",
|
||
"desktopApp": "桌面应用",
|
||
"loggingInToDesktopApp": "正在登录桌面应用",
|
||
"loadingServer": "正在加载服务器...",
|
||
"dataLossWarning": "以此方式重置密码将删除所有保存的 SSH 主机、凭据和其他加密数据。此操作不可撤销。仅在忘记密码且未登录时使用。",
|
||
"authenticationDisabled": "身份验证已禁用",
|
||
"authenticationDisabledDesc": "当前所有身份验证方法均已禁用。请联系管理员。",
|
||
"passwordLoginDisabledDesc": "密码登录已禁用。请使用通行密钥或外部身份验证提供程序。",
|
||
"signInWithPasskey": "使用通行密钥登录",
|
||
"passkeyLoginFailed": "通行密钥登录失败",
|
||
"attemptsRemaining": "剩余 {{count}} 次尝试",
|
||
"confirmResetDataWipe": "自加密升级以来,此帐户未登录,因此没有旧密码无法恢复其存储的数据。重置将永久删除其主机、凭据和代码片段。是否继续?"
|
||
},
|
||
"hostKey": {
|
||
"verifyNewHost": "验证 SSH 主机密钥",
|
||
"keyChangedWarning": "SSH 主机密钥已更改",
|
||
"firstConnectionTitle": "首次连接到此主机",
|
||
"firstConnectionDescription": "无法建立此主机的真实性。请验证指纹是否与您预期的一致。",
|
||
"keyChangedDescription": "此服务器的主机密钥自上次连接以来已更改。这可能表示存在安全问题。",
|
||
"previousKey": "先前的密钥",
|
||
"newFingerprint": "新指纹",
|
||
"fingerprint": "指纹",
|
||
"verifyInstructions": "如果您信任此主机,请点击“接受”以继续,并保存此指纹以供将来连接。",
|
||
"securityWarning": "安全警告",
|
||
"acceptAndContinue": "接受并继续",
|
||
"acceptNewKey": "接受新密钥并继续"
|
||
},
|
||
"errors": {
|
||
"databaseConnection": "无法连接到数据库",
|
||
"unknownError": "未知错误",
|
||
"loginFailed": "登录失败",
|
||
"failedPasswordReset": "无法启动密码重置",
|
||
"failedVerifyCode": "验证重置代码失败",
|
||
"failedCompleteReset": "无法完成密码重置",
|
||
"invalidTotpCode": "无效的 TOTP 代码",
|
||
"failedOidcLogin": "无法启动 OIDC 登录",
|
||
"silentSigninOidcUnavailable": "请求了静默登录,但 OIDC 登录不可用。",
|
||
"failedUserInfo": "登录后无法获取用户信息",
|
||
"oidcAuthFailed": "OIDC 身份验证失败",
|
||
"invalidAuthUrl": "从后端接收到无效的授权 URL",
|
||
"requiredField": "此字段为必填项",
|
||
"minLength": "最小长度为 {{min}}",
|
||
"passwordMismatch": "密码不匹配",
|
||
"passwordLoginDisabled": "用户名/密码登录当前已禁用",
|
||
"sessionExpired": "会话已过期 - 请重新登录",
|
||
"totpRateLimited": "频率受限:TOTP 验证尝试次数过多,请稍后再试。",
|
||
"totpRateLimitedWithTime": "频率受限:TOTP 验证尝试次数过多,请等待 {{time}} 秒后再试。",
|
||
"resetCodeRateLimited": "频率受限:验证尝试次数过多,请稍后再试。",
|
||
"resetCodeRateLimitedWithTime": "频率受限:验证尝试次数过多,请等待 {{time}} 秒后再试。",
|
||
"authTokenSaveFailed": "保存认证令牌失败",
|
||
"failedToLoadServer": "加载服务器失败",
|
||
"remoteServerRequired": "需要远程服务器。请在“设置”中连接远程服务器以使用此连接类型。"
|
||
},
|
||
"messages": {
|
||
"registrationDisabled": "新账户注册已被管理员禁用。请登录或联系管理员。",
|
||
"userNotAllowed": "您的账户无权注册。请联系管理员。",
|
||
"databaseConnectionFailed": "连接数据库服务器失败",
|
||
"resetCodeSent": "重置代码已发送到 Docker 日志",
|
||
"codeVerified": "验证码验证成功",
|
||
"passwordResetSuccess": "密码重置成功",
|
||
"loginSuccess": "登录成功",
|
||
"registrationSuccess": "注册成功"
|
||
},
|
||
"profile": {
|
||
"c2sTunnelConfigDesc": "本地桌面隧道目标为已配置的 SSH 主机。",
|
||
"c2sTunnelPresets": "客户端隧道预设",
|
||
"c2sTunnelPresetsDesc": "将本桌面客户端的本地隧道列表保存为命名服务器预设,或将预设加载回此客户端。",
|
||
"c2sTunnelPresetsUnavailable": "客户端隧道预设仅在桌面客户端中可用。",
|
||
"c2sPresetName": "预设名称",
|
||
"c2sPresetNamePlaceholder": "客户端预设名称",
|
||
"c2sPresetToLoad": "要加载的预设",
|
||
"c2sNoPresetSelected": "未选择预设",
|
||
"c2sNoPresets": "无保存的预设",
|
||
"c2sLoadPreset": "加载",
|
||
"c2sCurrentLocalConfig": "此桌面上已配置 {{count}} 条本地客户端隧道。",
|
||
"c2sPresetSyncNote": "预设是显式快照;加载预设将替换此桌面客户端的本地客户端隧道列表。",
|
||
"c2sPresetSaved": "客户端隧道预设已保存",
|
||
"c2sPresetLoaded": "客户端隧道预设已在本地加载",
|
||
"c2sPresetRenamed": "客户端隧道预设已重命名",
|
||
"c2sPresetDeleted": "客户端隧道预设已删除",
|
||
"c2sPresetLoadError": "加载客户端隧道预设失败"
|
||
},
|
||
"placeholders": {
|
||
"maxRetries": "3",
|
||
"retryInterval": "10",
|
||
"language": "语言",
|
||
"keyPassword": "密钥密码",
|
||
"pastePrivateKey": "在此粘贴您的私钥...",
|
||
"localListenerHost": "127.0.0.1 (本地监听)",
|
||
"localTargetHost": "127.0.0.1 (此计算机上的目标)",
|
||
"socksListenerHost": "127.0.0.1(SOCKS 监听器)",
|
||
"enterPassword": "输入您的密码",
|
||
"defaultPort": "22",
|
||
"defaultEndpointPort": "224"
|
||
},
|
||
"dashboard": {
|
||
"title": "仪表盘",
|
||
"loading": "正在加载仪表盘...",
|
||
"github": "GitHub",
|
||
"support": "支持",
|
||
"discord": "Discord",
|
||
"docs": "文档",
|
||
"donate": "捐赠",
|
||
"serverOverview": "服务器概览",
|
||
"version": "版本",
|
||
"upToDate": "已是最新",
|
||
"updateAvailable": "有可用更新",
|
||
"beta": "Beta",
|
||
"uptime": "运行时间",
|
||
"database": "数据库",
|
||
"healthy": "运行正常",
|
||
"error": "错误",
|
||
"totalHosts": "主机总数",
|
||
"totalTunnels": "隧道总数",
|
||
"totalCredentials": "凭据总数",
|
||
"recentActivity": "最近活动",
|
||
"reset": "重置",
|
||
"loadingRecentActivity": "正在加载最近活动...",
|
||
"noRecentActivity": "无最近活动",
|
||
"quickActions": "快速操作",
|
||
"addHost": "添加主机",
|
||
"addCredential": "添加凭据",
|
||
"adminSettings": "管理员设置",
|
||
"userProfile": "用户资料",
|
||
"serverStats": "服务器统计",
|
||
"loadingServerStats": "正在加载服务器统计...",
|
||
"noServerData": "无服务器数据可用",
|
||
"cpu": "CPU",
|
||
"ram": "内存",
|
||
"customizeLayout": "自定义仪表盘",
|
||
"dashboardSettings": "仪表盘设置",
|
||
"enableDisableCards": "启用/禁用卡片",
|
||
"resetLayout": "重置为默认",
|
||
"serverOverviewCard": "服务器概览",
|
||
"recentActivityCard": "最近活动",
|
||
"networkGraphCard": "网络图表",
|
||
"networkGraph": "网络图表",
|
||
"quickActionsCard": "快速操作",
|
||
"serverStatsCard": "服务器统计",
|
||
"panelMain": "主面板",
|
||
"panelSide": "侧面板",
|
||
"justNow": "刚刚",
|
||
"serviceLinks": "服务链接",
|
||
"homepagePreview": "主页预览"
|
||
},
|
||
"donation": {
|
||
"title": "喜欢 Termix 吗?",
|
||
"body": "Termix 是一款免费开源工具,由两人团队业余时间构建和维护。如果它替代了您原本需要付费的商业工具,捐赠可以帮助覆盖托管成本并保持开发持续。目前,捐赠仅支持加密货币。",
|
||
"milestones": "捐赠也有助于投入时间研究和学习构建功能所需的知识,例如 SAML 和 Kubernetes 支持。可在捐赠页面查看进展。",
|
||
"cta": "捐赠",
|
||
"dismiss": "稍后再说"
|
||
},
|
||
"dashboardTab": {
|
||
"stable": "稳定",
|
||
"hostsOnline": "在线主机",
|
||
"activeTunnels": "活跃隧道",
|
||
"registerNewServer": "注册新服务器",
|
||
"storeSshKeysOrPasswords": "存储 SSH 密钥或密码",
|
||
"manageUsersAndRoles": "管理用户和角色",
|
||
"manageYourAccount": "管理您的账户",
|
||
"hostStatus": "主机状态",
|
||
"noHostsConfigured": "未配置主机",
|
||
"online": "在线",
|
||
"offline": "离线",
|
||
"checking": "检查中",
|
||
"onlineLower": "在线",
|
||
"nodes": "{{count}} 个节点",
|
||
"add": "添加:",
|
||
"commandPalette": "命令面板",
|
||
"done": "完成",
|
||
"editModeInstructions": "拖拽卡片重新排序 · 拖拽列分隔线调整列宽 · 拖拽卡片底部边缘调整高度 · 移至垃圾桶移除",
|
||
"empty": "空",
|
||
"clear": "清除",
|
||
"serviceLinksTitle": "服务链接",
|
||
"serviceLinksEmpty": "暂无服务链接",
|
||
"serviceLinksAddLabel": "标签",
|
||
"serviceLinksAddUrl": "URL",
|
||
"serviceLinksAdd": "添加",
|
||
"serviceLinksLabelPlaceholder": "我的服务",
|
||
"serviceLinksUrlPlaceholder": "http://192.168.1.10:8080",
|
||
"serviceLinksInvalidUrl": "输入有效的网址",
|
||
"serviceLinksAddFailed": "添加服务链接失败",
|
||
"disk": "磁盘",
|
||
"viewServerDetails": "查看服务器详情"
|
||
},
|
||
"sessionLogs": {
|
||
"title": "会话日志",
|
||
"noLogs": "暂无会话日志",
|
||
"noLogsDesc": "在主机上启用会话日志以开始记录",
|
||
"duration": "持续时间",
|
||
"viewLog": "查看日志",
|
||
"downloadLog": "下载",
|
||
"deleteLog": "删除",
|
||
"confirmDelete": "删除此会话日志?",
|
||
"confirmDeleteDesc": "此操作无法撤消。",
|
||
"copyContent": "复制",
|
||
"copied": "已复制!",
|
||
"loadError": "加载会话日志失败",
|
||
"deleteError": "删除会话日志失败",
|
||
"filterByHost": "按主机筛选..."
|
||
},
|
||
"networkGraph": {
|
||
"addHost": "添加主机",
|
||
"addGroup": "添加分组",
|
||
"addLink": "添加链接",
|
||
"zoomIn": "放大",
|
||
"zoomOut": "缩小",
|
||
"resetView": "重置视图",
|
||
"selectHost": "选择主机",
|
||
"chooseHost": "选择主机...",
|
||
"parentGroup": "父分组",
|
||
"noGroup": "无分组",
|
||
"groupName": "分组名称",
|
||
"color": "颜色",
|
||
"source": "源",
|
||
"target": "目标",
|
||
"moveToGroup": "移至分组",
|
||
"selectGroup": "选择分组...",
|
||
"addConnection": "添加连接",
|
||
"hostDetails": "主机详情",
|
||
"removeFromGroup": "移出群组",
|
||
"addHostHere": "在此添加主机",
|
||
"editGroup": "编辑群组",
|
||
"delete": "删除",
|
||
"add": "添加",
|
||
"create": "创建",
|
||
"move": "移动",
|
||
"connect": "连接",
|
||
"createGroup": "创建群组",
|
||
"selectSourcePlaceholder": "选择源...",
|
||
"selectTargetPlaceholder": "选择目标...",
|
||
"invalidFile": "无效文件",
|
||
"hostAlreadyExists": "主机已在拓扑中",
|
||
"connectionExists": "连接已存在",
|
||
"unknown": "未知",
|
||
"name": "名称",
|
||
"ip": "IP",
|
||
"status": "状态",
|
||
"failedToAddNode": "添加节点失败",
|
||
"sourceDifferentFromTarget": "源和目标必须不同",
|
||
"exportJSON": "导出 JSON",
|
||
"importJSON": "导入 JSON",
|
||
"terminal": "终端",
|
||
"fileManager": "文件管理器",
|
||
"tunnel": "隧道",
|
||
"docker": "Docker",
|
||
"serverStats": "主机指标",
|
||
"hostMetrics": "主机指标",
|
||
"noNodes": "尚无节点"
|
||
},
|
||
"docker": {
|
||
"notEnabled": "此主机未启用 Docker",
|
||
"validating": "验证 Docker 中...",
|
||
"connecting": "连接中...",
|
||
"error": "错误",
|
||
"version": "Docker {{version}}",
|
||
"connectionFailed": "连接 Docker 失败",
|
||
"containerStarted": "容器 {{name}} 已启动",
|
||
"failedToStartContainer": "启动容器 {{name}} 失败",
|
||
"containerStopped": "容器 {{name}} 已停止",
|
||
"failedToStopContainer": "停止容器 {{name}} 失败",
|
||
"containerRestarted": "容器 {{name}} 已重启",
|
||
"failedToRestartContainer": "重启容器 {{name}} 失败",
|
||
"containerPaused": "容器 {{name}} 已暂停",
|
||
"containerUnpaused": "容器 {{name}} 已恢复",
|
||
"failedToTogglePauseContainer": "切换容器 {{name}} 暂停状态失败",
|
||
"containerRemoved": "容器 {{name}} 已移除",
|
||
"failedToRemoveContainer": "移除容器 {{name}} 失败",
|
||
"image": "镜像",
|
||
"ports": "端口",
|
||
"noPorts": "无端口",
|
||
"start": "启动",
|
||
"confirmRemoveContainer": "确定要移除容器 '{{name}}' 吗?此操作无法撤销。",
|
||
"runningContainerWarning": "警告:此容器正在运行。移除操作将先停止容器。",
|
||
"loadingContainers": "正在加载容器...",
|
||
"manager": "Docker 管理器",
|
||
"autoRefresh": "自动刷新",
|
||
"timestamps": "时间戳",
|
||
"lines": "行数",
|
||
"filterLogs": "筛选日志...",
|
||
"refresh": "刷新",
|
||
"download": "下载",
|
||
"clear": "清除",
|
||
"logsDownloaded": "日志下载成功",
|
||
"last50": "最近 50 条",
|
||
"last100": "最近 100 条",
|
||
"last500": "最近 500 条",
|
||
"last1000": "最近 1000 条",
|
||
"allLogs": "全部日志",
|
||
"noLogsMatching": "未找到匹配 \"{{query}}\" 的日志",
|
||
"noLogsAvailable": "暂无日志",
|
||
"noContainersFound": "未找到容器",
|
||
"noContainersFoundHint": "此主机上没有可用的 Docker 容器",
|
||
"searchPlaceholder": "搜索容器...",
|
||
"allStatuses": "所有状态",
|
||
"stateRunning": "运行中",
|
||
"statePaused": "已暂停",
|
||
"stateExited": "已退出",
|
||
"stateRestarting": "重启中",
|
||
"noContainersMatchFilters": "没有容器符合筛选条件",
|
||
"noContainersMatchFiltersHint": "请尝试调整搜索或筛选条件",
|
||
"failedToFetchStats": "获取容器统计信息失败",
|
||
"containerNotRunning": "容器未运行",
|
||
"startContainerToViewStats": "启动容器以查看统计信息",
|
||
"loadingStats": "加载统计信息...",
|
||
"errorLoadingStats": "加载统计信息时出错",
|
||
"noStatsAvailable": "无可用统计信息",
|
||
"cpuUsage": "CPU 使用率",
|
||
"current": "当前",
|
||
"memoryUsage": "内存使用量",
|
||
"networkIo": "网络 I/O",
|
||
"input": "输入",
|
||
"output": "输出",
|
||
"blockIo": "块 I/O",
|
||
"read": "读取",
|
||
"write": "写入",
|
||
"pids": "PIDs",
|
||
"containerInformation": "容器信息",
|
||
"name": "名称",
|
||
"id": "ID",
|
||
"state": "状态",
|
||
"containerMustBeRunning": "访问控制台需要容器处于运行状态",
|
||
"verificationCodePrompt": "输入验证码",
|
||
"totpVerificationFailed": "TOTP 验证失败,请重试。",
|
||
"warpgateVerificationFailed": "Warpgate 认证失败,请重试。",
|
||
"connectedTo": "已连接到 {{containerName}}",
|
||
"disconnected": "已断开连接",
|
||
"consoleError": "控制台错误",
|
||
"errorMessage": "错误:{{message}}",
|
||
"failedToConnect": "连接到容器失败",
|
||
"console": "控制台",
|
||
"selectShell": "选择 shell",
|
||
"bash": "Bash",
|
||
"sh": "sh",
|
||
"ash": "ash",
|
||
"connect": "连接",
|
||
"disconnect": "断开连接",
|
||
"notConnected": "未连接",
|
||
"clickToConnect": "点击“连接”启动 shell 会话",
|
||
"connectingTo": "正在连接到 {{containerName}}...",
|
||
"containerNotFound": "未找到容器",
|
||
"backToList": "返回列表",
|
||
"logs": "日志",
|
||
"stats": "统计",
|
||
"consoleTab": "控制台",
|
||
"startContainerToAccess": "启动容器以访问控制台"
|
||
},
|
||
"admin": {
|
||
"sectionGeneral": "通用",
|
||
"sectionOidc": "OIDC",
|
||
"sectionSso": "SSO 提供商",
|
||
"ssoAddProvider": "添加提供商",
|
||
"ssoDocsLink": "查看文档",
|
||
"ssoProviderDocsLink": "查看文档",
|
||
"ssoNoProviders": "未配置 SSO 提供商。",
|
||
"ssoProviderName": "显示名称",
|
||
"ssoProviderType": "提供商类型",
|
||
"ssoDeleteProvider": "删除提供商",
|
||
"ssoDeleteConfirm": "删除此提供商?关联用户将无法登录。",
|
||
"ssoTypeOidc": "OIDC",
|
||
"ssoTypeLdap": "LDAP",
|
||
"ssoTypeGithub": "GitHub",
|
||
"ssoTypeGoogle": "Google",
|
||
"ssoEnabled": "已启用",
|
||
"ssoDisabled": "已禁用",
|
||
"ssoSaveProvider": "保存提供商",
|
||
"ssoTestConnection": "测试连接",
|
||
"ssoEditProvider": "编辑提供商",
|
||
"ldapHost": "LDAP 主机",
|
||
"ldapPort": "端口",
|
||
"ldapUseTls": "使用 TLS (LDAPS)",
|
||
"ldapBindDn": "绑定 DN",
|
||
"ldapBindPassword": "绑定密码",
|
||
"ldapUserSearchBase": "用户搜索基准",
|
||
"ldapUserSearchFilter": "用户搜索过滤器",
|
||
"ldapUsernameAttr": "用户名属性",
|
||
"ldapDisplayNameAttr": "显示名称属性",
|
||
"ldapGroupSearchBase": "群组搜索基准",
|
||
"ldapAdminGroup": "管理员群组",
|
||
"ldapAllowedUsers": "允许的用户",
|
||
"sectionUsers": "用户",
|
||
"sectionSessions": "会话",
|
||
"sectionRoles": "角色",
|
||
"sectionDatabase": "数据库",
|
||
"sectionApiKeys": "API 密钥",
|
||
"sectionAuditLog": "审计日志",
|
||
"sectionSsl": "SSL / Let's Encrypt",
|
||
"sslDescription": "自动从 Let's Encrypt 签发并续期受信任的 SSL 证书。需要公共域名以及端口 80 或 DNS 访问权限。",
|
||
"sslDocsLink": "查看 SSL 文档",
|
||
"sslDomain": "域名",
|
||
"sslDomainPlaceholder": "termix.example.com",
|
||
"sslDomainDesc": "证书的公共域名。",
|
||
"sslEmail": "邮箱",
|
||
"sslEmailPlaceholder": "admin@example.com",
|
||
"sslEmailDesc": "用于 Let's Encrypt 通知和账户的联系邮箱。",
|
||
"sslChallengeType": "验证类型",
|
||
"sslChallengeTypeDesc": "如何向 Let's Encrypt 证明域名所有权。",
|
||
"sslChallengeHttp": "HTTP (webroot) - 需要从互联网可访问端口 80",
|
||
"sslChallengeDns": "DNS (Cloudflare) - 需要 Cloudflare API 令牌",
|
||
"sslCloudflareToken": "Cloudflare API 令牌",
|
||
"sslCloudflareTokenPlaceholder": "输入令牌...",
|
||
"sslCloudflareTokenDesc": "具有您域名的 Zone:DNS:Edit 权限的限定作用域令牌。",
|
||
"sslCertStatus": "证书状态",
|
||
"sslCertStatusNone": "无证书",
|
||
"sslCertStatusValid": "有效",
|
||
"sslCertStatusExpiring": "即将过期",
|
||
"sslCertStatusExpired": "已过期",
|
||
"sslCertExpiresAt": "过期于 {{date}}",
|
||
"sslLastIssued": "上次签发于 {{date}}",
|
||
"sslRequestCert": "签发 / 续期证书",
|
||
"sslRequestCertLoading": "正在请求证书...",
|
||
"sslRequestCertSuccess": "证书签发并安装成功",
|
||
"sslRequestCertFailed": "证书请求失败",
|
||
"sslSave": "保存设置",
|
||
"sslSaved": "SSL 设置已保存",
|
||
"sslSaveFailed": "保存 SSL 设置失败",
|
||
"sslRequiresDomain": "域名和邮箱为必填项",
|
||
"sslInfoNote": "签发证书后,请在环境变量中启用 SSL (ENABLE_SSL=true) 并重启 Termix。",
|
||
"sslManualOption": "手动(上传证书)",
|
||
"sslManualCert": "证书(PEM)",
|
||
"sslManualCertPlaceholder": "-----开始证书-----",
|
||
"sslManualKey": "私钥(PEM)",
|
||
"sslManualKeyPlaceholder": "-----私钥开始-----",
|
||
"sslManualDesc": "请粘贴您现有的证书和私钥,如果您的 CA 要求,请提供完整的证书链。",
|
||
"sslManualUpload": "上传并安装证书",
|
||
"sslManualUploadLoading": "正在上传证书……",
|
||
"sslManualUploadSuccess": "证书已成功上传并安装",
|
||
"sslManualUploadFailed": "证书上传失败",
|
||
"sslManualRequiresFields": "需要证书和私钥。",
|
||
"auditLogTotal": "共 {{total}} 条记录",
|
||
"auditLogEmpty": "未找到审计日志条目",
|
||
"auditLogSuccess": "成功",
|
||
"auditLogFailed": "失败",
|
||
"auditLogClearFilters": "清除筛选",
|
||
"auditLogPage": "第 {{page}} / {{totalPages}} 页 (共 {{total}} 条)",
|
||
"auditLogIp": "IP",
|
||
"auditLogResourceId": "资源 ID",
|
||
"auditLogFilterUser": "用户",
|
||
"auditLogFilterAction": "操作",
|
||
"auditLogFilterResourceType": "资源类型",
|
||
"auditLogFilterStatus": "状态",
|
||
"auditLogFilterFrom": "起始",
|
||
"auditLogFilterTo": "结束",
|
||
"auditLogFilterAll": "全部",
|
||
"allowRegistration": "允许用户注册",
|
||
"allowRegistrationDesc": "允许新用户使用用户名和密码自行注册",
|
||
"allowPasswordLogin": "允许密码登录",
|
||
"allowPasswordLoginDesc": "用户名/密码登录",
|
||
"oidcAutoProvision": "OIDC 自动配置",
|
||
"oidcAutoProvisionDesc": "首次登录时自动为 OIDC/SSO 用户创建账户(与注册开关无关)",
|
||
"oidcSilentLoginDefault": "默认静默 OIDC 登录",
|
||
"oidcSilentLoginDefaultDesc": "每次访问时自动重定向到 OIDC 登录,完全跳过登录表单",
|
||
"allowPasswordReset": "允许密码重置",
|
||
"allowPasswordResetDesc": "通过 Docker 日志获取重置码",
|
||
"commandHistoryEnabled": "命令历史",
|
||
"commandHistoryEnabledDesc": "允许记录命令历史。禁用后,无论各主机设置如何,均不保存历史记录。",
|
||
"updateCommandHistoryFailed": "更新命令历史设置失败",
|
||
"analyticsEnabled": "分享匿名使用统计数据",
|
||
"analyticsEnabledDesc": "每日匿名发送用户、主机和功能使用情况统计数据,以帮助改进 Termix。绝不包含任何个人数据或连接详情。",
|
||
"updateAnalyticsFailed": "分析设置更新失败",
|
||
"sessionSharingGloballyEnabled": "允许会话共享",
|
||
"sessionSharingGloballyEnabledDesc": "允许在整个实例范围内共享实时终端、RDP、VNC 和 Telnet 会话。禁用此功能将覆盖所有主机级别的共享设置。",
|
||
"updateSessionSharingFailed": "会话共享设置更新失败",
|
||
"sessionTimeout": "会话超时",
|
||
"hours": "小时",
|
||
"sessionTimeoutRange": "最短 1 小时 · 最长 720 小时",
|
||
"monitoringDefaults": "监控默认值",
|
||
"statusCheck": "状态检查",
|
||
"metrics": "指标",
|
||
"sec": "秒",
|
||
"logLevel": "日志级别",
|
||
"enableGuacamole": "启用 Guacamole",
|
||
"enableGuacamoleDesc": "RDP/VNC 远程桌面",
|
||
"enableGuacamoleDocsLink": "查看文档",
|
||
"guacdUrl": "guacd URL",
|
||
"tailscaleApiKey": "Tailscale API 密钥",
|
||
"tailscaleApiKeyDescription": "用于主机编辑器中的设备发现。在 tailscale.com/admin/settings/keys 生成密钥。",
|
||
"tailscaleApiKeyDocsLink": "查看文档",
|
||
"oidcDescription": "为 SSO 配置 OpenID Connect。带 * 的字段为必填项。",
|
||
"oidcDocsLink": "查看文档",
|
||
"oidcClientId": "客户端 ID",
|
||
"oidcClientSecret": "客户端密钥",
|
||
"oidcAuthUrl": "授权 URL",
|
||
"oidcIssuerUrl": "颁发者 URL",
|
||
"oidcTokenUrl": "令牌 URL",
|
||
"oidcUserIdentifier": "用户标识符路径",
|
||
"oidcDisplayName": "显示名称路径",
|
||
"oidcScopes": "作用域",
|
||
"oidcUserinfoUrl": "覆盖 Userinfo URL",
|
||
"oidcAllowedUsers": "允许的用户",
|
||
"oidcAllowedUsersDesc": "每行一个邮箱。留空表示允许所有用户。",
|
||
"oidcAdminGroup": "管理员组",
|
||
"oidcAdminGroupDesc": "此组的用户将被授予管理员权限。留空可禁用组同步。",
|
||
"oidcGroupClaim": "组声明",
|
||
"oidcGroupClaimDesc": "可选。包含用户组的声明路径。默认依次使用 groups、roles、group。用于具有自定义声明的提供商(如 Zitadel)。",
|
||
"oidcCaCert": "自定义 CA 证书",
|
||
"oidcCaCertDesc": "可选。PEM 编码的 CA 证书,用于使用私有或自签名 CA 的 OIDC 提供商。留空则使用系统信任存储。",
|
||
"removeOidc": "移除",
|
||
"usersCount": "{{count}} 个用户",
|
||
"createUser": "创建",
|
||
"newRole": "新角色",
|
||
"roleName": "名称",
|
||
"roleDisplayName": "显示名称",
|
||
"roleDescription": "描述",
|
||
"rolesCount": "{{count}} 个角色",
|
||
"createRole": "创建",
|
||
"creating": "正在创建...",
|
||
"exportDatabase": "导出数据库",
|
||
"exportDatabaseDesc": "下载包含所有主机、凭据和设置的备份",
|
||
"export": "导出",
|
||
"exporting": "正在导出...",
|
||
"importDatabase": "导入数据库",
|
||
"importDatabaseDesc": "从 .sqlite 备份文件恢复",
|
||
"importDatabaseSelected": "已选择:{{name}}",
|
||
"selectFile": "选择文件",
|
||
"changeFile": "更改",
|
||
"import": "导入",
|
||
"importing": "正在导入...",
|
||
"apiKeysCount": "{{count}} 个密钥",
|
||
"apiKeysDocsLink": "查看文档",
|
||
"newApiKey": "新建 API 密钥",
|
||
"apiKeyCreatedWarning": "密钥已创建 - 请立即复制,密钥将不再显示。",
|
||
"apiKeyName": "名称",
|
||
"apiKeyUser": "用户",
|
||
"apiKeySelectUser": "选择用户...",
|
||
"apiKeyExpiresAt": "过期时间",
|
||
"createKey": "创建密钥",
|
||
"apiKeyNoExpiry": "无过期",
|
||
"revokedBadge": "已吊销",
|
||
"authTypeDual": "双重认证",
|
||
"authTypeOidc": "OIDC",
|
||
"authTypeLocal": "本地",
|
||
"adminStatusAdministrator": "管理员",
|
||
"adminStatusRegularUser": "普通用户",
|
||
"adminBadge": "管理员",
|
||
"systemBadge": "系统",
|
||
"customBadge": "自定义",
|
||
"youBadge": "我",
|
||
"sessionsActive": "{{count}} 个活跃",
|
||
"sessionActive": "活跃: {{time}}",
|
||
"sessionExpires": "过期: {{time}}",
|
||
"revokeAll": "全部",
|
||
"revokeAllSessionsSuccess": "用户的所有会话已吊销",
|
||
"revokeAllSessionsFailed": "吊销会话失败",
|
||
"revokeSessionFailed": "吊销会话失败",
|
||
"addRole": "添加角色",
|
||
"noCustomRoles": "未定义自定义角色",
|
||
"removeRoleFailed": "移除角色失败",
|
||
"assignRoleFailed": "分配角色失败",
|
||
"deleteRoleFailed": "删除角色失败",
|
||
"userAdminAccess": "管理员",
|
||
"userAdminAccessDesc": "完全访问所有管理设置",
|
||
"userRoles": "角色",
|
||
"revokeAllUserSessions": "吊销所有会话",
|
||
"revokeAllUserSessionsDesc": "强制在所有设备上重新登录",
|
||
"revoke": "吊销",
|
||
"deleteUserWarning": "删除此用户是永久性的。",
|
||
"deleteUser": "删除 {{username}}",
|
||
"deleting": "删除中...",
|
||
"deleteUserFailed": "删除用户失败",
|
||
"deleteUserSuccess": "用户 \"{{username}}\" 已删除",
|
||
"deleteRoleSuccess": "角色 \"{{name}}\" 已删除",
|
||
"revokeKeySuccess": "密钥 \"{{name}}\" 已吊销",
|
||
"revokeKeyFailed": "吊销密钥失败",
|
||
"copiedToClipboard": "已复制到剪贴板",
|
||
"done": "完成",
|
||
"createUserTitle": "创建用户",
|
||
"createUserDesc": "创建一个新的本地账号。",
|
||
"createUserUsername": "用户名",
|
||
"createUserPassword": "密码",
|
||
"createUserPasswordHint": "至少6个字符。",
|
||
"createUserEnterUsername": "输入用户名",
|
||
"createUserEnterPassword": "输入密码",
|
||
"createUserSubmit": "创建用户",
|
||
"editUserTitle": "管理用户:{{username}}",
|
||
"editUserDesc": "编辑角色、管理员状态、会话和账号设置。",
|
||
"editUserUsername": "用户名",
|
||
"editUserAuthType": "认证类型",
|
||
"editUserAdminStatus": "管理员状态",
|
||
"editUserUserId": "用户ID",
|
||
"linkAccountTitle": "链接账号",
|
||
"linkAccountDesc": "将OIDC账号{{username}}与现有的本地账号合并。",
|
||
"linkAccountDescLocal": "将本地账号{{username}}与现有的仅OIDC账号链接。",
|
||
"linkAccountWarningTitle": "这将:",
|
||
"linkAccountEffect1": "删除仅OIDC账号",
|
||
"linkAccountEffect2": "为目标账号添加OIDC登录",
|
||
"linkAccountEffect3": "允许OIDC和密码两种登录方式",
|
||
"linkAccountTargetUsername": "本地账号用户名",
|
||
"linkAccountTargetPlaceholder": "输入要链接的本地账号用户名",
|
||
"linkAccountOidcUsername": "OIDC账号用户名",
|
||
"linkAccountOidcPlaceholder": "输入要合并的仅OIDC账号用户名",
|
||
"linkAccountOidcNotFound": "未找到使用该用户名的仅OIDC账号",
|
||
"linkAccounts": "链接账号",
|
||
"linkAccountSuccess": "账号已成功链接",
|
||
"linkAccountFailed": "链接账号失败",
|
||
"linkAccountInProgress": "正在链接...",
|
||
"unlinkAccountTitle": "取消OIDC关联",
|
||
"unlinkAccountDesc": "从{{username}}移除OIDC认证。该用户将只能使用密码登录。",
|
||
"unlinkAccountWarning": "这将从此账号移除OIDC登录。用户必须设置密码才能继续登录。",
|
||
"unlinkAccount": "取消OIDC关联",
|
||
"unlinkAccountInProgress": "正在取消关联...",
|
||
"unlinkAccountSuccess": "OIDC 取消关联成功",
|
||
"unlinkAccountFailed": "取消关联 OIDC 失败",
|
||
"saving": "保存中...",
|
||
"updateRegistrationFailed": "更新注册设置失败",
|
||
"updatePasswordLoginFailed": "更新密码登录设置失败",
|
||
"cannotDisablePasswordLoginWithTotp": "一个或多个用户启用了 2FA 时不能禁用密码登录。请先禁用 2FA。",
|
||
"updateOidcAutoProvisionFailed": "更新 OIDC 自动配置设置失败",
|
||
"updateOidcSilentLoginDefaultFailed": "更新静默 OIDC 登录设置失败",
|
||
"updatePasswordResetFailed": "更新密码重置设置失败",
|
||
"sessionTimeoutRange2": "会话超时必须在 1 到 720 小时之间",
|
||
"sessionTimeoutSaved": "会话超时已保存",
|
||
"sessionTimeoutSaveFailed": "保存会话超时失败",
|
||
"monitoringIntervalInvalid": "无效的间隔值",
|
||
"monitoringSaved": "监控设置已保存",
|
||
"monitoringSaveFailed": "保存监控设置失败",
|
||
"metricsHistoryRetention": "指标历史保留",
|
||
"metricsHistoryRetentionRange": "1 到 90 天",
|
||
"days": "天",
|
||
"guacamoleSaved": "Guacamole 设置已保存",
|
||
"guacamoleSaveFailed": "保存 Guacamole 设置失败",
|
||
"guacamoleUpdateFailed": "更新 Guacamole 设置失败",
|
||
"tailscaleSettingsSaved": "Tailscale 设置已保存",
|
||
"tailscaleSettingsSaveFailed": "保存 Tailscale 设置失败",
|
||
"logLevelUpdateFailed": "更新日志级别失败",
|
||
"oidcSaved": "OIDC 配置已保存",
|
||
"oidcSaveFailed": "保存 OIDC 配置失败",
|
||
"oidcRemoved": "OIDC 配置已移除",
|
||
"oidcRemoveFailed": "移除 OIDC 配置失败",
|
||
"createUserRequired": "需要用户名和密码",
|
||
"createUserPasswordTooShort": "密码长度至少需要 6 个字符",
|
||
"createUserSuccess": "用户 \"{{username}}\" 已创建",
|
||
"createUserFailed": "创建用户失败",
|
||
"updateAdminStatusFailed": "更新管理员状态失败",
|
||
"allSessionsRevoked": "所有会话已撤销",
|
||
"revokeSessionsFailed": "撤销会话失败",
|
||
"manageUserData": "管理用户数据",
|
||
"backToUsers": "返回用户列表",
|
||
"manageTabAccount": "账户",
|
||
"manageTabHosts": "主机",
|
||
"manageTabCredentials": "凭据",
|
||
"manageTabSnippets": "代码片段",
|
||
"manageTabSessions": "会话",
|
||
"manageTabDanger": "危险",
|
||
"manageEditorBack": "返回 {{username}} 的数据",
|
||
"dataLockedBadge": "已锁定",
|
||
"dataLockedNotice": "{{username}} 的数据将保持锁定状态,直到其下次登录。在此之前,无法查看或编辑其主机、凭据和代码片段。",
|
||
"resetPasswordTitle": "重置密码",
|
||
"resetPasswordOidcOnly": "此用户通过外部提供商登录,没有密码。",
|
||
"resetPasswordPlaceholder": "新密码",
|
||
"resetPasswordBtn": "重置",
|
||
"resetPasswordWorking": "正在重置...",
|
||
"resetPasswordSuccess": "密码已重置",
|
||
"resetPasswordSuccessWiped": "密码已重置。用户的加密数据已被擦除。",
|
||
"resetPasswordFailed": "密码重置失败",
|
||
"resetPasswordConfirmWipe": "{{username}} 自加密升级后尚未登录,因此其数据无法恢复。现在重置将删除其主机、凭据和代码片段。是否继续?",
|
||
"totpSectionTitle": "双因素认证",
|
||
"totpStatusEnabled": "此用户已启用 TOTP",
|
||
"totpStatusDisabled": "此用户未启用 TOTP",
|
||
"disableTotp": "禁用",
|
||
"disableTotpConfirm": "为 {{username}} 禁用双因素认证?他们将只能使用密码登录。",
|
||
"totpDisabledSuccess": "TOTP 已禁用",
|
||
"totpDisableFailed": "TOTP 禁用失败",
|
||
"manageApiKeys": "API 密钥",
|
||
"apiKeyNamePlaceholder": "密钥名称",
|
||
"apiKeyCopyNotice": "立即复制此密钥,之后将不再显示。",
|
||
"noApiKeysForUser": "无 API 密钥",
|
||
"apiKeyDeleteFailed": "删除 API 密钥失败",
|
||
"exportUserData": "数据导出",
|
||
"exportUserDataDesc": "以 JSON 格式下载此用户的主机、凭据和文件管理器数据。机密数据已解密。",
|
||
"exportUserDataSuccess": "用户数据已导出",
|
||
"exportUserDataFailed": "导出用户数据失败",
|
||
"hostsCount": "{{count}} 个主机",
|
||
"addHostForUser": "添加主机",
|
||
"noHostsForUser": "此用户没有主机",
|
||
"connectToHost": "连接",
|
||
"deleteHostConfirm": "删除属于 {{username}} 的主机 \"{{name}}\"?",
|
||
"hostDeletedSuccess": "主机已删除",
|
||
"hostDeleteFailed": "删除主机失败",
|
||
"credentialsCount": "{{count}} 个凭据",
|
||
"addCredentialForUser": "添加凭据",
|
||
"noCredentialsForUser": "该用户没有凭据",
|
||
"deleteCredentialConfirm": "删除属于 {{username}} 的凭据 \"{{name}}\"?",
|
||
"credentialDeletedSuccess": "凭据已删除",
|
||
"credentialDeleteFailed": "删除凭据失败",
|
||
"snippetsCount": "{{count}} 个代码片段",
|
||
"addSnippetForUser": "添加代码片段",
|
||
"noSnippetsForUser": "该用户没有代码片段",
|
||
"snippetRequiredFields": "代码片段名称和内容为必填项",
|
||
"snippetNamePlaceholder": "代码片段名称",
|
||
"snippetContentPlaceholder": "命令内容",
|
||
"snippetFolderPlaceholder": "文件夹(可选)",
|
||
"snippetSaved": "代码片段已保存",
|
||
"snippetSaveFailed": "保存代码片段失败",
|
||
"deleteSnippetConfirm": "删除属于 {{username}} 的代码片段 \"{{name}}\"?",
|
||
"snippetDeletedSuccess": "代码片段已删除",
|
||
"snippetDeleteFailed": "删除代码片段失败",
|
||
"noSessionsForUser": "没有活动会话",
|
||
"deleteUserDangerDesc": "永久删除 {{username}} 及其所有数据(主机、凭据、代码片段、历史记录)。此操作不可撤销。",
|
||
"deleteUserConfirm": "永久删除 {{username}} 及其所有数据?",
|
||
"deleteUserAdminBlocked": "删除此用户前请先移除管理员状态。",
|
||
"createRoleRequired": "名称和显示名称为必填项",
|
||
"createRoleSuccess": "角色 \"{{name}}\" 已创建",
|
||
"createRoleFailed": "创建角色失败",
|
||
"apiKeyNameRequired": "密钥名称为必填项",
|
||
"apiKeyUserRequired": "用户ID为必填项",
|
||
"apiKeyCreatedSuccess": "API 密钥 \"{{name}}\" 已创建",
|
||
"apiKeyCreateFailed": "创建 API 密钥失败",
|
||
"exportSuccess": "数据库导出成功",
|
||
"exportFailed": "数据库导出失败",
|
||
"importSelectFile": "请先选择文件",
|
||
"importCompleted": "导入完成:已导入 {{total}} 项,跳过 {{skipped}} 项",
|
||
"importFailed": "导入失败:{{error}}",
|
||
"importError": "数据库导入失败",
|
||
"sectionHostDefaults": "主机默认设置",
|
||
"hostDefaultsDesc": "创建新主机时自动应用的设置。各主机仍可覆盖这些设置。",
|
||
"hostDefaultsSocks5": "SOCKS5 代理",
|
||
"hostDefaultsUseSocks5": "启用 SOCKS5 代理",
|
||
"hostDefaultsUseSocks5Desc": "在所有新主机上预填 SOCKS5 代理",
|
||
"hostDefaultsSocks5Host": "代理主机 / 端口",
|
||
"hostDefaultsSocks5Username": "代理用户名",
|
||
"hostDefaultsSocks5Password": "代理密码",
|
||
"hostDefaultsMetrics": "主机指标",
|
||
"hostDefaultsMetricsEnabled": "启用指标",
|
||
"hostDefaultsMetricsEnabledDesc": "默认情况下,在新主机上收集 CPU、内存及其他统计数据",
|
||
"hostDefaultsStatusCheckEnabled": "启用状态检查",
|
||
"hostDefaultsStatusCheckEnabledDesc": "默认轮询新主机的在线/离线状态",
|
||
"hostDefaultsTerminal": "终端",
|
||
"hostDefaultsSessionLogging": "会话记录",
|
||
"hostDefaultsSessionLoggingDesc": "默认记录新主机的终端会话",
|
||
"hostDefaultsCommandHistory": "命令历史",
|
||
"hostDefaultsCommandHistoryDesc": "默认跟踪新主机的命令历史",
|
||
"hostDefaultsSaved": "主机默认设置已保存",
|
||
"hostDefaultsSaveFailed": "保存主机默认设置失败",
|
||
"rolePermissions": {
|
||
"count": "{{count}} 个权限",
|
||
"editAction": "编辑权限",
|
||
"loadError": "加载权限目录失败",
|
||
"saved": "角色权限已保存",
|
||
"saveError": "保存角色权限失败",
|
||
"save": "保存",
|
||
"saving": "保存中..."
|
||
}
|
||
},
|
||
"newUi": {
|
||
"sidebar": {
|
||
"quickConnect": {
|
||
"hostLabel": "主机",
|
||
"hostPlaceholder": "192.168.1.1 or example.com",
|
||
"portLabel": "端口",
|
||
"portPlaceholder": "22",
|
||
"usernameLabel": "用户名",
|
||
"usernamePlaceholder": "username",
|
||
"authLabel": "认证",
|
||
"passwordLabel": "密码",
|
||
"passwordPlaceholder": "password",
|
||
"privateKeyLabel": "私钥",
|
||
"privateKeyPlaceholder": "粘贴私钥...",
|
||
"credentialLabel": "凭据",
|
||
"credentialPlaceholder": "选择一个已保存的凭据",
|
||
"connectToTerminal": "连接到终端",
|
||
"connectToFiles": "连接到文件管理器"
|
||
},
|
||
"history": {
|
||
"noTerminalSelected": "未选择终端",
|
||
"noTerminalSelectedHint": "打开一个 SSH 终端标签页以查看其命令历史",
|
||
"searchPlaceholder": "搜索历史...",
|
||
"clearAll": "全部清除",
|
||
"noHistoryEntries": "无历史记录",
|
||
"trackingDisabled": "历史跟踪已禁用",
|
||
"trackingDisabledHint": "在主机终端设置中启用。"
|
||
},
|
||
"sshTools": {
|
||
"keyRecordingTitle": "按键录制",
|
||
"recordToTerminals": "录制到终端",
|
||
"selectAll": "全选",
|
||
"selectNone": "全不选",
|
||
"noTerminalTabsOpen": "无打开的终端标签页",
|
||
"selectTerminalsAbove": "选择上方终端",
|
||
"broadcastInputPlaceholder": "在此输入以广播按键...",
|
||
"fillPassword": "填充密码",
|
||
"fillPasswordSuccess": "已将密码填充到 {{count}} 个终端",
|
||
"fillPasswordMissing": "{{count}} 个所选终端无保存的密码",
|
||
"stopRecording": "停止录制",
|
||
"startRecording": "开始录制",
|
||
"settingsTitle": "设置",
|
||
"enableRightClickCopyPaste": "启用右键复制/粘贴"
|
||
},
|
||
"splitScreen": {
|
||
"layoutTitle": "布局",
|
||
"selectLayoutAbove": "选择上方布局",
|
||
"selectLayoutHint": "选择要显示的窗格数",
|
||
"panesTitle": "窗格",
|
||
"openTabsTitle": "打开的标签页",
|
||
"dragTabsHint": "将标签页拖入上方窗格,或使用快速分配",
|
||
"dropHere": "拖放至此",
|
||
"emptyPane": "空",
|
||
"dashboard": "仪表板",
|
||
"clearSplitScreen": "清除分屏",
|
||
"quickAssign": "快速分配",
|
||
"alreadyAssigned": "窗格 {{index}}",
|
||
"splitTab": "拆分标签页",
|
||
"addToSplit": "添加到分屏",
|
||
"removeFromSplit": "从分屏移除",
|
||
"assignToPane": "分配到窗格",
|
||
"hotkeysTitle": "键盘快捷键",
|
||
"hotkeysSplitRight": "切换双窗格分屏",
|
||
"hotkeysSplitBelow": "切换三窗格分屏",
|
||
"hotkeysNavigatePane": "导航窗格",
|
||
"hotkeysNextTab": "下一个标签页",
|
||
"hotkeysPrevTab": "上一个标签页"
|
||
},
|
||
"snippets": {
|
||
"title": "代码片段",
|
||
"createSnippetTitle": "创建代码片段",
|
||
"createSnippetDescription": "创建新的命令代码片段以便快速执行",
|
||
"nameLabel": "名称",
|
||
"namePlaceholder": "例如:重启 Nginx",
|
||
"descriptionLabel": "描述",
|
||
"descriptionPlaceholder": "可选描述",
|
||
"optional": "可选",
|
||
"folderLabel": "文件夹",
|
||
"noFolder": "无文件夹(未分类)",
|
||
"commandLabel": "命令",
|
||
"commandPlaceholder": "例如:sudo systemctl restart nginx",
|
||
"cancel": "取消",
|
||
"createSnippetButton": "创建代码片段",
|
||
"createFolderTitle": "创建文件夹",
|
||
"createFolderDescription": "将代码片段整理到文件夹中",
|
||
"folderNameLabel": "文件夹名称",
|
||
"folderNamePlaceholder": "例如:系统命令、Docker 脚本",
|
||
"folderColorLabel": "文件夹颜色",
|
||
"folderIconLabel": "文件夹图标",
|
||
"previewLabel": "预览",
|
||
"folderNameFallback": "文件夹名称",
|
||
"createFolderButton": "创建文件夹",
|
||
"targetTerminals": "目标终端",
|
||
"selectAll": "全选",
|
||
"selectNone": "取消全选",
|
||
"noTerminalTabsOpen": "没有打开的终端标签页",
|
||
"searchPlaceholder": "搜索代码片段...",
|
||
"newSnippet": "新建代码片段",
|
||
"newFolder": "新建文件夹",
|
||
"run": "运行",
|
||
"noSnippetsInFolder": "此文件夹中没有代码片段",
|
||
"uncategorized": "未分类",
|
||
"editSnippetTitle": "编辑代码片段",
|
||
"editSnippetDescription": "更新此命令代码片段",
|
||
"saveSnippetButton": "保存更改",
|
||
"createSuccess": "代码片段创建成功",
|
||
"createFailed": "创建代码片段失败",
|
||
"updateSuccess": "代码片段更新成功",
|
||
"updateFailed": "更新代码片段失败",
|
||
"deleteFailed": "删除代码片段失败",
|
||
"folderCreateSuccess": "文件夹创建成功",
|
||
"folderCreateFailed": "创建文件夹失败",
|
||
"editFolderTitle": "编辑文件夹",
|
||
"editFolderDescription": "重命名或更改此文件夹的外观",
|
||
"saveFolderButton": "保存更改",
|
||
"editFolder": "编辑文件夹",
|
||
"deleteFolder": "删除文件夹",
|
||
"folderDeleteSuccess": "文件夹“{{name}}”已删除",
|
||
"folderDeleteFailed": "删除文件夹失败",
|
||
"folderEditSuccess": "文件夹更新成功",
|
||
"folderEditFailed": "更新文件夹失败",
|
||
"confirmRunMessage": "运行“{{name}}”?",
|
||
"confirmRunButton": "运行",
|
||
"runSuccess": "已在 {{count}} 个终端中运行“{{name}}”",
|
||
"copySuccess": "已将“{{name}}”复制到剪贴板",
|
||
"shareTitle": "共享代码片段",
|
||
"shareUser": "用户",
|
||
"shareRole": "角色",
|
||
"selectUser": "选择一个用户...",
|
||
"selectRole": "选择一个角色...",
|
||
"shareSuccess": "代码片段共享成功",
|
||
"shareFailed": "共享代码片段失败",
|
||
"revokeSuccess": "访问权限已撤销",
|
||
"revokeFailed": "撤销访问权限失败",
|
||
"currentAccess": "当前访问权限",
|
||
"shareLoadError": "加载共享数据失败",
|
||
"loading": "加载中...",
|
||
"close": "关闭",
|
||
"reorderFailed": "保存代码片段顺序失败",
|
||
"importExport": "导入 / 导出",
|
||
"exportBtn": "导出 JSON",
|
||
"importBtn": "导入 JSON",
|
||
"exportSuccess": "代码片段导出成功",
|
||
"exportFailed": "导出代码片段失败",
|
||
"importTitle": "导入代码片段",
|
||
"importDescription": "从 Termix 导出的 JSON 文件导入代码片段和文件夹",
|
||
"importDropOrClick": "将 JSON 文件拖放到此处或点击浏览",
|
||
"importSelectedFile": "已选择:{{name}}",
|
||
"importOverwrite": "覆盖具有相同名称和文件夹的现有代码片段",
|
||
"importStartBtn": "导入",
|
||
"importSuccess": "导入完成:添加了 {{snippets}} 个代码片段,更新了 {{updated}} 个,跳过了 {{skipped}} 个,添加了 {{folders}} 个文件夹",
|
||
"importFailed": "导入代码片段失败",
|
||
"importInvalidFile": "无效文件:应为包含 snippets 或 folders 数组的 JSON 对象",
|
||
"targetHostsLabel": "目标主机",
|
||
"targetHostsHint": "分配主机,以便无需打开终端即可直接运行此代码片段。",
|
||
"noHostsAvailable": "未配置任何主机",
|
||
"clearTargetHosts": "清除全部",
|
||
"hasTargetHosts": "已分配目标主机",
|
||
"runOnTargets": "在目标上运行",
|
||
"directRunSuccess": "已在 {{count}} 台主机上运行 \"{{name}}\"",
|
||
"directRunPartialFail": "\"{{name}}\" 在一台或多台主机上运行失败",
|
||
"executionResultTitle": "执行结果:{{name}}",
|
||
"executionResultDescription": "在每台目标主机上运行代码片段的输出。",
|
||
"executionSuccess": "成功",
|
||
"executionFailed": "失败"
|
||
},
|
||
"keybindings": {
|
||
"title": "键盘快捷键",
|
||
"description": "自定义终端复制、粘贴和控制快捷键,或绑定按键以发送文本或运行代码片段。",
|
||
"defaultsHeading": "内置快捷方式",
|
||
"customHeading": "自定义快捷方式",
|
||
"addBinding": "添加快捷方式",
|
||
"addBindingTitle": "添加快捷方式",
|
||
"editBindingTitle": "编辑快捷方式",
|
||
"loading": "加载中...",
|
||
"noCustomBindings": "暂无自定义快捷键",
|
||
"defaultBadge": "默认",
|
||
"customizedBadge": "定制",
|
||
"customize": "定制",
|
||
"resetToDefault": "重置为默认值",
|
||
"resetAllToDefaults": "所有设置重置为默认值",
|
||
"close": "关闭",
|
||
"cancel": "取消",
|
||
"saveBinding": "保存快捷方式",
|
||
"saveError": "保存键盘快捷键失败",
|
||
"pressKeysToRecord": "关键组合",
|
||
"pressKeysPlaceholder": "点击并按下按键",
|
||
"recording": "按下按键……",
|
||
"comboRequiredError": "先按下组合键",
|
||
"textRequiredError": "请输入要发送的文本",
|
||
"controlCodeRequiredError": "请输入单个字母作为控制码",
|
||
"snippetRequiredError": "选择一段文字",
|
||
"conflictWarning": "此组合已绑定到 {{combo}}。保存后两者都会生效。",
|
||
"actionLabel": "行动",
|
||
"actionCopy": "复制选择",
|
||
"actionPaste": "粘贴",
|
||
"actionSendControlCode": "发送 Ctrl+字母信号",
|
||
"actionSendText": "发送短信",
|
||
"actionRunSnippet": "运行现有代码片段",
|
||
"controlCodeLabel": "信",
|
||
"textLabel": "发送的文本",
|
||
"appendEnterLabel": "发送后按回车键",
|
||
"snippetLabel": "片段",
|
||
"selectSnippetPlaceholder": "选择一段文字",
|
||
"orphanedSnippetWarning": "未找到代码片段",
|
||
"clipboardPermissionNote": "某些浏览器在首次使用时可能会提示授予剪贴板权限。"
|
||
},
|
||
"userProfile": {
|
||
"donateTitle": "让 Termix 持续运转",
|
||
"donateDescription": "Termix 是免费、自托管的,仅由少数几人用业余时间构建。若它为您节省了时间或金钱,请通过加密货币捐赠助力其持续发展。",
|
||
"donateMilestones": "捐赠有助于资助研究和学习构建 SAML、Kubernetes 及 Agent 支持所需的时间。查看进展并捐赠。",
|
||
"donateButton": "捐赠加密货币",
|
||
"storageModeLocal": "浏览器",
|
||
"storageModeCloud": "数据库",
|
||
"storageModeDescription": "浏览器模式仅将设置存储在当前浏览器中。数据库模式则同步至服务器,并在任意设备上加载。",
|
||
"resetToDefaults": "重置为默认值",
|
||
"resetToDefaultsSuccess": "设置已重置为默认值。",
|
||
"storageModeSwitch": "偏好设置存储",
|
||
"sectionAccount": "账户",
|
||
"sectionAppearance": "外观",
|
||
"sectionSecurity": "安全",
|
||
"sectionApiKeys": "API 密钥",
|
||
"sectionData": "数据",
|
||
"sectionC2sTunnels": "C2S 隧道",
|
||
"usernameLabel": "用户名",
|
||
"roleLabel": "角色",
|
||
"roleAdministrator": "管理员",
|
||
"authMethodLabel": "认证方式",
|
||
"authMethodLocal": "本地",
|
||
"twoFaLabel": "双重认证",
|
||
"twoFaOn": "开启",
|
||
"twoFaOff": "关闭",
|
||
"versionLabel": "版本",
|
||
"betaProgramTitle": "Beta 计划",
|
||
"betaProgramDescription": "使用每周滚动更新的 :beta Docker 标签提前体验新功能。不稳定,请勿用于生产环境。",
|
||
"betaProgramFeedback": "发现问题?在此报告。",
|
||
"betaProgramLearnMore": "了解更多",
|
||
"deleteAccount": "删除账户",
|
||
"deleteAccountDescription": "永久删除您的账户",
|
||
"changeServerDescription": "切换到其他 Termix 后端服务器",
|
||
"deleteButton": "删除",
|
||
"deleteAccountPermanent": "此操作是永久性的,无法撤销。",
|
||
"deleteAccountWarning": "所有会话、主机、凭据和设置将被永久删除。",
|
||
"confirmPasswordDeletePlaceholder": "输入密码以确认",
|
||
"languageLabel": "语言",
|
||
"themeLabel": "主题",
|
||
"fontSizeLabel": "字体大小",
|
||
"accentColorLabel": "强调色",
|
||
"settingsTerminal": "终端",
|
||
"commandAutocomplete": "命令自动补全",
|
||
"commandAutocompleteDesc": "输入时显示自动补全",
|
||
"keyboardShortcuts": "键盘快捷键",
|
||
"keyboardShortcutsDescription": "自定义终端复制、粘贴和命令快捷键",
|
||
"manageShortcuts": "管理",
|
||
"terminalLinkBehavior": "终端链接点击",
|
||
"terminalLinkBehaviorDesc": "点击终端内链接时的默认行为",
|
||
"historyTracking": "历史记录跟踪",
|
||
"historyTrackingDesc": "跟踪终端命令",
|
||
"commandPalette": "命令面板",
|
||
"commandPaletteDesc": "启用键盘快捷键",
|
||
"reopenTabsOnLogin": "登录时重新打开标签页",
|
||
"reopenTabsOnLoginDesc": "登录或刷新页面时恢复已打开的标签页,即使是从其他设备登录",
|
||
"confirmTabClose": "关闭标签页确认",
|
||
"confirmTabCloseDesc": "关闭终端标签页前询问",
|
||
"settingsSidebar": "侧边栏",
|
||
"showHostTags": "显示主机标签",
|
||
"showHostTagsDesc": "在主机列表中显示标签",
|
||
"hostTrayOnClick": "点击展开主机操作",
|
||
"hostTrayOnClickDesc": "始终显示连接按钮;点击展开管理选项而非悬停",
|
||
"compactHostView": "紧凑主机视图",
|
||
"compactHostViewDesc": "将每个主机折叠为一行,仅显示名称和地址",
|
||
"statusColors": "真实状态颜色",
|
||
"statusColorsDesc": "使用绿色/红色表示在线/离线状态,而非强调色",
|
||
"pinAppRail": "固定应用边栏",
|
||
"pinAppRailDesc": "保持左侧应用边栏始终展开,而非悬停展开",
|
||
"expandAppRailOnHover": "悬停展开应用边栏",
|
||
"expandAppRailOnHoverDesc": "允许鼠标悬停时展开左侧应用边栏",
|
||
"settingsNavigation": "导航",
|
||
"navigationTabsDesc": "选择在应用导航栏中显示的标签页",
|
||
"settingsSnippets": "代码片段",
|
||
"foldersCollapsed": "折叠文件夹",
|
||
"foldersCollapsedDesc": "默认折叠文件夹",
|
||
"confirmExecution": "确认执行",
|
||
"confirmExecutionDesc": "运行代码片段前确认",
|
||
"settingsUpdates": "更新",
|
||
"disableUpdateChecks": "禁用更新检查",
|
||
"disableUpdateChecksDesc": "停止检查更新",
|
||
"totpAuthenticator": "TOTP 身份验证器",
|
||
"totpEnabled": "双因素认证已启用",
|
||
"totpDisabled": "添加额外的登录安全",
|
||
"disable": "禁用",
|
||
"enable": "启用",
|
||
"setupTotp": "设置 TOTP",
|
||
"qrCode": "二维码",
|
||
"totpInstructions": "扫描二维码或在您的身份验证器应用中输入密钥,然后输入6位数字代码",
|
||
"totpCodePlaceholder": "000000",
|
||
"verify": "验证",
|
||
"changePassword": "修改密码",
|
||
"currentPasswordLabel": "当前密码",
|
||
"currentPasswordPlaceholder": "当前密码",
|
||
"newPasswordLabel": "新密码",
|
||
"newPasswordPlaceholder": "新密码",
|
||
"confirmPasswordLabel": "确认新密码",
|
||
"confirmPasswordPlaceholder": "确认新密码",
|
||
"updatePassword": "更新密码",
|
||
"createApiKeyTitle": "创建 API 密钥",
|
||
"createApiKeyDescription": "生成用于编程访问的新 API 密钥。",
|
||
"apiKeyNameLabel": "名称",
|
||
"apiKeyNamePlaceholder": "例如:CI 流水线",
|
||
"expiryDateLabel": "到期日期",
|
||
"optional": "可选",
|
||
"cancel": "取消",
|
||
"createKey": "创建密钥",
|
||
"apiKeyCount": "{{count}} 个密钥",
|
||
"newKey": "新建密钥",
|
||
"noApiKeys": "尚无 API 密钥。",
|
||
"apiKeyActive": "活跃",
|
||
"apiKeyUsageHint": "将您的密钥包含在",
|
||
"apiKeyUsageHintHeader": "标头。",
|
||
"apiKeyPermissionsHint": "密钥继承创建用户的权限。",
|
||
"exportData": "导出我的数据",
|
||
"exportDataDesc": "下载主机、凭据和设置的备份,以便传输到另一台设备。",
|
||
"export": "出口",
|
||
"exporting": "出口...",
|
||
"importData": "导入我的数据",
|
||
"importDataDesc": "从 .sqlite 备份文件恢复您的主机、凭据和设置",
|
||
"importDataSelected": "已选择: {{name}}",
|
||
"selectFile": "选择文件",
|
||
"changeFile": "改变",
|
||
"import": "进口",
|
||
"importing": "输入...",
|
||
"exportSuccess": "数据已成功导出",
|
||
"exportFailed": "数据导出失败",
|
||
"importSelectFile": "请先选择文件。",
|
||
"importCompleted": "导入完成:已导入 {{total}} 项,跳过 {{skipped}} 项",
|
||
"importFailed": "导入失败: {{error}}",
|
||
"roleUser": "用户",
|
||
"authMethodDual": "双重认证",
|
||
"authMethodOidc": "OIDC",
|
||
"totpSetupFailed": "启动 TOTP 设置失败",
|
||
"totpEnter6Digits": "输入 6 位验证码",
|
||
"totpEnabledSuccess": "双因素认证已启用",
|
||
"totpInvalidCode": "验证码无效,请重试",
|
||
"totpDisableInputRequired": "输入您的 TOTP 验证码或密码",
|
||
"totpDisabledSuccess": "双因素认证已禁用",
|
||
"totpDisableFailed": "禁用 2FA 失败",
|
||
"totpDisableTitle": "禁用 2FA",
|
||
"totpDisablePlaceholder": "输入 TOTP 验证码或密码",
|
||
"totpDisableConfirm": "禁用 2FA",
|
||
"totpContinueVerify": "继续验证",
|
||
"totpVerifyTitle": "验证验证码",
|
||
"totpBackupTitle": "备份验证码",
|
||
"totpDownloadBackup": "下载备份验证码",
|
||
"passkeys": "通行密钥",
|
||
"passkeysDesc": "使用 WebAuthn/FIDO2 凭据进行无密码登录",
|
||
"passkeyName": "通行密钥名称",
|
||
"passkeyUvPreferred": "首选",
|
||
"passkeyUvRequired": "必需",
|
||
"passkeyUvDiscouraged": "不鼓励",
|
||
"addPasskey": "添加通行密钥",
|
||
"noPasskeys": "未注册通行密钥。",
|
||
"passkeyAdded": "通行密钥已添加",
|
||
"passkeyAddFailed": "添加通行密钥失败",
|
||
"passkeyDeleted": "通行密钥已删除",
|
||
"passkeyDeleteFailed": "删除通行密钥失败",
|
||
"done": "完成",
|
||
"secretCopied": "密钥已复制到剪贴板",
|
||
"apiKeyNameRequired": "密钥名称为必填项",
|
||
"apiKeyCreated": "API 密钥 \"{{name}}\" 已创建",
|
||
"apiKeyCreateFailed": "创建 API 密钥失败",
|
||
"apiKeyUser": "用户",
|
||
"apiKeyExpires": "过期时间",
|
||
"apiKeyRevoked": "API 密钥 \"{{name}}\" 已撤销",
|
||
"apiKeyRevokeFailed": "撤销 API 密钥失败",
|
||
"passwordFieldsRequired": "需要提供当前密码和新密码",
|
||
"passwordMismatch": "密码不匹配",
|
||
"passwordTooShort": "密码长度至少为6个字符",
|
||
"passwordUpdated": "密码更新成功",
|
||
"passwordUpdateFailed": "密码更新失败",
|
||
"deletePasswordRequired": "删除账户需要提供密码",
|
||
"deleteFailed": "账户删除失败",
|
||
"deleting": "删除中...",
|
||
"colorPickerTooltip": "打开颜色选择器",
|
||
"themeSystem": "系统",
|
||
"themeLight": "浅色",
|
||
"themeDark": "深色",
|
||
"themeDracula": "Dracula",
|
||
"themeCatppuccin": "Catppuccin",
|
||
"themeNord": "Nord",
|
||
"themeSolarized": "Solarized",
|
||
"themeTokyoNight": "Tokyo Night",
|
||
"themeOneDark": "One Dark",
|
||
"themeGruvbox": "Gruvbox"
|
||
}
|
||
}
|
||
},
|
||
"tmuxMonitor": {
|
||
"title": "Tmux 监视器",
|
||
"failedToLoadHosts": "加载主机失败",
|
||
"failedToLoad": "加载tmux会话失败",
|
||
"tmuxUnavailable": "此主机未安装tmux",
|
||
"noSessions": "此主机上没有tmux会话",
|
||
"noHostSelected": "未选择主机",
|
||
"attached": "已连接",
|
||
"detached": "已断开",
|
||
"attach": "连接",
|
||
"editTags": "编辑标签",
|
||
"tagsHint": "逗号分隔的标签(例如:YOLO, lab, training)",
|
||
"tagsSaved": "标签已保存",
|
||
"tagsSaveFailed": "标签保存失败",
|
||
"searchPlaceholder": "跨会话搜索输出...",
|
||
"searchResults": "{{count}} 个匹配",
|
||
"searchFailed": "搜索失败",
|
||
"selectPaneHint": "选择一个窗格以预览其输出",
|
||
"closePreview": "关闭预览",
|
||
"newSession": "新建会话",
|
||
"newSessionHint": "会话名称(字母、数字、_ @ % + = -)",
|
||
"newSessionPlaceholder": "my-session",
|
||
"create": "创建",
|
||
"sessionCreated": "会话 \"{{name}}\" 已创建",
|
||
"sessionCreateFailed": "创建会话失败",
|
||
"splitRight": "向右拆分",
|
||
"splitDown": "向下拆分",
|
||
"splitFailed": "拆分窗格失败",
|
||
"newWindow": "新建窗口",
|
||
"windowCreateFailed": "创建窗口失败",
|
||
"attachSessionTooltip": "附加到 {{session}}",
|
||
"refresh": "刷新",
|
||
"refreshFailed": "刷新会话失败",
|
||
"collapseAll": "全部折叠",
|
||
"expandAll": "全部展开",
|
||
"moreActions": "更多操作",
|
||
"sessionStats": "会话统计",
|
||
"renameSessionTitle": "重命名会话 \"{{name}}\"",
|
||
"rename": "重命名",
|
||
"sessionRenamed": "会话已重命名为 \"{{name}}\"",
|
||
"sessionRenameFailed": "重命名会话失败",
|
||
"editTagsTitle": "编辑 \"{{name}}\" 的标签",
|
||
"killPane": "终止窗格",
|
||
"resizeTree": "拖动调整大小 — 双击重置",
|
||
"reattach": "重新附加(修复显示错乱)",
|
||
"killWindow": "终止窗口",
|
||
"killWindowTitle": "终止会话 \"{{session}}\" 的窗口 {{index}}?",
|
||
"killWindowBody": "该窗口中的所有窗格和进程都将被终止。终止最后一个窗口将结束会话。",
|
||
"windowKillFailed": "终止窗口失败",
|
||
"statusActivity": "活动",
|
||
"statusWindows": "窗口",
|
||
"statusPanes": "窗格",
|
||
"statusTags": "标签",
|
||
"killPaneTitle": "终止窗格 {{id}}?",
|
||
"killPaneBody": "该窗格中运行的进程将被终止。终止最后一个窗格将关闭其窗口。",
|
||
"paneKillFailed": "终止窗格失败",
|
||
"killSessionTitle": "终止会话 \"{{name}}\"?",
|
||
"killSessionBody": "该会话中的所有窗口和运行中的进程都将被终止。此操作无法撤销。",
|
||
"kill": "终止",
|
||
"sessionKilled": "会话 \"{{name}}\" 已终止",
|
||
"sessionKillFailed": "终止会话失败",
|
||
"hostUnreachable": "无法连接到主机。请检查主机是否在线且可访问。",
|
||
"noServer": "此主机上未运行 tmux 服务器。",
|
||
"searchTruncated": "部分结果 — 搜索覆盖每个窗格的最近 {{lines}} 行,最多 {{panes}} 个窗格。",
|
||
"closeSearchResults": "关闭搜索结果",
|
||
"retry": "重试",
|
||
"noHosts": "没有可用的 SSH 主机",
|
||
"noHostsHint": "在 SSH 主机上启用 Tmux Monitor 选项(主机管理器 → 终端标签页)以监控其 tmux 会话。",
|
||
"tmuxInstallHint": "使用以下命令在主机上安装:",
|
||
"attachTooltip": "打开到 {{host}} 的终端",
|
||
"attachTooltipPane": "打开到 {{host}} 的终端 — tmux 会话 {{session}}",
|
||
"timeJustNow": "刚刚",
|
||
"timeMinutes": "{{count}} 分钟前",
|
||
"timeHours": "{{count}} 小时前",
|
||
"timeDays": "{{count}} 天前"
|
||
},
|
||
"mobileKeyboard": {
|
||
"shift": "Shift",
|
||
"ctrl": "Ctrl",
|
||
"esc": "Esc",
|
||
"tab": "Tab",
|
||
"backTab": "⇥",
|
||
"arrowUp": "Arrow Up",
|
||
"arrowDown": "Arrow Down",
|
||
"arrowLeft": "Arrow Left",
|
||
"arrowRight": "Arrow Right",
|
||
"home": "Home",
|
||
"end": "End",
|
||
"pageUp": "PgUp",
|
||
"pageDown": "PgDn",
|
||
"delete": "Del",
|
||
"paste": "粘贴",
|
||
"editQuickKeys": "编辑快速键",
|
||
"quickKeysTitle": "快速键",
|
||
"quickKeysDesc": "点击 × 删除。最多支持 8 个字符。",
|
||
"quickKeyPlaceholder": "例如 sudo ",
|
||
"addQuickKey": "添加",
|
||
"removeQuickKey": "删除",
|
||
"resetDefaults": "重置为默认值",
|
||
"done": "完成"
|
||
},
|
||
"serial": {
|
||
"title": "串口",
|
||
"portLabel": "端口",
|
||
"portPlaceholder": "/dev/ttyUSB0 或 COM3",
|
||
"baudRateLabel": "波特率",
|
||
"dataBitsLabel": "数据",
|
||
"stopBitsLabel": "停止位",
|
||
"parityLabel": "奇偶校验",
|
||
"parityNone": "无",
|
||
"parityEven": "偶校验",
|
||
"parityOdd": "奇校验",
|
||
"connect": "连接串口",
|
||
"disconnect": "断开",
|
||
"refreshPorts": "刷新端口",
|
||
"connected": "已连接到 {{path}},波特率 {{baud}}",
|
||
"disconnected": "串口已断开",
|
||
"connectionError": "打开串口失败",
|
||
"wsError": "WebSocket 错误",
|
||
"errorNoServerUrl": "未配置服务器 URL",
|
||
"notSupportedTitle": "不支持串口",
|
||
"notSupported": "串口连接需要支持 Web Serial API 的浏览器(Chrome、Edge 或 Firefox 151+),或者 Termix 桌面应用。",
|
||
"hideHint": "您可以在用户资料 > 外观 > 侧边栏 > 导航中隐藏串口标签页。",
|
||
"browserPickerHint": "点击连接,您的浏览器将打开端口选择器以选择设备。"
|
||
},
|
||
"metricsHistory": {
|
||
"title": "指标历史",
|
||
"historySuffix": "历史",
|
||
"cpuMemoryDisk": "CPU / 内存 / 磁盘",
|
||
"network": "网络",
|
||
"download": "RX",
|
||
"upload": "TX",
|
||
"noData": "此时间范围内没有可用的历史数据。",
|
||
"custom": "自定义",
|
||
"to": "至",
|
||
"apply": "应用",
|
||
"viewHistory": "查看历史"
|
||
},
|
||
"alerts": {
|
||
"tabFirings": "告警",
|
||
"tabRules": "规则",
|
||
"tabChannels": "通道",
|
||
"noFirings": "没有未确认告警",
|
||
"noRules": "未配置告警规则",
|
||
"noChannels": "未配置通知渠道",
|
||
"rulesDesc": "告警规则触发通知",
|
||
"channelsDesc": "告警通知的发送渠道",
|
||
"acknowledge": "确认告警",
|
||
"ackAll": "全部确认",
|
||
"allAcknowledged": "所有告警已确认",
|
||
"ackFailed": "确认告警失败",
|
||
"ackAllFailed": "确认所有告警失败",
|
||
"showAcknowledged": "显示全部",
|
||
"hideAcknowledged": "隐藏已确认",
|
||
"addChannel": "添加渠道",
|
||
"editChannel": "编辑渠道",
|
||
"channelName": "名称",
|
||
"channelType": "类型",
|
||
"channelNameRequired": "名称为必填项",
|
||
"webhookUrl": "URL",
|
||
"webhookUrlRequired": "Webhook URL 为必填项",
|
||
"webhookDesc": "每次告警触发时向该 URL 发送 POST JSON 数据",
|
||
"ntfyServer": "服务器 URL",
|
||
"ntfyTopic": "主题",
|
||
"ntfyTopicRequired": "主题为必填项",
|
||
"ntfyToken": "访问令牌(选填)",
|
||
"channelSaveFailed": "保存渠道失败",
|
||
"test": "测试",
|
||
"testSent": "测试通知已发送",
|
||
"testFailed": "测试通知失败",
|
||
"addRule": "添加告警规则",
|
||
"editRule": "编辑告警规则",
|
||
"ruleName": "规则名称",
|
||
"ruleNameRequired": "名称为必填项",
|
||
"triggerType": "触发条件",
|
||
"thresholdValue": "阈值(%)",
|
||
"durationSeconds": "持续时间(秒,0 表示立即触发)",
|
||
"cooldownMinutes": "冷却时间(分钟)",
|
||
"channels": "通知渠道",
|
||
"noChannelsHint": "请先在渠道标签页中添加渠道",
|
||
"ruleSaveFailed": "保存规则失败"
|
||
}
|
||
}
|