mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-08-30 02:41:34 +00:00
+4







![dependabot[bot]](/assets/img/avatar_default.png)
7ae1648c25
* feat: redesign host/credential sidebars with synced preferences and manual drag-to-reorder * chore: run format * chore(deps-dev): bump @types/pg in the dev-patch-updates group (#1162) Bumps the dev-patch-updates group with 1 update: [@types/pg](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pg). Updates `@types/pg` from 8.20.0 to 8.20.3 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pg) --- updated-dependencies: - dependency-name: "@types/pg" dependency-version: 8.20.3 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-dev): bump the dev-minor-updates group with 4 updates (#1163) Bumps the dev-minor-updates group with 4 updates: [react-hook-form](https://github.com/react-hook-form/react-hook-form), [react-icons](https://github.com/react-icons/react-icons), [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite). Updates `react-hook-form` from 7.79.0 to 7.84.0 - [Release notes](https://github.com/react-hook-form/react-hook-form/releases) - [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md) - [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.79.0...v7.84.0) Updates `react-icons` from 5.6.0 to 5.7.0 - [Release notes](https://github.com/react-icons/react-icons/releases) - [Commits](https://github.com/react-icons/react-icons/compare/v5.6.0...v5.7.0) Updates `typescript-eslint` from 8.61.1 to 8.66.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.66.0/packages/typescript-eslint) Updates `vite` from 8.0.16 to 8.2.0 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/create-vite@8.2.0/packages/vite) --- updated-dependencies: - dependency-name: react-hook-form dependency-version: 7.84.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-minor-updates - dependency-name: react-icons dependency-version: 5.7.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-minor-updates - dependency-name: typescript-eslint dependency-version: 8.66.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-minor-updates - dependency-name: vite dependency-version: 8.2.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dev-minor-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 prod-patch-updates group with 3 updates (#1164) Bumps the prod-patch-updates group with 3 updates: [jose](https://github.com/panva/jose), [js-yaml](https://github.com/nodeca/js-yaml) and [nanoid](https://github.com/ai/nanoid). Updates `jose` from 6.2.7 to 6.2.8 - [Release notes](https://github.com/panva/jose/releases) - [Changelog](https://github.com/panva/jose/blob/main/CHANGELOG.md) - [Commits](https://github.com/panva/jose/compare/v6.2.7...v6.2.8) Updates `js-yaml` from 5.2.2 to 5.2.3 - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodeca/js-yaml/compare/5.2.2...5.2.3) Updates `nanoid` from 6.0.0 to 6.0.1 - [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/6.0.0...6.0.1) --- updated-dependencies: - dependency-name: jose dependency-version: 6.2.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-patch-updates - dependency-name: js-yaml dependency-version: 5.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-patch-updates - dependency-name: nanoid dependency-version: 6.0.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 undici in the prod-minor-updates group (#1165) Bumps the prod-minor-updates group with 1 update: [undici](https://github.com/nodejs/undici). Updates `undici` from 8.9.0 to 8.10.0 - [Release notes](https://github.com/nodejs/undici/releases) - [Commits](https://github.com/nodejs/undici/compare/v8.9.0...v8.10.0) --- updated-dependencies: - dependency-name: undici dependency-version: 8.10.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates ... 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 major-updates group with 2 updates (#1166) Bumps the major-updates group with 2 updates: [@types/better-sqlite3](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/better-sqlite3) and [jsdom](https://github.com/jsdom/jsdom). Updates `@types/better-sqlite3` from 7.6.13 to 9.6.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/better-sqlite3) Updates `jsdom` from 29.1.1 to 30.0.1 - [Release notes](https://github.com/jsdom/jsdom/releases) - [Commits](https://github.com/jsdom/jsdom/compare/v29.1.1...v30.0.1) --- updated-dependencies: - dependency-name: "@types/better-sqlite3" dependency-version: 9.6.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: major-updates - dependency-name: jsdom dependency-version: 30.0.1 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: stop resyncAutoIncrement failing on tables without an id column (#1173) The Postgres branch asked pg_get_serial_sequence(table, 'id') about every table a fixture had inserted into. That function raises 42703 when the column does not exist, rather than returning null, so any seed touching a table keyed on something else took down the fixture. host_sidebar_preferences is keyed on user_id and has no id at all, which is why the Postgres job on dev-2.7.0 fails for every pull request. Drive the lookup from information_schema so a missing id column yields no row instead of an error. A text primary key still returns a null sequence and is still skipped, as before. * chore: install the git hooks that were already configured (#1174) husky, lint-staged, commitlint and their config have been in the repo since v1.8.0 (#429): .husky/pre-commit runs lint-staged, .husky/commit-msg runs commitlint, the lint-staged globs are in package.json and the commitlint rules in .commitlintrc.json. None of it has ever run. husky only takes effect once it sets core.hooksPath, and that happens in the prepare lifecycle script, which the package did not define -- so every clone installed the tooling and left the hooks unwired. That is why formatting keeps failing in CI rather than locally: three of the four open pull requests fail lint-and-build on prettier alone, touching between one and five files each, and the check is the first place anyone finds out. prepare falls back to true so a checkout without a .git directory cannot break installation. The Docker build passes --ignore-scripts, so it never runs this at all. Also pin the Prettier extension to the repo's own copy via prettier.prettierPath, and let .vscode/settings.json out of .gitignore so it applies to everyone. The extension bundles its own prettier otherwise, which formats to a different version's rules than the one CI enforces. * fix: derive the ssh_credentials rebuild from the live schema (#1172) The startup rebuild that drops the old username NOT NULL constraint restated the table's columns as a literal and then copied rows with INSERT INTO temp SELECT <every live column>. The table has gained columns since that literal was written — cert_public_key, pin, sort_order and sync_id are all added by addColumnIfNotExists before the rebuild runs — so the destination was narrower than the source. SQLite rejected the INSERT on a column count mismatch, the error was swallowed as a warning, and the constraint survived every restart. Read the CREATE TABLE statement back from sqlite_master and rewrite just the table name and the username constraint, so the replacement table cannot fall behind the real one. Copy rows by explicit column name rather than positionally, and replay the table's indexes, which DROP TABLE would otherwise take with it along with the sync_id uniqueness. * fix: make audit_logs.user_id nullable on fresh SQLite installs (#1171) The audit trail is meant to outlive the account it belongs to: deleting a user nulls user_id and keeps username for attribution. schema.ts, the Drizzle migrations and AuditLogRepository.anonymizeByUserId were all written against that, but the runtime bootstrap still created user_id TEXT NOT NULL. A second CREATE TABLE IF NOT EXISTS further down migrateSchema() had the correct nullable column, but it can never run — the primary bootstrap has already created the table, so IF NOT EXISTS is a no-op. Every fresh install therefore got the old constraint, and user deletion failed with "NOT NULL constraint failed: audit_logs.user_id" for any account that had logged in at least once, via both the admin delete path and the OIDC account-link cleanup. Fix the primary bootstrap, and rebuild the table on existing databases using the same pattern already used for ssh_credentials.username, since SQLite cannot ALTER a column. * fix: key the sync upsert on the row it just looked up (#1175) A sync push locates the stored row twice -- once to decide insert vs update, once to write it -- and the two lookups were spelled out separately. Only the read knew about singleton entities; the write always keyed on table.id. userPreferences is the only singleton, and user_preferences is the one synced table with no id column: its primary key is user_id. table.id was therefore undefined, and drizzle emitted a comparison with nothing on its left: ( = ? and "user_preferences"."user_id" = ?) The insert branch was unaffected, so the first push of preferences succeeded and every push after it -- the steady state -- failed with SqliteError: near "=": syntax error. Preference sync never converged, and both sides ship the same handler, so the desktop's embedded backend failed identically. Extract the lookup into locateSyncRow() and use it for the read, the update and the tombstone delete, so the three cannot drift apart again. The tombstone path already handled singletons correctly; it now shares the one expression rather than keeping a third copy of it. * fix: refuse an SSH connection whose host id resolves elsewhere (#1176) A client identifies a host by the numeric row id of the database it is displaying. With the desktop connection origin set to "Remote server", that id is resolved against the sync server's ssh_data instead, and the two autoincrement sequences need not line up -- they diverge as soon as each side accumulates inserts and deletes in a different order. resolveHostById() then returns whichever row owns that id here, and the handler takes the address, the credentials, the jump hosts and the stored host key from it. The session opens on a machine the user did not pick, while the host list, host details and export all keep showing the right one. Commands run on the wrong server, a host key mismatch is reported for the wrong reason, and anything typed at the prompt goes to the wrong place. Compare the resolved address against the one the client sent, and refuse when they disagree. Checking at the point the row is loaded covers every use of it rather than each site separately. Addresses are compared with brackets stripped and casing folded, so an IPv6 literal or a hostname written differently is not treated as a different machine; when the server has no address stored, the client's own details are used as before. This stops the wrong-machine session. It does not make delegated connections work when the ids have drifted -- that needs the host to be addressed by syncId across the boundary, which the connection protocol does not currently carry. * fix: refuse SFTP and Docker console on a mismatched host id too (#1177) The wrong-machine guard added for SSH covered one of the paths that resolve a client-supplied host id against this server's ssh_data. The file manager and the Docker console take the same id from the same client and dial whatever row owns it here. The file manager then browses, edits and deletes files on that machine, and the Docker console attaches to its daemon -- both while the UI shows the host the user actually picked. Reuse hostAddressMismatch at each point the row is loaded. The two file manager sites sit inside "failed to resolve credentials, carry on" handlers, so the refusal is a distinct error type those catches rethrow; swallowing it would resume the connection this is meant to stop. The Docker console reports over its socket, as it does for every other refusal. The user-facing wording now lives next to the check instead of being written out at each site. Still uncovered, and not fixable this way: file-manager's transfer session, jump-host-chain and the proxmox routes resolve an id with no client-supplied address to compare it against. Those need the host to be addressed by syncId across the boundary. * feat: address hosts by syncId when a connection is delegated (#1178) A numeric host id belongs to the database that produced it. The desktop app lists hosts from its embedded database and names them by row id, so when a connection is delegated to a sync server that id is resolved against a different table, whose autoincrement sequence has no reason to agree. The row it lands on is a different machine, and it supplies the address, the credentials, the jump hosts and the stored host key. #1176 and #1177 made that refuse rather than connect. Refusing is right, but it leaves "Remote server" unusable once the ids have drifted, which is the state the reporter was in. syncId already names a host identically on both sides -- remote sync relies on it, ssh_data.sync_id is unique, and the API already returns it. It just never reached the backend: hostToSSHHost() builds its result field by field and dropped it. Carry it through, and resolve with it when it is present: resolveHostBySyncId(syncId, userId) // translate, then reuse -> findHostIdBySyncId(syncId) // this database's own row id -> resolveHostById(hostId, userId) // permissions, decryption, audit The translation is deliberately not scoped to a user -- sync_id is unique across the table and a shared host belongs to someone else -- so access stays with the permission check in the id-based path, which the new tests cover. An unknown syncId resolves to nothing rather than falling back to the numeric id: an unknown host is precisely where guessing picks the wrong machine. Clients that send no syncId are unchanged, address comparison included, so an older desktop keeps its safety net instead of breaking. * fix(homepage): make the System Overview update indicator able to fire (#1168) The widget's "Update available" row and orange version text were unreachable, for two independent reasons that each alone would have been enough. It called `getVersionInfo(false)`, and `checkRemote=false` makes /version return early with `{localVersion, status: "update_check_disabled"}` -- no GitHub fetch, no remote version, nothing to compare. It then read `info.updateAvailable`, a field the route does not return in either mode; the success response carries status, localVersion, version, remoteVersion, latest_release, cached and cache_age. `Boolean(undefined)` is false, always. The read type-checked only because `getVersionInfo()` is declared as `Record<string, unknown>`, so a property name that does not exist is indistinguishable from one that does. Let the endpoint do the comparison and read `status === "requires_update"`, which is what the dashboard stats bar and the profile panel badge already do. The row's label was `homepage.overviewUpdate`, whose English string is "Up to date" -- as the label of an update-available row it read "Up to date / Update available". Nobody has seen that, because the row has never rendered; fixing the indicator without the label would have shipped it. Give it its own key. That leaves `homepage.overviewUpdate` unused; it is left in place rather than removed, since it would be the natural value for an always-visible row and that is a product decision, not part of this fix. * fix: capture real client IP for SSH login alerts behind reverse proxy (#1169) * fix: capture real client IP for SSH login alerts behind reverse proxy The WebSocket terminal handler used req.socket.remoteAddress for the "user logged in" alert message, which is the immediate TCP peer (the reverse proxy) rather than the actual client IP forwarded via X-Forwarded-For. This made trust-proxy config on Traefik irrelevant since Termix never read the header for this code path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * test: cover getClientIp forwarded-header and socket fallback paths Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * fix: keep already-shared hosts sharing their SSH authentication (#1179) Sharing a host used to hand the owner's SSH authentication to the recipient unconditionally. 2.6.1 put that behind ssh_data.share_ssh_auth, added as NOT NULL DEFAULT 0. Existing rows took the default, so every host shared before the upgrade stopped supplying credentials the moment the column appeared. The snapshot in collectProtocolSnapshots() is guarded by host.shareSshAuth, so nothing was captured; resolveRecipientSharedHostAuthentication() then fell through to "required" and the recipient got "No valid authentication method provided" on a host that had worked the day before. Downgrading to 2.6.0 restored it, since that code has no such column to consult. Backfill the flag for hosts that already appear in host_access. That is where the previous behaviour was in effect and where the owner had already agreed to share; hosts nobody has shared keep the new default and stay off until their owner shares them. Guarded by a settings key so it runs once. Without that, an owner who turns sharing back off would have it turned on again by the next restart. * fix: let a single credential disable 2FA again (#1180) The disable dialog has one field, labelled "Enter TOTP code or password", and its caller passes that value as disableTOTP(input) -- so it arrives as `password` with `totp_code` undefined. That call has been unchanged since v2.3.0. 2.5.1 changed the route to require both: if (!totp_code || (!userRecord.isOidc && !password)) -> 400 replacing `const credential = password || totp_code`. The first check has rejected every attempt since, whatever the user typed, so nobody has been able to turn 2FA off -- the client reports the generic "Failed to disable 2FA", which hides which check failed. Take one credential again and try it as a TOTP code, a backup code, then the account password. verifyTotpReauth still refuses the password itself, so that comparison stays in the route; an OIDC user has no password hash and reaches neither. The backup-codes route has the same shape but no caller in the UI -- its codes are returned when TOTP is enabled -- so it is left alone rather than changed blind. * fix: attach user-managed CA certificates over SFTP too (#1181) opkssh-cert-auth.ts exports two helpers that end in the same _applyCertToConnection: setupOPKSSHCertAuth, and setupCACertAuth for user-managed CA-signed -cert.pub files. The file manager called the first one twice and the second one never. So a host whose key is paired with a CA-signed certificate authenticated in a terminal and failed over SFTP, while OPKSSH certificates -- going through the other helper -- worked in both. The file manager was not missing certificate support in general; it was missing one of the two paths into it. The connection also never carried the certificate to begin with: cert_public_key was not among the fields copied into resolvedCredentials, so both places that build an SFTP connection now read it and attach it where the private key is prepared -- the dedicated transfer session and the main connect route. An unusable certificate is logged and skipped rather than failing the connection. The key alone may still be accepted, which is what happened while this was not wired up at all, and turning that into a hard failure would break setups that currently work. Reported in #1160 with the call-site asymmetry already traced; the reporter noted they could not confirm the link to their failure, having moved off SSH CAs. The asymmetry is real either way and reproduces the symptom exactly. * fix: authenticate the desktop Docker console WebSocket (#1182) The console WS opted out of the query token: buildOriginWsUrl({ ..., includeLocalJwt: false }) leaving it with no credential at all on the desktop. The browser WebSocket API cannot set an Authorization header, and while Electron's main process injects a remembered JWT cookie, it requires an exact origin match -- the cookie belongs to the API origin (localhost:30001) while the console connects to 127.0.0.1:30009, so nothing is attached. The backend then closes the handshake with 1008 before it logs anything, which is why the log has no docker-console entries while stats and logs polling keep succeeding on the same host. The web build is unaffected: it connects same-origin and its cookie is sent normally. Drop the opt-out so the console carries the local JWT like the SSH terminal does -- the same token, the same query parameter, and the backend already reads it there. Guacamole passes includeLocalJwt: false too, but rdp/vnc/telnet always resolve to "remote", so that call never reaches the local branch. * fix: use getClientIp in getRequestMeta for correct audit-log IPs (#1183) * fix: capture real client IP for SSH login alerts behind reverse proxy The WebSocket terminal handler used req.socket.remoteAddress for the "user logged in" alert message, which is the immediate TCP peer (the reverse proxy) rather than the actual client IP forwarded via X-Forwarded-For. This made trust-proxy config on Traefik irrelevant since Termix never read the header for this code path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * test: cover getClientIp forwarded-header and socket fallback paths Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * fix: use getClientIp in getRequestMeta for correct audit-log IPs getRequestMeta had near-duplicate, strictly worse forwarded-header logic: the array branch didn't split/trim, there was no socket-peer fallback, and it returned "" instead of "unknown". Delegate to getClientIp so the audit trail gets the same correctness as the terminal login-alert path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * feat: add terminal image handoff (#1170) * chore: sync Crowdin translations * fix(homepage): make the System Overview update indicator able to fire (#1168) The widget's "Update available" row and orange version text were unreachable, for two independent reasons that each alone would have been enough. It called `getVersionInfo(false)`, and `checkRemote=false` makes /version return early with `{localVersion, status: "update_check_disabled"}` -- no GitHub fetch, no remote version, nothing to compare. It then read `info.updateAvailable`, a field the route does not return in either mode; the success response carries status, localVersion, version, remoteVersion, latest_release, cached and cache_age. `Boolean(undefined)` is false, always. The read type-checked only because `getVersionInfo()` is declared as `Record<string, unknown>`, so a property name that does not exist is indistinguishable from one that does. Let the endpoint do the comparison and read `status === "requires_update"`, which is what the dashboard stats bar and the profile panel badge already do. The row's label was `homepage.overviewUpdate`, whose English string is "Up to date" -- as the label of an update-available row it read "Up to date / Update available". Nobody has seen that, because the row has never rendered; fixing the indicator without the label would have shipped it. Give it its own key. That leaves `homepage.overviewUpdate` unused; it is left in place rather than removed, since it would be the natural value for an always-visible row and that is a product decision, not part of this fix. * fix: capture real client IP for SSH login alerts behind reverse proxy (#1169) * fix: capture real client IP for SSH login alerts behind reverse proxy The WebSocket terminal handler used req.socket.remoteAddress for the "user logged in" alert message, which is the immediate TCP peer (the reverse proxy) rather than the actual client IP forwarded via X-Forwarded-For. This made trust-proxy config on Traefik irrelevant since Termix never read the header for this code path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * test: cover getClientIp forwarded-header and socket fallback paths Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * feat: add terminal image handoff Add authenticated browser upload and clipboard image handoff for terminal agents. Normalize images through Sharp, enforce storage and request limits, preserve host-visible paths, and provide a stable three-button terminal toolbar. * docs: document terminal image handoff deployment --------- Co-authored-by: LukeGus <bugattiguy527@gmail.com> Co-authored-by: kacperpietrzyk <105545577+kacperpietrzyk@users.noreply.github.com> Co-authored-by: Brennan Neoh <497569+brennanneoh@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * fix(desktop): stop suppressing the update prompt, and make the version badge reachable (#1167) * fix(desktop): stop suppressing the update prompt for users who need it The startup update modal stored its dismissal under the local app version rather than the remote version being offered, and the up-to-date branch wrote that key with no user interaction at all. A user who launched while current had their own version recorded; once the next release shipped, `dismissedVersion === currentVersion` still held and the modal was skipped on every launch. It reappeared only after the user had already updated -- the inverse of what it is for. Present since v2.3.0. Key the dismissal on the offered remote version instead. The change is backward compatible: an existing key holding 2.6.0 compares unequal against a remote 2.6.1, so affected installs are prompted on their next launch. When the check itself fails there is no remote version, so nothing is recorded and no future prompt is suppressed. That left the version badge as the only remaining signal, and it was an inert span on both surfaces that render it -- the profile panel and the dashboard stats bar -- even though the `getVersionInfo()` response it is built from already carries `latest_release.html_url`. Extract the duplicated badge into `components/version-badge.tsx` and make the update case a link to the release, with an accessible name that says where it goes. The beta and stable cases stay inert. `getVersionInfo()` returned `Record<string, unknown>`, so the release URL was unreachable without a cast; give it a `VersionInfo` type that keeps an index signature, since `SystemOverviewWidget` reads `updateAvailable` off the same response. * test: cover the read that actually reaches the badge The extracted VersionBadge is unit-tested, but the line that decides whether it ever receives a URL -- pulling `latest_release.html_url` out of the version response -- was duplicated at both call sites and asserted nowhere. A wrong property there compiles (the response type keeps an index signature) and every existing test still passes. Give it a name, `releaseUrlFrom`, use it from both surfaces, and test it: the happy path, a response with no release, a release with no URL, and a missing response, since the caller's fetch can reject. Empty string is the contract the badge reads as "nothing to link to", so it stays an inert span rather than rendering a dead anchor. * docs: state the index signature's real reason The comment claimed the version endpoint carries fields beyond the typed ones, citing `updateAvailable`. It does not -- `GET /version` returns status, localVersion, version, remoteVersion, latest_release, cached and cache_age, and nothing else. SystemOverviewWidget reads `updateAvailable` off it regardless, which is why the permissive index signature has to stay, but that is a stale read rather than an undocumented field. Say so accurately. * Send alerts in Discord channels with Webhooks (#1158) * feat(utils): add discord webhook sender Add a utility to send alert embeds to Discord webhooks. * fix(utils): validate DNS and use global fetch for outbound requests Prevent private destination access and rely on global fetch after DNS validation. * chore(logger): include extra context in logs Show additional sanitized context entries for clearer diagnostics. * feat(alerts): support discord channel type in routes and engine Accept discord channels and route alerts to the Discord sender. * feat(ui): add Discord option to notification channel dialog Allow creating/editing Discord webhook channels with username/avatar. * fix(ui/api): accept structured config payload for notification channels Allow the client to pass structured config objects (or strings) when creating/updating channels. * chore: sync Crowdin translations * fix(homepage): make the System Overview update indicator able to fire (#1168) The widget's "Update available" row and orange version text were unreachable, for two independent reasons that each alone would have been enough. It called `getVersionInfo(false)`, and `checkRemote=false` makes /version return early with `{localVersion, status: "update_check_disabled"}` -- no GitHub fetch, no remote version, nothing to compare. It then read `info.updateAvailable`, a field the route does not return in either mode; the success response carries status, localVersion, version, remoteVersion, latest_release, cached and cache_age. `Boolean(undefined)` is false, always. The read type-checked only because `getVersionInfo()` is declared as `Record<string, unknown>`, so a property name that does not exist is indistinguishable from one that does. Let the endpoint do the comparison and read `status === "requires_update"`, which is what the dashboard stats bar and the profile panel badge already do. The row's label was `homepage.overviewUpdate`, whose English string is "Up to date" -- as the label of an update-available row it read "Up to date / Update available". Nobody has seen that, because the row has never rendered; fixing the indicator without the label would have shipped it. Give it its own key. That leaves `homepage.overviewUpdate` unused; it is left in place rather than removed, since it would be the natural value for an always-visible row and that is a product decision, not part of this fix. * fix: capture real client IP for SSH login alerts behind reverse proxy (#1169) * fix: capture real client IP for SSH login alerts behind reverse proxy The WebSocket terminal handler used req.socket.remoteAddress for the "user logged in" alert message, which is the immediate TCP peer (the reverse proxy) rather than the actual client IP forwarded via X-Forwarded-For. This made trust-proxy config on Traefik irrelevant since Termix never read the header for this code path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * test: cover getClientIp forwarded-header and socket fallback paths Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * chore: add url to SENSITIVE_FIELDS for discord url * fix: enforce SSRF protection on outbound fetches Use `undici.fetch` with the custom DNS lookup hook to ensure the validated DNS resolution is the one used for the connection. Fix DNS lookup/address validation bugs and add coverage for private, public and invalid addresses, including the resolution issue affecting Discord endpoints. * chore: prettier format * fix: validate all DNS addresses and close dispatcher * fix DNS lookup validation and callback handling * update safe outbound fetch tests * ensure created dispatcher is properly closed * chore: remode url from SENSITIVE_FIELDS for other logs --------- Co-authored-by: LukeGus <bugattiguy527@gmail.com> Co-authored-by: kacperpietrzyk <105545577+kacperpietrzyk@users.noreply.github.com> Co-authored-by: Brennan Neoh <497569+brennanneoh@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> * fix tmux UTF-8 path handling (#1157) Co-authored-by: Carl <scarlettme@qq.com> * chore: update package lock * chore: update gitnore * fix: [BUG] (#1049) https://github.com/Termix-SSH/Support/issues/1049 * fix: test commitlint path fix (#1021) * fix: SGR mouse-tracking escape codes printed as text (#1023) * fix: quote $1 in commit-msg hook so it works from git worktrees * fix: [BUG] could not connect to the database (#1057) https://github.com/Termix-SSH/Support/issues/1057 * fix: [BUG] VNC connect macOS screen sharing failed (#1063) https://github.com/Termix-SSH/Support/issues/1063 * fix: [BUG] Meta key (#1075) https://github.com/Termix-SSH/Support/issues/1075 * fix: [BUG] Remote sync doesn't work with Termix behind nginx proxy (#1085) https://github.com/Termix-SSH/Support/issues/1085 * fix: [BUG] webhook not working (#1080) https://github.com/Termix-SSH/Support/issues/1080 * fix: [BUG] First server sync doesn't refresh UI (#1084) https://github.com/Termix-SSH/Support/issues/1084 * fix: [BUG] How to enable SSL using custom certificate (#1083) https://github.com/Termix-SSH/Support/issues/1083 * fix: [BUG] Sudo Password Auto-fill Persistance (#1098) https://github.com/Termix-SSH/Support/issues/1098 * feat: [FEATURE] Expand Snippets Function (#1031) https://github.com/Termix-SSH/Support/issues/1031 * feat: [FEATURE] (#1055) https://github.com/Termix-SSH/Support/issues/1055 * feat: [FEATURE] Support for Headscale API Keys (hskey prefix) and Custom API Endpoints (#1013) https://github.com/Termix-SSH/Support/issues/1013 * feat: [FEATURE] Allow paste on non https (#1026) https://github.com/Termix-SSH/Support/issues/1026 * feat: be-azerty layout (#1073) https://github.com/Termix-SSH/Support/issues/1073 * feat: Keyboard shortcuts to move between open tabs (#1069) https://github.com/Termix-SSH/Support/issues/1069 * feat: Session Logs as a downloadable text file (#1058) https://github.com/Termix-SSH/Support/issues/1058 * fix: persist and auto-fill saved SSH and sudo passwords * fix: persist docker runtime selection and docker manager UI issues * feat: Allow excluding specific mounts from disk usage metrics (#1046) https://github.com/Termix-SSH/Support/issues/1046 * feat: Expand Snippets Function (#1031) https://github.com/Termix-SSH/Support/issues/1031 * chore: restore the prettier baseline on dev-2.7.0 (#1185) Five files on dev-2.7.0 do not match prettier, so `npx prettier --check .` fails and takes lint-and-build with it — on every pull request, whatever it changes. Formatting only, produced by `npx prettier --write` on exactly the files the check names. No logic touched: tsc passes for both configs, backend 148 files / 1106 tests and UI 71 files / 479 tests all pass. * test: keep the tmux escaping test runnable on Windows (#1184) The escaping check ran its command through /bin/sh. That binary does not exist on Windows, and Windows is a supported platform for the desktop app, so `npm test` fails there on a test about string quoting. CI is ubuntu-only and would never see it. Assert the escaped string directly, which covers the rule on every platform, and keep the round trip through a real shell as a separate case guarded by platform -- it is the stronger evidence where a shell exists. * chore: drop the unreachable table probes from migrateSchema (#1186) Eleven blocks in migrateSchema() guarded a CREATE TABLE IF NOT EXISTS behind SELECT id FROM <table> LIMIT 1, for tables the primary bootstrap had already created earlier in the same startup. The probe could not throw, so the catch never ran. Two of those unreachable copies had drifted from the definition actually in use. sessions had lost ON DELETE CASCADE, and session_recordings still carried user_id TEXT NOT NULL with ON DELETE CASCADE and no username -- the shape from before audit trails were made to outlive the account. They would have taken effect had anything ever reordered startup. Kept, because they are not the same thing: - blocks whose catch runs ALTER TABLE ADD COLUMN. CREATE TABLE IF NOT EXISTS is a no-op on a table that exists, so a database created before a column was added still needs the ALTER. Those probe a column, not a table. - blocks that are a table's only creation point. - the user_open_tabs block, which is a data migration; its SELECT is a precondition, not a probe. Deletion only, no behaviour change. * fix: repair the frontend type-check and clear the 299 errors behind it (#1189) * fix: repair frontend type-check configuration and the errors it exposed The root tsconfig.json is solution-style with "files": [], so the `npx tsc --noEmit` that CI runs compiles nothing at all. Frontend types have therefore never been checked, and 299 errors had accumulated behind that no-op. This clears just over half of them; nothing here changes runtime behaviour. Configuration: - "@/types" resolved through the "@/*" fallback to src/ui/types, which does not exist. Added an explicit mapping to src/types/index.ts. - src/vite-env.d.ts sits outside the include list, so import.meta.env and the ?url import suffix were unknown. Added. - src/ui/types/ held a single file, keybindings.ts, while every other shared type lives in src/types/. Six modules imported it as "@/types/keybindings" and silently resolved to nothing. Moved. Type definitions that had fallen behind the code: - guacamoleConfig and terminalConfig were Record<string, unknown> in ui-types while the editor read concrete fields off them. Both now use the real interfaces; GuacamoleConfig is extracted from its inline definition in guacamole-api.ts so the two cannot drift again. - customThemeColors and TerminalTheme["colors"] described the same object with different optionality. Aligned. - FileWindow declared its own SSHHost whose authType was "password" | "key", which no longer matches the eight the app supports. - connectSSH and listSSHFiles returned Record<string, unknown>, so every field the callers destructured arrived as unknown. - AxiosRequestConfig and AxiosResponse were used without being imported. Also adds asHttpError() for the handful of catch blocks that reached into an unknown binding, and narrows the Host | HostFolder comparator and the RailItem union at the points where the discriminant was not carrying. Note: dbHealthMonitor.reportDatabaseError was being called with a second argument it does not accept, so the authenticated-or-not flag was already being discarded at runtime. Dropped the argument to match the signature; whether that flag was meant to gate the report is worth a separate look. * fix: clear more of the frontend type-check baseline Continues the previous commit; 140 errors down to 70. Three of these were real defects rather than missing annotations. Defects: - DashboardTab counted active tunnels by comparing status to "CONNECTED", but CONNECTION_STATES.CONNECTED is "connected" and that is what the tunnel manager emits, so the count was always zero. Now compares against the constant. - QuickActionsCard requires isAdmin and gates a block of admin-only actions on it, but neither call site passed it — those actions never rendered. Both call sites also passed isAdmin to HostStatusCard, which does not accept it; the prop had evidently been moved and the call sites missed. - The host editor stores jump host ids as strings and sent them straight to an API typed for numbers. Backend host lookups compare against an integer column, which a string does not match on Postgres or MySQL. Converted. Types brought in line with the data: - Host and HostData were missing hasPassword, hasSudoPassword, sortOrder, instanceId, connectionOrigin, vaultProfileId, syncId, and the "vault" authType; TabContextTab was missing the "tunnel" tab, which TabContext already branched on. - statsConfig and terminalConfig used inline shapes that had drifted from StatsConfig and TerminalConfig. Both now reference the real interfaces; excludedMounts, which the editor reads, was added to StatsConfig. - downloadSSHFile, generateKeyPair and generatePublicKeyFromPrivate all returned Record<string, unknown> while callers read named fields. - The Guacamole declarations were missing Keyboard.reset, Client.onfile, InputStream.sendAck, Status.Code and BlobReader, all already in use. - NetworkTopologyNode/Edge could not be discriminated, though the graph code tells them apart by testing for source/target. ProxyNode.type is now 4 | 5 | "http" | "socks4" | "socks5". The editor writes the string spellings while proxy-helper.ts tests for "http" and casts everything else to 4|5 before handing it to the socks client, so a chained proxy reaches it as "socks5" rather than 5. Typed as what is actually stored; reconciling the two spellings needs a migration decision and is left alone here. * fix: continue clearing the frontend type-check baseline 70 errors down to 44. Dead configuration removed: - Terminal set terminal.options.bellStyle on xterm, which dropped the option in v5. The host editor still exposes the setting and stores it; it has simply had no effect on the terminal since that upgrade. Making the bell work again means handling the onBell event and is left alone. - CodeEditor passed scrollPastEnd to basicSetup, which has no such option. - FileManager passed an id to openWindow, which assigns its own and discards what it is given — the component was already being rendered under a different id than the one the caller held. Widgets that were registered but unreachable: - DockerActivityWidget and SshQuickConnectWidget register under "docker_activity" and "ssh_quick_connect", neither of which was in WidgetTypeId, and both referenced config interfaces that did not exist. Added the ids and the two interfaces, inferred from their edit forms and defaultConfig. More endpoints given their real return types: getRecentFiles, getPinnedFiles, getFolderShortcuts (arrays, not records), downloadSSHFile, copySSHItem, generateKeyPair, generatePublicKeyFromPrivate and getSnippets. parseGuacamoleConfig() handles the host row carrying guacamoleConfig either parsed or as raw JSON, which GuacamoleApp was reading fields off directly. TerminalHostConfig was missing name, which it reads for the activity log. * fix: continue clearing the frontend type-check baseline 44 errors down to 17. Host and AuditLog are now type aliases rather than interfaces. An interface has no implicit index signature, so neither could be assigned to the `[key: string]: unknown` shapes that TerminalHostConfig, HostMetricsTab's HostConfig and several helpers declare — eight errors came from that alone. More dead configuration: - i18n passed checkWhitelist to the language detector, which no longer has that option; supportedLngs already covers it. - SSHAuthDialog passed scrollPastEnd to basicSetup, same as CodeEditor. - AudioPreview's onLoadedMetadata never fired: react-h5-audio-player spells the prop onLoadedMetaData. - MarkdownRenderer destructured `inline` from code(), which react-markdown removed in v9, so the flag was always undefined and every inline span took the block branch when it happened to carry a language class. Now derived from whether a className is present at all. - SnippetsPanel put a title prop on a lucide icon, which does not forward it; changed to aria-label so the hint is actually reachable. updateHostConfig in TabContext replaced tab.hostConfig wholesale with the six-field literal it receives, dropping everything else the tab held about the host. It now merges onto the existing config. Also: getReleasesRSS, getUserAlerts and getVersionInfo have real return types (UpdateLog kept private copies of two of them, and VersionInfo was missing `version`, which the endpoint sends and the panel renders); wakeOnLan and vncCredentialId get the numeric ids they are typed for; and the tmux formatter takes i18next's TFunction instead of a hand-written signature it does not satisfy. * fix: clear the last frontend type errors and make CI actually run the check Baseline is now zero, so the check can be turned on. `npx tsc --noEmit` — what CI ran and what `npm run type-check` was — compiles nothing: the root tsconfig.json is solution-style with "files": [], and plain tsc does not follow project references. Both are now `tsc -b`, which builds tsconfig.app.json and tsconfig.node.json. Verified by planting a type error and watching the command fail. Last defects in this batch: - patchOpenTab could not carry hostId, so quick-connect's "save this host and attach the tab to it" call was passing a field excluded from the type all the way down. The column exists and updateForUser spreads whatever it receives, so the write worked; only the types disagreed. Widened front to back. - The file-comparison window opened without x, y, width or height — every other openWindow call passes them — and sent a `type` field WindowInstance does not have. - HostEditor gated a block on authType === "warpgate", which is not one of the eight authType values. Unreachable, and it held only a label and a description. Removed. - FileManager passed onLoadDirectory to a sidebar that neither declares nor reads it, and FileManagerApp passed embedded to a FileManager that has no such prop. - TunnelApp's minimal Host was missing three required flags. The remainder were assertions at boundaries that are genuinely loose: bulk host import takes rows assembled from untyped input and validates them server-side, and a vi.fn() whose body only throws infers never. * feat: add drive file browser and drag-and-drop upload for RDP (#1187) Drive redirection could already be enabled per host, but the redirected drive lived inside guacd with no way to reach it from the browser: the client never handled onfilesystem, so the mounted volume was writable from Windows and invisible from Termix. Add a file browser panel that lists the drive, downloads files, and uploads them, plus drag-and-drop onto the display which opens the panel and uploads into the directory currently shown. The disable-upload and disable-download connection settings are honoured by the UI, not just passed to guacd. A rejected upload stops the BlobWriter without firing onerror or oncomplete, so the error ack is watched explicitly; otherwise the transfer would hang forever. Directory reads carry a deadline for the same reason. Also declares Guacamole.Object, Client.onfilesystem, BlobReader and BlobWriter in the local type definitions, which previously omitted them. * fix: keep the mouse working on touch-capable devices in RDP/VNC (#1190) Reported as "mouse input broken, keyboard fine" after 2.5.1 (#1102). 2.5.1 bound Guacamole.Mouse unconditionally. 2.6.0 replaced that with a three-way branch on touchMode, and the touch branches replace the mouse binding instead of adding to it: if (touchMode === "touchscreen") new Guacamole.Mouse.Touchscreen(el) else if (touchMode === "touchpad") new Guacamole.Mouse.Touchpad(el) else new Guacamole.Mouse(el) The two do not overlap. Guacamole.Mouse listens for mousedown/mousemove/ mouseup; Touchscreen and Touchpad listen only for touchstart/touchmove/ touchend. So in a touch mode nothing is listening for the mouse at all. touchMode defaults to "touchscreen" whenever navigator.maxTouchPoints > 0, which is true of every laptop with a touchscreen — machines that are still driven by a mouse. Those users lost the pointer entirely while the keyboard kept working, because Guacamole.Keyboard is bound independently. The physical pointer is now always bound and a touch emulator is layered on top when one is selected. Extracted to bindPointerInput() so the binding is testable; the test fails against the old branch. Note the issue also carries a second, unrelated report where well-formed mouse frames do reach guacd and the VNC leg ignores them. That one is not this, and the guacd image is pinned to 1.6.0 in both 2.5.1 and 2.6.1, so it is not an upgrade either. * fix: deduplicate /api/folders requests to prevent intermittent folder disappearance (#1191) * chore: sync Crowdin translations * fix: deduplicate /api/folders requests to prevent intermittent folder disappearance getSSHFolders() had no request deduplication while getSSHHosts() used a TTL cache with in-flight dedupe. When loadHosts() fired multiple times during rapid navigation between Credentials and Hosts panels, the folder response could arrive after the hosts response, causing the sidebar tree to render without folder metadata. - Add foldersCache (10s TTL) in hosts-request-cache.ts - Wrap getSSHFolders() API call in getCachedSSHFolders() - Invalidate folders cache on renameFolder, updateFolderMetadata, deleteAllHostsInFolder, and renameCredentialFolder - Include foldersCache in invalidateHostsAndStatusCaches() Closes Termix-SSH/Support#1103 Signed-off-by: RawNuke <67506722+RawNuke@users.noreply.github.com> --------- Signed-off-by: RawNuke <67506722+RawNuke@users.noreply.github.com> Co-authored-by: LukeGus <bugattiguy527@gmail.com> * chore(deps): bump undici from 8.9.0 to 8.10.0 in the prod-minor-updates group (#1195) * chore: sync Crowdin translations * chore(deps): bump undici in the prod-minor-updates group Bumps the prod-minor-updates group with 1 update: [undici](https://github.com/nodejs/undici). Updates `undici` from 8.9.0 to 8.10.0 - [Release notes](https://github.com/nodejs/undici/releases) - [Commits](https://github.com/nodejs/undici/compare/v8.9.0...v8.10.0) --- updated-dependencies: - dependency-name: undici dependency-version: 8.10.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod-minor-updates ... Signed-off-by: dependabot[bot] <support@github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: LukeGus <bugattiguy527@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat: proxmox metrics integration * feat: add folder select to the host multi select feature * feat: implement context aware terminal toolbar with quick links, host info, image pasting, etc * feat: made toolbar open file manager at path * fix: delete folder route not invalidating host list cache * fix: match host list icons with tab bar iconfix * fix: change sidebar reset button icon to seperate against fullscreen button * feat: unify connection system and add connection logs to guacd hosts * fix: make mobile terminal scrollback match xterm wheel behavior (#1198) * fix: route mobile terminal scrolling through xterm viewport * docs: document mobile terminal touch scrolling * chore: add a note to not place files in docs * chore: remove touch imput from docs * feat: improve snippet system with variable snippets and collapse settings * feat: new fleet system with snippet, packages, files, and inventory features * fix: command pallete not loading new activity and made enter load first item * feat: add subhost from parent host organization feature * feat: add workspaces feature to save tab layout * perf: greatly improved performance across metrics polling and host management for enterprise users * feat: add a onboarding system with a new interface simplicity system * feat: finalize the multi dialect database system * fix: bind trusted MFA devices to client installs (#1202) * fix: merge OIDC group claims across sources (#1203) * fix: allow disabling SSH keepalives (#1204) * fix: distinguish reachable and available hosts (#1206) * fix: throttle session activity persistence (#1207) * fix: preserve saved RDP connection settings (#1208) * fix: authenticate tunnel status stream (#1209) * fix: select quick-created credentials (#1210) * fix: stagger initial metrics collection (#1211) * fix: stagger initial metrics collection * fix: admit reachable hosts to initial metrics * fix: prevent long host names shifting dashboard metrics (#1205) * feat: add global touch input settings (#1201) Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com> * fix: keep host list row sizing stable (#1213) * fix(guacamole): correct Windows key mapping (#1216) * fix: normalize OIDC discovery issuer URLs (#1218) * fix: prompt for RDP domain credentials (#1212) * fix: route status checks by connection origin (#1214) * fix: restore desktop Tailscale configuration (#1215) * fix(docker): restore Node 24 for ssh2 native crypto (#1217) * feat: added new automations feature with events, channels, and steps * feat: allowed some tabs in the app rail to be opened as its own tab or in a new right sidebar * feat: expand onboarding process with more customization/features * feat: initial implementation of the termix ai feature * chore: run linter * fix: issue #424 (#424) https://github.com/Termix-SSH/Support/issues/424 * fix: Not working without internet connection. Missing OPKSSH binary in pre-built image. (#1133) https://github.com/Termix-SSH/Support/issues/1133 * fix: SQLite forceSave on telemetry writes causes periodic SSH terminal stalls in 2.6.x (#1109) https://github.com/Termix-SSH/Support/issues/1109 * feat: How to enable SSL using custom certificate (#1083) https://github.com/Termix-SSH/Support/issues/1083 * fix: show profile API key after creation (#1221) * feat: add trusted proxy authentication (#1222) * fix: clarify SSH agent authentication (#1224) * feat: add first-class split screen tabs (#1226) * feat: add split tab data model * feat: make split screens top-level tabs * feat: persist and manage split layouts * feat: launch native RDP on Windows desktop (#1223) * feat: launch native RDP on Windows * style: format native RDP launcher * feat: enhance custom disk and network metrics (#1220) * feat: enhance host disk and network metrics * fix: align enhanced metrics types * fix: preserve Proxmox guest identity on edit (#1219) * fix: preserve Proxmox guest identity on edit * fix: type Proxmox guest source metadata * chore: dead-code cleanup and small refactors (#1225) * chore: remove dead code and unused exports * chore: remove unused api client functions * chore: remove unused backend helpers * refactor: extract getErrorMessage helper for repeated error extraction * refactor: unify error message extraction across backend with getErrorMessage * refactor: unify error message extraction in frontend with getErrorMessage * refactor: merge duplicate imports from the same module * refactor: use Array.includes in TabBar * chore: drop biome, keep prettier as the single formatter * style: apply prettier formatting to refactored files * fix: close active tab with Ctrl+W on Windows * fix: make tray Quit terminate the desktop app * feat: verify host transfer integrity * fix: reuse transfer sessions during verification * feat: select the fastest host transfer route * feat: tune host transfers adaptively * feat: adapt background polling to activity (#1233) * feat: adapt background polling to activity * feat: extend adaptive polling coverage * feat: make polling cost and network aware (#1234) * feat: make repeat navigation feel instant (#1235) * feat: make file operations feel immediate (#1236) * feat: preload likely user actions (#1237) * feat: preload likely file previews * feat: preload likely host tools * feat: preload likely file viewers * fix: replace stale terminal input listeners * feat: add links to docs for all new features * chore: update readme * fix: warn before discarding host changes (#1229) * feat: learn local host action preferences (#1238) * feat(terminal-toolbar): add bounded movable desktop toolbar (#1239) * feat: add local adaptive decision engine (#1240) * feat: adapt speculative resource usage (#1241) * feat: persist adaptive transfer profiles (#1242) * Fix .preferred_username when using LDAP login. (#1243) * chore: sync Crowdin translations * Fix .preferred_username when using LDAP login. Strips internal LDAP prefix from username. --------- Co-authored-by: LukeGus <bugattiguy527@gmail.com> * feat: learn direct transfer routes (#1244) * feat: learn speculative preload usefulness (#1245) * fix: - Adjusting the SSH Authentication from Vault to something else fails (#1152) https://github.com/Termix-SSH/Support/issues/1152 * fix: terminal graphical display, special characters inserted, distorted - `midnight comma... (#1145) https://github.com/Termix-SSH/Support/issues/1145 * feat: single click on host in list opens session - should be only on double click (#1146) https://github.com/Termix-SSH/Support/issues/1146 * feat: Terminal: custom font/ font selection/ how-to for adding a font - `MesloLGS NF` (#1140) https://github.com/Termix-SSH/Support/issues/1140 * fix: revert host single click to open session, make double click an option (#1146) Single click opens a session again by default. The old double click behavior can be turned on in Customize Sidebar. * chore: drop prettier check from beta release workflow, run formatter * chore: patch dependabot vulnerabilities via npm overrides * fix: reset adaptive resource state between tests to stop cross-test leaks * feat: replace terminal toolbar density popover with a native select * fix: pin hardwareConcurrency in adaptive budget tests so CI cores don't change the tier * fix: allow dylib files in mac universal arch rules so mas build packages sharp * feat: add file manager trash (#1250) * feat: add inheritable connection defaults (#1246) * feat: add desktop local terminal (#1247) * feat: add interactive terminal macros (#1248) * feat: add adaptive SSH local echo (#1249) * fix: sync desktop host changes immediately (#1252) * fix: route desktop sharing through synced server (#1253) * Fix terminal image uploads and add safe diagnostics (#1254) * feat: add configurable terminal image storage backends * feat: add admin image storage settings * fix: preserve native clipboard PNG uploads * fix: quote terminal image paths safely * docs: record image storage security remediation plan * fix: close remote image SFTP channels * fix: restrict remote image SFTP permissions * fix: bound remote image SFTP writes * fix: add best effort remote image retention * fix: cap normalized image output size * fix: bound concurrent image processing * fix: fail closed on local image inspection errors * test: cover fail closed image storage and atomic settings * fix: enforce remote image quota and upload admission * fix: serialize remote quota and verify existing paths * fix: use synchronous sqlite settings transaction * fix: keep settings transactions portable across dialects * fix: bound image processing admission queue * fix: serialize remote image quota across processes * fix: recover stale remote image locks safely * fix: preserve remote storage errors during unlock * fix: fail closed when stale lock removal fails * fix: harden image upload resource and storage cleanup * fix: bound SFTP operations and lock lifetime * fix: bound SFTP acquisition and cleanup callbacks * fix: close late SFTP channels and test cleanup stalls * fix: preserve SFTP inspection client context * feat: add image upload source metadata * fix: expose image upload metadata in logs * chore: exclude internal plan from pull request * style: apply prettier formatting --------- Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com> * fix: batch of security hardening fixes (#1255) * fix: bind desktop auto-session loopback check to the TCP peer address * fix: escape HTML entities in Vault OIDC callback responses * fix: route homepage ping and rss through the SSRF-safe outbound fetch * fix: scope tunnel status endpoints to hosts the caller can access * chore: update release notes * chore: update release notes to write more about the ai integration * fix: unbreak windows and macos electron builds after node-pty Install Spectre-mitigated MSVC libs on the Windows runner and cover node-pty's spawn-helper in the macOS universal arch rules. * fix: rework connection defaults ui into a dialog and add missing i18n keys * fix: rework macros panel with i18n, plain text matching, and list layout * feat: add docs links for trash, connection defaults, and local echo * fix: make image storage and trash tests pass on windows * fix: stop docs links squeezing sidebar panel headers * fix: put automations docs link back on the tabs row * fix(desktop): keep Linux credential storage working on unrecognised desktops (#1261) Chromium resolves safeStorage's backend from XDG_CURRENT_DESKTOP and falls back to the basic_text store for any desktop it has no mapping for, which covers every wlroots-style compositor (Hyprland, sway, niri, river). isEncryptionAvailable() reports false for that store, so saveRemoteSyncJwt refused every write and the OIDC sign-in it was storing appeared to succeed. The sync engine then found no JWT and reported the session as expired, which sent users looking at their OIDC provider for a fault that was never there. Name the libsecret backend explicitly on those desktops. They run an ordinary Secret Service, so that is enough to make encryption available again. KWallet desktops keep their auto-detected backend, an explicit --password-store still wins, and no stored secret can be orphaned by the switch because isEncryptionAvailable() gated every write that would have created one. Also stop discarding the {success: false} the main process returns when it cannot store a credential: on a machine with no Secret Service at all, the sign-in now says so instead of silently completing. Co-authored-by: alexandre-vl <rafaelsenchais@gmail.com> * chore: update release notes * chore: update release notes * fix(file-manager): widen trash dialog so names and paths are not cut off * fix(sidebar): stop hover action tray overlapping the row below it * fix(hosts): make real status colors toggle actually apply * feat(local-terminal): add rail button and fix hardcoded tab label * chore: update release notes * fix(ai): hide assistant everywhere when admin disables it globally * fix(automations): fix concurrency race, wire docker and internal event triggers Claim the in-flight slot in the same tick it is checked, poll container state for docker_event triggers, emit the internal events, apply the schedule time zone, and expose the concurrency policy in the editor. * fix(sidebar): rework host and credential drag-to-reorder Adds a lock toggle in the sort menu and fixes reorder positioning, cross-folder drops, and the duplicate drop indicator. * chore(sidebar): drop unused sortKey prop from host and credential trees * fix(sidebar): fix row height in click tray mode so status stripes stop overlapping * fix(onboarding): remove add-first-host step that closed onboarding mid-flow * fix(release): upload release notes so Mac App Store review submission stops failing * chore: sync Crowdin translations for 2.7.0 --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: RawNuke <67506722+RawNuke@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com> Co-authored-by: kacperpietrzyk <105545577+kacperpietrzyk@users.noreply.github.com> Co-authored-by: Brennan Neoh <497569+brennanneoh@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> Co-authored-by: T3rM1nAt0-R <niraj.sangani91@gmail.com> Co-authored-by: Horziox <horziox.dev@gmail.com> Co-authored-by: William Shi <184219650@qq.com> Co-authored-by: Carl <scarlettme@qq.com> Co-authored-by: Raw_Nuke <67506722+RawNuke@users.noreply.github.com> Co-authored-by: njz-cvm <njz@cvm.com> Co-authored-by: Alexandre VARGAS <alexandre.vargas.lopez@gmail.com> Co-authored-by: alexandre-vl <rafaelsenchais@gmail.com>
4650 lines
241 KiB
JSON
4650 lines
241 KiB
JSON
{
|
||
"connection": {
|
||
"retryingIn": "Försöker igen om {{seconds}}s ({{attempt}}/{{max}})",
|
||
"retryingNow": "Försöker igen... ({{attempt}}/{{max}})",
|
||
"disconnected": "Det gick inte att ansluta",
|
||
"reconnect": "Återanslut"
|
||
},
|
||
"termixId": {
|
||
"title": "Termix-ID",
|
||
"loadFailed": "Misslyckades med att ladda Termix-ID",
|
||
"claimTitle": "Hämta ditt Termix-ID",
|
||
"claimIntro": "Välj ett unikt användarnamn. Dina publika SSH-nycklar kommer att publiceras på en offentlig URL som du kan lägga till i valfri servers authorized_keys-fil.",
|
||
"handleLabel": "Hantera",
|
||
"handlePlaceholder": "Alice",
|
||
"checking": "Kontrollerar…",
|
||
"available": "Tillgänglig",
|
||
"taken": "Redan upptagen",
|
||
"invalidHandle": "Endast små bokstäver, siffror, - och _",
|
||
"descriptionLabel": "Beskrivning (valfritt)",
|
||
"descriptionPlaceholder": "Arbetslaptop och telefonnycklar",
|
||
"create": "Skapa Termix-ID",
|
||
"created": "Termix-ID skapat",
|
||
"createFailed": "Misslyckades med att skapa Termix-ID",
|
||
"deleteConfirm": "Vill du ta bort ditt Termix-ID och alla publicerade nycklar? Servrar som du har etablerat kommer att behålla nycklarna tills du tar bort dem manuellt.",
|
||
"deleted": "Termix-ID raderat",
|
||
"deleteFailed": "Misslyckades med att ta bort Termix-ID",
|
||
"copyFailed": "Kopieringen misslyckades",
|
||
"resolverUrlLabel": "Offentlig resolver-URL",
|
||
"provisionLabel": "Provisionera en server",
|
||
"publishTitle": "Publicera en offentlig nyckel",
|
||
"generate": "Generera",
|
||
"generateTooltip": "Generera ett Ed25519-nyckelpar — publicerar den offentliga nyckeln och laddar ner den privata nyckeln till din enhet",
|
||
"saveToVault": "Spara till autentiseringsuppgifter",
|
||
"keyPlaceholder": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5... användare@värd",
|
||
"labelPlaceholder": "Etikett (valfritt)",
|
||
"add": "Tillägga",
|
||
"importFromCredential": "Eller importera från en lagrad autentiseringsuppgift",
|
||
"keyPublished": "Nyckel publicerad",
|
||
"addKeyFailed": "Misslyckades med att lägga till nyckel",
|
||
"generatedSaved": "Nyckelpar genererat och sparat i ditt inloggningsvalv. Privat nyckel laddades också ner.",
|
||
"generatedOnly": "Nyckelpar genererat — privat nyckel nedladdad (visas endast en gång).",
|
||
"generateFailed": "Misslyckades med att generera nyckeln",
|
||
"imported": "Nyckel importerad från autentiseringsuppgifter",
|
||
"importFailed": "Misslyckades med att importera nyckeln",
|
||
"noKeys": "Inga publika nycklar publicerade än.",
|
||
"keysTitle": "Publicerade nycklar",
|
||
"published": "Publicerad",
|
||
"hidden": "Dold",
|
||
"keyRemoved": "Nyckel borttagen",
|
||
"removeKeyFailed": "Misslyckades med att ta bort nyckeln",
|
||
"updateKeyFailed": "Misslyckades med att uppdatera nyckeln",
|
||
"fromVault": "Från inloggningsvalvet",
|
||
"linkedToTermixId": "Publicerad via Termix-ID",
|
||
"selectCredential": "Välj en behörighetsinloggning...",
|
||
"import": "Importera",
|
||
"caTitle": "Certifikatutfärdare",
|
||
"caIntro": "Lita på denna certifikatutfärdare på en server så accepterar den alla certifikat du signerar. Rotera för att återkalla allt på en gång; certifikat upphör också att gälla av sig själva.",
|
||
"caEnable": "Aktivera CA",
|
||
"caEnabled": "CA-aktiverad",
|
||
"caCreateFailed": "Misslyckades med att aktivera CA",
|
||
"caPublicKeyLabel": "CA:s offentliga nyckel",
|
||
"caTrustLabel": "Lita på en server (kör som root)",
|
||
"caRotate": "Rotera",
|
||
"caRotateConfirm": "Rotera CA:n? Alla certifikat som den har signerat kommer att sluta accepteras och måste utfärdas på nytt.",
|
||
"caRotated": "CA roterad — tidigare certifikat återkallade",
|
||
"caRotateFailed": "Misslyckades med att rotera CA",
|
||
"caDelete": "Ta bort certifikatutfärdare",
|
||
"caDeleteConfirm": "Ta bort certifikatutfärdaren?",
|
||
"caDeleted": "CA borttagen",
|
||
"caDeleteFailed": "Misslyckades med att ta bort certifikatutfärdaren",
|
||
"caValidityLabel": "Certifikatgiltighet (dagar)",
|
||
"issueCert": "Certifikat",
|
||
"issueCertTooltip": "Utfärda ett SSH-certifikat för den här nyckeln, signerat av din CA",
|
||
"certIssued": "Certifikat utfärdat och nedladdat",
|
||
"certIssueFailed": "Misslyckades med att utfärda certifikat"
|
||
},
|
||
"credentials": {
|
||
"folders": "Mappar",
|
||
"folder": "Mapp",
|
||
"password": "Lösenord",
|
||
"key": "Nyckel",
|
||
"sshPrivateKey": "SSH privat nyckel",
|
||
"upload": "Ladda upp",
|
||
"keyPassword": "Nyckellösenord",
|
||
"sshKey": "SSH-nyckel",
|
||
"uploadPrivateKeyFile": "Ladda upp privat nyckelfil",
|
||
"searchCredentials": "Sök inloggningsuppgifter...",
|
||
"addCredential": "Lägg till autentiseringsuppgifter",
|
||
"caCertificate": "CA-certifikat (-cert.pub)",
|
||
"caCertificateDescription": "Valfritt: Ladda upp eller klistra in den CA-signerade certifikatfilen (t.ex. id_ed25519-cert.pub). Krävs när din SSH-server använder certifikatbaserad auktorisering.",
|
||
"uploadCertFile": "Ladda upp -cert.pub-filen",
|
||
"clearCert": "Rensa",
|
||
"certLoaded": "Certifikatet laddades",
|
||
"certPublicKeyLabel": "CA-certifikat",
|
||
"certTypeLabel": "Certifikattyp",
|
||
"pasteOrUploadCert": "Klistra in eller ladda upp ett -cert.pub-certifikat...",
|
||
"hasCaCert": "Har CA-certifikat",
|
||
"noCaCert": "Inget CA-certifikat",
|
||
"noPublicKeyAvailable": "Ingen offentlig nyckel tillgänglig. Öppna först redigeraren för autentiseringsuppgifter.",
|
||
"deployCommandCopied": "Distribuera-kommandot kopierat",
|
||
"sortCredentials": "Sortera inloggningsuppgifter",
|
||
"sortDefault": "Standardbeställning",
|
||
"sortNameAsc": "Namn (A → Ö)",
|
||
"sortNameDesc": "Namn (Ö → A)",
|
||
"sortUsernameAsc": "Användarnamn (A → Ö)",
|
||
"sortUsernameDesc": "Användarnamn (Ö → A)",
|
||
"filterCredentials": "Filtrera inloggningsuppgifter",
|
||
"filterClearAll": "Rensa filter",
|
||
"filterTypeGroup": "Typ",
|
||
"filterTypePassword": "Lösenord",
|
||
"filterTypeKey": "SSH-nyckel",
|
||
"filterTagsGroup": "Taggar",
|
||
"copyDeployCommand": "Kopiera deploy-kommandot",
|
||
"deleteCredentialAction": "Ta bort inloggningsuppgifter",
|
||
"editCredentialAction": "Redigera inloggningsuppgifter",
|
||
"failedToDeleteCredential": "Misslyckades med att ta bort inloggningsuppgifter",
|
||
"idBadge": "ID",
|
||
"keyBadge": "NYCKEL",
|
||
"passwordBadge": "Utsatt person (PWD)",
|
||
"renameFolder": "Byt namn på mapp",
|
||
"deleteFolder": "Ta bort mapp",
|
||
"deleteCredentialConfirm": "Radera inloggningsuppgifterna \"{{name}}\"?",
|
||
"deletedCredential": "Borttagen {{name}}",
|
||
"deploySSHKeyTitle": "Distribuera nyckel till värden",
|
||
"loadingCredentials": "Laddar inloggningsuppgifter...",
|
||
"noCredentialsFound": "Inga inloggningsuppgifter hittades",
|
||
"noCredentialsMatchSearch": "Inga inloggningsuppgifter matchar din sökning",
|
||
"addCredentialBtn": "Lägg till autentiseringsuppgifter",
|
||
"failedToReorder": "Misslyckades med att ändra ordningen på inloggningsuppgifterna",
|
||
"failedToMoveCredential": "Misslyckades med att flytta inloggningsuppgifterna",
|
||
"sortManual": "Manuellt (dra för att ändra ordning)",
|
||
"customizeSidebar": "Anpassa sidofältet",
|
||
"customizeSidebarDescription": "Välj hur listan med autentiseringsuppgifter ser ut och fungerar.",
|
||
"customizeDensityTitle": "Densitet",
|
||
"densityComfortableDesc": "En autentiseringsuppgifter per rad, med extra detaljer.",
|
||
"densityCompactDesc": "En rad per autentiseringsuppgifter, för längre listor.",
|
||
"displayDensityComfortable": "Bekväm",
|
||
"displayDensityCompact": "Kompakt",
|
||
"customizeBehaviorTitle": "Beteende",
|
||
"showCredentialTags": "Visa taggar",
|
||
"showCredentialTagsDesc": "Visa taggar i listan över autentiseringsuppgifter",
|
||
"actionsVisibility": "Åtgärder för autentiseringsuppgifter",
|
||
"actionsVisibilityDesc": "När anslutnings- och hanteringsknapparna på varje autentiseringsuppgifter visas",
|
||
"actionsAlways": "Alltid synlig",
|
||
"actionsOnly": "Endast anslutning, vila på klick",
|
||
"actionsHover": "Visa vid muspekning",
|
||
"actionsClick": "Visa vid klick",
|
||
"customizeSortHint": "Sorteringsordningen finns i sorteringsmenyn i verktygsfältet.",
|
||
"expandActions": "Expandera åtgärder",
|
||
"collapseActions": "Komprimera åtgärder",
|
||
"backToHosts": "Tillbaka till värdar",
|
||
"backToCredentials": "Tillbaka till inloggningsuppgifter",
|
||
"searchCredentialsPlaceholder": "Sökuppgifter…",
|
||
"deployDialogTitle": "Distribuera SSH-nyckel",
|
||
"deployDialogDesc": "Distribuera {{name}} till en värds authorized_nycklar.",
|
||
"targetHostLabel": "Målvärd",
|
||
"selectHostOption": "Välj en värd...",
|
||
"deployingBtn": "Implementerar...",
|
||
"deployBtn": "Implementera",
|
||
"keyDeployedSuccess": "Nyckeln har distribuerats",
|
||
"failedToDeployKey": "Misslyckades med att distribuera nyckeln",
|
||
"folderRenamedTo": "Mappen har bytt namn till \"{{name}}\"",
|
||
"failedToRenameFolder": "Misslyckades med att byta namn på mappen",
|
||
"arrangeUnlockedSwitchedToManual": "Bytte till manuell sortering så att din ordning fastnar",
|
||
"arrangeUnlocked": "Lås upp och dra för att ordna om"
|
||
},
|
||
"homepage": {
|
||
"title": "Hemsida",
|
||
"addWidget": "Lägg till widget",
|
||
"editWidget": "Redigera widget",
|
||
"deleteWidget": "Radera",
|
||
"widgetTypes": "Widgettyper",
|
||
"serviceLink": "Servicelänk",
|
||
"folder": "Mapp",
|
||
"clock": "Klocka",
|
||
"notes": "Anteckningar",
|
||
"hostStatus": "Värdstatus",
|
||
"bookmarkList": "Bokmärken",
|
||
"zoomIn": "Zooma in",
|
||
"zoomOut": "Zooma ut",
|
||
"resetView": "Återställ vy",
|
||
"lockLayout": "Låslayout",
|
||
"unlockLayout": "Lås upp layouten",
|
||
"noWidgets": "Högerklicka eller klicka på + för att lägga till din första widget",
|
||
"openFullView": "Öppna helvy",
|
||
"previewTitle": "Förhandsvisning av startsidan",
|
||
"cancel": "Avboka",
|
||
"save": "Spara",
|
||
"title_label": "Titel",
|
||
"widgetTitlePlaceholder": "Widgettitel (valfritt)",
|
||
"url": "URL",
|
||
"imageUrl": "Anpassad bild-URL",
|
||
"imageUrlHint": "Lämna tomt för att använda webbplatsens favicon automatiskt",
|
||
"showImage": "Visa bild",
|
||
"description": "Beskrivning",
|
||
"color": "Färg",
|
||
"icon": "Ikon",
|
||
"expanded": "Utökad som standard",
|
||
"timezone": "Tidszon",
|
||
"showSeconds": "Visa sekunder",
|
||
"format12h": "12-timmars",
|
||
"format24h": "24-timmars",
|
||
"content": "Innehåll",
|
||
"backgroundColor": "Bakgrundsfärg",
|
||
"host": "Värd",
|
||
"showMetrics": "Visa mätvärden",
|
||
"links": "Länkar",
|
||
"addLink": "Lägg till länk",
|
||
"linkLabel": "Märka",
|
||
"linkUrl": "URL",
|
||
"removeLink": "Ta bort",
|
||
"categoryLinks": "Länkar",
|
||
"categoryInfo": "Info",
|
||
"categorySystem": "System",
|
||
"widgetServiceLinkDesc": "En klickbar panel som länkar till en tjänst-URL",
|
||
"widgetFolderDesc": "En behållare för att gruppera relaterade widgetar",
|
||
"widgetClockDesc": "En liveklocka med konfigurerbar tidszon",
|
||
"widgetNotesDesc": "En widget för nedskrivningsanteckningar",
|
||
"widgetHostStatusDesc": "Visar CPU, minne och disk i realtid för en SSH-värd",
|
||
"widgetBookmarkListDesc": "En lista med snabblänkar",
|
||
"copyLink": "Kopiera länk",
|
||
"linkCopied": "Länk kopierad!",
|
||
"location": "Plats",
|
||
"temperatureUnit": "Temperaturenhet",
|
||
"showForecast": "Visa 3-dagarsprognos",
|
||
"scrolling": "Tillåt rullning",
|
||
"feedUrl": "Flödes-URL",
|
||
"maxItems": "Max antal artiklar",
|
||
"showDescription": "Visa beskrivning",
|
||
"widgetWeatherName": "Väder",
|
||
"widgetWeatherDesc": "Liveväder för alla platser",
|
||
"widgetIframeName": "iFrame-bäddning",
|
||
"widgetIframeDesc": "Bädda in valfri URL i en iframe",
|
||
"widgetRssName": "RSS-flöde",
|
||
"widgetRssDesc": "Visa objekt från ett RSS- eller Atom-flöde",
|
||
"dragToFolder": "Dra widgetar hit eller använd + för att lägga till",
|
||
"showDisk": "Visa diskanvändning",
|
||
"addToFolder": "Lägg till widget i mapp",
|
||
"noHostSelected": "Ingen värd vald",
|
||
"metricsNotAvailable": "Mätvärden är inte tillgängliga",
|
||
"selectHost": "Välj en värd...",
|
||
"displayedMetrics": "Visade mätvärden",
|
||
"metricCpu": "CPU",
|
||
"metricMemory": "Minne",
|
||
"metricDisk": "Disk",
|
||
"metricUptime": "Drifttid",
|
||
"metricSystem": "System",
|
||
"metricOs": "operativsystem",
|
||
"metricKernel": "Kärna",
|
||
"metricHostname": "Värdnamn",
|
||
"metricNetwork": "Nätverk",
|
||
"metricProcesses": "Processer",
|
||
"metricProcessesTotal": "total",
|
||
"metricProcessesRunning": "spring",
|
||
"categoryMonitoring": "Övervakning",
|
||
"loading": "Belastning...",
|
||
"noData": "Inga data tillgängliga",
|
||
"allClear": "Faran över",
|
||
"acknowledgeAlert": "Erkänna",
|
||
"noPingUrls": "Inga webbadresser konfigurerade",
|
||
"pingLabel": "Märka",
|
||
"addPingUrl": "Lägg till URL",
|
||
"showLatency": "Visa latens",
|
||
"refreshInterval": "Uppdateringsintervall",
|
||
"seconds": "sekunder",
|
||
"filterActivityTypes": "Filtertyper",
|
||
"filterTypesHint": "Lämna tomt för att visa alla",
|
||
"showTimestamp": "Visa tidsstämpel",
|
||
"uptimeUnavailable": "Drifttid otillgänglig",
|
||
"uptimeLabel": "Drifttid",
|
||
"overviewVersion": "Version",
|
||
"overviewUpdate": "Uppdaterad",
|
||
"overviewUpdateLabel": "Uppdatera",
|
||
"overviewUpdateAvailable": "Uppdatering tillgänglig",
|
||
"overviewDatabase": "Databas",
|
||
"overviewUptime": "Drifttid",
|
||
"noHosts": "Inga värdar konfigurerade",
|
||
"hostGridHosts": "Värdar",
|
||
"hostGridAllHint": "Lämna tomt för att visa alla värdar",
|
||
"columns": "Kolumner",
|
||
"showIp": "Visa IP-adress",
|
||
"connectionType": "Anslutningstyp",
|
||
"layout": "Layout",
|
||
"showStatus": "Visa status",
|
||
"showHostName": "Visa värdnamn",
|
||
"noDockerActivity": "Ingen Docker-aktivitet",
|
||
"noActivity": "Ingen aktivitet",
|
||
"showAcknowledged": "Visa bekräftad",
|
||
"showCurrentValue": "Visa aktuellt värde",
|
||
"chartMetric": "Metrisk",
|
||
"metricRange": "Räckvidd",
|
||
"widgetMetricsChartName": "Mätvärdena Diagram",
|
||
"widgetMetricsChartDesc": "Historiskt diagram över CPU, minne, disk eller nätverk för en värd",
|
||
"widgetHostGridName": "Värdnät",
|
||
"widgetHostGridDesc": "Rutnätsvy över SSH-värdstatusar",
|
||
"widgetAlertFeedName": "Aviseringsflöde",
|
||
"widgetAlertFeedDesc": "Live-avfyrningar med bekräftelsestöd",
|
||
"widgetPingStatusName": "Pingstatus",
|
||
"widgetPingStatusDesc": "HTTP-pingstatus för en eller flera URL:er",
|
||
"widgetRecentActivityName": "Senaste aktivitet",
|
||
"widgetRecentActivityDesc": "Rullningsbart flöde av senaste Termix-aktivitet",
|
||
"widgetTermixUptimeName": "Termix drifttid",
|
||
"widgetTermixUptimeDesc": "Live-upptidsräknare för Termix-servern",
|
||
"widgetSystemOverviewName": "Systemöversikt",
|
||
"widgetSystemOverviewDesc": "Termix-version, databashälsa och drifttid i korthet",
|
||
"widgetSshQuickConnectName": "SSH-snabbanslutning",
|
||
"widgetSshQuickConnectDesc": "Knappar med ett klick för att öppna SSH-sessioner",
|
||
"widgetDockerActivityName": "Docker-aktivitet",
|
||
"widgetDockerActivityDesc": "Senaste Docker-containerhändelser på alla värdar",
|
||
"widgetCalendarName": "Kalender",
|
||
"widgetCalendarDesc": "En månadskalender med idag markerad",
|
||
"widgetCountdownName": "Nedräkning",
|
||
"widgetCountdownDesc": "Nedräkningstimer till ett måldatum",
|
||
"widgetSearchBarName": "Sökfält",
|
||
"widgetSearchBarDesc": "Snabb webbsökningswidget",
|
||
"widgetTextBannerName": "Textbanner",
|
||
"widgetTextBannerDesc": "En fetstilad etikett eller sektionsrubrik för arbetsytan",
|
||
"widgetImageWidgetName": "Bild",
|
||
"widgetImageWidgetDesc": "Visa en bild från en URL",
|
||
"widgetMarkdownNotesName": "Nedskrivningsanteckningar",
|
||
"widgetMarkdownNotesDesc": "Rika anteckningar med inline-markdown-rendering",
|
||
"widgetCustomApiName": "Anpassat API",
|
||
"widgetCustomApiDesc": "Hämta och visa data från valfritt JSON API",
|
||
"widgetServiceGridName": "Servicenät",
|
||
"widgetServiceGridDesc": "Ett konfigurerbart rutnät med länkar till servicerutor",
|
||
"widgetDashboardLinksName": "Länkar till instrumentpanelen",
|
||
"widgetDashboardLinksDesc": "Visa dina konfigurerade tjänstelänkar från instrumentpanelen",
|
||
"widgetSearchLinksName": "Sökgenvägar",
|
||
"widgetSearchLinksDesc": "Snabbsökningsknappar med inbyggd inmatning",
|
||
"widgetLinkTreeName": "Länkträd",
|
||
"widgetLinkTreeDesc": "Grupperade länksektioner med rubriker",
|
||
"calMon": "Må",
|
||
"calTue": "Tis",
|
||
"calWed": "Vi",
|
||
"calThu": "To",
|
||
"calFri": "Fr",
|
||
"calSat": "Lör",
|
||
"calSun": "Sö",
|
||
"startOnMonday": "Börja veckan på måndag",
|
||
"countdownNoDate": "Inget måldatum angivet",
|
||
"countdownPast": "Händelsen har passerat",
|
||
"countdownDays": "dagar",
|
||
"countdownHours": "timmar",
|
||
"countdownMinutes": "min",
|
||
"countdownSeconds": "sek",
|
||
"countdownLabel": "Märka",
|
||
"countdownLabelPlaceholder": "t.ex. lanseringsdagen",
|
||
"countdownShowDays": "Visa dagar",
|
||
"countdownShowHours": "Visa öppettider",
|
||
"targetDate": "Måldatum",
|
||
"searchEngine": "Sökmotor",
|
||
"customSearchUrl": "Anpassad sök-URL",
|
||
"searchPlaceholder": "Söka...",
|
||
"searchGo": "Gå",
|
||
"searchPlaceholderLabel": "Platshållartext",
|
||
"searchPlaceholderHint": "Text som visas inuti sökinmatningen",
|
||
"openInNewTab": "Öppna i ny flik",
|
||
"searchQueryPlaceholder": "Ange fråga...",
|
||
"noSearchShortcuts": "Inga genvägar konfigurerade",
|
||
"addSearchShortcut": "Lägg till genväg",
|
||
"fontSize": "Fontstorlek",
|
||
"textAlign": "Textjustering",
|
||
"fontWeight": "Teckensnittsvikt",
|
||
"clearColor": "Klar färg",
|
||
"imageFit": "Bildanpassning",
|
||
"imageLinkUrl": "Länk-URL",
|
||
"noImage": "Ingen bild-URL angiven",
|
||
"altText": "Alternativtext",
|
||
"altTextPlaceholder": "Beskriv bilden",
|
||
"renderMarkdown": "Rendera Markdown",
|
||
"displayMode": "Visningsläge",
|
||
"displayField": "Visningsfält",
|
||
"jsonPath": "JSON-sökväg",
|
||
"customApiLabel": "Märka",
|
||
"customApiLabelPlaceholder": "t.ex. temperatur",
|
||
"customApiUnit": "Enhet",
|
||
"customApiNoUrl": "Ingen API-URL konfigurerad",
|
||
"customApiError": "Misslyckades med att hämta",
|
||
"customApiNotArray": "Svaret är inte en array",
|
||
"addService": "Lägg till tjänst",
|
||
"showLabels": "Visa etiketter",
|
||
"iconSize": "Ikonstorlek",
|
||
"noDashboardLinks": "Inga länkar till instrumentpanelen konfigurerade",
|
||
"noLimit": "Ingen gräns",
|
||
"sectionHeading": "Avsnittsrubrik",
|
||
"addSection": "Lägg till avsnitt",
|
||
"compactMode": "Kompaktläge",
|
||
"showDetailed": "Visa detaljerad",
|
||
"selectHosts": "Välj värdar",
|
||
"allHosts": "Alla värdar",
|
||
"listLayout": "Lista",
|
||
"gridLayout": "Rutnät",
|
||
"terminal": "Terminal",
|
||
"files": "Filer",
|
||
"docker": "Hamnarbetare",
|
||
"range15m": "15 minuter",
|
||
"range1h": "1 timme",
|
||
"range6h": "6 timmar",
|
||
"range24h": "24 timmar",
|
||
"metricNetRx": "Nätnedladdning",
|
||
"metricNetTx": "Nätuppladdning",
|
||
"severityFilter": "Allvarlighetsgradsfilter",
|
||
"filterAll": "Alla",
|
||
"accentColor": "Accentfärg",
|
||
"widgetSshTerminalName": "SSH-terminal",
|
||
"widgetSshTerminalDesc": "En inline SSH-terminal ansluten till en konfigurerad värd",
|
||
"sshTerminalNoHost": "Ingen värd konfigurerad",
|
||
"sshTerminalConnect": "Ansluta",
|
||
"sshTerminalAutoConnect": "Automatisk anslutning vid laddning",
|
||
"widgetQuickConnectName": "Snabbanslutning",
|
||
"widgetQuickConnectDesc": "Knappar med ett klick för alla anslutningstyper över dina värdar",
|
||
"connectionTypes": "Anslutningstyper",
|
||
"connType_terminal": "Terminal",
|
||
"connType_files": "Filhanteraren",
|
||
"connType_docker": "Hamnarbetare",
|
||
"connType_tunnel": "Tunnel",
|
||
"connType_host-metrics": "Värdstatistik",
|
||
"connType_rdp": "Landsbygdsutveckling",
|
||
"connType_vnc": "VNC",
|
||
"connType_telnet": "Telnet",
|
||
"widgetFileManagerName": "Filhanteraren",
|
||
"widgetFileManagerDesc": "Inbäddad SFTP-filhanterare för en konfigurerad värd",
|
||
"widgetDockerName": "Docker Manager",
|
||
"widgetDockerDesc": "Inbäddad Docker-containerhanterare för en konfigurerad värd",
|
||
"widgetTunnelName": "Tunnelchef",
|
||
"widgetTunnelDesc": "Inbäddad SSH-tunnelhanterare för en konfigurerad värd",
|
||
"widgetNoHostSelected": "Ingen värd konfigurerad"
|
||
},
|
||
"serverConfig": {
|
||
"title": "Serverkonfiguration",
|
||
"description": "Konfigurera Termix-serverns URL för att ansluta till dina backend-tjänster",
|
||
"serverUrl": "Server-URL",
|
||
"enterServerUrl": "Ange en server-URL",
|
||
"saveFailed": "Kunde inte spara konfigurationen",
|
||
"saveError": "Fel vid sparning av konfigurationen",
|
||
"saving": "Sparande...",
|
||
"saveConfig": "Spara konfiguration",
|
||
"helpText": "Ange URL:en där din Termix-server körs (t.ex. http://localhost:30001 eller https://your-server.com)",
|
||
"changeServer": "Ändra server",
|
||
"mustIncludeProtocol": "Serverns URL måste börja med http:// eller https://",
|
||
"allowInvalidCertificate": "Tillåt ogiltigt certifikat",
|
||
"allowInvalidCertificateDesc": "Använd endast för betrodda, självhostade servrar med självsignerade certifikat eller IP-adresscertifikat.",
|
||
"useEmbedded": "Använd lokal server",
|
||
"embeddedDesc": "Kör Termix med den inbyggda lokala servern (ingen fjärrserver behövs)",
|
||
"embeddedConnecting": "Ansluter till lokal server...",
|
||
"embeddedNotReady": "Den lokala servern är inte redo än. Vänta en stund och försök igen.",
|
||
"localServer": "Lokal server",
|
||
"savedServers": "Sparade servrar",
|
||
"noSavedServers": "Inga sparade servrar",
|
||
"removeServer": "Ta bort"
|
||
},
|
||
"migrationNotice": {
|
||
"title": "Termix Desktop körs nu fristående",
|
||
"body1": "Den här appen brukade ansluta direkt till din Termix-server. Den har omarbetats för att köras helt självständigt och lagrar värdar och inloggningsuppgifter lokalt så att den fortsätter att fungera offline. Tvåvägssynkronisering med en egen Termix-server är nu valfritt.",
|
||
"body2": "Dina befintliga värdar och inloggningsuppgifter finns fortfarande på {{url}}. Aktivera fjärrsynkronisering och återanslut till servern för att få tillbaka dem och hålla båda synkroniserade framöver.",
|
||
"dismiss": "Inte nu",
|
||
"setUpSync": "Konfigurera fjärrsynkronisering"
|
||
},
|
||
"remoteSync": {
|
||
"title": "Fjärrsynkronisering",
|
||
"description": "Anslut alternativt den här skrivbordsappen till en självhostad Termix-server för att synkronisera dina värdar, inloggningsuppgifter och kodavsnitt mellan enheter. Appen fungerar alltid helt offline oavsett om du ansluter eller inte.",
|
||
"notConnected": "Inte ansluten",
|
||
"connected": "Ansluten",
|
||
"connectedTo": "Ansluten till {{url}}",
|
||
"lastSynced": "Senast synkroniserad {{time}}",
|
||
"neverSynced": "Aldrig synkroniserad",
|
||
"syncError": "Synkroniseringsfel: {{message}}",
|
||
"needsReauth": "Inloggningen har upphört",
|
||
"connectButton": "Anslut till servern",
|
||
"disconnectButton": "Koppla från",
|
||
"syncNowButton": "Synkronisera nu",
|
||
"syncing": "Synkroniserar...",
|
||
"serverUrl": "Server-URL",
|
||
"enterServerUrl": "Ange en server-URL",
|
||
"mustIncludeProtocol": "Serverns URL måste börja med http:// eller https://",
|
||
"connectionTestFailed": "Kunde inte nå en Termix-server på den URL:en",
|
||
"allowInvalidCertificate": "Tillåt ogiltigt certifikat",
|
||
"allowInvalidCertificateDesc": "Använd endast för betrodda, självhostade servrar med självsignerade certifikat eller IP-adresscertifikat.",
|
||
"savedServers": "Sparade servrar",
|
||
"removeServer": "Ta bort",
|
||
"continueButton": "Fortsätta",
|
||
"cancelButton": "Avboka",
|
||
"signInTitle": "Logga in på {{url}}",
|
||
"originTitle": "Anslutningens ursprung",
|
||
"originDescription": "Välj var SSH-anslutningar kommer ifrån som standard. Detta kan åsidosättas per värd.",
|
||
"originLocal": "Den här enheten (lokalt nätverk)",
|
||
"originRemote": "Fjärrserver",
|
||
"bannerReconnect": "Återanslut",
|
||
"bannerMessage": "Fjärrsynkronisering behöver autentiseras på nytt"
|
||
},
|
||
"versionCheck": {
|
||
"error": "Versionskontrollfel",
|
||
"checkFailed": "Misslyckades med att söka efter uppdateringar",
|
||
"upToDate": "Appen är uppdaterad",
|
||
"currentVersion": "Du kör version {{version}}",
|
||
"updateAvailable": "Uppdatering tillgänglig",
|
||
"updateLinkLabel": "Uppdatering tillgänglig — öppna versionsinformationen på GitHub",
|
||
"newVersionAvailable": "En ny version är tillgänglig! Du kör {{current}}, men {{latest}} är tillgänglig.",
|
||
"betaVersion": "Betaversion",
|
||
"betaVersionDesc": "Du kör {{current}}, vilket är nyare än den senaste stabila versionen {{latest}}.",
|
||
"releasedOn": "Släpptes den {{date}}",
|
||
"downloadUpdate": "Ladda ner uppdatering",
|
||
"checking": "Söker efter uppdateringar...",
|
||
"checkUpdates": "Kontrollera efter uppdateringar",
|
||
"checkingUpdates": "Söker efter uppdateringar...",
|
||
"updateRequired": "Uppdatering krävs"
|
||
},
|
||
"common": {
|
||
"close": "Nära",
|
||
"minimize": "Minimera",
|
||
"online": "Online",
|
||
"offline": "Off-line",
|
||
"unknown": "Okänd",
|
||
"continue": "Fortsätta",
|
||
"maintenance": "Underhåll",
|
||
"degraded": "Degraderad",
|
||
"error": "Fel",
|
||
"warning": "Varning",
|
||
"unsavedChanges": "Osparade ändringar",
|
||
"dismiss": "Avfärda",
|
||
"more": "Mer",
|
||
"loading": "Belastning...",
|
||
"optional": "Frivillig",
|
||
"connect": "Ansluta",
|
||
"copied": "Kopierad",
|
||
"connecting": "Ansluter...",
|
||
"updateAvailable": "Uppdatering tillgänglig",
|
||
"appName": "Termix",
|
||
"openInNewTab": "Öppna i ny flik",
|
||
"noReleases": "Inga utgåvor",
|
||
"updatesAndReleases": "Uppdateringar och utgåvor",
|
||
"newVersionAvailable": "En ny version ({{version}}) är tillgänglig.",
|
||
"failedToFetchUpdateInfo": "Misslyckades med att hämta uppdateringsinformationen",
|
||
"preRelease": "Förhandsutgivning",
|
||
"noReleasesFound": "Inga utgåvor hittades.",
|
||
"cancel": "Avboka",
|
||
"username": "Användarnamn",
|
||
"login": "Inloggning",
|
||
"logout": "Utloggning",
|
||
"register": "Register",
|
||
"password": "Lösenord",
|
||
"confirmPassword": "Bekräfta lösenord",
|
||
"back": "Tillbaka",
|
||
"save": "Spara",
|
||
"saving": "Sparande...",
|
||
"delete": "Radera",
|
||
"rename": "Döpa om",
|
||
"edit": "Redigera",
|
||
"add": "Tillägga",
|
||
"confirm": "Bekräfta",
|
||
"no": "Inga",
|
||
"or": "ELLER",
|
||
"next": "Nästa",
|
||
"previous": "Tidigare",
|
||
"refresh": "Uppdatera",
|
||
"language": "Språk",
|
||
"checking": "Kontroll...",
|
||
"checkingDatabase": "Kontrollerar databasanslutning...",
|
||
"checkingAuthentication": "Kontrollerar autentisering...",
|
||
"backendReconnected": "Serveranslutningen återställd",
|
||
"connectionDegraded": "Serveranslutningen förlorades, återställs…",
|
||
"reload": "Ladda om",
|
||
"remove": "Ta bort",
|
||
"create": "Skapa",
|
||
"update": "Uppdatera",
|
||
"copy": "Kopiera",
|
||
"copyFailed": "Misslyckades med att kopiera till urklipp",
|
||
"maximize": "Maximera",
|
||
"restore": "Återställa",
|
||
"of": "av",
|
||
"saved": "Sparad",
|
||
"deleted": "Borttagen",
|
||
"deleteFailed": "Misslyckades med att radera",
|
||
"saveFailed": "Misslyckades med att spara",
|
||
"required": "Nödvändig"
|
||
},
|
||
"onboarding": {
|
||
"stepCounter": "Steg {{current}} av {{total}}",
|
||
"skip": "Hoppa över inställningar",
|
||
"next": "Nästa",
|
||
"finish": "Kom igång",
|
||
"welcomeTitle": "Välkommen till Termix",
|
||
"welcomeIntro": "Termix hanterar dina servrar från ett ställe. Installationen tar ungefär en minut och ingenting här är permanent.",
|
||
"welcome_hosts": "Spara dina servrar",
|
||
"welcome_hosts_desc": "Håll alla maskiner du hanterar i en lista.",
|
||
"welcome_terminal": "Anslut direkt",
|
||
"welcome_terminal_desc": "Öppna en terminal i en flik, ingen separat SSH-klient.",
|
||
"welcome_files": "Bläddra och redigera filer",
|
||
"welcome_files_desc": "Ladda upp, ladda ner och redigera fjärrfiler.",
|
||
"presetTitle": "Hur mycket vill du ha på skärmen?",
|
||
"presetIntro": "Termix kan vara så enkelt eller så detaljerat som du vill. Välj en utgångspunkt.",
|
||
"presetChangeLater": "Du kan byta förinställningar eller ändra en enskild inställning senare i Inställningar, under Gränssnitt.",
|
||
"appearanceTitle": "Gör det till ditt eget",
|
||
"appearanceIntro": "Välj ett tema, en accentfärg och ditt språk. Alla tre kan ändras senare i Inställningar.",
|
||
"featuresTitle": "Vad mer gör Termix",
|
||
"featuresIntro": "Varje server du sparar kan öppnas i mer än en terminal. Här är vad som väntar bakom ikonerna till vänster.",
|
||
"feature_files": "Filhanteraren",
|
||
"feature_files_desc": "Bläddra, ladda upp, ladda ner och redigera filer via SFTP utan att lämna appen.",
|
||
"feature_desktop": "Fjärrskrivbord",
|
||
"feature_desktop_desc": "Öppna RDP-, VNC- och Telnet-sessioner i en flik, samma som med SSH.",
|
||
"feature_tunnels": "Tunnlar",
|
||
"feature_tunnels_desc": "Vidarebefordra portar via en server för att nå tjänster som inte är exponerade.",
|
||
"feature_docker": "Hamnarbetare",
|
||
"feature_docker_desc": "Se containrar, läs loggar och titta på statistik för alla värdar som kör Docker.",
|
||
"feature_snippets": "Snuttar",
|
||
"feature_snippets_desc": "Spara kommandon du kör ofta och skicka dem till en terminal med ett enda klick.",
|
||
"feature_automations": "Automatiseringar",
|
||
"feature_automations_desc": "Kör steg automatiskt när något händer och få aviseringar.",
|
||
"feature_metrics": "Mätvärden och varningar",
|
||
"feature_metrics_desc": "Spåra CPU, minne och disk över tid och få en avisering när de blir dåliga.",
|
||
"featuresRailHint": "Behöver du inte någon av dessa? Dölj valfri ikon från sidofältet i Inställningar, under Navigering.",
|
||
"workflowTitle": "Rör dig snabbare",
|
||
"workflowIntro": "Några vanor som sparar mest tid när du väl har ett par servrar.",
|
||
"workflow_palette": "Kommandopalett",
|
||
"workflow_palette_desc": "Hoppa till valfri server eller åtgärd genom att skriva. Tryck två gånger på Skift för att öppna den.",
|
||
"workflow_split": "Delad skärm",
|
||
"workflow_split_desc": "Visa upp till fyra flikar sida vid sida för att titta på loggar medan du arbetar.",
|
||
"workflow_dock": "Sidopanel",
|
||
"workflow_dock_desc": "Mellanklicka eller högerklicka på en sidofältsikon för att öppna den som en flik eller fästa den till höger.",
|
||
"workflow_workspaces": "Arbetsytor",
|
||
"workflow_workspaces_desc": "Spara en uppsättning öppna flikar och öppna hela layouten igen senare.",
|
||
"securityTitle": "Att hålla dina inloggningar säkra",
|
||
"securityIntro": "Termix lagrar inloggningsuppgifter åt dig, så det är värt en minut att se hur det fungerar.",
|
||
"security_credentials": "Återanvändbara inloggningsuppgifter",
|
||
"security_credentials_desc": "Spara en nyckel eller ett lösenord en gång och koppla det till så många servrar du vill.",
|
||
"security_twofa": "Tvåfaktorer och lösenord",
|
||
"security_twofa_desc": "Lägg till TOTP eller en lösenkod till ditt konto i Inställningar, under Säkerhet.",
|
||
"security_identity": "Termix-ID",
|
||
"security_identity_desc": "Utfärda kortlivade SSH-certifikat istället för att kopiera nycklar till varje server.",
|
||
"security_sharing": "Delning",
|
||
"security_sharing_desc": "Ge andra användare åtkomst till en server utan att lämna ut lösenordet.",
|
||
"securityEncryptionNote": "Inloggningsuppgifter krypteras innan de lagras och dekrypteras endast när en anslutning behöver dem.",
|
||
"doneTitle": "Du är redo",
|
||
"doneHeading": "Installationen är klar",
|
||
"doneDesc": "Välj en server från sidofältet för att öppna en terminal, bläddra bland dess filer eller se dess mätvärden.",
|
||
"done_settings": "Ändra något senare",
|
||
"done_settings_desc": "Teman, layoutdensitet och vilka ikoner som visas finns alla i Inställningar.",
|
||
"done_rerun": "Vill du ha det här igen?",
|
||
"done_rerun_desc": "Öppna Inställningar, gå till Gränssnitt och välj Kör installationsprogrammet för att gå igenom dessa steg igen.",
|
||
"done_desktop": "Skrivbordsapp",
|
||
"done_desktop_desc": "Termix körs som en skrivbordsapp på Windows, macOS och Linux.",
|
||
"done_desktop_link": "Hämta skrivbordsappen",
|
||
"done_mobile": "Mobilapp",
|
||
"done_mobile_desc": "Ta med dig dina servrar på iOS och Android.",
|
||
"done_mobile_link": "Skaffa mobilappen",
|
||
"done_docs": "Fullständig dokumentation",
|
||
"done_docs_desc": "Guider för varje funktion, inklusive de som inte tas upp här.",
|
||
"done_docs_link": "Öppna dokumenten",
|
||
"done_cli": "Kommandoradsverktyg",
|
||
"done_cli_desc": "Hantera dina servrar från en terminal och använd Termix i dina egna skript.",
|
||
"done_cli_link": "Öppna CLI-dokumentationen",
|
||
"aiTitle": "AI-assistent",
|
||
"aiIntro": "Termix kan inkludera en valfri AI-assistent. Du kan ändra detta senare i dina inställningar.",
|
||
"aiEnableTitle": "Slå på den",
|
||
"aiEnableDesc": "Lägger till en assistent som läser din installation och föreslår ändringar som du godkänner. Kräver en leverantör som du tillhandahåller, till exempel en lokal Ollama.",
|
||
"aiSkipTitle": "Lämna den av",
|
||
"aiSkipDesc": "Termix fungerar som den gör nu. Assistenten förblir dold.",
|
||
"aiNote": "Ingenting skickas någonstans förrän du lägger till en leverantör och skickar ett meddelande."
|
||
},
|
||
"nav": {
|
||
"home": "Hem",
|
||
"terminal": "Terminal",
|
||
"localTerminal": "Lokal terminal",
|
||
"docker": "Hamnarbetare",
|
||
"tunnels": "Tunnlar",
|
||
"fileManager": "Filhanteraren",
|
||
"serverStats": "Värdstatistik",
|
||
"hostMetrics": "Värdstatistik",
|
||
"admin": "Administration",
|
||
"termixId": "ID",
|
||
"userProfile": "Användarprofil",
|
||
"splitScreen": "Delad skärm",
|
||
"confirmClose": "Stänga den här aktiva sessionen?",
|
||
"close": "Nära",
|
||
"cancel": "Avboka",
|
||
"sshManager": "SSH-hanterare",
|
||
"cannotSplitTab": "Det går inte att dela den här fliken",
|
||
"hostTabTitle": "{{username}}@{{ip}}:{{port}}",
|
||
"copyPassword": "Kopiera lösenord",
|
||
"copySudoPassword": "Kopiera Sudo-lösenord",
|
||
"passwordCopied": "Lösenordet kopierades till urklipp",
|
||
"noPasswordAvailable": "Inget lösenord tillgängligt",
|
||
"failedToCopyPassword": "Misslyckades med att kopiera lösenordet",
|
||
"refreshTab": "Uppdatera anslutningen",
|
||
"renameTab": "Byt namn på fliken",
|
||
"openFileManager": "Öppna filhanteraren",
|
||
"dashboard": "Instrumentpanel",
|
||
"networkGraph": "Nätverksgraf",
|
||
"tmuxMonitor": "Tmux-monitor",
|
||
"homepage": "Hemsida",
|
||
"quickConnect": "Snabbanslutning",
|
||
"sshTools": "SSH-verktyg",
|
||
"history": "Historia",
|
||
"sessionLogs": "Sessionsloggar",
|
||
"openAsTabHint": "Ctrl+klicka eller mellanklicka för att öppna som flik",
|
||
"openAsTab": "Öppna som flik",
|
||
"openInRightDock": "Öppna i höger docka",
|
||
"closeRightDock": "Stäng höger docka",
|
||
"toggleRightDock": "Växla höger docka",
|
||
"multiPanelHintTitle": "Arbeta med mer än en panel",
|
||
"multiPanelHintBody": "Låt den här panelen vara öppen medan sidofältet används till något annat. Två sätt att flytta den:",
|
||
"multiPanelHintTabHow": "Ctrl-klicka på dess skenikon, eller använd knappen i den här rubriken.",
|
||
"multiPanelHintDockHow": "Högerklicka på dess skenikon eller använd panelikonen i flikfältet.",
|
||
"sidebarSettings": "Inställningar för sidofältet...",
|
||
"hosts": "Värdar",
|
||
"snippets": "Snuttar",
|
||
"macros": "Makron",
|
||
"fleets": "Flottor",
|
||
"automations": "Automatiseringar",
|
||
"workspaces": "Arbetsytor",
|
||
"hostManager": "Värdhanterare",
|
||
"credentials": "Referenser",
|
||
"connections": "Anslutningar",
|
||
"alerts": "Aviseringar",
|
||
"serial": "Serie",
|
||
"roleAdministrator": "Administratör",
|
||
"roleUser": "Användare",
|
||
"ai": "AI"
|
||
},
|
||
"hosts": {
|
||
"hosts": "Värdar",
|
||
"noHosts": "Inga SSH-värdar",
|
||
"retry": "Försöka igen",
|
||
"refresh": "Uppdatera",
|
||
"optional": "Frivillig",
|
||
"downloadSample": "Ladda ner exempel",
|
||
"failedToDeleteHost": "Misslyckades med att ta bort {{name}}",
|
||
"importSkipExisting": "Importera (hoppa över befintliga)",
|
||
"importSSHConfig": "Importera från SSH-konfiguration",
|
||
"connectionDetails": "Anslutningsdetaljer",
|
||
"ssh": "SSH",
|
||
"telnet": "Telnet",
|
||
"remoteDesktop": "Fjärrskrivbord",
|
||
"port": "Hamn",
|
||
"username": "Användarnamn",
|
||
"folder": "Mapp",
|
||
"tags": "Taggar",
|
||
"pin": "Stift",
|
||
"addHost": "Lägg till värd",
|
||
"editHost": "Redigera värd",
|
||
"cloneHost": "Klona värd",
|
||
"enableTerminal": "Aktivera terminalen",
|
||
"enableTunnel": "Aktivera tunnel",
|
||
"enableFileManager": "Aktivera filhanteraren",
|
||
"enableDocker": "Aktivera Docker",
|
||
"defaultPath": "Standardsökväg",
|
||
"connection": "Förbindelse",
|
||
"upload": "Ladda upp",
|
||
"authentication": "Autentisering",
|
||
"password": "Lösenord",
|
||
"passwordSaved": "Lösenordet sparats, skriv för att ändra",
|
||
"key": "Nyckel",
|
||
"credential": "Referenser",
|
||
"none": "Ingen",
|
||
"sshPrivateKey": "SSH privat nyckel",
|
||
"keyType": "Nyckeltyp",
|
||
"uploadFile": "Ladda upp fil",
|
||
"tabGeneral": "Allmän",
|
||
"tabSsh": "SSH",
|
||
"tabTerminal": "Terminal",
|
||
"tabRdp": "Landsbygdsutveckling",
|
||
"tabVnc": "VNC",
|
||
"tabTunnels": "Tunnlar",
|
||
"tabDocker": "Hamnarbetare",
|
||
"tabFiles": "Filer",
|
||
"tabStats": "Värdstatistik",
|
||
"tabHostMetrics": "Värdstatistik",
|
||
"tabTelnet": "Telnet",
|
||
"tabSharing": "Delning",
|
||
"tabAuthentication": "Autentisering",
|
||
"terminal": "Terminal",
|
||
"tunnel": "Tunnel",
|
||
"fileManager": "Filhanteraren",
|
||
"serverStats": "Värdstatistik",
|
||
"status": "Status",
|
||
"folderRenamed": "Mappen \"{{oldName}}\" har bytt namn till \"{{newName}}\"",
|
||
"failedToRenameFolder": "Misslyckades med att byta namn på mappen",
|
||
"unsavedChangesDescription": "Dina värdändringar har inte sparats. Vill du slänga dem?",
|
||
"keepEditing": "Fortsätt redigera",
|
||
"discardChanges": "Ignorera ändringar",
|
||
"movedToFolder": "Flyttade {{count}} värd(ar) till \"{{folder}}\"",
|
||
"editHostTooltip": "Redigera värd",
|
||
"statusChecks": "Statuskontroller",
|
||
"metricsCollection": "Metriksamling",
|
||
"metricsInterval": "Intervall för mätvärdeninsamling",
|
||
"metricsIntervalDesc": "Hur ofta serverstatistik ska samlas in (5 sekunder - 1 timme)",
|
||
"behavior": "Beteende",
|
||
"themePreview": "Förhandsvisning av tema",
|
||
"theme": "Tema",
|
||
"fontFamily": "Typsnittsfamilj",
|
||
"fontSize": "Fontstorlek",
|
||
"letterSpacing": "Bokstavsavstånd",
|
||
"lineHeight": "Linjehöjd",
|
||
"cursorStyle": "Markörstil",
|
||
"cursorBlink": "Markörblinkning",
|
||
"scrollbackBuffer": "Scrollback-buffert",
|
||
"bellStyle": "Klockstil",
|
||
"rightClickSelectsWord": "Högerklicka markerar ord",
|
||
"fastScrollModifier": "Snabbrullningsmodifierare",
|
||
"fastScrollSensitivity": "Snabb rullningskänslighet",
|
||
"sshAgentForwarding": "Vidarebefordran av SSH-agent",
|
||
"backspaceMode": "Backstegsläge",
|
||
"startupSnippet": "Startkodavsnitt",
|
||
"selectSnippet": "Välj utdrag",
|
||
"forceKeyboardInteractive": "Tvinga tangentbordsinteraktivt",
|
||
"overrideCredentialUsername": "Åsidosätt användarnamn för inloggningsuppgifter",
|
||
"overrideCredentialUsernameDesc": "Använd användarnamnet som anges ovan istället för användarnamnet för inloggningsuppgifterna",
|
||
"oidcUsernameHint": "Använd $oidc.preferred_username för att ersätta ditt OIDC-inloggningsnamn.",
|
||
"tailscaleUsernameHint": "Detta måste vara en Unix-användare som din Tailscale-identitet är beviljad i tailnätets SSH ACL, inte nödvändigtvis root.",
|
||
"jumpHostChain": "Hoppa värdkedja",
|
||
"portKnocking": "Port Knocking",
|
||
"addKnock": "Lägg till port",
|
||
"addProxyNode": "Lägg till nod",
|
||
"proxyNode": "Proxy-nod",
|
||
"proxyType": "Proxytyp",
|
||
"quickActions": "Snabbåtgärder",
|
||
"sudoPasswordAutoFill": "Sudo-lösenordsautomatik",
|
||
"sudoPassword": "Sudo-lösenord",
|
||
"keepaliveInterval": "Keepalive-intervall (ms)",
|
||
"moshCommand": "MOSH-kommandot",
|
||
"environmentVariables": "Miljövariabler",
|
||
"addVariable": "Lägg till variabel",
|
||
"docker": "Hamnarbetare",
|
||
"copyTerminalUrl": "Kopiera terminal-URL",
|
||
"copyFileManagerUrl": "Kopiera filhanterarens URL",
|
||
"copyRemoteDesktopUrl": "Kopiera URL för fjärrskrivbord",
|
||
"failedToConnect": "Misslyckades med att ansluta till konsolen",
|
||
"connect": "Ansluta",
|
||
"disconnect": "Koppla från",
|
||
"start": "Start",
|
||
"enableStatusCheck": "Aktivera statuskontroll",
|
||
"enableMetrics": "Aktivera mätvärden",
|
||
"bulkUpdateFailed": "Massuppdatering misslyckades",
|
||
"selectAll": "Markera alla",
|
||
"deselectAll": "Avmarkera alla",
|
||
"protocols": "Protokoll",
|
||
"secureShell": "Säkert skal",
|
||
"virtualNetwork": "Virtuellt nätverk",
|
||
"unencryptedShell": "Okrypterat skal",
|
||
"addressIp": "Adress / IP-adress",
|
||
"friendlyName": "Vänligt namn",
|
||
"macAddress": "MAC-adress",
|
||
"wolBroadcastAddress": "WoL-sändningsadress",
|
||
"wolBroadcastAddressDesc": "Valfri riktad sändning för Docker-/routade nätverk (t.ex. 192.168.1.255). Lämna tomt för att använda 255.255.255.255.",
|
||
"folderAndAdvanced": "Mapp och avancerat",
|
||
"showAdvancedSettings": "Visa avancerade inställningar",
|
||
"hideAdvancedSettings": "Dölj avancerade inställningar",
|
||
"privateNotes": "Privata anteckningar",
|
||
"privateNotesPlaceholder": "Detaljer om den här servern...",
|
||
"pinToTop": "Fäst till toppen",
|
||
"pinToTopDesc": "Visa alltid denna värd högst upp i listan",
|
||
"portKnockingSequence": "Port Knocking-sekvens",
|
||
"addKnockBtn": "Lägg till knackning",
|
||
"noPortKnocking": "Ingen port knocking konfigurerad.",
|
||
"knockPort": "Knock Port",
|
||
"protocol": "Protokoll",
|
||
"delayAfterMs": "Fördröjning efter (ms)",
|
||
"useSocks5Proxy": "Använd SOCKS5-proxy",
|
||
"useSocks5ProxyDesc": "Led anslutning via en proxyserver",
|
||
"connectionOrigin": "Anslutningens ursprung",
|
||
"connectionOriginDesc": "Varifrån den här värdens SSH-anslutning kommer. Åsidosätter skrivbordsappens globala standardvärde.",
|
||
"connectionOriginDefault": "Använd standard",
|
||
"connectionOriginLocal": "Den här enheten (lokalt nätverk)",
|
||
"connectionOriginRemote": "Fjärrserver",
|
||
"proxyHost": "Proxyvärd",
|
||
"proxyPort": "Proxyport",
|
||
"proxyUsername": "Proxy-användarnamn",
|
||
"proxyPassword": "Proxy-lösenord",
|
||
"proxySingleMode": "Enskild proxy",
|
||
"proxyChainMode": "Proxykedja",
|
||
"you": "Du",
|
||
"jumpHostChainLabel": "Hoppa värdkedja",
|
||
"addJumpBtn": "Lägg till hopp",
|
||
"noJumpHosts": "Inga hoppvärdar konfigurerade.",
|
||
"selectAServer": "Välj en server...",
|
||
"sshPort": "SSH-port",
|
||
"authMethod": "Autentiseringsmetod",
|
||
"authenticationMethod": "Autentiseringsmetod",
|
||
"authenticationMethodDesc": "Välj den metod som Termix kommer att använda för att autentisera denna SSH-anslutning. Andra metoder testas inte automatiskt.",
|
||
"storedCredential": "Lagrade autentiseringsuppgifter",
|
||
"selectACredential": "Välj en behörighetsinloggning...",
|
||
"vaultProfile": "Profil för valvsignerare",
|
||
"selectAVaultProfile": "Välj en Vault-profil...",
|
||
"vaultProfileHint": "Inställningarna kommer från den delade profilen; du loggar in på Vault via OIDC när du ansluter. Inga hemligheter lagras.",
|
||
"vaultNewProfile": "Ny profil",
|
||
"vaultManageProfiles": "Hantera Vault-profiler",
|
||
"vaultAddrLabel": "Valvadress",
|
||
"vaultNamespaceLabel": "Namnrymd",
|
||
"vaultOidcMountLabel": "OIDC-autentiseringsmontering",
|
||
"vaultOidcRoleLabel": "OIDC-roll",
|
||
"vaultSshMountLabel": "SSH-hemligheter monteras",
|
||
"vaultSshRoleLabel": "SSH-signerarroll",
|
||
"vaultValidPrincipalsLabel": "Giltiga principer",
|
||
"vaultKeyTypeLabel": "Tillfällig nyckeltyp",
|
||
"vaultSharedLabel": "Dela med alla användare",
|
||
"vaultCreateProfile": "Skapa profil",
|
||
"vaultProfileCreated": "Arkivprofil skapad",
|
||
"vaultProfileSaved": "Arkivprofilen har sparats",
|
||
"vaultProfileDeleted": "Arkivprofil raderad",
|
||
"vaultProfileSaveFailed": "Kunde inte spara arkivprofilen",
|
||
"vaultProfileDeleteFailed": "Misslyckades med att ta bort Arkiv-profilen",
|
||
"vaultSaveProfile": "Spara profil",
|
||
"vaultProfileValidationError": "Namn, valvadress och SSH-signerarroll krävs",
|
||
"vaultNoProfiles": "Inga Vault-profiler ännu.",
|
||
"vaultSharedBadge": "delad",
|
||
"keyTypeLabel": "Nyckeltyp",
|
||
"keyTypeAuto": "Automatisk identifiering",
|
||
"keyPasteTab": "Klistra",
|
||
"keyUploadTab": "Ladda upp",
|
||
"keyFileLoaded": "Nyckelfilen laddades",
|
||
"keyUploadClick": "Klicka för att ladda upp .pem / .key / .ppk",
|
||
"clearKey": "Rensa nyckel",
|
||
"keySaved": "SSH-nyckeln sparad",
|
||
"keyReplaceNotice": "klistra in en ny nyckel nedan för att ersätta den",
|
||
"keyPassphraseSaved": "Lösenfrasen sparad, skriv för att ändra",
|
||
"replaceKey": "Byt nyckel",
|
||
"docsLink": "Visa dokument",
|
||
"opksshLabel": "OPKSSH",
|
||
"opksshDesc": "Logga in på den här värden med din identitetsleverantör istället för ett lösenord eller en nyckel. Kräver att OPKSSH är konfigurerat på servern.",
|
||
"warpgateLabel": "Warpgate Gateway",
|
||
"warpgateDesc": "Denna värd ansluter via en Warpgate SSH-proxy. Termix hanterar det webbläsarbaserade godkännandeflödet automatiskt efter autentisering.",
|
||
"agentLabel": "SSH-agent",
|
||
"agentDesc": "Autentisera med en SSH-agent som körs på Termix-servern (Bitwarden, 1Password, gpg-agent, KeeAgent, ssh-agent). Agenten måste köras på den maskin där Termix finns.",
|
||
"agentAuthenticationDesc": "Använd nycklar från en SSH-agent för att autentisera den här anslutningen. Lämna socket-sökvägen tom om du vill använda SSH_AUTH_SOCK.",
|
||
"agentSocketPathLabel": "Agent Socket-sökväg",
|
||
"agentSocketPathPlaceholder": "Lämna tomt för att använda SSH_AUTH_SOCK",
|
||
"agentSocketPathHint": "Lämna tomt för att automatiskt identifiera från miljövariabeln SSH_AUTH_SOCK, eller ange en anpassad socket-sökväg (t.ex. /run/user/1000/gnupg/S.gpg-agent.ssh).",
|
||
"shareSshAuthLabel": "Dela SSH-autentisering",
|
||
"shareSshAuthDesc": "Ge mottagarna krypterade kopior av denna värds SSH-autentisering. Mottagarens personliga inloggningsuppgifter har fortfarande företräde.",
|
||
"tailscaleDeviceSelect": "Välj Tailscale-enhet",
|
||
"tailscaleDeviceSelectPlaceholder": "Välj en enhet...",
|
||
"tailscaleNoApiKey": "Ingen Tailscale API-nyckel konfigurerad. Lägg till en i administratörsinställningarna för att aktivera enhetsidentifiering.",
|
||
"tailscaleDocsLink": "Visa dokument",
|
||
"tailscaleLoadingDevices": "Laddar enheter...",
|
||
"tailscaleDeviceLoadFailed": "Misslyckades med att läsa in Tailscale-enheter. Kontrollera API-URL:en och nätverksanslutningen.",
|
||
"tailscaleNoDevices": "Inga enheter hittades i ditt tailnet.",
|
||
"tailscaleDeviceAutoFill": "Om du väljer en enhet fylls värdens IP-adress automatiskt i.",
|
||
"forceKeyboardInteractiveLabel": "Tvinga tangentbordet interaktivt",
|
||
"forceKeyboardInteractiveShortDesc": "Tvinga fram manuell lösenordsinmatning även om nycklar finns",
|
||
"allowLegacyAlgorithmsLabel": "Tillåt äldre algoritmer",
|
||
"allowLegacyAlgorithmsDesc": "Aktivera föråldrade SSH-algoritmer (ssh-dss, ssh-rsa, diffie-hellman-group1-sha1, hmac-md5, 3des-cbc) för anslutningar till gamla enheter som inte kan uppgraderas.",
|
||
"insecure": "Osäker",
|
||
"terminalAppearance": "Terminalens utseende",
|
||
"colorTheme": "Färgtema",
|
||
"fontFamilyLabel": "Typsnittsfamilj",
|
||
"fontFamilyCustomOption": "Beställnings...",
|
||
"fontFamilyCustomPlaceholder": "Exakt typsnittsnamn, t.ex. MesloLGS NF",
|
||
"fontFamilyCustomHint": "Välj ett paketerat teckensnitt, eller välj Anpassad och skriv det exakta namnet på ett teckensnitt som redan är installerat på ditt system (t.ex. MesloLGS NF, Noto Sans Mono). Termix kan inte installera teckensnitt åt dig, installera det på ditt operativsystem först.",
|
||
"fontSizeLabel": "Fontstorlek",
|
||
"cursorStyleLabel": "Markörstil",
|
||
"letterSpacingPx": "Bokstavsavstånd (px)",
|
||
"lineHeightLabel": "Linjehöjd",
|
||
"bellStyleLabel": "Klockstil",
|
||
"backspaceModeLabel": "Backstegsläge",
|
||
"cursorBlinking": "Markören blinkar",
|
||
"cursorBlinkingDesc": "Aktivera blinkande animering för terminalmarkören",
|
||
"rightClickSelectsWordLabel": "Högerklicka Markerar ord",
|
||
"rightClickSelectsWordShortDesc": "Markera ordet under markören vid högerklick",
|
||
"macOptionIsMetaLabel": "Alternativtangenten skickar meta",
|
||
"macOptionIsMetaShortDesc": "Inaktivera möjligheten att skriva specialtecken (som @ eller |) med Alternativ/Alt-tangenten på macOS istället för att skicka Meta",
|
||
"backgroundImageLabel": "URL för bakgrundsbild",
|
||
"backgroundImageDesc": "Valfri URL för en bakgrundsbild i terminalen",
|
||
"backgroundImageOpacityLabel": "Bakgrundsbildens opacitet",
|
||
"customThemeColors": "Anpassade färger",
|
||
"customThemeBackground": "Bakgrund",
|
||
"customThemeForeground": "Förgrund",
|
||
"customThemeCursor": "Markör",
|
||
"customThemeCursorAccent": "Marköraccent",
|
||
"customThemeSelection": "Urval",
|
||
"customThemeAnsiColors": "ANSI-färger",
|
||
"customThemeBlack": "Svart",
|
||
"customThemeRed": "Röd",
|
||
"customThemeGreen": "Grön",
|
||
"customThemeYellow": "Gul",
|
||
"customThemeBlue": "Blå",
|
||
"customThemeMagenta": "Magenta",
|
||
"customThemeCyan": "Cyan",
|
||
"customThemeWhite": "Vit",
|
||
"customThemeBrightBlack": "Ljussvart",
|
||
"customThemeBrightRed": "Klarröd",
|
||
"customThemeBrightGreen": "Ljusgrön",
|
||
"customThemeBrightYellow": "Klargul",
|
||
"customThemeBrightBlue": "Klarblå",
|
||
"customThemeBrightMagenta": "Ljus magenta",
|
||
"customThemeBrightCyan": "Ljus cyan",
|
||
"customThemeBrightWhite": "Klarvitt",
|
||
"customThemeResetTooltip": "Återställ till standardinställningarna",
|
||
"savedThemesLabel": "Sparade teman",
|
||
"saveAsGlobalTheme": "Spara som globalt tema",
|
||
"saveGlobalThemeNamePrompt": "Ange ett namn för detta tema",
|
||
"saveGlobalThemeSuccess": "Temat sparat",
|
||
"saveGlobalThemeError": "Misslyckades med att spara temat",
|
||
"applyGlobalThemeTooltip": "Använd detta tema",
|
||
"deleteGlobalThemeTooltip": "Ta bort det här temat",
|
||
"noSavedThemes": "Inga sparade teman ännu",
|
||
"syntaxHighlightingLabel": "Syntaxmarkering",
|
||
"syntaxHighlightingDesc": "Färglägg terminalutdata (fel, sökvägar, IP-adresser, tidsstämplar)",
|
||
"syntaxHighlightingCategories": "Markera kategorier",
|
||
"syntaxHighlightingCategoriesDesc": "Välj vilka typer av innehåll som ska färgläggas",
|
||
"syntaxCategoryLogLevels": "Loggnivåer",
|
||
"syntaxCategoryLogLevelsDesc": "fel, varna, information, felsök, dödlig",
|
||
"syntaxCategoryPaths": "Filsökvägar",
|
||
"syntaxCategoryPathsDesc": "/usr/share/doc, ~/fil.txt",
|
||
"syntaxCategoryTimestamps": "Tidsstämplar",
|
||
"syntaxCategoryTimestampsDesc": "[12:34:56], 2024-01-15",
|
||
"syntaxCategoryIpAddresses": "IP-adresser",
|
||
"syntaxCategoryIpAddressesDesc": "192.168.1.1, 10.0.0.1:8080",
|
||
"syntaxCategoryUrls": "URL:er",
|
||
"syntaxCategoryUrlsDesc": "https://example.com",
|
||
"syntaxCategoryNumbers": "Märkta nummer",
|
||
"syntaxCategoryNumbersDesc": "port 8080, utgång 1, status 404",
|
||
"behaviorAndAdvanced": "Beteende och avancerat",
|
||
"scrollbackBufferLabel": "Scrollback-buffert",
|
||
"scrollbackMaxLines": "Maximalt antal rader som sparas i historiken",
|
||
"sshAgentForwardingLabel": "Vidarebefordran av SSH-agent",
|
||
"sshAgentForwardingShortDesc": "Tillåt den här fjärrvärden att använda din lokala SSH-agent för vidare anslutningar. Detta krävs inte för agentautentisering.",
|
||
"useSSHTitleLabel": "Använd SSH-fönstertitel",
|
||
"useSSHTitleDesc": "Uppdatera flikrubriken från skalets fönsterrubriken istället för värdnamnet",
|
||
"enableAutoMosh": "Aktivera Auto-Mosh",
|
||
"enableAutoMoshDesc": "Föredra Mosh framför SSH om tillgängligt",
|
||
"enableAutoTmux": "Aktivera Auto-Tmux",
|
||
"enableAutoTmuxDesc": "Starta eller anslut automatiskt till tmux-session",
|
||
"enableSessionLogging": "Sessionsloggning",
|
||
"enableSessionLoggingDesc": "Spela in utdata från terminalsessionen för senare granskning",
|
||
"allowSessionSharing": "Tillåt sessionsdelning",
|
||
"allowSessionSharingDesc": "Tillåt att livesessioner på den här värden delas via länk eller med andra användare",
|
||
"enableCommandHistory": "Kommandohistorik",
|
||
"enableCommandHistoryDesc": "Record-kommandon körs i den här terminalen för historik och autofullständig ifyllning",
|
||
"localEchoLabel": "Lokalt eko",
|
||
"localEchoDesc": "Förutsäg säkra utskrivbara tangenttryckningar lokalt på långsamma anslutningar. Lösenordsförfrågningar och kontrollinmatning upprepas aldrig.",
|
||
"localEchoDefault": "Använd global inställning",
|
||
"localEchoOff": "Av",
|
||
"localEchoAuto": "Automatisk",
|
||
"localEchoOn": "Alltid på",
|
||
"linkClickBehaviorLabel": "Länkklickbeteende",
|
||
"linkClickBehaviorDesc": "Styr vad som händer när du klickar på en länk i terminalen. Använd \"Standard\" för att följa inställningen på appnivå.",
|
||
"linkClickBehaviorDefault": "Standard (inställning för att följa appen)",
|
||
"linkClickBehaviorConfirm": "Visa popup för att öppna eller kopiera",
|
||
"linkClickBehaviorDirect": "Öppna direkt",
|
||
"sudoPasswordAutoFillLabel": "Sudo-lösenordsautomatik",
|
||
"sudoPasswordAutoFillShortDesc": "Ange automatiskt sudo-lösenordet när du blir ombedd",
|
||
"sudoPasswordAutoFillDesc": "Lagra ett sudo-lösenord så att värdmätvärden, terminalprompter och annat kan köra privilegierade kommandon automatiskt.",
|
||
"sudoPasswordLabel": "Sudo-lösenord",
|
||
"sudoPasswordSaved": "Lösenordet sparats, skriv för att ändra",
|
||
"environmentVariablesLabel": "Miljövariabler",
|
||
"addVariableBtn": "Lägg till variabel",
|
||
"noEnvVars": "Inga miljövariabler har konfigurerats.",
|
||
"fastScrollModifierLabel": "Snabbrullningsmodifierare",
|
||
"fastScrollSensitivityLabel": "Snabb rullningskänslighet",
|
||
"moshCommandLabel": "Mosh-kommandot",
|
||
"startupSnippetLabel": "Startkodavsnitt",
|
||
"keepaliveIntervalLabel": "Keepalive-intervall (sekunder)",
|
||
"maxKeepaliveMisses": "Max Keepalive missar",
|
||
"tunnelSettings": "Tunnelinställningar",
|
||
"enableTunneling": "Aktivera tunnelering",
|
||
"enableTunnelingDesc": "Aktivera SSH-tunnelfunktionalitet för den här värden",
|
||
"serverTunnelsSection": "Servertunnlar",
|
||
"addTunnelBtn": "Lägg till tunnel",
|
||
"noTunnelsConfigured": "Inga tunnlar konfigurerade.",
|
||
"tunnelLabel": "Tunnel {{number}}",
|
||
"tunnelType": "Tunneltyp",
|
||
"tunnelModeLocalDesc": "Vidarebefordra en lokal port till en port på fjärrservern (eller en värd som är nåbar från den).",
|
||
"tunnelModeRemoteDesc": "Vidarebefordra en port på fjärrservern tillbaka till en lokal port på din maskin.",
|
||
"tunnelModeDynamicDesc": "Skapa en SOCKS5-proxy på en lokal port för dynamisk portvidarebefordran.",
|
||
"sameHost": "Denna värd (direkt tunnel)",
|
||
"endpointHost": "Slutpunktsvärd",
|
||
"endpointHostPlaceholder": "Samma värd, SSH-värd eller nåbar värd/IP",
|
||
"endpointPort": "Slutpunktsport",
|
||
"bindHost": "Bind värd",
|
||
"sourcePort": "Källport",
|
||
"maxRetries": "Max antal återförsök",
|
||
"retryIntervalS": "Intervall för återförsök (s)",
|
||
"autoStartLabel": "Autostart",
|
||
"autoStartDesc": "Anslut automatiskt den här tunneln när värden laddas",
|
||
"tunnelConnecting": "Tunnelförbindelse...",
|
||
"tunnelDisconnected": "Tunneln frånkopplad",
|
||
"failedToConnectTunnel": "Misslyckades med att ansluta",
|
||
"failedToDisconnectTunnel": "Misslyckades med att koppla från",
|
||
"dockerIntegration": "Docker-integration",
|
||
"enableDockerMonitor": "Aktivera Docker",
|
||
"enableDockerMonitorDesc": "Övervaka och hantera containrar på den här värden via Docker",
|
||
"containerRuntime": "Containerkörningstid",
|
||
"containerRuntimeDesc": "Välj det CRI som används för containerhantering på den här värden",
|
||
"containerRuntimeDocker": "Hamnarbetare",
|
||
"containerRuntimePodman": "Podman",
|
||
"enableTmuxMonitor": "Aktivera Tmux-monitorn",
|
||
"enableTmuxMonitorDesc": "Visa denna värd i Tmux Monitor och lägg till dess tmux-åtgärder i sidofältet",
|
||
"enableTerminalToolbar": "Aktivera terminalverktygsfältet",
|
||
"enableTerminalToolbarDesc": "Visa en snabbåtkomstverktygsfält dockad till den aktiva terminalen för den här värdens verktyg och livestatistik",
|
||
"tabProxmox": "Proxmox",
|
||
"proxmoxIntegration": "Proxmox-integration",
|
||
"enableProxmox": "Aktivera Proxmox",
|
||
"enableProxmoxDesc": "Markera denna värd som en Proxmox-nod. Aktiverar gästidentifiering och import direkt från denna värd.",
|
||
"proxmoxDefaultAuthType": "Standardautentiseringstyp",
|
||
"proxmoxDefaultAuthTypeDesc": "Autentiseringsmetod tillämpad på importerade gästvärdar. Välj den autentiseringstyp som matchar hur du ansluter till dina gäster.",
|
||
"authTypePassword": "Lösenord",
|
||
"authTypeKey": "SSH-nyckel",
|
||
"authTypeCredential": "Referenser",
|
||
"authTypeOpkssh": "OPKSSH",
|
||
"authTypeNone": "Ingen",
|
||
"proxmoxDefaultCredential": "Standardautentiseringsuppgifter",
|
||
"proxmoxDefaultCredentialDesc": "Autentiseringsuppgifter som används för importerade gästvärdar när autentiseringstypen är inställd på Autentiseringsuppgifter.",
|
||
"proxmoxWindowsDetection": "Windows/RDP-detektering",
|
||
"proxmoxWindowsDetectionDesc": "Kommaavgränsade namnmönster som utlöser RDP istället för SSH (skiftlägesobegränsande)",
|
||
"proxmoxDockerDetection": "Docker-detektering",
|
||
"proxmoxDockerDetectionDesc": "Kommaavgränsade namnmönster som gör det möjligt för Docker att matcha gäster",
|
||
"proxmoxPreferredRanges": "Föredragna IP-intervall",
|
||
"proxmoxPreferredRangesDesc": "Kommaavgränsade prefix i prioritetsordning för IP-val när en gäst har flera gränssnitt",
|
||
"proxmoxAutoSync": "Synkronisera gäster automatiskt",
|
||
"proxmoxAutoSyncDesc": "Upptäck regelbundet denna Proxmox-nod och skapa eller uppdatera importerade gästvärdar medan din session är upplåst.",
|
||
"proxmoxSyncInterval": "Synkroniseringsintervall (minuter)",
|
||
"proxmoxSyncIntervalDesc": "Minst 5 minuter. Schemaläggaren hoppar över låsta användarsessioner.",
|
||
"proxmoxMarkMissing": "Markera saknade gäster",
|
||
"proxmoxMarkMissingDesc": "Lägg till en proxmox-missing-tagg när en tidigare importerad gäst försvinner istället för att ta bort den.",
|
||
"proxmoxLastSync": "Senaste synkronisering",
|
||
"proxmoxLastSyncNever": "Inte synkroniserad än",
|
||
"proxmoxLastSyncNoResult": "Inga resultatdetaljer",
|
||
"proxmoxLastSyncSummary": "{{created}} skapad, {{updated}} uppdaterad, {{markedMissing}} saknas, {{skipped}} hoppad över",
|
||
"proxmoxLastSyncStatus": {
|
||
"success": "Framgång",
|
||
"error": "Misslyckades",
|
||
"pending": "I avvaktan på"
|
||
},
|
||
"proxmoxDiscoverAction": "Upptäck och importera Proxmox-gäster",
|
||
"proxmoxImportTitle": "Importera från Proxmox",
|
||
"proxmoxSelectHost": "Välj en Proxmox-värd…",
|
||
"proxmoxDiscover": "Upptäcka",
|
||
"proxmoxDiscovering": "Upptäcker…",
|
||
"proxmoxDiscoverGuests": "Upptäck gäster",
|
||
"proxmoxGuestsSelected_one": "{{count}} gäst — {{selected}} vald",
|
||
"proxmoxGuestsSelected_other": "{{count}} gäster — {{selected}} vald",
|
||
"proxmoxSelectAll": "Markera alla",
|
||
"proxmoxDeselectAll": "Avmarkera alla",
|
||
"proxmoxNoGuests": "Inga gäster hittades på denna Proxmox-nod.",
|
||
"proxmoxImportButton_one": "Importera {{count}} värd",
|
||
"proxmoxImportButton_other": "Importera {{count}} värdar",
|
||
"proxmoxResultImported": "{{count}} importerad",
|
||
"proxmoxResultUpdated": "{{count}} uppdaterad",
|
||
"proxmoxResultFailed": "{{count}} misslyckades",
|
||
"proxmoxResultSkippedNoIp": "{{count}} hoppades över (ingen IP-adress hittades)",
|
||
"proxmoxImportComplete": "Proxmox-import klar: {{summary}}",
|
||
"proxmoxDiscoveryFailed": "Upptäckten misslyckades",
|
||
"proxmoxImportFailed": "Importen misslyckades",
|
||
"enableProxmoxStats": "Aktivera Proxmox-statistik",
|
||
"enableProxmoxStatsDesc": "Visa en Proxmox-statistikflik för den här värden med live-nod-, gäst-, lagrings- och klusterstatistik insamlad via SSH.",
|
||
"proxmoxStatsPollInterval": "Undersökningsintervall (sekunder)",
|
||
"proxmoxStatsPollIntervalDesc": "Minst 15 sekunder. Hur ofta Proxmox-nodstatistik ska uppdateras.",
|
||
"proxmoxStatsNodeOverride": "Åsidosättning av nodnamn",
|
||
"proxmoxStatsNodeOverrideDesc": "Åsidosätt automatisk detektering av Proxmox-nodnamnet (detekteras via värdnamn som standard).",
|
||
"proxmoxStatsNodeOverridePlaceholder": "Automatiskt identifierad från värdnamn",
|
||
"proxmoxStatsUrlCopied": "Proxmox Stats URL kopierad till urklipp",
|
||
"copyProxmoxStatsUrlAction": "Kopiera Proxmox Stats-URL",
|
||
"enableFileManagerMonitor": "Aktivera filhanteraren",
|
||
"enableFileManagerMonitorDesc": "Bläddra bland och hantera filer på den här värden via SFTP",
|
||
"scpLegacyLabel": "SCP Legacy-läge",
|
||
"scpLegacyDesc": "Använd äldre filöverföring för servrar som inte stöder SFTP-undersystemet (t.ex. inbäddade eller minimala SSH-servrar).",
|
||
"defaultPathLabel": "Standardsökväg",
|
||
"fileManagerPathHint": "Katalogen som ska öppnas när filhanteraren startas för den här värden.",
|
||
"statusChecksLabel": "Statuskontroller",
|
||
"enableStatusChecks": "Aktivera statuskontroller",
|
||
"enableStatusChecksDesc": "Pinga den här värden regelbundet för att verifiera tillgänglighet",
|
||
"useGlobalInterval": "Använd globalt intervall",
|
||
"useGlobalIntervalDesc": "Åsidosätt med det serveromfattande statuskontrollintervallet",
|
||
"checkIntervalS": "Kontrollintervall (s)",
|
||
"checkIntervalDesc": "Sekunder mellan varje anslutningsping",
|
||
"metricsCollectionLabel": "Metriksamling",
|
||
"enableMetricsLabel": "Aktivera mätvärden",
|
||
"enableMetricsDesc": "Samla in CPU, RAM, disk och andra mätvärden från den här värden",
|
||
"useGlobalMetrics": "Använd globalt intervall",
|
||
"useGlobalMetricsDesc": "Åsidosätt med det serveromfattande mätintervallet",
|
||
"metricsIntervalS": "Mätintervall (s)",
|
||
"metricsIntervalDesc2": "Sekunder mellan mätvärdesbilder",
|
||
"excludedMountsLabel": "Undantagna fästen",
|
||
"monitoredMountsLabel": "Anpassade övervakade sökvägar",
|
||
"monitoredMountsDesc": "Lägg till sökvägar som inte exponeras som separata monteringar, inklusive bindningsmonterade Home Assistant-sökvägar som /config.",
|
||
"monitoredMountPathPlaceholder": "Sökväg (/config, /mnt/data)",
|
||
"monitoredMountLabelPlaceholder": "Etikett (valfritt)",
|
||
"addMonitoredMount": "Lägg till sökväg",
|
||
"excludedMountsDesc": "Dölj specifika monteringspunkter eller filsystemtyper (t.ex. nfs, cifs) från diskanvändning och aviseringar för den här värden.",
|
||
"excludedMountsPlaceholder": "Monteringssökväg (/mnt/nas) eller filsystemtyp (nfs, cifs)",
|
||
"excludedMountsEmpty": "Inga monteringar är undantagna. Alla upptäckta filsystem visas.",
|
||
"addExcludedMount": "Tillägga",
|
||
"visibleWidgets": "Synliga widgetar",
|
||
"widgetsMovedToHostMetrics": "Kort läggs nu till, ordnas och ändras i storlek direkt på fliken Värdstatistik. Öppna Värdstatistik för den här värden och använd Anpassa för att välja vilka kort som visas.",
|
||
"cpuUsageLabel": "CPU-användning",
|
||
"cpuUsageDesc": "CPU-procent, belastningsmedelvärden, sparkline-diagram",
|
||
"memoryLabel": "Minnesanvändning",
|
||
"memoryDesc": "RAM-användning, växling, cachade",
|
||
"storageLabel": "Diskanvändning",
|
||
"storageDesc": "Diskanvändning per monteringspunkt",
|
||
"networkLabel": "Nätverksgränssnitt",
|
||
"networkDesc": "Gränssnittslista och bandbredd",
|
||
"uptimeLabel": "Drifttid",
|
||
"uptimeDesc": "Systemdrifttid och starttid",
|
||
"systemInfoLabel": "Systeminformation",
|
||
"systemInfoDesc": "OS, kärna, värdnamn, arkitektur",
|
||
"recentLoginsLabel": "Senaste inloggningar",
|
||
"recentLoginsDesc": "Lyckade och misslyckade inloggningshändelser",
|
||
"topProcessesLabel": "Toppprocesser",
|
||
"topProcessesDesc": "PID, CPU%, MEM%, kommando",
|
||
"listeningPortsLabel": "Lyssningsportar",
|
||
"listeningPortsDesc": "Öppna portar med process och tillstånd",
|
||
"firewallLabel": "Brandvägg",
|
||
"firewallDesc": "Brandvägg, AppArmor, SELinux-status",
|
||
"quickActionsLabel": "Snabbåtgärder",
|
||
"quickActionsToolbar": "Snabbåtgärder visas som knappar i verktygsfältet Host Metrics för att köra kommandon med ett klick.",
|
||
"noQuickActions": "Inga snabba åtgärder ännu.",
|
||
"buttonLabel": "Knappetikett",
|
||
"selectSnippetPlaceholder": "Välj utdrag...",
|
||
"addActionBtn": "Lägg till åtgärd",
|
||
"hostSharedSuccessfully": "Värden delades",
|
||
"failedToShareHost": "Misslyckades med att dela värden",
|
||
"accessRevoked": "Åtkomst återkallad",
|
||
"failedToRevokeAccess": "Misslyckades med att återkalla åtkomst",
|
||
"cancelBtn": "Avboka",
|
||
"savingBtn": "Sparande...",
|
||
"addHostBtn": "Lägg till värd",
|
||
"hostUpdated": "Värden uppdaterad",
|
||
"hostCreated": "Värd skapad",
|
||
"failedToSave": "Misslyckades med att spara värden",
|
||
"credentialUpdated": "Uppdaterad autentiseringsuppgifter",
|
||
"credentialCreated": "Autentiseringsuppgifter skapade",
|
||
"failedToSaveCredential": "Misslyckades med att spara inloggningsuppgifterna",
|
||
"credentialNameRequired": "Ange ett namn för autentiseringsuppgifterna",
|
||
"credentialAuthRequired": "Lägg till ett lösenord, en SSH-nyckel eller båda",
|
||
"createCredentialFromHostBtn": "Skapa autentiseringsuppgifter",
|
||
"createCredentialFromHostTitle": "Skapa autentiseringsuppgifter från värden",
|
||
"createCredentialFromHostDesc": "Skapa en återanvändbar, delbar autentiseringsuppgift som är förifylld med värdens nuvarande användarnamn, lösenord och/eller SSH-nyckel.",
|
||
"backToHosts": "Tillbaka till värdar",
|
||
"pinned": "Fäst",
|
||
"noHostsFound": "Inga värdar hittades",
|
||
"tryDifferentTerm": "Försök med en annan term",
|
||
"addFirstHost": "Lägg till din första värd för att komma igång",
|
||
"noCredentialsFound": "Inga inloggningsuppgifter hittades",
|
||
"addCredentialBtn": "Lägg till autentiseringsuppgifter",
|
||
"updateCredentialBtn": "Uppdatera autentiseringsuppgifter",
|
||
"features": "Drag",
|
||
"noFolder": "(Ingen mapp)",
|
||
"deleteSelected": "Radera",
|
||
"exitSelection": "Avsluta valet",
|
||
"importSkip": "Importera (hoppa över befintliga)",
|
||
"importOverwrite": "Importera (skriv över)",
|
||
"collapseBtn": "Kollapsa",
|
||
"importExportBtn": "Importera / Exportera",
|
||
"hostStatusesRefreshed": "Värdstatusar uppdaterade",
|
||
"failedToRefreshHosts": "Misslyckades med att uppdatera värdarna",
|
||
"movedHostTo": "Flyttade {{host}} till \"{{folder}}\"",
|
||
"failedToMoveHost": "Misslyckades med att flytta värden",
|
||
"deletedFolder": "Raderad mapp \"{{name}}\"",
|
||
"failedToDeleteFolder": "Misslyckades med att ta bort mappen",
|
||
"deleteAllInFolder": "Vill du ta bort alla värdar i \"{{name}}\"? Detta kan inte ångras.",
|
||
"folderPickerPlaceholder": "Ingen mapp",
|
||
"folderPickerSearch": "Sök eller skapa (använd / för undermappar)...",
|
||
"folderPickerNone": "Ingen mapp",
|
||
"folderPickerCreate": "Skapa \"{{path}}\"",
|
||
"folderPickerEmpty": "Inga matchande mappar",
|
||
"parentHost": "Föräldervärd",
|
||
"useFolderInstead": "Använd mapp istället",
|
||
"useParentHostInstead": "Använd föräldervärd istället",
|
||
"parentHostPickerPlaceholder": "Ingen föräldervärd",
|
||
"parentHostPickerSearch": "Sök värdar...",
|
||
"parentHostPickerNone": "Ingen föräldervärd",
|
||
"parentHostPickerEmpty": "Inga matchande värdar",
|
||
"collapseSubHosts": "Komprimera undervärdar",
|
||
"expandSubHosts": "Expandera undervärdar",
|
||
"cannotNestUnderDescendant": "Kan inte nästla en värd under sin egen undervärd",
|
||
"movedToParent": "Flyttade {{count}} värd(ar) under \"{{parent}}\"",
|
||
"newFolder": "Ny mapp",
|
||
"createFolderTitle": "Skapa mapp",
|
||
"editFolderTitle": "Redigera mapp",
|
||
"folderDialogDescription": "Välj ett namn, en färg och en ikon. Använd / för att kapsla mappar.",
|
||
"folderNameLabel": "Mappnamn",
|
||
"folderNamePlaceholder": "t.ex. Produktion/Webb",
|
||
"folderNestingHint": "Använd / för att separera nivåer och skapa kapslade mappar.",
|
||
"folderNameDuplicate": "En mapp med detta namn finns redan här.",
|
||
"folderColor": "Färg",
|
||
"folderIcon": "Ikon",
|
||
"folderCredential": "Referenser",
|
||
"folderCredentialNone": "Ingen inloggningsuppgifter har tilldelats",
|
||
"folderCredentialHint": "Värdar i den här mappen som använder autentiseringsuppgifterna \"Lagrad autentiseringsuppgift\" utan att ha valt sina egna autentiseringsuppgifter kommer att ärva den här.",
|
||
"folderPreview": "Förhandsvisning",
|
||
"folderNameFallback": "Namnlös mapp",
|
||
"createFolderButton": "Skapa mapp",
|
||
"saveFolderButton": "Spara mapp",
|
||
"cancel": "Avboka",
|
||
"iconSearchPlaceholder": "Sökikoner...",
|
||
"openAllSessions": "Öppna alla sessioner",
|
||
"editFolder": "Redigera mapp",
|
||
"deleteFolder": "Ta bort mapp",
|
||
"selectFolder": "Markera alla värdar i mappen",
|
||
"deselectFolder": "Avmarkera alla värdar i mappen",
|
||
"folderSaved": "Mappen sparad",
|
||
"failedToSaveFolder": "Misslyckades med att spara mappen",
|
||
"folderDeleted": "Raderad mapp \"{{name}}\"",
|
||
"deleteFolderConfirm": "Vill du ta bort \"{{name}}\" och dess {{count}} värd(ar)? Detta kan inte ångras.",
|
||
"failedToMoveHosts": "Misslyckades med att flytta värdar",
|
||
"failedToReorder": "Misslyckades med att omordna",
|
||
"expandAll": "Expandera alla mappar",
|
||
"collapseAll": "Komprimera alla mappar",
|
||
"moreActions": "Mer",
|
||
"groupBy": "Gruppera efter",
|
||
"GroupByFolder": "Mapp",
|
||
"GroupByTag": "Märka",
|
||
"GroupByStatus": "Status",
|
||
"GroupByProtocol": "Protokoll",
|
||
"GroupByAuth": "Aut.typ",
|
||
"groupUngrouped": "Ogrupperad",
|
||
"customizeSidebar": "Anpassa sidofältet",
|
||
"customizeSidebarDescription": "Välj hur värdlistan ser ut och beter sig.",
|
||
"customizeDensityTitle": "Densitet",
|
||
"customizeBehaviorTitle": "Beteende",
|
||
"customizeSortHint": "Sorteringsordning och gruppering finns i sorterings- och grupperingsmenyerna i verktygsfältet.",
|
||
"densityComfortableDesc": "Mer information per värd: adress, taggar och resursanvändning.",
|
||
"densityCompactDesc": "En rad per värd, för längre listor.",
|
||
"display": "Visa",
|
||
"displayDensity": "Densitet",
|
||
"displayDensityComfortable": "Bekväm",
|
||
"displayDensityCompact": "Kompakt",
|
||
"displayShowTags": "Visa taggar",
|
||
"displayTrayOnClick": "Öppna åtgärder vid klick (istället för att hålla muspekaren över)",
|
||
"actionsVisibility": "Värdåtgärder",
|
||
"actionsVisibilityDesc": "När anslutnings- och hanteringsknapparna på varje värd visas",
|
||
"actionsAlways": "Alltid synlig",
|
||
"actionsOnly": "Endast anslutning, vila på klick",
|
||
"actionsHover": "Visa vid muspekning",
|
||
"actionsClick": "Visa vid klick",
|
||
"openOnDoubleClick": "Öppna vid dubbelklick",
|
||
"openOnDoubleClickDesc": "Kräv ett dubbelklick för att öppna en värdsession istället för ett enda klick",
|
||
"deletedHost": "Borttagen {{name}}",
|
||
"copiedToClipboard": "Kopierad till urklipp",
|
||
"terminalUrlCopied": "Terminal-URL kopierad",
|
||
"fileManagerUrlCopied": "Filhanterarens URL kopierad",
|
||
"tunnelUrlCopied": "Tunnel-URL kopierad",
|
||
"dockerUrlCopied": "Docker-URL kopierad",
|
||
"hostMetricsUrlCopied": "URL för värdstatistik kopierad",
|
||
"tmuxMonitorUrlCopied": "Tmux Monitor-URL kopierad",
|
||
"rdpUrlCopied": "RDP-URL kopierad",
|
||
"openNativeRdp": "Öppna i Windows Fjärrskrivbord",
|
||
"nativeRdpOpened": "Öppnad i Windows Fjärrskrivbord",
|
||
"nativeRdpFailed": "Misslyckades med att öppna Windows Fjärrskrivbord",
|
||
"vncUrlCopied": "VNC-URL kopierad",
|
||
"telnetUrlCopied": "Telnet-URL kopierad",
|
||
"remoteDesktopUrlCopied": "Fjärrskrivbords-URL kopierad",
|
||
"expandActions": "Expandera åtgärder",
|
||
"collapseActions": "Komprimera åtgärder",
|
||
"wakeOnLanAction": "Vakna på LAN",
|
||
"wakeOnLanSuccess": "Magiskt paket skickat till {{name}}",
|
||
"wakeOnLanError": "Misslyckades med att skicka magiskt paket",
|
||
"cloneHostAction": "Klona värd",
|
||
"copyAddress": "Kopiera adress",
|
||
"copyLink": "Kopiera länk",
|
||
"copyTerminalUrlAction": "Kopiera terminal-URL",
|
||
"copyFileManagerUrlAction": "Kopiera filhanterarens URL",
|
||
"copyTunnelUrlAction": "Kopiera tunnel-URL",
|
||
"copyDockerUrlAction": "Kopiera Docker-URL",
|
||
"copyHostMetricsUrlAction": "Kopiera URL för värdstatistik",
|
||
"copyTmuxMonitorUrlAction": "Kopiera Tmux Monitor-URL",
|
||
"copyRdpUrlAction": "Kopiera RDP-URL",
|
||
"copyVncUrlAction": "Kopiera VNC-URL",
|
||
"copyTelnetUrlAction": "Kopiera Telnet-URL",
|
||
"copyRemoteDesktopUrlAction": "Kopiera URL för fjärrskrivbord",
|
||
"deleteCredentialConfirm": "Radera inloggningsuppgifterna \"{{name}}\"?",
|
||
"deletedCredential": "Borttagen {{name}}",
|
||
"deleteHostsConfirm": "Ta bort {{count}} värd{{plural}}? Detta kan inte ångras.",
|
||
"movedToRoot": "Flyttad till roten",
|
||
"enableTerminalFeature": "Aktivera terminalen",
|
||
"disableTerminalFeature": "Inaktivera terminalen",
|
||
"enableFilesFeature": "Aktivera filer",
|
||
"disableFilesFeature": "Inaktivera filer",
|
||
"enableTunnelsFeature": "Aktivera tunnlar",
|
||
"disableTunnelsFeature": "Inaktivera tunnlar",
|
||
"enableDockerFeature": "Aktivera Docker",
|
||
"disableDockerFeature": "Inaktivera Docker",
|
||
"enableProxmoxFeature": "Aktivera Proxmox",
|
||
"disableProxmoxFeature": "Inaktivera Proxmox",
|
||
"addTagsPlaceholder": "Lägg till taggar...",
|
||
"authDetails": "Autentiseringsuppgifter",
|
||
"credType": "Typ",
|
||
"generateKeyPairDesc": "Generera ett nytt nyckelpar, både privata och publika nycklar kommer att fyllas i automatiskt.",
|
||
"generatingKey": "Alstrande...",
|
||
"generateLabel": "Generera {{label}}",
|
||
"uploadFileBtn": "Ladda upp fil",
|
||
"keyPassphraseOptional": "Nyckellösenord (valfritt)",
|
||
"sshPublicKeyOptional": "SSH-nyckel (valfritt)",
|
||
"publicKeyGenerated": "Offentlig nyckel genererad",
|
||
"failedToGeneratePublicKey": "Misslyckades med att härleda den offentliga nyckeln",
|
||
"publicKeyCopied": "Offentlig nyckel kopierad",
|
||
"keyPairGenerated": "{{label}} nyckelpar genererat",
|
||
"failedToGenerateKeyPair": "Misslyckades med att generera nyckelpar",
|
||
"searchHostsPlaceholder": "Sök värdar, adresser, taggar…",
|
||
"refreshBtn": "Uppdatera",
|
||
"addTag": "Lägg till taggar...",
|
||
"deleteConfirmBtn": "Radera",
|
||
"tunnelRequirementsText": "SSH-servern måste ha GatewayPorts ja, AllowTcpForwarding ja och PermitRootLogin ja angivna i /etc/ssh/sshd_config.",
|
||
"deleteHostConfirm": "Ta bort \"{{name}}\"?",
|
||
"enableAtLeastOneProtocol": "Aktivera minst ett protokoll ovan för att konfigurera autentiserings- och anslutningsinställningar.",
|
||
"keyPassphrase": "Nyckellösenord",
|
||
"connectBtn": "Ansluta",
|
||
"disconnectBtn": "Koppla från",
|
||
"basicInformation": "Grundläggande information",
|
||
"authDetailsSection": "Autentiseringsuppgifter",
|
||
"credTypeLabel": "Typ",
|
||
"hostsTab": "Värdar",
|
||
"credentialsTab": "Referenser",
|
||
"selectMultiple": "Välj flera",
|
||
"selectHosts": "Välj värdar",
|
||
"connectionLabel": "Förbindelse",
|
||
"authenticationLabel": "Autentisering",
|
||
"generateKeyPairTitle": "Generera nyckelpar",
|
||
"generateKeyPairDescription": "Generera ett nytt nyckelpar, både privata och publika nycklar kommer att fyllas i automatiskt.",
|
||
"generateFromPrivateKey": "Generera från privat nyckel",
|
||
"refreshBtn2": "Uppdatera",
|
||
"exitSelectionTitle": "Avsluta valet",
|
||
"addHostBtn2": "Lägg till värd",
|
||
"addCredentialBtn2": "Lägg till autentiseringsuppgifter",
|
||
"checkingHostStatuses": "Kontrollerar värdstatusar...",
|
||
"pinnedSection": "Fäst",
|
||
"hostsExported": "Värdar exporterades",
|
||
"export": {
|
||
"menuItem": "Exportera...",
|
||
"title": "Exportera värdar",
|
||
"scope": "Omfattning",
|
||
"scopeAll": "Alla",
|
||
"scopeSelected": "Vald",
|
||
"searchHosts": "Sök värdar...",
|
||
"include": "Omfatta",
|
||
"groupConnection": "Förbindelse",
|
||
"groupCredentials": "Referenser",
|
||
"groupNotes": "Anteckningar",
|
||
"groupTags": "Taggar och pin",
|
||
"groupTunnels": "Tunnlar",
|
||
"groupJumpHosts": "Hoppa värdar",
|
||
"groupQuickActions": "Snabbåtgärder",
|
||
"groupFeatureFlags": "Funktionsflaggor",
|
||
"groupAdvanced": "Avancerad konfiguration",
|
||
"preview": "Förhandsvisning",
|
||
"moreHosts": "... {{count}} fler värdar",
|
||
"summary": "{{selected}} av {{total}} värdar",
|
||
"credentialsIncluded": "inloggningsuppgifter ingår",
|
||
"credentialsExcluded": "uteslutna inloggningsuppgifter",
|
||
"noneSelected": "Inga värdar valda",
|
||
"cancel": "Avboka",
|
||
"confirm": "Exportera",
|
||
"fetchFailed": "Misslyckades med att läsa in värdar för export",
|
||
"bulkButton": "Exportera"
|
||
},
|
||
"sampleDownloaded": "Exempelfil nedladdad",
|
||
"failedToDeleteCredential2": "Misslyckades med att ta bort inloggningsuppgifter",
|
||
"noFolderOption": "(Ingen mapp)",
|
||
"nSelected": "{{count}} vald",
|
||
"featuresMenu": "Drag",
|
||
"moveMenu": "Flytta",
|
||
"connectSelected": "Ansluta",
|
||
"cancelSelection": "Avboka",
|
||
"deletedCount": "Borttagna {{count}} värdar",
|
||
"failedToDeleteCount": "Misslyckades med att ta bort {{count}} värdar",
|
||
"duplicatedHost": "Duplicerad \"{{name}}\"",
|
||
"failedToDuplicateHost": "Misslyckades med att duplicera värden",
|
||
"updatedCount": "Uppdaterade {{count}} värdar",
|
||
"friendlyNameLabel": "Vänligt namn",
|
||
"descriptionLabel": "Beskrivning",
|
||
"loadingHost": "Laddar värd...",
|
||
"loadingHosts": "Laddar värdar...",
|
||
"loadingCredentials": "Laddar inloggningsuppgifter...",
|
||
"noHostsYet": "Inga värdar ännu",
|
||
"noHostsYetHint": "Lägg till en server för att öppna terminaler, bläddra bland filer och se mätvärden.",
|
||
"noHostsMatchSearch": "Inga värdar matchar din sökning",
|
||
"hostNotFound": "Värden hittades inte",
|
||
"searchHosts": "Sök värdar...",
|
||
"sortHosts": "Sortera värdar",
|
||
"sortDefault": "Standardbeställning",
|
||
"sortNameAsc": "Namn (A → Ö)",
|
||
"sortNameDesc": "Namn (Ö → A)",
|
||
"sortIpAsc": "IP-adress (stigande)",
|
||
"sortIpDesc": "IP-adress (beskrivning)",
|
||
"sortOnlineFirst": "Online först",
|
||
"sortOfflineFirst": "Offline först",
|
||
"sortManual": "Manuellt (dra för att ändra ordning)",
|
||
"sortPinnedFirst": "Fäst först",
|
||
"filterHosts": "Filtrera värdar",
|
||
"filterClearAll": "Rensa filter",
|
||
"filterStatusGroup": "Status",
|
||
"filterOnline": "Online",
|
||
"filterOffline": "Off-line",
|
||
"filterPinned": "Fäst",
|
||
"filterAuthGroup": "Aut.typ",
|
||
"filterAuthPassword": "Lösenord",
|
||
"filterAuthKey": "SSH-nyckel",
|
||
"filterAuthCredential": "Referenser",
|
||
"filterAuthNone": "Ingen",
|
||
"filterAuthOpkssh": "OPKSSH",
|
||
"filterProtocolGroup": "Protokoll",
|
||
"filterProtocolSsh": "SSH",
|
||
"filterProtocolRdp": "Landsbygdsutveckling",
|
||
"filterProtocolVnc": "VNC",
|
||
"filterProtocolTelnet": "Telnet",
|
||
"filterFeaturesGroup": "Drag",
|
||
"filterFeatureTerminal": "Terminal",
|
||
"filterFeatureFileManager": "Filhanteraren",
|
||
"filterFeatureTunnel": "Tunnel",
|
||
"filterFeatureDocker": "Hamnarbetare",
|
||
"filterTagsGroup": "Taggar",
|
||
"connectRdp": "Landsbygdsutveckling",
|
||
"connectVnc": "VNC",
|
||
"connectTelnet": "Telnet",
|
||
"editHostAction": "Redigera värd",
|
||
"moreOptions": "Fler alternativ",
|
||
"shareHost": "Dela värd",
|
||
"shareHostTitle": "Dela: {{name}}",
|
||
"shareFolder": "Dela mapp",
|
||
"shareFolderTitle": "Dela mapp: {{name}}",
|
||
"folderSharedSuccessfully": "Delade {{count}} värd(ar) i mappen",
|
||
"failedToShareFolder": "Misslyckades med att dela mappen",
|
||
"sharing": {
|
||
"loadError": "Misslyckades med att ladda delningsdata. Försök igen.",
|
||
"shareWithSection": "Dela med",
|
||
"usersTab": "Användare",
|
||
"rolesTab": "Roller",
|
||
"searchPlaceholder": "Sök användare eller roller...",
|
||
"noMatches": "Inga träffar hittades",
|
||
"permissionLevelLabel": "Behörighetsnivå",
|
||
"levels": {
|
||
"connect": {
|
||
"label": "Ansluta",
|
||
"description": "Endast öppna sessioner: terminal, fjärrskrivbord, filhanterare, tunnlar och Docker. Ingen åtkomst till värdkonfigurationen."
|
||
},
|
||
"view": {
|
||
"label": "Se",
|
||
"description": "Anslut, plus se värdkonfigurationen. Hemligheter visas aldrig."
|
||
},
|
||
"edit": {
|
||
"label": "Redigera",
|
||
"description": "Visa och ändra inställningar för icke-autentiseringsvärdar. Ägarens SSH-autentisering förblir privat och endast för ägaren."
|
||
},
|
||
"manage": {
|
||
"label": "Hantera",
|
||
"description": "Redigera, plus dela värden med andra, ändra behörighetsnivåer och återkalla åtkomst."
|
||
}
|
||
},
|
||
"expiryLabel": "Åtkomstutgång",
|
||
"expiry": {
|
||
"never": "Aldrig",
|
||
"oneHour": "1 timme",
|
||
"oneDay": "24 timmar",
|
||
"sevenDays": "7 dagar",
|
||
"thirtyDays": "30 dagar",
|
||
"custom": "Beställnings"
|
||
},
|
||
"customHoursPlaceholder": "Timmar tills åtkomsten upphör",
|
||
"shareButton": "Dela",
|
||
"shareWithCount": "Dela ({{count}})",
|
||
"currentAccess": "Nuvarande åtkomst",
|
||
"noAccessEntries": "Denna värd har inte delats ännu",
|
||
"folderShareSummary": "Delad {{shared}} av {{total}} värd(ar) i den här mappen",
|
||
"grantedBy": "Beviljad av",
|
||
"expires": "Utgår",
|
||
"expired": "Utgången",
|
||
"never": "Aldrig",
|
||
"revoke": "Återkalla",
|
||
"accessUpdated": "Åtkomst uppdaterad",
|
||
"accessUpdateFailed": "Misslyckades med att uppdatera åtkomsten",
|
||
"sharedBadge": "Delad",
|
||
"sharedBadgeTooltip": "Delad av {{owner}} ({{level}} åtkomst)",
|
||
"viewOnlyBanner": "Denna värd delas med dig av {{owner}} med läsbehörighet. Konfigurationen är skrivskyddad.",
|
||
"sharedEditBanner": "Denna värd delas med dig av {{owner}} med redigeringsåtkomst. Ändringarna gäller för den verkliga värden; autentiseringsreferenser kan endast ändras av ägaren.",
|
||
"ownerOnlyControl": "Endast värdägaren kan ändra detta",
|
||
"ownerAuthPrivate": "Värdägarens SSH-autentisering är privat. Använd \"Ange personlig SSH-autentisering\" från värdmenyn för att välja dina egna inloggningsuppgifter.",
|
||
"ownerAuthShared": "Värdägaren har delat SSH-autentisering för den här värden. Du kan använda den eller välja dina egna inloggningsuppgifter från \"Ange personlig SSH-autentisering\".",
|
||
"authOverrideAction": "Ställ in personlig SSH-autentisering",
|
||
"authOverrideTitle": "Personlig SSH-autentisering",
|
||
"authOverrideDescriptionPrivate": "Värdägarens SSH-inloggningsuppgifter förblir privata. Välj en av dina sparade inloggningsuppgifter för anslutningar till {{host}}.",
|
||
"authOverrideDescriptionShared": "Använd autentiseringen som delas av värdägaren, eller ersätt den med en av dina sparade inloggningsuppgifter för anslutningar till {{host}}.",
|
||
"authOverrideCredentialLabel": "Autentiseringsuppgifter",
|
||
"useSharedAuthentication": "Använd autentisering av delad värd",
|
||
"noPersonalCredential": "Ingen personlig legitimation",
|
||
"authOverrideNoCredentials": "Du har inga sparade SSH-inloggningsuppgifter ännu. Skapa en i Inloggningsuppgifter för att ansluta till värdar som kräver autentisering.",
|
||
"authOverrideRequired": "Den här värden kräver en av dina sparade inloggningsuppgifter innan du kan ansluta.",
|
||
"authOverridePrivateHint": "Denna inloggningsuppgift är privat för dig. Värdägaren och andra mottagare kan inte se eller använda den.",
|
||
"authOverrideSaved": "Personlig SSH-autentisering sparad",
|
||
"authOverrideCleared": "Personlig SSH-autentisering har tagits bort",
|
||
"authOverrideClearedToShared": "Använda autentisering med delad värd",
|
||
"authOverrideLoadError": "Misslyckades med att ladda din SSH-autentisering. Försök igen.",
|
||
"authOverrideSaveError": "Det gick inte att spara din SSH-autentisering"
|
||
},
|
||
"guac": {
|
||
"connection": "Förbindelse",
|
||
"authentication": "Autentisering",
|
||
"storedCredential": "Lagrade autentiseringsuppgifter",
|
||
"noCredential": "Ingen referens (direkta referenser nedan)",
|
||
"authMethod": "Autentiseringsmetod",
|
||
"authTypeDirect": "Direkt",
|
||
"authTypeCredential": "Referenser",
|
||
"authTypeNone": "Ingen",
|
||
"authTypeNoneDesc": "Inga inloggningsuppgifter lagras. Du kommer att bli ombedd att ange ett användarnamn och lösenord varje gång du ansluter; de sparas inte.",
|
||
"selectCredential": "Välj en behörighetsinloggning...",
|
||
"connectionSettings": "Anslutningsinställningar",
|
||
"displaySettings": "Skärminställningar",
|
||
"audioSettings": "Ljudinställningar",
|
||
"rdpPerformance": "RDP-prestanda",
|
||
"deviceRedirection": "Omdirigering av enhet",
|
||
"session": "Session",
|
||
"gateway": "Inkörsport",
|
||
"remoteApp": "Fjärrapp",
|
||
"clipboard": "Urklipp",
|
||
"sessionRecording": "Sessionsinspelning",
|
||
"wakeOnLan": "Wake-on-LAN",
|
||
"vncSettings": "VNC-inställningar",
|
||
"terminalSettings": "Terminalinställningar",
|
||
"rdpPort": "RDP-port",
|
||
"username": "Användarnamn",
|
||
"password": "Lösenord",
|
||
"passwordSaved": "Lösenordet sparats, skriv för att ändra",
|
||
"domain": "Domän",
|
||
"securityMode": "Säkerhetsläge",
|
||
"colorDepth": "Färgdjup",
|
||
"width": "Bredd",
|
||
"height": "Höjd",
|
||
"dpi": "DPI",
|
||
"resizeMethod": "Ändra storleksmetod",
|
||
"clientName": "Klientnamn",
|
||
"initialProgram": "Inledande program",
|
||
"serverLayout": "Serverlayout",
|
||
"timezone": "Tidszon",
|
||
"loadBalanceInfo": "Information om belastningsbalans / Cookie",
|
||
"loadBalanceInfoDesc": "RD Connection Broker-cookie för lastbalansering av RDS-farm (t.ex. tsv://MS Terminal Services Plugin.1.CollectionName)",
|
||
"guacdProxy": "guacd-proxy",
|
||
"guacdHostname": "guacd-värd",
|
||
"guacdHostnamePlaceholder": "Global standard",
|
||
"guacdPort": "guacd-porten",
|
||
"guacdProxyDesc": "Åsidosätt den globala guacd-instansen för den här anslutningen. Lämna tomt om du vill använda den globalt konfigurerade guacd-instansen.",
|
||
"gatewayHostname": "Gateway-värdnamn",
|
||
"gatewayPort": "Gateway-porten",
|
||
"gatewayUsername": "Gateway-användarnamn",
|
||
"gatewayPassword": "Gateway-lösenord",
|
||
"gatewayDomain": "Gateway-domän",
|
||
"remoteAppProgram": "RemoteApp-programmet",
|
||
"workingDirectory": "Arbetskatalog",
|
||
"arguments": "Argument",
|
||
"normalizeLineEndings": "Normalisera radavslutningar",
|
||
"recordingPath": "Inspelningsväg",
|
||
"recordingName": "Inspelningsnamn",
|
||
"macAddress": "MAC-adress",
|
||
"broadcastAddress": "Sändningsadress",
|
||
"udpPort": "UDP-port",
|
||
"waitTimeS": "Väntetid (s)",
|
||
"driveName": "Enhetsnamn",
|
||
"drivePath": "Körväg",
|
||
"ignoreCertificate": "Ignorera certifikat",
|
||
"ignoreCertificateDesc": "Tillåt anslutningar till värdar med självsignerade certifikat",
|
||
"forceLossless": "Tvinga förlustfri",
|
||
"forceLosslessDesc": "Tvinga fram förlustfri bildkodning (högre kvalitet, mer bandbredd)",
|
||
"disableAudio": "Inaktivera ljud",
|
||
"disableAudioDesc": "Stäng av allt ljud från fjärrsessionen",
|
||
"enableAudioInput": "Aktivera ljudingång (mikrofon)",
|
||
"enableAudioInputDesc": "Vidarebefordra den lokala mikrofonen till fjärrsessionen",
|
||
"wallpaper": "Tapet",
|
||
"wallpaperDesc": "Visa skrivbordsbakgrund (inaktivering förbättrar prestandan)",
|
||
"theming": "Teman",
|
||
"themingDesc": "Aktivera visuella teman och stilar",
|
||
"fontSmoothing": "Utjämning av teckensnitt",
|
||
"fontSmoothingDesc": "Aktivera rendering av ClearType-teckensnitt",
|
||
"fullWindowDrag": "Drag i hela fönstret",
|
||
"fullWindowDragDesc": "Visa fönsterinnehållet när du drar",
|
||
"desktopComposition": "Skrivbordskomposition",
|
||
"desktopCompositionDesc": "Aktivera Aero Glass-effekter",
|
||
"menuAnimations": "Menyanimationer",
|
||
"menuAnimationsDesc": "Aktivera menytoning och glidande animationer",
|
||
"disableBitmapCaching": "Inaktivera bitmappscachning",
|
||
"disableBitmapCachingDesc": "Stäng av bitmappscachen (kan hjälpa till med problem)",
|
||
"disableOffscreenCaching": "Inaktivera cachelagring utanför skärmen",
|
||
"disableOffscreenCachingDesc": "Stäng av cache utanför skärmen",
|
||
"disableGlyphCaching": "Inaktivera glyf-cachning",
|
||
"disableGlyphCachingDesc": "Stäng av glyph-cache",
|
||
"enableGfx": "Aktivera GFX",
|
||
"enableGfxDesc": "Använd RemoteFX-grafikpipeline",
|
||
"enablePrinting": "Aktivera utskrift",
|
||
"enablePrintingDesc": "Omdirigera lokala skrivare till fjärrsessionen",
|
||
"enableDriveRedirection": "Aktivera omdirigering av kördata",
|
||
"enableDriveRedirectionDesc": "Mappa en lokal mapp som en enhet i fjärrsessionen",
|
||
"createDrivePath": "Skapa drivväg",
|
||
"createDrivePathDesc": "Skapa mappen automatiskt om den inte finns",
|
||
"disableDownload": "Inaktivera nedladdning",
|
||
"disableDownloadDesc": "Förhindra nedladdning av filer från fjärrsessionen",
|
||
"disableUpload": "Inaktivera uppladdning",
|
||
"disableUploadDesc": "Förhindra uppladdning av filer till fjärrsessionen",
|
||
"enableTouch": "Aktivera pekskärm",
|
||
"enableTouchDesc": "Aktivera vidarebefordran av pekinmatning",
|
||
"consoleSession": "Konsolsession",
|
||
"consoleSessionDesc": "Anslut till konsolen (session 0) istället för en ny session",
|
||
"sendWolPacket": "Skicka WOL-paket",
|
||
"sendWolPacketDesc": "Skicka ett magiskt paket för att väcka den här värden innan anslutning",
|
||
"disableCopy": "Inaktivera kopiering",
|
||
"disableCopyDesc": "Förhindra kopiering av text från fjärrsessionen",
|
||
"disablePaste": "Inaktivera inklistring",
|
||
"disablePasteDesc": "Förhindra att text klistras in i fjärrsessionen",
|
||
"createPathIfMissing": "Skapa sökväg om den saknas",
|
||
"createPathIfMissingDesc": "Skapa inspelningskatalogen automatiskt",
|
||
"excludeOutput": "Exkludera utdata",
|
||
"excludeOutputDesc": "Spela inte in skärmutdata (endast metadata)",
|
||
"excludeMouse": "Uteslut mus",
|
||
"excludeMouseDesc": "Spela inte in musrörelser",
|
||
"includeKeystrokes": "Inkludera tangenttryckningar",
|
||
"includeKeystrokesDesc": "Spela in råa tangenttryckningar utöver skärmutdata",
|
||
"vncPort": "VNC-port",
|
||
"vncPassword": "VNC-lösenord",
|
||
"vncUsernameOptional": "Användarnamn (valfritt)",
|
||
"vncLeaveBlank": "Lämna tomt om det inte behövs",
|
||
"cursorMode": "Markörläge",
|
||
"swapRedBlue": "Byt röd/blå",
|
||
"swapRedBlueDesc": "Byt ut de röda och blå färgkanalerna (åtgärdar vissa färgproblem)",
|
||
"readOnly": "Skrivskyddad",
|
||
"readOnlyDesc": "Visa fjärrskärmen utan att skicka någon inmatning",
|
||
"telnetPort": "Telnet-port",
|
||
"terminalType": "Terminaltyp",
|
||
"fontName": "Typsnittsnamn",
|
||
"fontSize": "Fontstorlek",
|
||
"colorScheme": "Färgschema",
|
||
"backspaceKey": "Backstegstangenten",
|
||
"saveHostFirst": "Spara värden först.",
|
||
"sharingOptionsAfterSave": "Delningsalternativ är tillgängliga efter att värden har sparats.",
|
||
"permissionLevel": "Behörighetsnivå",
|
||
"typeHeader": "Typ",
|
||
"targetHeader": "Mål",
|
||
"permissionHeader": "Tillstånd",
|
||
"cancelBtn": "Avboka",
|
||
"savingBtn": "Sparande...",
|
||
"updateHostBtn": "Uppdatera värd",
|
||
"addHostBtn": "Lägg till värd"
|
||
},
|
||
"arrangeUnlockedSwitchedToManual": "Bytte till manuell sortering så att din ordning fastnar",
|
||
"dragToRearrange": "Dra för att ordna om",
|
||
"arrangeUnlocked": "Lås upp och dra för att ordna om"
|
||
},
|
||
"commandPalette": {
|
||
"searchPlaceholder": "Sök efter värdar, kommandon eller inställningar...",
|
||
"quickActions": "Snabbåtgärder",
|
||
"navigation": "Navigering",
|
||
"orShortcut": "eller",
|
||
"hostManager": "Värdhanterare",
|
||
"hostManagerDesc": "Hantera, lägga till eller redigera värdar",
|
||
"addNewHost": "Lägg till ny värd",
|
||
"addNewHostDesc": "Registrera en ny värd",
|
||
"adminSettings": "Administratörsinställningar",
|
||
"adminSettingsDesc": "Konfigurera systeminställningar och användare",
|
||
"userProfile": "Användarprofil",
|
||
"userProfileDesc": "Hantera ditt konto och dina inställningar",
|
||
"addCredential": "Lägg till autentiseringsuppgifter",
|
||
"addCredentialDesc": "Lagra SSH-nycklar eller lösenord",
|
||
"tmuxMonitor": "Tmux-monitor",
|
||
"tmuxMonitorDesc": "Övervaka tmux-sessioner över dina värdar",
|
||
"snippets": "Snuttar",
|
||
"runSnippetDesc": "Kör i den aktiva terminalfliken",
|
||
"noSnippetsFound": "Inga utdrag hittades som matchar \"{{search}}\"",
|
||
"recentActivity": "Senaste aktivitet",
|
||
"serversAndHosts": "Servrar och värdar",
|
||
"noHostsFound": "Inga värdar hittades som matchar \"{{search}}\"",
|
||
"links": "Länkar",
|
||
"navigate": "Navigera",
|
||
"select": "Välja",
|
||
"toggleWith": "Växla med",
|
||
"localTerminal": "Lokal terminal",
|
||
"localTerminalDesc": "Öppna ett shell på den här datorn"
|
||
},
|
||
"splitScreen": {
|
||
"paneEmpty": "Ruta {{index}} - tom",
|
||
"noTabAssigned": "Ingen flik tilldelad",
|
||
"focusedPane": "Aktiv ruta"
|
||
},
|
||
"connections": {
|
||
"noConnections": "Inga anslutningar",
|
||
"noConnectionsDesc": "Öppna en terminal, filhanterare eller fjärrskrivbord för att se anslutningar här",
|
||
"connectedFor": "Ansluten för {{duration}}",
|
||
"connected": "Ansluten",
|
||
"disconnected": "Osammanhängande",
|
||
"closeTab": "Stäng fliken",
|
||
"closeConnection": "Stäng anslutning",
|
||
"forgetTab": "Glömma",
|
||
"removeBackground": "Ta bort",
|
||
"reconnect": "Återanslut",
|
||
"reopenTab": "Öppna igen",
|
||
"sectionOpen": "Öppna",
|
||
"sectionBackground": "Bakgrund",
|
||
"backgroundDesc": "Sessioner kvarstår i 30 minuter efter frånkoppling och kan återanslutas.",
|
||
"persisted": "Fortsatte i bakgrunden",
|
||
"expiresIn": "Utgår om {{duration}}",
|
||
"search": "Sök efter kopplingar...",
|
||
"noSearchResults": "Inga kontakter matchar din sökning",
|
||
"rename": "Byt namn på sessionen",
|
||
"sectionSharedWithMe": "Delade med mig",
|
||
"sharedBy": "Delat av {{username}}",
|
||
"join": "Ansluta sig till",
|
||
"sharedSessionLabel": "{{hostName}} (delad)"
|
||
},
|
||
"sessionSharing": {
|
||
"guestView": {
|
||
"loading": "Ansluter till delad session...",
|
||
"linkInvalid": "Den här delningslänken är ogiltig, har löpt ut eller har återkallats",
|
||
"rateLimited": "För många försök, försök igen snart",
|
||
"sessionEnded": "Den här sessionen är avslutad",
|
||
"readOnlyBadge": "Endast visning"
|
||
},
|
||
"modalTitle": "Dela session",
|
||
"shareButton": "Dela",
|
||
"notReadyToShare": "Sessionen är inte redo att delas ännu",
|
||
"modeTab": {
|
||
"link": "Länk",
|
||
"user": "Användare"
|
||
},
|
||
"linkModeDescription": "Vem som helst med den här länken kan gå med, inget konto krävs.",
|
||
"userModeDescription": "Dela med en specifik användare som redan har åtkomst till den här värden. Om de inte har åtkomst ännu, dela värden med dem först eller använd en länk istället. När sessionen har delats visas den på deras flik Anslutningar.",
|
||
"permissionLevel": {
|
||
"label": "Behörighetsnivå",
|
||
"readOnly": "Skrivskyddad",
|
||
"readOnlyDescription": "Kan titta på sessionen live men kan inte skriva eller interagera.",
|
||
"readWrite": "Läs-skriv",
|
||
"readWriteDescription": "Kan skriva och interagera med sessionen precis som ägaren."
|
||
},
|
||
"expiryLabel": "Länkens utgångsdatum",
|
||
"createLinkButton": "Skapa länk",
|
||
"createShareButton": "Dela med användaren",
|
||
"searchUsersPlaceholder": "Sök användare...",
|
||
"noUsersFound": "Inga användare hittades",
|
||
"linkCreated": "Delningslänk skapad",
|
||
"linkCopied": "Länk kopierad till urklipp",
|
||
"copyLink": "Kopiera länk",
|
||
"shareCreated": "Sessionen delade. Den kommer att visas på fliken Anslutningar.",
|
||
"shareFailed": "Misslyckades med att skapa delningen",
|
||
"userLacksHostAccess": "Den användaren har inte åtkomst till den här värden ännu. Dela värden med dem först, eller använd en länk istället.",
|
||
"activeShares": "Aktiva aktier",
|
||
"noActiveShares": "Inga aktiva delningar för den här sessionen",
|
||
"revoke": "Återkalla",
|
||
"revokeConfirmTitle": "Återkalla den här delningen?",
|
||
"revokeConfirmDescription": "Alla som använder den här delningen kommer att förlora åtkomsten omedelbart.",
|
||
"revoked": "Delning återkallad",
|
||
"revokeFailed": "Misslyckades med att återkalla delningen",
|
||
"joinCount": "{{count}} gå med",
|
||
"joinCount_other": "{{count}} ansluter sig",
|
||
"expiresAt": "Utgångsdatum {{date}}",
|
||
"linkShareBadge": "Länk",
|
||
"userShareBadge": "Användare: {{username}}",
|
||
"loadSharesFailed": "Misslyckades med att läsa in aktiva delningar"
|
||
},
|
||
"guacamole": {
|
||
"connecting": "Ansluter till {{type}} session...",
|
||
"connectionError": "Anslutningsfel",
|
||
"connectionFailed": "Anslutningen misslyckades",
|
||
"failedToConnect": "Misslyckades med att hämta anslutningstoken",
|
||
"hostNotFound": "Värden hittades inte",
|
||
"noHostSelected": "Ingen värd vald",
|
||
"reconnect": "Återanslut",
|
||
"retry": "Försöka igen",
|
||
"guacdUnavailable": "Fjärrskrivbordstjänsten (guacd) är inte tillgänglig. Se till att guacd körs, är tillgängligt och korrekt konfigurerat i administratörsinställningarna.",
|
||
"credentialPromptTitle": "Ange RDP-inloggningsuppgifter",
|
||
"credentialPromptDescription": "Den här värden är inställd på att be om inloggningsuppgifter vid anslutning. De används endast för den här sessionen och sparas inte.",
|
||
"connect": "Ansluta",
|
||
"ctrlAltDel": "Ctrl+Alt+Del",
|
||
"files": {
|
||
"title": "Drive-filer",
|
||
"parent": "Föräldrakatalog",
|
||
"refresh": "Uppdatera",
|
||
"empty": "Den här mappen är tom",
|
||
"listFailed": "Kunde inte läsa den här mappen",
|
||
"download": "Ladda ner",
|
||
"downloadFailed": "Misslyckades med att ladda ner {{name}}",
|
||
"upload": "Ladda upp filer",
|
||
"uploading": "Laddar upp {{name}}...",
|
||
"uploaded": "Uppladdad {{name}}",
|
||
"uploadFailed": "Misslyckades med att ladda upp {{name}}",
|
||
"uploadDisabled": "Uppladdningar är inaktiverade för den här anslutningen",
|
||
"dropToUpload": "Släpp filer för att ladda upp"
|
||
},
|
||
"toolbar": {
|
||
"ctrlAltDel": "Ctrl+Alt+Del",
|
||
"winL": "Win+L (Låsskärm)",
|
||
"winKey": "Windows-tangenten",
|
||
"ctrl": "Ctrl",
|
||
"alt": "Alt",
|
||
"shift": "Flytta",
|
||
"win": "Vinna",
|
||
"stickyActive": "{{key}} (låst – klicka för att släppa)",
|
||
"stickyInactive": "{{key}} (klicka för att låsa)",
|
||
"esc": "Fly",
|
||
"tab": "Flik",
|
||
"home": "Hem",
|
||
"end": "Avsluta",
|
||
"pageUp": "Sida upp",
|
||
"pageDown": "Sida ner",
|
||
"arrowUp": "Pil upp",
|
||
"arrowDown": "Pil nedåt",
|
||
"arrowLeft": "Pil vänster",
|
||
"arrowRight": "Pil höger",
|
||
"fnToggle": "Funktionstangenter",
|
||
"reconnect": "Återanslut sessionen",
|
||
"collapse": "Komprimera verktygsfältet",
|
||
"expand": "Expandera verktygsfältet",
|
||
"dragHandle": "Dra för att flytta",
|
||
"switchToTrackpad": "Växla till styrplatteläge (dra för att flytta markören, tryck för att klicka)",
|
||
"switchToTouch": "Växla till pekläge (tryck direkt där du vill klicka)"
|
||
}
|
||
},
|
||
"terminal": {
|
||
"connect": "Anslut till värd",
|
||
"clear": "Rensa",
|
||
"paste": "Klistra",
|
||
"reconnect": "Återanslut",
|
||
"connectionLost": "Anslutningen förlorades",
|
||
"connected": "Ansluten",
|
||
"clipboardWriteFailed": "Kunde inte kopiera till urklipp. Kontrollera att sidan serveras via HTTPS eller localhost.",
|
||
"clipboardReadFailed": "Kunde inte läsa från urklipp. Kontrollera att behörigheter för urklipp är beviljade.",
|
||
"clipboardHttpWarning": "Kunde inte läsa urklippet. Vissa webbläsare begränsar åtkomst till urklipp utanför HTTPS - prova Ctrl+V istället, eller servera Termix över HTTPS.",
|
||
"passwordPromptFillTitle": "Fyll i det sparade lösenordet i den här frågan?",
|
||
"unknownError": "Okänt fel inträffade",
|
||
"websocketError": "WebSocket-anslutningsfel",
|
||
"connecting": "Ansluter...",
|
||
"noHostSelected": "Ingen värd vald",
|
||
"reconnecting": "Återansluter... ({{attempt}}/{{max}})",
|
||
"reconnected": "Återansluten lyckades",
|
||
"tmuxSessionCreated": "tmux-session skapad: {{name}}",
|
||
"tmuxSessionAttached": "tmux-session bifogad: {{name}}",
|
||
"tmuxUnavailable": "tmux är inte installerat på fjärrdatorn, utan återgår till standardskal",
|
||
"tmuxSessionPickerTitle": "tmux-sessioner",
|
||
"tmuxSessionPickerDesc": "Befintliga tmux-sessioner hittades på den här värden. Välj en för att återansluta eller skapa en ny session.",
|
||
"tmuxWindows": "Fönster",
|
||
"tmuxWindowCount": "{{count}} fönster",
|
||
"tmuxAttached": "Anslutna klienter",
|
||
"tmuxAttachedCount": "{{count}} bifogad",
|
||
"tmuxLastActivity": "Senaste aktivitet",
|
||
"tmuxTimeJustNow": "just nu",
|
||
"tmuxTimeMinutes": "för {{count}}minuter sedan",
|
||
"tmuxTimeHours": "för {{count}}timmar sedan",
|
||
"tmuxTimeDays": "för {{count}}dagar sedan",
|
||
"tmuxCreateNew": "Starta ny session",
|
||
"tmuxCopyHint": "Justera markeringen och tryck på Enter för att kopiera till urklipp",
|
||
"tmuxDetach": "Koppla bort från tmux-sessionen",
|
||
"tmuxDetached": "Losskopplad från tmux-sessionen",
|
||
"searchPlaceholder": "Hitta",
|
||
"searchCaseSensitive": "Matchfodral",
|
||
"searchWholeWord": "Matcha hela ordet",
|
||
"searchRegex": "Använd reguljärt uttryck",
|
||
"searchNoResults": "Inga resultat",
|
||
"searchResultCount": "{{index}} av {{count}}",
|
||
"searchNext": "Nästa match (Enter)",
|
||
"searchPrevious": "Föregående matchning (Shift+Enter)",
|
||
"searchClose": "Stäng (Escape)",
|
||
"maxReconnectAttemptsReached": "Maximalt antal återanslutningsförsök uppnådda",
|
||
"closeTab": "Nära",
|
||
"connectionTimeout": "Anslutningstimeout",
|
||
"terminalTitle": "Terminal - {{host}}",
|
||
"terminalWithPath": "Terminal - {{host}}:{{path}}",
|
||
"runTitle": "Kör {{command}} - {{host}}",
|
||
"totpRequired": "Tvåfaktorsautentisering krävs",
|
||
"totpCodeLabel": "Verifieringskod",
|
||
"totpVerify": "Kontrollera",
|
||
"mfaPromptRequired": "Autentisering krävs",
|
||
"mfaPushRequired": "Push-autentisering krävs",
|
||
"mfaMenuPlaceholder": "Ange ditt svar",
|
||
"mfaWaitingApproval": "Väntar på godkännande på din enhet...",
|
||
"mfaSendRequest": "Skicka förfrågan",
|
||
"warpgateAuthRequired": "Warpgate-autentisering krävs",
|
||
"warpgateSecurityKey": "Säkerhetsnyckel",
|
||
"warpgateAuthUrl": "Autentiserings-URL",
|
||
"warpgateOpenBrowser": "Öppna i webbläsaren",
|
||
"warpgateContinue": "Jag har slutfört autentiseringen",
|
||
"opksshAuthRequired": "OPKSSH-autentisering krävs",
|
||
"opksshAuthDescription": "Slutför autentiseringen i din webbläsare för att fortsätta. Denna session kommer att vara giltig i 24 timmar.",
|
||
"opksshOpenBrowser": "Öppna webbläsaren för att autentisera",
|
||
"opksshWaitingForAuth": "Väntar på autentisering i webbläsaren...",
|
||
"opksshAuthenticating": "Bearbetar autentisering...",
|
||
"opksshTimeout": "Autentiseringen har gått ut. Försök igen.",
|
||
"opksshAuthFailed": "Autentiseringen misslyckades. Kontrollera dina inloggningsuppgifter och försök igen.",
|
||
"opksshSignInWith": "Logga in med {{provider}}",
|
||
"tailscaleCheckRequired": "Tailscale-autentisering krävs",
|
||
"tailscaleCheckDescription": "Tailscale SSH kräver en ytterligare kontroll. Autentisera i din webbläsare för att fortsätta.",
|
||
"tailscaleCheckOpenBrowser": "Öppna webbläsaren för att autentisera",
|
||
"tailscaleCheckWaiting": "Väntar på Tailscale-autentisering...",
|
||
"tailscaleCheckTimeout": "Tailscale-autentiseringen har gått ut. Försök igen.",
|
||
"vaultAuthTitle": "Inloggning till arkivet krävs",
|
||
"vaultAuthDescription": "Ett fönster har öppnats för att logga in på HashiCorp Vault. Slutför inloggningen där; anslutningen fortsätter automatiskt.",
|
||
"vaultAuthFailed": "Valvautentisering misslyckades. Försök igen.",
|
||
"vaultReopen": "Öppna inloggningsfönstret igen",
|
||
"sudoPasswordPopupTitle": "Ange lösenord?",
|
||
"linkDialogTitle": "Öppna länk",
|
||
"linkDialogOpen": "Öppna",
|
||
"linkDialogCopy": "Kopiera",
|
||
"websocketAbnormalClose": "Anslutningen stängdes oväntat. Detta kan bero på ett problem med omvänd proxy eller SSL-konfiguration. Kontrollera serverloggarna.",
|
||
"connectionLogTitle": "Anslutningslogg",
|
||
"connectionLogCopy": "Kopiera loggar till urklipp",
|
||
"connectionLogEmpty": "Inga anslutningsloggar ännu",
|
||
"connectionLogWaiting": "Väntar på anslutningsloggar...",
|
||
"connectionLogCopied": "Anslutningsloggar kopierade till urklipp",
|
||
"connectionLogCopyFailed": "Misslyckades med att kopiera loggar till urklipp",
|
||
"connectionRejected": "Anslutningen avvisades av servern. Kontrollera din autentisering och nätverkskonfiguration.",
|
||
"hostKeyRejected": "Verifiering av SSH-värdnyckel avvisad. Anslutningen avbröts.",
|
||
"sessionTakenOver": "Sessionen öppnades i en annan flik. Återansluter...",
|
||
"split": {
|
||
"splitTab": "Dela fliken",
|
||
"addToSplit": "Lägg till i delning",
|
||
"removeFromSplit": "Ta bort från Split"
|
||
}
|
||
},
|
||
"fileManager": {
|
||
"noHostSelected": "Ingen värd vald",
|
||
"initializingEditor": "Initierar redigeraren...",
|
||
"file": "Fil",
|
||
"folder": "Mapp",
|
||
"uploadFile": "Ladda upp fil",
|
||
"downloadFile": "Ladda ner",
|
||
"extractArchive": "Utdragsarkiv",
|
||
"extractingArchive": "Extraherar {{name}}...",
|
||
"archiveExtractedSuccessfully": "{{name}} extraherades",
|
||
"extractFailed": "Extraheringen misslyckades",
|
||
"compressFile": "Komprimera fil",
|
||
"compressFiles": "Komprimera filer",
|
||
"compressFilesDesc": "Komprimera {{count}} objekt till ett arkiv",
|
||
"archiveName": "Arkivnamn",
|
||
"enterArchiveName": "Ange arkivnamn...",
|
||
"compressionFormat": "Komprimeringsformat",
|
||
"selectedFiles": "Valda filer",
|
||
"andMoreFiles": "och {{count}} mer...",
|
||
"compress": "Komprimera",
|
||
"compressingFiles": "Komprimerar {{count}} objekt till {{name}}...",
|
||
"filesCompressedSuccessfully": "{{name}} skapades",
|
||
"compressFailed": "Komprimeringen misslyckades",
|
||
"edit": "Redigera",
|
||
"preview": "Förhandsvisning",
|
||
"previous": "Tidigare",
|
||
"next": "Nästa",
|
||
"pageXOfY": "Sida {{current}} av {{total}}",
|
||
"zoomOut": "Zooma ut",
|
||
"zoomIn": "Zooma in",
|
||
"newFile": "Ny fil",
|
||
"newFolder": "Ny mapp",
|
||
"rename": "Döpa om",
|
||
"uploading": "Laddar upp...",
|
||
"uploadingFile": "Laddar upp {{name}}...",
|
||
"fileName": "Filnamn",
|
||
"folderName": "Mappnamn",
|
||
"fileUploadedSuccessfully": "Filen \"{{name}}\" har laddats upp",
|
||
"failedToUploadFile": "Misslyckades med att ladda upp filen",
|
||
"fileDownloadedSuccessfully": "Filen \"{{name}}\" har laddats ner",
|
||
"failedToDownloadFile": "Misslyckades med att ladda ner filen",
|
||
"fileCreatedSuccessfully": "Filen \"{{name}}\" skapades",
|
||
"folderCreatedSuccessfully": "Mappen \"{{name}}\" skapades",
|
||
"failedToCreateItem": "Misslyckades med att skapa objektet",
|
||
"operationFailed": "{{operation}} -åtgärden misslyckades för {{name}}: {{error}}",
|
||
"failedToResolveSymlink": "Misslyckades med att lösa symbolisk länk",
|
||
"itemsDeletedSuccessfully": "{{count}} objekt har raderats",
|
||
"failedToDeleteItems": "Misslyckades med att ta bort objekt",
|
||
"sudoPasswordRequired": "Administratörslösenord krävs",
|
||
"enterSudoPassword": "Ange sudo-lösenordet för att fortsätta den här operationen",
|
||
"sudoPassword": "Sudo-lösenord",
|
||
"sudoOperationFailed": "Sudo-operationen misslyckades",
|
||
"sudoAuthFailed": "Sudo-autentisering misslyckades",
|
||
"dragFilesToUpload": "Släpp filer här för att ladda upp",
|
||
"emptyFolder": "Den här mappen är tom",
|
||
"searchFiles": "Sök filer...",
|
||
"upload": "Ladda upp",
|
||
"selectHostToStart": "Välj en värd för att starta filhanteringen",
|
||
"sshRequiredForFileManager": "Filhanteraren kräver SSH. Den här värden har inte SSH aktiverat.",
|
||
"failedToConnect": "Misslyckades med att ansluta till SSH",
|
||
"failedToLoadDirectory": "Misslyckades med att ladda katalogen",
|
||
"noSSHConnection": "Ingen SSH-anslutning tillgänglig",
|
||
"copy": "Kopiera",
|
||
"cut": "Skära",
|
||
"paste": "Klistra",
|
||
"copyPath": "Kopiera sökväg",
|
||
"copyPaths": "Kopiera sökvägar",
|
||
"delete": "Radera",
|
||
"properties": "Fastigheter",
|
||
"refresh": "Uppdatera",
|
||
"downloadFiles": "Ladda ner {{count}} filer till webbläsaren",
|
||
"copyFiles": "Kopiera {{count}} objekt",
|
||
"cutFiles": "Klipp ut {{count}} objekt",
|
||
"deleteFiles": "Ta bort {{count}} objekt",
|
||
"filesCopiedToClipboard": "{{count}} objekt kopierade till urklipp",
|
||
"filesCutToClipboard": "{{count}} objekt klippta till urklipp",
|
||
"pathCopiedToClipboard": "Sökväg kopierad till urklipp",
|
||
"pathsCopiedToClipboard": "{{count}} sökvägar kopierade till urklipp",
|
||
"failedToCopyPath": "Misslyckades med att kopiera sökvägen till urklipp",
|
||
"copyFolderLink": "Kopiera länk till mapp",
|
||
"copyCurrentFolderLink": "Kopiera länk till aktuell mapp",
|
||
"folderLinkCopied": "Mapplänk kopierad till urklipp",
|
||
"failedToCopyFolderLink": "Misslyckades med att kopiera mapplänken",
|
||
"movedItems": "Flyttade {{count}} objekt",
|
||
"failedToDeleteItem": "Misslyckades med att ta bort objektet",
|
||
"itemRenamedSuccessfully": "{{type}} har bytt namn",
|
||
"failedToRenameItem": "Misslyckades med att byta namn på objektet",
|
||
"download": "Ladda ner",
|
||
"openExternalEditor": "Öppna externt",
|
||
"chooseExternalEditor": "Välj extern redigerare",
|
||
"externalEditorSelected": "Extern redigerare vald",
|
||
"externalEditorDesktopOnly": "Extern redigerare är endast tillgänglig i skrivbordsappen",
|
||
"externalEditorOpened": "Öppnad i extern redigerare. Om du sparar där laddas ändringarna upp tillbaka till servern.",
|
||
"failedToOpenExternalEditor": "Misslyckades med att öppna den externa redigeraren",
|
||
"failedToSelectExternalEditor": "Misslyckades med att välja extern redigerare",
|
||
"permissions": "Behörigheter",
|
||
"size": "Storlek",
|
||
"modified": "Ändrad",
|
||
"path": "Väg",
|
||
"confirmDelete": "Är du säker på att du vill ta bort {{name}}?",
|
||
"permissionDenied": "Tillstånd nekad",
|
||
"serverError": "Serverfel",
|
||
"fileSavedSuccessfully": "Filen har sparats",
|
||
"failedToSaveFile": "Misslyckades med att spara filen",
|
||
"confirmDeleteSingleItem": "Är du säker på att du vill ta bort \"{{name}} \" permanent?",
|
||
"confirmDeleteMultipleItems": "Är du säker på att du vill ta bort {{count}} objekt permanent?",
|
||
"confirmDeleteMultipleItemsWithFolders": "Är du säker på att du vill ta bort {{count}} objekt permanent? Detta inkluderar mappar och deras innehåll.",
|
||
"confirmDeleteFolder": "Är du säker på att du vill permanent ta bort mappen \"{{name}}\" och allt dess innehåll?",
|
||
"permanentDeleteWarning": "Den här åtgärden kan inte ångras. Objektet/objekten kommer att raderas permanent från servern.",
|
||
"moveToTrashWarning": "Objektet/objekten kommer att flyttas till Termix-papperskorgen och kan återställas innan lagringsperioden löper ut.",
|
||
"itemsMovedToTrash": "{{count}} objekt flyttade till papperskorgen",
|
||
"trash": "Skräp",
|
||
"trashDescription": "Borttagna objekt sparas i {{days}} dag(ar) på den här värden.",
|
||
"trashLoadFailed": "Misslyckades med att ladda papperskorgen",
|
||
"trashEmpty": "Papperskorgen är tom",
|
||
"trashRestore": "Återställa",
|
||
"trashRestored": "Återställd {{name}}",
|
||
"trashRestoreFailed": "Det gick inte att återställa objektet. Den ursprungliga sökvägen kan redan finnas.",
|
||
"trashDeletePermanently": "Ta bort permanent",
|
||
"trashDeleteConfirm": "Vill du permanent radera {{name}}? Detta kan inte ångras.",
|
||
"trashPermanentlyDeleted": "Permanent borttagen {{name}}",
|
||
"trashDeleteFailed": "Misslyckades med att ta bort objektet permanent",
|
||
"trashEmptyAction": "Töm papperskorgen",
|
||
"trashEmptyConfirm": "Vill du permanent radera alla objekt i papperskorgen? Det här kan inte ångras.",
|
||
"trashEmptied": "Papperskorgen tömd",
|
||
"trashRetention": "Automatisk rensning efter (dagar)",
|
||
"trashRetentionSaved": "Papperskorgen har lagrats uppdaterad",
|
||
"trashRetentionFailed": "Misslyckades med att uppdatera papperskorgen",
|
||
"trashUnavailableConfirm": "Det här objektet kan inte flyttas till papperskorgen, vanligtvis för att det finns på ett annat filsystem eller kräver utökade behörigheter. Vill du ta bort det permanent istället?",
|
||
"recent": "Ny",
|
||
"pinned": "Fäst",
|
||
"folderShortcuts": "Mappgenvägar",
|
||
"failedToReconnectSSH": "Misslyckades med att återansluta SSH-sessionen",
|
||
"openTerminalHere": "Öppna terminalen här",
|
||
"run": "Sikt",
|
||
"openTerminalInFolder": "Öppna terminalen i den här mappen",
|
||
"openTerminalInFileLocation": "Öppna terminalen på filplatsen",
|
||
"runningFile": "Löpning - {{file}}",
|
||
"onlyRunExecutableFiles": "Kan bara köra körbara filer",
|
||
"directories": "Kataloger",
|
||
"removedFromRecentFiles": "Tog bort \"{{name}}\" från senaste filer",
|
||
"removeFailed": "Borttagning misslyckades",
|
||
"unpinnedSuccessfully": "\"{{name}}\" har lossats",
|
||
"unpinFailed": "Misslyckades med att lossa",
|
||
"removedShortcut": "Tog bort genvägen \"{{name}}\"",
|
||
"removeShortcutFailed": "Misslyckades med att ta bort genvägen",
|
||
"clearedAllRecentFiles": "Rensade alla senaste filer",
|
||
"clearFailed": "Rensa misslyckades",
|
||
"removeFromRecentFiles": "Ta bort från senaste filer",
|
||
"clearAllRecentFiles": "Rensa alla senaste filer",
|
||
"unpinFile": "Lossa filen",
|
||
"removeShortcut": "Ta bort genväg",
|
||
"pinFile": "Fäst fil",
|
||
"addToShortcuts": "Lägg till i genvägar",
|
||
"pasteFailed": "Klistra in misslyckades",
|
||
"noUndoableActions": "Inga ångerbara åtgärder",
|
||
"undoCopySuccess": "Ångrad kopiering: Raderade {{count}} kopierade filer",
|
||
"undoCopyFailedDelete": "Ångra misslyckades: Kunde inte ta bort några kopierade filer",
|
||
"undoCopyFailedNoInfo": "Ångra misslyckades: Kunde inte hitta informationen om den kopierade filen",
|
||
"undoMoveSuccess": "Ångrade flyttåtgärd: Flyttade {{count}} filer tillbaka till ursprunglig plats",
|
||
"undoMoveFailedMove": "Ångra misslyckades: Kunde inte flytta tillbaka några filer",
|
||
"undoMoveFailedNoInfo": "Ångra misslyckades: Kunde inte hitta informationen om den flyttade filen",
|
||
"undoDeleteNotSupported": "Raderingen kan inte ångras: Filerna har raderats permanent från servern",
|
||
"undoTypeNotSupported": "Ångra-åtgärdstypen stöds inte",
|
||
"undoOperationFailed": "Ångraåtgärden misslyckades",
|
||
"unknownError": "Okänt fel",
|
||
"confirm": "Bekräfta",
|
||
"find": "Hitta...",
|
||
"replace": "Ersätta",
|
||
"downloadInstead": "Ladda ner istället",
|
||
"keyboardShortcuts": "Kortkommandon",
|
||
"searchAndReplace": "Sök och ersätt",
|
||
"editing": "Redigering",
|
||
"search": "Söka",
|
||
"findNext": "Hitta nästa",
|
||
"findPrevious": "Hitta föregående",
|
||
"save": "Spara",
|
||
"selectAll": "Markera alla",
|
||
"undo": "Ångra",
|
||
"redo": "Göra om",
|
||
"moveLineUp": "Flytta upp raden",
|
||
"moveLineDown": "Flytta raden nedåt",
|
||
"toggleComment": "Växla kommentar",
|
||
"autoComplete": "Autoslutför",
|
||
"imageLoadError": "Misslyckades med att ladda bilden",
|
||
"startTyping": "Börja skriva...",
|
||
"unknownSize": "Okänd storlek",
|
||
"fileIsEmpty": "Filen är tom",
|
||
"largeFileWarning": "Varning för stora filer",
|
||
"largeFileWarningDesc": "Den här filen är {{size}} stor, vilket kan orsaka prestandaproblem när den öppnas som text.",
|
||
"fileNotFoundAndRemoved": "Filen \"{{name}}\" hittades inte och har tagits bort från senaste/fästa filer",
|
||
"failedToLoadFile": "Misslyckades med att ladda filen: {{error}}",
|
||
"serverErrorOccurred": "Serverfel uppstod. Försök igen senare.",
|
||
"autoSaveFailed": "Automatisk sparning misslyckades",
|
||
"fileAutoSaved": "Filen sparades automatiskt",
|
||
"moveFileFailed": "Misslyckades med att flytta {{name}}",
|
||
"moveOperationFailed": "Flyttoperationen misslyckades",
|
||
"canOnlyCompareFiles": "Kan bara jämföra två filer",
|
||
"comparingFiles": "Jämför filer: {{file1}} och {{file2}}",
|
||
"dragFailed": "Dragningsåtgärden misslyckades",
|
||
"filePinnedSuccessfully": "Filen \"{{name}}\" har fästs",
|
||
"pinFileFailed": "Misslyckades med att fästa filen",
|
||
"fileUnpinnedSuccessfully": "Filen \"{{name}}\" har lossats",
|
||
"unpinFileFailed": "Misslyckades med att lossa filen",
|
||
"shortcutAddedSuccessfully": "Mappgenvägen \"{{name}}\" har lagts till",
|
||
"addShortcutFailed": "Misslyckades med att lägga till genväg",
|
||
"operationCompletedSuccessfully": "{{operation}} {{count}} objekt lyckades",
|
||
"operationCompleted": "{{operation}} {{count}} objekt",
|
||
"downloadFileSuccess": "Filen {{name}} har laddats ner",
|
||
"downloadFileFailed": "Nedladdningen misslyckades",
|
||
"moveTo": "Flytta till {{name}}",
|
||
"diffCompareWith": "Differensjämförelse med {{name}}",
|
||
"dragOutsideToDownload": "Dra utanför fönstret för att ladda ner ({{count}} filer)",
|
||
"newFolderDefault": "Nymapp",
|
||
"newFileDefault": "Nyfil.txt",
|
||
"successfullyMovedItems": "Flyttade {{count}} objekt till {{target}}",
|
||
"move": "Flytta",
|
||
"searchInFile": "Sök i filen (Ctrl+F)",
|
||
"showKeyboardShortcuts": "Visa kortkommandon",
|
||
"decreaseFontSize": "Minska teckenstorleken",
|
||
"increaseFontSize": "Öka teckenstorleken",
|
||
"startWritingMarkdown": "Börja skriva ditt nedskrivningsinnehåll...",
|
||
"loadingFileComparison": "Laddar filjämförelse...",
|
||
"reload": "Ladda om",
|
||
"compare": "Jämföra",
|
||
"sideBySide": "Sida vid sida",
|
||
"inline": "Inline",
|
||
"fileComparison": "Filjämförelse: {{file1}} vs {{file2}}",
|
||
"fileTooLarge": "Filen är för stor: {{error}}",
|
||
"sshConnectionFailed": "SSH-anslutningen misslyckades. Kontrollera din anslutning till {{name}} ({{ip}}:{{port}})",
|
||
"loadFileFailed": "Misslyckades med att ladda filen: {{error}}",
|
||
"connecting": "Ansluter...",
|
||
"connectedSuccessfully": "Ansluten",
|
||
"totpVerificationFailed": "TOTP-verifiering misslyckades",
|
||
"warpgateVerificationFailed": "Warpgate-autentisering misslyckades",
|
||
"authenticationFailed": "Autentiseringen misslyckades",
|
||
"incorrectPassphrase": "Felaktigt lösenord. Försök igen.",
|
||
"verificationCodePrompt": "Verifieringskod:",
|
||
"changePermissions": "Ändra behörigheter",
|
||
"currentPermissions": "Nuvarande behörigheter",
|
||
"owner": "Ägare",
|
||
"group": "Grupp",
|
||
"others": "Andra",
|
||
"read": "Läsa",
|
||
"write": "Skriva",
|
||
"execute": "Utföra",
|
||
"permissionsChangedSuccessfully": "Behörigheter har ändrats",
|
||
"failedToChangePermissions": "Misslyckades med att ändra behörigheter",
|
||
"name": "Namn",
|
||
"sortByName": "Namn",
|
||
"sortByDate": "Datum ändrat",
|
||
"sortBySize": "Storlek",
|
||
"ascending": "Stigande",
|
||
"descending": "Fallande",
|
||
"root": "Rot",
|
||
"new": "Ny",
|
||
"sortBy": "Sortera efter",
|
||
"items": "Föremål",
|
||
"selected": "Vald",
|
||
"editor": "Redaktör",
|
||
"octal": "Oktal",
|
||
"storage": "Lagring",
|
||
"disk": "Disk",
|
||
"used": "Begagnad",
|
||
"of": "av",
|
||
"toggleSidebar": "Växla sidofält",
|
||
"cannotLoadPdf": "Kan inte ladda PDF-filen",
|
||
"pdfLoadError": "Det uppstod ett fel när PDF-filen laddades.",
|
||
"loadingPdf": "Laddar PDF...",
|
||
"loadingPage": "Laddar sida..."
|
||
},
|
||
"transfer": {
|
||
"copyToHost": "Kopiera till värd…",
|
||
"moveToHost": "Flytta till värd…",
|
||
"copyItemsToHost": "Kopiera {{count}} objekt till…",
|
||
"moveItemsToHost": "Flytta {{count}} objekt till…",
|
||
"noHostsConnected": "Inga andra filhanterarvärdar tillgängliga.",
|
||
"noHostsConnectedHint": "Lägg till en annan SSH-värd med Filhanteraren aktiverad i Värdhanteraren.",
|
||
"selectDestinationHost": "Välj destinationsvärd",
|
||
"destinationPath": "Destinationsväg",
|
||
"recentDestinations": "Senaste destinationerna",
|
||
"collapseRecentDestinations": "Komprimera senaste destinationer",
|
||
"expandRecentDestinations": "Expandera senaste destinationer",
|
||
"browseFolders": "Bläddra bland målmappar",
|
||
"browseDestination": "Bläddra eller ange sökväg",
|
||
"confirmCopy": "Kopiera",
|
||
"confirmMove": "Flytta",
|
||
"transferring": "Överför…",
|
||
"progressVerifying": "Verifierar filintegritet…",
|
||
"progressBenchmarking": "Välja den snabbaste bytesvägen…",
|
||
"compressing": "Komprimering…",
|
||
"extracting": "Extraherar…",
|
||
"transferringItems": "Överför {{current}} av {{total}} objekt…",
|
||
"transferSuccess": "Överföringen är klar",
|
||
"transferError": "Överföringen misslyckades",
|
||
"transferPartial": "Överföringen slutförd med {{count}} fel",
|
||
"transferPartialHint": "Kunde inte överföra: {{paths}}",
|
||
"itemsSummary": "{{count}} objekt",
|
||
"destMustBeDirectory": "Destinationen måste vara en katalog för överföringar av flera objekt",
|
||
"selectThisFolder": "Välj den här mappen",
|
||
"browsePathWillBeCreated": "Den här mappen finns inte ännu. Den kommer att skapas när överföringen startar.",
|
||
"browsePathError": "Kunde inte öppna den här sökvägen på målvärden.",
|
||
"goUp": "Gå upp",
|
||
"copyFolderToHost": "Kopiera mapp till värden…",
|
||
"moveFolderToHost": "Flytta mappen till värden…",
|
||
"hostReady": "Redo",
|
||
"hostConnecting": "Ansluter…",
|
||
"hostDisconnected": "Inte ansluten",
|
||
"hostAuthRequired": "Autentisering krävs — öppna filhanteraren på den här värden först",
|
||
"hostConnectionFailed": "Anslutningen misslyckades",
|
||
"metricsTitle": "Överföringstider",
|
||
"metricsPrepare": "Förbered destination: {{duration}}",
|
||
"metricsCompress": "Komprimera på källan: {{duration}}",
|
||
"metricsHopSourceRead": "Källa → server: {{throughput}}",
|
||
"metricsHopDestSftpWrite": "Server → destination (SFTP): {{throughput}}",
|
||
"metricsHopDestLocalWrite": "Server → destination (lokal): {{throughput}}",
|
||
"metricsTransfer": "Från slut till slut: {{throughput}} ({{duration}})",
|
||
"metricsExtract": "Extrahera på destination: {{duration}}",
|
||
"metricsVerify": "SHA-256 verifierad: {{duration}}",
|
||
"metricsRouteBenchmark": "Ruttsond — direkt: {{direct}}, relä: {{relay}}",
|
||
"metricsSourceDelete": "Ta bort från källan: {{duration}}",
|
||
"metricsTotal": "Totalt: {{duration}}",
|
||
"progressCompressing": "Komprimering på källvärd…",
|
||
"progressExtracting": "Extraherar på destination…",
|
||
"progressTransferring": "Överför data…",
|
||
"progressReconnecting": "Återansluter…",
|
||
"parallelSegmentsLabel": "Parallella överföringsfält",
|
||
"parallelSegmentsOption": "{{count}} körfält",
|
||
"parallelSegmentsHint": "Stora filer delas upp i bitar på 256 MB. Flera filer använder separata anslutningar (som att starta flera överföringar) för högre total dataflöde.",
|
||
"progressTotalSpeed": "{{speed}} totalt ({{lanes}} körfält)",
|
||
"progressTransferringItems": "Överföra filer ({{current}} av {{total}})…",
|
||
"progressBytes": "{{transferred}} / {{total}}",
|
||
"progressItems": "{{current}} / {{total}} filer",
|
||
"sourceNotDeletedPartial": "Källfiler behållna (delvis överföring)",
|
||
"jumpHostLimitation": "Båda värdarna måste vara nåbara från Termix-servern. Direkt routing mellan värdar stöds inte.",
|
||
"cancel": "Avboka",
|
||
"methodLabel": "Överföringsmetod",
|
||
"methodAuto": "Bil",
|
||
"methodTar": "Tar-arkiv",
|
||
"methodItemSftp": "SFTP per fil",
|
||
"methodAutoHint": "Väljer tar eller SFTP per fil baserat på filantal, storlek och komprimerbarhet. Enstaka filer använder alltid strömmande SFTP.",
|
||
"methodTarHint": "Komprimera vid källan, överför ett arkiv, extrahera vid destinationen. Kräver tar på båda Unix-värdarna.",
|
||
"methodItemSftpHint": "Överför varje fil individuellt via SFTP. Fungerar på alla värdar inklusive Windows.",
|
||
"methodPreviewLoading": "Beräkning av överföringsmetod…",
|
||
"methodPreviewError": "Kunde inte förhandsgranska överföringsmetoden. Servern kommer fortfarande att välja en metod när du startar.",
|
||
"methodPreviewWillUseTar": "Kommer att använda: Tar-arkiv",
|
||
"methodPreviewWillUseItemSftp": "Kommer att använda: SFTP per fil",
|
||
"methodPreviewScanSummary": "{{fileCount}} filer, {{totalSize}} totalt (skannat på källvärd).",
|
||
"methodItemSftpLimitation": "Varje fil använder samma SFTP-ström som en kopia av en enda fil, en efter en. Förloppet kombineras över alla filer, så stapeln rör sig långsamt vid stora filer.",
|
||
"methodReason": {
|
||
"user_item_sftp": "Du valde SFTP per fil.",
|
||
"user_tar": "Du valde tar-arkivet.",
|
||
"tar_unavailable": "Tar är inte tillgängligt på en eller båda värdarna — SFTP per fil kommer att användas istället.",
|
||
"windows_host": "En Windows-värd är inblandad — tar används inte.",
|
||
"auto_multi_large": "Auto: flera filer inklusive en stor fil ({{largestSize}}) med komprimerbar data — tar-paket samlas i en överföring.",
|
||
"auto_single_large_in_archive": "Auto: en stor fil ({{largestSize}}) i denna uppsättning — SFTP per fil.",
|
||
"auto_many_incompressible": "Auto: mestadels inkomprimerbar data — SFTP per fil.",
|
||
"auto_many_files": "Auto: många filer ({{fileCount}}) — tar minskar overhead per fil.",
|
||
"auto_default": "Auto: SFTP per fil för den här uppsättningen."
|
||
},
|
||
"progressCancel": "Avboka",
|
||
"progressCancelling": "Avbryter…",
|
||
"progressStalled": "Stannade",
|
||
"resumedHint": "Återansluten till en aktiv överföring som startade i ett annat fönster.",
|
||
"transferCancelled": "Överföringen avbruten",
|
||
"transferCancelledCopyHint": "Delvisa filer kan finnas kvar på destinationen.",
|
||
"transferCancelledMoveHint": "Delvisa filer kan finnas kvar på destinationen. Källfilerna togs inte bort.",
|
||
"cleanupDestFiles": "Städa upp destinationen",
|
||
"cleanupDestFilesSuccess": "Tog bort delvisa filer från destinationen",
|
||
"cleanupDestFilesPartial": "Vissa delfiler kunde inte tas bort",
|
||
"cleanupDestFilesNothing": "Inget att städa upp på destinationen",
|
||
"cleanupDestFilesError": "Rensningen misslyckades",
|
||
"retryTransfer": "Försöka igen",
|
||
"retryTransferError": "Återförsök misslyckades",
|
||
"transferFailedRetryHint": "Delvis data sparades på destinationen. Försöket återupptas när anslutningen är tillbaka."
|
||
},
|
||
"tunnels": {
|
||
"noSshTunnels": "Inga SSH-tunnlar",
|
||
"createFirstTunnelMessage": "Du har inte skapat några SSH-tunnlar än. Konfigurera tunnelanslutningar i Host Manager för att komma igång.",
|
||
"connected": "Ansluten",
|
||
"disconnected": "Osammanhängande",
|
||
"connecting": "Ansluter...",
|
||
"error": "Fel",
|
||
"canceling": "Inställande...",
|
||
"connect": "Ansluta",
|
||
"disconnect": "Koppla från",
|
||
"cancel": "Avboka",
|
||
"port": "Hamn",
|
||
"localPort": "Lokal hamn",
|
||
"remotePort": "Fjärrport",
|
||
"currentHostPort": "Nuvarande värdport",
|
||
"endpointPort": "Slutpunktsport",
|
||
"bindIp": "Lokal IP-adress",
|
||
"endpointSshConfig": "Slutpunkts-SSH-konfiguration",
|
||
"endpointSshHost": "Slutpunkts-SSH-värd",
|
||
"endpointSshHostPlaceholder": "Välj en konfigurerad värd",
|
||
"endpointSshHostRequired": "Välj en SSH-värd för slutpunkten för varje klienttunnel.",
|
||
"attempt": "Försök {{current}} av {{max}}",
|
||
"nextRetryIn": "Nästa försök om {{seconds}} sekunder",
|
||
"clientTunnels": "Klienttunnlar",
|
||
"clientTunnel": "Klienttunnel",
|
||
"addClientTunnel": "Lägg till klienttunnel",
|
||
"noClientTunnels": "Inga klienttunnlar konfigurerade på den här skrivbordet.",
|
||
"tunnelName": "Tunnelnamn",
|
||
"remoteHost": "Fjärrvärd",
|
||
"autoStart": "Automatisk start",
|
||
"clientAutoStartDesc": "Startar när den här skrivbordsklienten öppnas och förblir ansluten.",
|
||
"clientManualStartDesc": "Använd Start och Stopp från den här raden. Termix öppnar den inte automatiskt.",
|
||
"clientRemoteServerNote": "Fjärrvidarebefordran kan kräva AllowTcpForwarding och GatewayPorts på slutpunktens SSH-server. Fjärrporten stängs när den här skrivbordsmiljön kopplas bort.",
|
||
"clientTunnelStarted": "Klienttunneln har startats",
|
||
"clientTunnelStopped": "Klienttunneln stoppad",
|
||
"tunnelTestSucceeded": "Tunneltestet lyckades",
|
||
"tunnelTestFailed": "Tunneltestet misslyckades",
|
||
"localSaved": "Klienttunnlar sparade",
|
||
"localSaveError": "Misslyckades med att spara lokala klienttunnlar",
|
||
"invalidBindIp": "Lokal IP-adress måste vara en giltig IPv4-adress.",
|
||
"invalidLocalTargetIp": "Den lokala mål-IP-adressen måste vara en giltig IPv4-adress.",
|
||
"invalidLocalPort": "Den lokala porten måste vara mellan 1 och 65535.",
|
||
"invalidRemotePort": "Fjärrporten måste vara mellan 1 och 65535.",
|
||
"invalidLocalTargetPort": "Den lokala målporten måste vara mellan 1 och 65535.",
|
||
"invalidEndpointPort": "Slutpunktsporten måste vara mellan 1 och 65535.",
|
||
"duplicateAutoStartBind": "Endast en automatiskt startad klienttunnel kan använda {{bind}}.",
|
||
"manualControlError": "Misslyckades med att uppdatera tunnelns tillstånd.",
|
||
"active": "Aktiv",
|
||
"start": "Start",
|
||
"stop": "Stopp",
|
||
"test": "Testa",
|
||
"type": "Tunneltyp",
|
||
"typeLocal": "Lokal (-L)",
|
||
"typeRemote": "Fjärrkontroll (-R)",
|
||
"typeDynamic": "Dynamisk (-D)",
|
||
"typeServerLocalDesc": "Nuvarande värd till slutpunkt.",
|
||
"typeServerRemoteDesc": "Slutpunkt tillbaka till nuvarande värd.",
|
||
"typeClientLocalDesc": "Lokal dator till slutpunkt.",
|
||
"typeClientRemoteDesc": "Slutpunkten tillbaka till den lokala datorn.",
|
||
"typeClientDynamicDesc": "SOCKS på den lokala datorn.",
|
||
"typeDynamicDesc": "Vidarebefordra SOCKS5 CONNECT-trafik via SSH",
|
||
"forwardDescriptionServerLocal": "Nuvarande värd {{sourcePort}} → slutpunkt {{endpointPort}}.",
|
||
"forwardDescriptionServerRemote": "Slutpunkt {{endpointPort}} → aktuell värd {{sourcePort}}.",
|
||
"forwardDescriptionServerDynamic": "SOCKS på nuvarande värd {{sourcePort}}.",
|
||
"forwardDescriptionClientLocal": "Lokal {{sourcePort}} → fjärrkontroll {{endpointPort}}.",
|
||
"forwardDescriptionClientRemote": "Fjärrstyrd {{sourcePort}} → lokal {{endpointPort}}.",
|
||
"forwardDescriptionClientDynamic": "SOCKS på lokal port {{sourcePort}}.",
|
||
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{endpoint}}:{{remotePort}}",
|
||
"summaryClientRemote": "{{endpoint}}:{{remotePort}} → {{localHost}}:{{localPort}}",
|
||
"summaryClientDynamic": "{{localHost}}:{{localPort}} → SOCKS via {{endpoint}}",
|
||
"autoNameClientLocal": "Lokal {{localPort}} → {{endpoint}} {{remotePort}}",
|
||
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → lokal {{localPort}}",
|
||
"autoNameClientDynamic": "STRUMPOCKOR {{localPort}} via {{endpoint}}",
|
||
"route": "Rutt:",
|
||
"lastStarted": "Senast startade",
|
||
"lastTested": "Senast testad",
|
||
"lastError": "Senaste felet",
|
||
"maxRetries": "Max antal återförsök",
|
||
"maxRetriesDescription": "Maximalt antal återförsök.",
|
||
"retryInterval": "Intervall för återförsök (sekunder)",
|
||
"retryIntervalDescription": "Tid att vänta mellan återförsök.",
|
||
"local": "Lokal",
|
||
"remote": "Avlägsen",
|
||
"destination": "Destination",
|
||
"host": "Värd",
|
||
"mode": "Läge",
|
||
"noHostSelected": "Ingen värd vald",
|
||
"working": "Arbetssätt..."
|
||
},
|
||
"cardGrid": {
|
||
"dragToMove": "Dra för att flytta",
|
||
"dragToResize": "Dra för att ändra storlek",
|
||
"changeWidth": "Ändra bredd",
|
||
"removeCard": "Ta bort {{label}}",
|
||
"addCard": "Tillägga",
|
||
"columns": "Kolumner",
|
||
"empty": "Inga kort. Använd Lägg till nedan för att placera kort."
|
||
},
|
||
"hostMetrics": {
|
||
"cpu": "CPU",
|
||
"memory": "Minne",
|
||
"disk": "Disk",
|
||
"network": "Nätverk",
|
||
"uptime": "Drifttid",
|
||
"processes": "Processer",
|
||
"available": "Tillgänglig",
|
||
"free": "Gratis",
|
||
"connecting": "Ansluter...",
|
||
"connectionFailed": "Misslyckades med att ansluta till servern",
|
||
"naCpus": "Ej tillämpligt CPU(er)",
|
||
"cpuCores_one": "{{count}} Kärna",
|
||
"cpuCores_other": "{{count}} Kärnor",
|
||
"cpuUsage": "CPU-användning",
|
||
"memoryUsage": "Minnesanvändning",
|
||
"diskUsage": "Diskanvändning",
|
||
"selectFilesystem": "Välj filsystem",
|
||
"temperature": "Temperatur",
|
||
"highestTemperature": "Högsta temperatur",
|
||
"failedToFetchHostConfig": "Misslyckades med att hämta värdkonfigurationen",
|
||
"serverOffline": "Servern är offline",
|
||
"cannotFetchMetrics": "Kan inte hämta mätvärden från offlineservern",
|
||
"totpFailed": "TOTP-verifiering misslyckades",
|
||
"noneAuthNotSupported": "Host Metrics stöder inte autentiseringstypen 'ingen'.",
|
||
"noHostSelected": "Ingen värd vald",
|
||
"load": "Ladda",
|
||
"systemInfo": "Systeminformation",
|
||
"hostname": "Värdnamn",
|
||
"operatingSystem": "Operativsystem",
|
||
"kernel": "Kärna",
|
||
"seconds": "sekunder",
|
||
"networkInterfaces": "Nätverksgränssnitt",
|
||
"noInterfacesFound": "Inga nätverksgränssnitt hittades",
|
||
"noProcessesFound": "Inga processer hittades",
|
||
"processesTotal": "total",
|
||
"processesRunning": "spring",
|
||
"loginStats": "SSH-inloggningsstatistik",
|
||
"noRecentLoginData": "Inga aktuella inloggningsuppgifter",
|
||
"executingQuickAction": "Kör {{name}}...",
|
||
"quickActionSuccess": "{{name}} slutfört",
|
||
"quickActionFailed": "{{name}} misslyckades",
|
||
"quickActionError": "Misslyckades med att köra {{name}}",
|
||
"ports": {
|
||
"title": "Lyssningsportar",
|
||
"protocol": "Protokoll",
|
||
"port": "Hamn",
|
||
"address": "Adress",
|
||
"process": "Behandla",
|
||
"search": "Sök portar...",
|
||
"allProtocols": "Alla",
|
||
"noData": "Inga lyssningsportdata"
|
||
},
|
||
"firewall": {
|
||
"title": "Brandvägg",
|
||
"inactive": "Inaktiv",
|
||
"policy": "Politik",
|
||
"rules": "regler",
|
||
"noRules": "Inga regler i den här kedjan",
|
||
"noData": "Ingen brandväggsdata tillgänglig",
|
||
"action": "Handling",
|
||
"protocol": "Proto",
|
||
"port": "Hamn",
|
||
"source": "Källa",
|
||
"anywhere": "Någonstans",
|
||
"chains": "kedjor"
|
||
},
|
||
"loadAvg": "Ladda genomsnitt",
|
||
"swap": "Byta",
|
||
"architecture": "Arkitektur",
|
||
"refresh": "Uppdatera",
|
||
"retry": "Försöka igen",
|
||
"customize": "Anpassa layouten",
|
||
"reset": "Återställa",
|
||
"tabLive": "Bo",
|
||
"editModeInstructions": "Dra kort för att ordna om, dra i den nedre kanten för att ändra storlek och använd breddknappen för att ändra ett korts längd. Lägg till eller ta bort kort nedan.",
|
||
"managers": {
|
||
"services": "Tjänster",
|
||
"processInspector": "Processinspektör",
|
||
"logViewer": "Loggvisare",
|
||
"cron": "Cron-jobb",
|
||
"packages": "Paket",
|
||
"ssl": "SSL-certifikat",
|
||
"firewall": "Brandvägg",
|
||
"users": "Användare och behörigheter",
|
||
"healthCheck": "Hälsokontroller",
|
||
"diskBreakdown": "Diskuppdelning",
|
||
"systemdTimers": "Timers",
|
||
"topMemory": "Topp av Memory",
|
||
"noData": "Inga uppgifter",
|
||
"sudoHint": "Ange ett sudo-lösenord för den här värden i värdredigeraren för att aktivera privilegierade åtgärder.",
|
||
"filter": "Filtrera...",
|
||
"start": "Start",
|
||
"stop": "Stopp",
|
||
"restart": "Starta om",
|
||
"actionDone": "{{name}} uppdaterad",
|
||
"actionFailed": "Åtgärden misslyckades",
|
||
"signalSent": "Signal skickad till PID {{pid}}",
|
||
"killHint": "Klicka: avsluta (SIGTERM). Högerklicka: tvinga bort (SIGKILL).",
|
||
"working": "Arbetssätt...",
|
||
"update": "Uppdatera",
|
||
"upgradeAll": "Uppgradera alla",
|
||
"allUpToDate": "Allt är uppdaterat",
|
||
"save": "Spara",
|
||
"command": "Kommando",
|
||
"enabled": "Aktiverad",
|
||
"cronSaved": "Crontab uppdaterad",
|
||
"clients": "klienter",
|
||
"dryRun": "Torrkörning",
|
||
"renew": "Förnya",
|
||
"noAcmeClient": "Ingen ACME-klient (certbot eller acme.sh) hittades på den här värden.",
|
||
"addInputRule": "Lägg till INPUT-regel",
|
||
"firewallWarning": "Ändringarna gäller endast under körning tills de sparas. Var försiktig så att du inte låser dig ute.",
|
||
"ruleApplied": "Regel tillämpad",
|
||
"invalidPort": "Ange en giltig port (1-65535)",
|
||
"newUsername": "Nytt användarnamn",
|
||
"addUser": "Tillägga",
|
||
"deleteUser": "Ta bort användare",
|
||
"noHealthChecks": "Inga hälsokontroller har konfigurerats ännu.",
|
||
"follow": "Följa",
|
||
"noLogData": "Ingen loggutgång.",
|
||
"tree": "Träd",
|
||
"enableDisable": "Aktivera/avaktivera vid start",
|
||
"grantSudo": "Bevilja sudo",
|
||
"revokeSudo": "Återkalla sudo",
|
||
"sslIssueCert": "Utfärdande av certifikat",
|
||
"sslExpired": "Utgången",
|
||
"sslInDays": "i {{days}}d",
|
||
"sslNeedDomain": "Ange minst en domän",
|
||
"sslIssued": "Certifikat utfärdat",
|
||
"sslDomainsPlaceholder": "exempel.com, www.example.com",
|
||
"sslHttpStandalone": "HTTP (fristående)",
|
||
"sslHttpWebroot": "HTTP (webbrot)",
|
||
"sslDns": "DNS",
|
||
"sslDnsProvider": "DNS-leverantör (t.ex. Cloudflare)",
|
||
"sslIssueHint": "DNS-leverantörens inloggningsuppgifter måste redan vara konfigurerade på värden.",
|
||
"sslRevoke": "Återkalla certifikat",
|
||
"sslRevoked": "Certifikat återkallat",
|
||
"sslRevokeConfirm": "Återkalla och ta bort certifikatet \"{{name}}\"? Detta kan inte ångras.",
|
||
"healthRun": "Sikt",
|
||
"healthName": "Namn",
|
||
"healthTarget": "Värd / adress",
|
||
"healthAddCheck": "Lägg till check",
|
||
"healthSaved": "Hälsokontroller sparade",
|
||
"healthMissingFields": "Varje kontroll behöver ett namn och ett mål",
|
||
"logFile": "Fil",
|
||
"logUnit": "Enhet",
|
||
"logCustomPath": "Anpassad sökväg under /var/log (valfritt)",
|
||
"logGrep": "Filtrera rader...",
|
||
"firewallPersist": "Bevara regler",
|
||
"firewallPersisted": "Brandväggsreglerna bibehölls",
|
||
"wireguard": "WireGuard",
|
||
"tailscale": "Svansskala",
|
||
"wgNotInstalled": "WireGuard är inte installerat på den här värddatorn",
|
||
"wgNoInterfaces": "Inga WireGuard-gränssnitt konfigurerade",
|
||
"wgInterfaceUp": "Få upp",
|
||
"wgInterfaceDown": "Sänka",
|
||
"wgBringingUp": "Tar upp {{name}}...",
|
||
"wgBringingDown": "Att fälla {{name}}...",
|
||
"wgInterfaceUpDone": "{{name}} är uppe",
|
||
"wgInterfaceDownDone": "{{name}} är nere",
|
||
"wgListenPort": "Hamn",
|
||
"wgPublicKey": "Offentlig nyckel",
|
||
"wgEndpoint": "Slutpunkt",
|
||
"wgAllowedIPs": "Tillåtna IP-adresser",
|
||
"wgLastHandshake": "Sista handskakningen",
|
||
"wgHandshakeNever": "Aldrig",
|
||
"wgTransfer": "Överföra",
|
||
"tsNotInstalled": "Tailscale är inte installerat på den här värddatorn",
|
||
"tsRunning": "Spring",
|
||
"tsStopped": "Stoppad",
|
||
"tsEnable": "Ansluta",
|
||
"tsDisable": "Koppla från",
|
||
"tsEnabling": "Ansluter till Tailscale...",
|
||
"tsDisabling": "Kopplar från Tailscale...",
|
||
"tsEnabled": "Svanskalan ansluten",
|
||
"tsDisabled": "Svanskalan frånkopplad",
|
||
"tsIPs": "Tailskala-IP-adresser",
|
||
"tsPeers": "Kamrater",
|
||
"tsOnline": "Online",
|
||
"tsOffline": "Off-line",
|
||
"tsExitNode": "Utgångsnod",
|
||
"tsExitNodeActive": "Avslutsnod aktiv",
|
||
"tsHostname": "Värdnamn"
|
||
}
|
||
},
|
||
"proxmoxStats": {
|
||
"tabTitle": "Proxmox-statistik",
|
||
"cpuUsage": "CPU-användning",
|
||
"memoryUsage": "Minnesanvändning",
|
||
"diskUsage": "Diskanvändning",
|
||
"networkInterfaces": "Nätverksgränssnitt",
|
||
"uptime": "Drifttid",
|
||
"systemInfo": "Systeminformation",
|
||
"guestsSummary": "Gäster",
|
||
"storagePools": "Lagringspooler",
|
||
"clusterHealth": "Klusterhälsa",
|
||
"cpuCores_one": "{{count}} Kärna",
|
||
"cpuCores_other": "{{count}} Kärnor",
|
||
"used": "Begagnad",
|
||
"total": "Total",
|
||
"hostname": "Värdnamn",
|
||
"kernel": "Kärna",
|
||
"pveVersion": "PVE-version",
|
||
"name": "Namn",
|
||
"status": "Status",
|
||
"type": "Typ",
|
||
"cpu": "CPU",
|
||
"mem": "Mem",
|
||
"disk": "Disk",
|
||
"running": "Spring",
|
||
"stopped": "Stoppad",
|
||
"guestCounts": "{{running}}/{{total}} springer",
|
||
"inactive": "Inaktiv",
|
||
"notClustered": "Fristående nod (inte en del av ett kluster)",
|
||
"quorate": "Kvorat",
|
||
"notQuorate": "Inte kvoriöst",
|
||
"nodeOnline": "Online",
|
||
"nodeOffline": "Off-line",
|
||
"noHostSelected": "Ingen värd vald",
|
||
"pveshNotFound": "pvesh hittades inte - är detta en Proxmox-nod?",
|
||
"nodeDetectionFailed": "Det gick inte att fastställa ett giltigt Proxmox-nodnamn",
|
||
"connecting": "Ansluter...",
|
||
"connectionFailed": "Misslyckades med att ansluta till Proxmox-noden",
|
||
"refresh": "Uppdatera",
|
||
"searchGuests": "Sök gäster...",
|
||
"filterAll": "Alla",
|
||
"filterVm": "VM",
|
||
"filterLxc": "LXC",
|
||
"noGuests": "Inga virtuella maskiner eller LXC-behållare hittades på den här noden.",
|
||
"noGuestsMatch": "Inga gäster matchar de aktuella filtren."
|
||
},
|
||
"auth": {
|
||
"tagline": "Självhostad SSH och fjärrskrivbordshantering",
|
||
"loginTitle": "Välkommen tillbaka",
|
||
"registerTitle": "Skapa konto",
|
||
"forgotPassword": "Glömt lösenord?",
|
||
"rememberMe": "Kom ihåg enheten i 30 dagar (inkluderar TOTP)",
|
||
"noAccount": "Har du inget konto?",
|
||
"hasAccount": "Har du redan ett konto?",
|
||
"twoFactorAuth": "Tvåfaktorsautentisering",
|
||
"enterCode": "Ange verifieringskod",
|
||
"backupCode": "Eller använd reservkod",
|
||
"verifyCode": "Verifiera kod",
|
||
"redirectingToApp": "Omdirigerar till appen...",
|
||
"sshAuthenticationRequired": "SSH-autentisering krävs",
|
||
"sshNoKeyboardInteractive": "Tangentbordsinteraktiv autentisering är inte tillgänglig",
|
||
"sshAuthenticationFailed": "Autentisering misslyckades",
|
||
"sshAuthenticationTimeout": "Autentiseringstidsgräns",
|
||
"sshNoKeyboardInteractiveDescription": "Servern stöder inte tangentbordsinteraktiv autentisering. Ange ditt lösenord eller din SSH-nyckel.",
|
||
"sshAuthFailedDescription": "De angivna inloggningsuppgifterna var felaktiga. Försök igen med giltiga inloggningsuppgifter.",
|
||
"sshTimeoutDescription": "Autentiseringsförsöket har nått tidsgränsen. Försök igen.",
|
||
"sshProvideCredentialsDescription": "Ange dina SSH-inloggningsuppgifter för att ansluta till den här servern.",
|
||
"sshPasswordDescription": "Ange lösenordet för den här SSH-anslutningen.",
|
||
"sshKeyPasswordDescription": "Om din SSH-nyckel är krypterad, ange lösenfrasen här.",
|
||
"passphraseRequired": "Lösenordsfras krävs",
|
||
"passphraseRequiredDescription": "SSH-nyckeln är krypterad. Ange lösenfrasen för att låsa upp den.",
|
||
"back": "Tillbaka",
|
||
"firstUser": "Första användaren",
|
||
"firstUserMessage": "Du är den första användaren och kommer att bli administratör. Du kan se administratörsinställningarna i rullgardinsmenyn för användare i sidofältet. Om du tror att detta är ett misstag kan du kontrollera dockerloggarna eller skapa ett GitHub-ärende.",
|
||
"external": "Extern",
|
||
"loginWithExternal": "Logga in med extern leverantör",
|
||
"loginWithExternalDesc": "Logga in med din konfigurerade externa identitetsleverantör",
|
||
"externalNotSupportedInElectron": "Extern autentisering stöds inte i Electron-appen ännu. Använd webbversionen för OIDC-inloggning.",
|
||
"loginWithProvider": "Logga in med {{name}}",
|
||
"orContinueWith": "eller fortsätt med",
|
||
"ldapUsername": "LDAP-användarnamn",
|
||
"ldapPassword": "LDAP-lösenord",
|
||
"ldapSignIn": "Logga in",
|
||
"ldapLoginFailed": "LDAP-inloggning misslyckades",
|
||
"resetPasswordButton": "Återställ lösenord",
|
||
"sendResetCode": "Skicka återställningskod",
|
||
"resetCodeDesc": "Ange ditt användarnamn för att få en kod för återställning av lösenord. Koden kommer att loggas i docker-containerns loggfiler.",
|
||
"resetCode": "Återställ kod",
|
||
"verifyCodeButton": "Verifiera kod",
|
||
"enterResetCode": "Ange den 6-siffriga koden från docker-containerloggarna för användaren:",
|
||
"newPassword": "Nytt lösenord",
|
||
"confirmNewPassword": "Bekräfta lösenord",
|
||
"enterNewPassword": "Ange ditt nya lösenord för användaren:",
|
||
"signUp": "Registrera dig",
|
||
"desktopApp": "Skrivbordsapp",
|
||
"loggingInToDesktopApp": "Logga in på skrivbordsappen",
|
||
"loadingServer": "Laddar servern...",
|
||
"dataLossWarning": "Om du återställer ditt lösenord på det här sättet raderas alla dina sparade SSH-värdar, inloggningsuppgifter och annan krypterad data. Åtgärden kan inte ångras. Använd bara detta om du har glömt ditt lösenord och inte är inloggad.",
|
||
"authenticationDisabled": "Autentisering inaktiverad",
|
||
"authenticationDisabledDesc": "Alla autentiseringsmetoder är för närvarande inaktiverade. Kontakta din administratör.",
|
||
"passwordLoginDisabledDesc": "Lösenordsinloggning är inaktiverad. Använd en lösenordsnyckel eller en extern autentiseringsleverantör.",
|
||
"signInWithPasskey": "Logga in med lösenord",
|
||
"passkeyLoginFailed": "Inloggning med lösenordsnyckel misslyckades",
|
||
"attemptsRemaining": "{{count}} försök återstår",
|
||
"confirmResetDataWipe": "Det här kontot har inte loggats in sedan krypteringsuppgraderingen, så dess lagrade data kan inte återställas utan det gamla lösenordet. Om du återställer kontot tas dess värdar, inloggningsuppgifter och kodavsnitt permanent bort. Vill du fortsätta?"
|
||
},
|
||
"hostKey": {
|
||
"verifyNewHost": "Verifiera SSH-värdnyckel",
|
||
"keyChangedWarning": "SSH-värdnyckel ändrad",
|
||
"firstConnectionTitle": "Första gången jag ansluter till den här värden",
|
||
"firstConnectionDescription": "Denna värds äkthet kan inte fastställas. Kontrollera att fingeravtrycket matchar dina förväntningar.",
|
||
"keyChangedDescription": "Värdnyckeln för den här servern har ändrats sedan din senaste anslutning. Detta kan tyda på ett säkerhetsproblem.",
|
||
"previousKey": "Föregående nyckel",
|
||
"newFingerprint": "Nytt fingeravtryck",
|
||
"fingerprint": "Fingeravtryck",
|
||
"verifyInstructions": "Om du litar på den här värden klickar du på Godkänn för att fortsätta och spara fingeravtrycket för framtida anslutningar.",
|
||
"securityWarning": "Säkerhetsvarning",
|
||
"acceptAndContinue": "Godkänn och fortsätt",
|
||
"acceptNewKey": "Acceptera ny nyckel och fortsätt"
|
||
},
|
||
"errors": {
|
||
"databaseConnection": "Kunde inte ansluta till databasen",
|
||
"unknownError": "Okänt fel",
|
||
"loginFailed": "Inloggningen misslyckades",
|
||
"failedPasswordReset": "Misslyckades med att initiera lösenordsåterställning",
|
||
"failedVerifyCode": "Misslyckades med att verifiera återställningskoden",
|
||
"failedCompleteReset": "Misslyckades med att slutföra återställning av lösenord",
|
||
"invalidTotpCode": "Ogiltig TOTP-kod",
|
||
"failedOidcLogin": "Misslyckades med att starta OIDC-inloggning",
|
||
"silentSigninOidcUnavailable": "Tyst inloggning begärdes, men OIDC-inloggning är inte tillgänglig.",
|
||
"failedUserInfo": "Misslyckades med att hämta användarinformation efter inloggning",
|
||
"oidcAuthFailed": "OIDC-autentisering misslyckades",
|
||
"invalidAuthUrl": "Ogiltig auktoriserings-URL mottagen från backend",
|
||
"requiredField": "Detta fält är obligatoriskt",
|
||
"minLength": "Minimilängden är {{min}}",
|
||
"passwordMismatch": "Lösenorden matchar inte",
|
||
"passwordLoginDisabled": "Inloggning med användarnamn/lösenord är för närvarande inaktiverad",
|
||
"sessionExpired": "Sessionen har gått ut - vänligen logga in igen",
|
||
"totpRateLimited": "Begränsad hastighet: För många TOTP-verifieringsförsök. Försök igen senare.",
|
||
"totpRateLimitedWithTime": "Hastighetsbegränsning: För många TOTP-verifieringsförsök. Vänta {{time}} sekunder innan du försöker igen.",
|
||
"resetCodeRateLimited": "Begränsad hastighet: För många verifieringsförsök. Försök igen senare.",
|
||
"resetCodeRateLimitedWithTime": "Begränsad hastighet: För många verifieringsförsök. Vänta {{time}} sekunder innan du försöker igen.",
|
||
"authTokenSaveFailed": "Misslyckades med att spara autentiseringstoken",
|
||
"keyringUnavailable": "Inloggad, men sessionen kunde inte lagras: det här systemet har ingen nyckelring tillgänglig att kryptera den med. Starta en hemlig tjänst (som gnome-keyring eller KWallet) och logga in igen.",
|
||
"failedToLoadServer": "Misslyckades med att ladda servern",
|
||
"remoteServerRequired": "Fjärrserver krävs. Anslut en fjärrserver i Inställningar för att använda den här anslutningstypen."
|
||
},
|
||
"messages": {
|
||
"registrationDisabled": "Registrering av nytt konto är för närvarande inaktiverat av en administratör. Vänligen logga in eller kontakta en administratör.",
|
||
"userNotAllowed": "Ditt konto är inte auktoriserat för registrering. Kontakta en administratör.",
|
||
"databaseConnectionFailed": "Misslyckades med att ansluta till databasservern",
|
||
"resetCodeSent": "Återställningskod skickad till Docker-loggar",
|
||
"codeVerified": "Koden verifierad",
|
||
"passwordResetSuccess": "Lösenordsåterställning lyckades",
|
||
"loginSuccess": "Inloggningen lyckades",
|
||
"registrationSuccess": "Registreringen lyckades"
|
||
},
|
||
"profile": {
|
||
"c2sTunnelConfigDesc": "Lokala skrivbordstunnlar som riktar sig mot konfigurerade SSH-värdar.",
|
||
"c2sTunnelPresets": "Förinställningar för klienttunnel",
|
||
"c2sTunnelPresetsDesc": "Spara den här skrivbordsklientens lokala tunnellista som en namngiven serverförinställning, eller ladda tillbaka en förinställning till den här klienten.",
|
||
"c2sTunnelPresetsUnavailable": "Förinställningar för klienttunneln är endast tillgängliga i skrivbordsklienten.",
|
||
"c2sPresetName": "Förinställt namn",
|
||
"c2sPresetNamePlaceholder": "Klientförinställningsnamn",
|
||
"c2sPresetToLoad": "Förinställning att ladda",
|
||
"c2sNoPresetSelected": "Ingen förinställning vald",
|
||
"c2sNoPresets": "Inga förinställningar sparade",
|
||
"c2sLoadPreset": "Ladda",
|
||
"c2sCurrentLocalConfig": "{{count}} lokala klienttunnlar konfigurerade på den här skrivbordet.",
|
||
"c2sPresetSyncNote": "Förinställningar är explicita ögonblicksbilder; om en sådan läses in ersätts den här skrivbordsklientens lokala klienttunnellista.",
|
||
"c2sPresetSaved": "Förinställningen för klienttunneln sparad",
|
||
"c2sPresetLoaded": "Förinställningen för klienttunnel laddas lokalt",
|
||
"c2sPresetRenamed": "Förinställningen för klienttunneln har bytt namn",
|
||
"c2sPresetDeleted": "Förinställningen för klienttunneln har raderats",
|
||
"c2sPresetLoadError": "Misslyckades med att läsa in förinställningar för klienttunneln"
|
||
},
|
||
"placeholders": {
|
||
"maxRetries": "3",
|
||
"retryInterval": "10",
|
||
"language": "Språk",
|
||
"keyPassword": "nyckellösenord",
|
||
"pastePrivateKey": "Klistra in din privata nyckel här...",
|
||
"localListenerHost": "127.0.0.1 (lyssna lokalt)",
|
||
"localTargetHost": "127.0.0.1 (mål på den här datorn)",
|
||
"socksListenerHost": "127.0.0.1 (SOCKS-lyssnare)",
|
||
"enterPassword": "Ange ditt lösenord",
|
||
"defaultPort": "22",
|
||
"defaultEndpointPort": "224"
|
||
},
|
||
"dashboard": {
|
||
"title": "Instrumentpanel",
|
||
"loading": "Laddar instrumentpanelen...",
|
||
"github": "GitHub",
|
||
"support": "Stöd",
|
||
"discord": "Disharmoni",
|
||
"docs": "Dokument",
|
||
"donate": "Donera",
|
||
"serverOverview": "Serveröversikt",
|
||
"version": "Version",
|
||
"upToDate": "Uppdaterad",
|
||
"updateAvailable": "Uppdatering tillgänglig",
|
||
"beta": "Beta",
|
||
"uptime": "Drifttid",
|
||
"database": "Databas",
|
||
"healthy": "Hälsosam",
|
||
"error": "Fel",
|
||
"totalHosts": "Totalt antal värdar",
|
||
"totalTunnels": "Totalt antal tunnlar",
|
||
"totalCredentials": "Totalt antal referenser",
|
||
"recentActivity": "Senaste aktivitet",
|
||
"reset": "Återställa",
|
||
"loadingRecentActivity": "Laddar senaste aktiviteten...",
|
||
"noRecentActivity": "Ingen aktivitet nyligen",
|
||
"quickActions": "Snabbåtgärder",
|
||
"addHost": "Lägg till värd",
|
||
"addCredential": "Lägg till autentiseringsuppgifter",
|
||
"adminSettings": "Administratörsinställningar",
|
||
"userProfile": "Användarprofil",
|
||
"serverStats": "Serverstatistik",
|
||
"loadingServerStats": "Laddar serverstatistik...",
|
||
"noServerData": "Ingen serverdata tillgänglig",
|
||
"cpu": "CPU",
|
||
"ram": "RAM-minne",
|
||
"customizeLayout": "Anpassa instrumentpanelen",
|
||
"dashboardSettings": "Inställningar för instrumentpanelen",
|
||
"enableDisableCards": "Aktivera/inaktivera kort",
|
||
"resetLayout": "Återställ till standard",
|
||
"serverOverviewCard": "Serveröversikt",
|
||
"recentActivityCard": "Senaste aktivitet",
|
||
"networkGraphCard": "Nätverksgraf",
|
||
"networkGraph": "Nätverksgraf",
|
||
"quickActionsCard": "Snabbåtgärder",
|
||
"serverStatsCard": "Serverstatistik",
|
||
"panelMain": "Huvudsaklig",
|
||
"panelSide": "Sida",
|
||
"justNow": "just nu",
|
||
"serviceLinks": "Servicelänkar",
|
||
"homepagePreview": "Förhandsvisning av startsidan"
|
||
},
|
||
"donation": {
|
||
"title": "Gillar du Termix?",
|
||
"body": "Termix är gratis och öppen källkod, byggt och underhållet av ett team på två personer på vår fritid. Om det ersätter ett kommersiellt verktyg som du annars skulle betala för, hjälper en donation till att täcka hostingkostnader och hålla utvecklingen igång. För närvarande är donationer endast kryptovalutor.",
|
||
"milestones": "Donationer hjälper också till att finansiera tiden som krävs för att undersöka och lära sig vad som behövs för att bygga funktioner som SAML och Kubernetes-stöd. Se framstegen på donationssidan.",
|
||
"cta": "Donera",
|
||
"dismiss": "Kanske senare"
|
||
},
|
||
"dashboardTab": {
|
||
"stable": "STABIL",
|
||
"hostsOnline": "Värdar online",
|
||
"activeTunnels": "Aktiva tunnlar",
|
||
"registerNewServer": "Registrera en ny server",
|
||
"storeSshKeysOrPasswords": "Lagra SSH-nycklar eller lösenord",
|
||
"manageUsersAndRoles": "Hantera användare och roller",
|
||
"manageYourAccount": "Hantera ditt konto",
|
||
"hostStatus": "Värdstatus",
|
||
"noHostsConfigured": "Inga värdar konfigurerade",
|
||
"online": "ONLINE",
|
||
"offline": "OFF-LINE",
|
||
"checking": "KONTROLL",
|
||
"onlineLower": "Online",
|
||
"nodes": "{{count}} noder",
|
||
"add": "Tillägga:",
|
||
"commandPalette": "Kommandopaletten",
|
||
"done": "Gjort",
|
||
"editModeInstructions": "Dra kort för att ändra ordning · Dra kolumndelaren för att ändra storlek på kolumner · Dra i den nedre kanten av ett kort för att ändra storlek på dess höjd · Ta bort i papperskorgen",
|
||
"empty": "Tömma",
|
||
"clear": "Rensa",
|
||
"serviceLinksTitle": "Servicelänkar",
|
||
"serviceLinksEmpty": "Inga tjänstelänkar ännu",
|
||
"serviceLinksAddLabel": "Märka",
|
||
"serviceLinksAddUrl": "URL",
|
||
"serviceLinksAdd": "Tillägga",
|
||
"serviceLinksLabelPlaceholder": "Min tjänst",
|
||
"serviceLinksUrlPlaceholder": "http://192.168.1.10:8080",
|
||
"serviceLinksInvalidUrl": "Ange en giltig webbadress",
|
||
"serviceLinksAddFailed": "Misslyckades med att lägga till tjänstelänk",
|
||
"disk": "Disk",
|
||
"viewServerDetails": "Visa serverinformation"
|
||
},
|
||
"sessionLogs": {
|
||
"title": "Sessionsloggar",
|
||
"noLogs": "Inga sessionsloggar ännu",
|
||
"noLogsDesc": "Aktivera sessionsloggning på en värd för att starta inspelning",
|
||
"duration": "Varaktighet",
|
||
"viewLog": "Visa logg",
|
||
"downloadLog": "Ladda ner",
|
||
"downloadAsText": "Ladda ner som text",
|
||
"deleteLog": "Radera",
|
||
"confirmDelete": "Radera den här sessionsloggen?",
|
||
"confirmDeleteDesc": "Den här åtgärden kan inte ångras.",
|
||
"copyContent": "Kopiera",
|
||
"copied": "Kopierad!",
|
||
"loadError": "Misslyckades med att läsa in sessionsloggar",
|
||
"deleteError": "Misslyckades med att radera sessionsloggen",
|
||
"filterByHost": "Filtrera efter värd..."
|
||
},
|
||
"networkGraph": {
|
||
"addHost": "Lägg till värd",
|
||
"addGroup": "Lägg till grupp",
|
||
"addLink": "Lägg till länk",
|
||
"zoomIn": "Zooma in",
|
||
"zoomOut": "Zooma ut",
|
||
"resetView": "Återställ vy",
|
||
"selectHost": "Välj värd",
|
||
"chooseHost": "Välj en värd...",
|
||
"parentGroup": "Föräldragrupp",
|
||
"noGroup": "Ingen grupp",
|
||
"groupName": "Gruppnamn",
|
||
"color": "Färg",
|
||
"source": "Källa",
|
||
"target": "Mål",
|
||
"moveToGroup": "Flytta till grupp",
|
||
"selectGroup": "Välj grupp...",
|
||
"addConnection": "Lägg till anslutning",
|
||
"hostDetails": "Värduppgifter",
|
||
"removeFromGroup": "Ta bort från gruppen",
|
||
"addHostHere": "Lägg till värd här",
|
||
"editGroup": "Redigera grupp",
|
||
"delete": "Radera",
|
||
"add": "Tillägga",
|
||
"create": "Skapa",
|
||
"move": "Flytta",
|
||
"connect": "Ansluta",
|
||
"createGroup": "Skapa grupp",
|
||
"selectSourcePlaceholder": "Välj källa...",
|
||
"selectTargetPlaceholder": "Välj mål...",
|
||
"invalidFile": "Ogiltig fil",
|
||
"hostAlreadyExists": "Värden finns redan i topologin",
|
||
"connectionExists": "Anslutningen finns redan",
|
||
"unknown": "Okänd",
|
||
"name": "Namn",
|
||
"ip": "IP-adress",
|
||
"status": "Status",
|
||
"failedToAddNode": "Misslyckades med att lägga till nod",
|
||
"sourceDifferentFromTarget": "Källa och mål måste vara olika",
|
||
"exportJSON": "Exportera JSON",
|
||
"importJSON": "Importera JSON",
|
||
"terminal": "Terminal",
|
||
"fileManager": "Filhanteraren",
|
||
"tunnel": "Tunnel",
|
||
"docker": "Hamnarbetare",
|
||
"serverStats": "Värdstatistik",
|
||
"hostMetrics": "Värdstatistik",
|
||
"noNodes": "Inga noder ännu"
|
||
},
|
||
"docker": {
|
||
"notEnabled": "Docker är inte aktiverat för den här värden",
|
||
"validating": "Validerar Docker...",
|
||
"connecting": "Ansluter...",
|
||
"error": "Fel",
|
||
"version": "{{runtime}} {{version}}",
|
||
"connectionFailed": "Misslyckades med att ansluta till Docker",
|
||
"containerStarted": "Behållaren {{name}} startad",
|
||
"failedToStartContainer": "Misslyckades med att starta containern {{name}}",
|
||
"containerStopped": "Behållaren {{name}} har stoppats",
|
||
"failedToStopContainer": "Misslyckades med att stoppa containern {{name}}",
|
||
"containerRestarted": "Behållaren {{name}} har startats om",
|
||
"failedToRestartContainer": "Misslyckades med att starta om behållaren {{name}}",
|
||
"containerPaused": "Behållaren {{name}} pausad",
|
||
"containerUnpaused": "Behållaren {{name}} har återupptagits",
|
||
"failedToTogglePauseContainer": "Misslyckades med att växla pausläge för container {{name}}",
|
||
"containerRemoved": "Behållaren {{name}} har tagits bort",
|
||
"failedToRemoveContainer": "Misslyckades med att ta bort behållaren {{name}}",
|
||
"image": "Bild",
|
||
"ports": "Hamnar",
|
||
"noPorts": "Inga portar",
|
||
"start": "Start",
|
||
"confirmRemoveContainer": "Är du säker på att du vill ta bort behållaren '{{name}}'? Den här åtgärden kan inte ångras.",
|
||
"runningContainerWarning": "Varning: Den här behållaren körs för närvarande. Om du tar bort den stoppas behållaren först.",
|
||
"loadingContainers": "Lastar containrar...",
|
||
"manager": "Docker Manager",
|
||
"autoRefresh": "Automatisk uppdatering",
|
||
"timestamps": "Tidsstämplar",
|
||
"lines": "Rader",
|
||
"filterLogs": "Filtrera loggar...",
|
||
"refresh": "Uppdatera",
|
||
"download": "Ladda ner",
|
||
"clear": "Rensa",
|
||
"logsDownloaded": "Loggarna har laddats ner",
|
||
"last50": "Senaste 50",
|
||
"last100": "Senaste 100",
|
||
"last500": "Senaste 500",
|
||
"last1000": "Senaste 1000",
|
||
"allLogs": "Alla loggar",
|
||
"noLogsMatching": "Inga loggar som matchar \"{{query}}\"",
|
||
"noLogsAvailable": "Inga loggar tillgängliga",
|
||
"noContainersFound": "Inga containrar hittades",
|
||
"noContainersFoundHint": "Inga Docker-containrar är tillgängliga på den här värden",
|
||
"searchPlaceholder": "Sök behållare...",
|
||
"allStatuses": "Alla statusar",
|
||
"stateRunning": "Spring",
|
||
"statePaused": "Pausad",
|
||
"stateExited": "Avslutad",
|
||
"stateRestarting": "Omstart",
|
||
"noContainersMatchFilters": "Inga behållare matchar dina filter",
|
||
"noContainersMatchFiltersHint": "Försök att justera dina sök- eller filterkriterier",
|
||
"failedToFetchStats": "Misslyckades med att hämta containerstatistik",
|
||
"containerNotRunning": "Behållaren körs inte",
|
||
"startContainerToViewStats": "Starta containern för att visa statistik",
|
||
"loadingStats": "Laddar statistik...",
|
||
"errorLoadingStats": "Fel vid inläsning av statistik",
|
||
"noStatsAvailable": "Ingen statistik tillgänglig",
|
||
"cpuUsage": "CPU-användning",
|
||
"current": "Nuvarande",
|
||
"memoryUsage": "Minnesanvändning",
|
||
"networkIo": "Nätverks-I/O",
|
||
"input": "Input",
|
||
"output": "Produktion",
|
||
"blockIo": "Blockera I/O",
|
||
"read": "Läsa",
|
||
"write": "Skriva",
|
||
"pids": "PID:er",
|
||
"containerInformation": "Containerinformation",
|
||
"name": "Namn",
|
||
"id": "ID",
|
||
"state": "Ange",
|
||
"containerMustBeRunning": "Behållaren måste köras för att komma åt konsolen",
|
||
"verificationCodePrompt": "Ange verifieringskod",
|
||
"totpVerificationFailed": "TOTP-verifieringen misslyckades. Försök igen.",
|
||
"warpgateVerificationFailed": "Warpgate-autentiseringen misslyckades. Försök igen.",
|
||
"connectedTo": "Ansluten till {{containerName}}",
|
||
"disconnected": "Osammanhängande",
|
||
"consoleError": "Konsolfel",
|
||
"errorMessage": "Fel: {{message}}",
|
||
"failedToConnect": "Misslyckades med att ansluta till containern",
|
||
"console": "Trösta",
|
||
"selectShell": "Välj skal",
|
||
"bash": "Våldsamt slag",
|
||
"sh": "sh",
|
||
"ash": "aska",
|
||
"connect": "Ansluta",
|
||
"disconnect": "Koppla från",
|
||
"notConnected": "Inte ansluten",
|
||
"clickToConnect": "Klicka på Anslut för att starta en shell-session",
|
||
"connectingTo": "Ansluter till {{containerName}}...",
|
||
"containerNotFound": "Behållaren hittades inte",
|
||
"backToList": "Tillbaka till listan",
|
||
"logs": "Loggar",
|
||
"stats": "Statistik",
|
||
"consoleTab": "Trösta",
|
||
"startContainerToAccess": "Starta containern för att komma åt konsolen"
|
||
},
|
||
"admin": {
|
||
"sectionGeneral": "Allmän",
|
||
"sectionOidc": "OIDC",
|
||
"sectionSso": "SSO-leverantörer",
|
||
"ssoAddProvider": "Lägg till leverantör",
|
||
"ssoDocsLink": "Visa dokument",
|
||
"ssoProviderDocsLink": "Visa dokument",
|
||
"ssoNoProviders": "Inga SSO-leverantörer har konfigurerats.",
|
||
"ssoProviderName": "Visningsnamn",
|
||
"ssoProviderType": "Leverantörstyp",
|
||
"ssoDeleteProvider": "Ta bort leverantör",
|
||
"ssoDeleteConfirm": "Vill du ta bort den här leverantören? Associerade användare kommer inte att kunna logga in.",
|
||
"ssoTypeOidc": "OIDC",
|
||
"ssoTypeLdap": "LDAP",
|
||
"ssoTypeGithub": "GitHub",
|
||
"ssoTypeGoogle": "Google",
|
||
"ssoEnabled": "Aktiverad",
|
||
"ssoDisabled": "Funktionshindrad",
|
||
"ssoSaveProvider": "Spara leverantör",
|
||
"ssoTestConnection": "Testa anslutning",
|
||
"ssoEditProvider": "Redigera leverantör",
|
||
"ldapHost": "LDAP-värd",
|
||
"ldapPort": "Hamn",
|
||
"ldapUseTls": "Använd TLS (LDAPS)",
|
||
"ldapBindDn": "Bind DN",
|
||
"ldapBindPassword": "Bind lösenord",
|
||
"ldapUserSearchBase": "Användarsökningsbas",
|
||
"ldapUserSearchFilter": "Användarsökningsfilter",
|
||
"ldapUsernameAttr": "Användarnamnsattribut",
|
||
"ldapDisplayNameAttr": "Attribut för visningsnamn",
|
||
"ldapGroupSearchBase": "Gruppsökningsbas",
|
||
"ldapAdminGroup": "Administratörsgrupp",
|
||
"ldapAllowedUsers": "Tillåtna användare",
|
||
"sectionUsers": "Användare",
|
||
"sectionSessions": "Sessioner",
|
||
"sectionRoles": "Roller",
|
||
"sectionDatabase": "Databas",
|
||
"sectionApiKeys": "API-nycklar",
|
||
"sectionAuditLog": "Granskningslogg",
|
||
"sectionSsl": "SSL / Låt oss kryptera",
|
||
"sectionTouchInput": "Pekinmatning",
|
||
"touchEnabled": "Aktivera pekinmatning",
|
||
"touchEnabledDesc": "Tillåt scrollning med ett finger i terminaler",
|
||
"touchMomentumEnabled": "Aktivera momentum",
|
||
"touchMomentumEnabledDesc": "Fortsätt skrolla kort efter en svepning",
|
||
"touchAdvanced": "Avancerad",
|
||
"touchDragThreshold": "Draggräns",
|
||
"touchMaxWheelDelta": "Maximal hjuldelta",
|
||
"touchMomentumSampleWindow": "Momentum-exempelfönster",
|
||
"touchReleaseGracePeriod": "Frigivningsfrist",
|
||
"touchMinimumVelocity": "Minsta hastighet",
|
||
"touchMaximumVelocity": "Maximal hastighet",
|
||
"touchMaximumDuration": "Maximal varaktighet",
|
||
"touchMaximumTravel": "Maximal resa",
|
||
"touchDecayTime": "Avklingningstid",
|
||
"touchPixelsPerTick": "Pixlar per tick",
|
||
"touchMaximumFrameInterval": "Maximalt bildintervall",
|
||
"touchMaximumTicksPerFrame": "Maximalt antal ticks per bildruta",
|
||
"touchResetDefaults": "Återställ till standardinställningarna",
|
||
"touchSaved": "Inställningar för pekinmatning har sparats",
|
||
"touchSaveFailed": "Det gick inte att spara inställningarna för pekinmatning",
|
||
"sectionImageStorage": "Bildlagring",
|
||
"imageStorageMode": "Lagringsläge",
|
||
"imageStorageModeDesc": "Där inklistrade och uppladdade terminalbilder skrivs. Automatiska val via anslutning, lokal och fjärransluten (SFTP) är åtgärdade.",
|
||
"imageStorageModeAuto": "Bil",
|
||
"imageStorageModeLocal": "Lokal",
|
||
"imageStorageModeRemoteSftp": "Fjärrstyrning (SFTP)",
|
||
"imageStorageLocalDir": "Lokal katalog",
|
||
"imageStorageLocalDirDesc": "Absolut sökväg på Termix-backend. Visas inte efter sparning av säkerhetsskäl.",
|
||
"imageStorageLocalDirPlaceholder": "Lämna tomt för att hålla dig uppdaterad",
|
||
"imageStorageHostPath": "Värdsökväg",
|
||
"imageStorageHostPathDesc": "Värdsidans vy av den lokala katalogen som terminalagenter tar emot.",
|
||
"imageStorageTtl": "TTL (ms)",
|
||
"imageStorageMaxCount": "Max antal bilder",
|
||
"imageStorageMaxBytes": "Max antal lagringsbyte",
|
||
"imageStorageSaved": "Inställningar för bildlagring sparade",
|
||
"imageStorageSaveFailed": "Misslyckades med att spara inställningarna för bildlagring",
|
||
"imageStorageInstanceId": "Terminalsessionsinstans-ID",
|
||
"imageStorageInstanceIdDesc": "Instans-ID för en av dina anslutna terminalflikar, används för att testa synligheten.",
|
||
"imageStorageInstanceIdRequired": "Ange först ett terminalsessionsinstans-ID",
|
||
"imageStorageTest": "Testa",
|
||
"imageStorageTesting": "Testning...",
|
||
"imageStorageTestFailed": "Misslyckades med att testa bildlagring",
|
||
"imageStorageTestConnected": "Terminalsessionen är ansluten.",
|
||
"imageStorageTestNotConnected": "Ingen ansluten terminalsession med detta instans-ID.",
|
||
"imageStorageTestSelectedMode": "En uppladdning skulle använda: {{mode}}",
|
||
"imageStorageSelectedModeUnavailable": "Inte tillgänglig",
|
||
"imageStorageTestLocalVisible": "Den lokala katalogen är synlig från den anslutna värden.",
|
||
"imageStorageTestLocalNotVisible": "Den lokala katalogen är INTE synlig från den anslutna värden.",
|
||
"sslDescription": "Utfärda och förnya automatiskt ett betrott SSL-certifikat från Let's Encrypt. Kräver en allmän domän och port 80 eller DNS-åtkomst.",
|
||
"sslDocsLink": "Visa SSL-dokument",
|
||
"sslDomain": "Domän",
|
||
"sslDomainPlaceholder": "termix.example.com",
|
||
"sslDomainDesc": "Det offentliga domännamnet för certifikatet.",
|
||
"sslEmail": "E-post",
|
||
"sslEmailPlaceholder": "admin@example.com",
|
||
"sslEmailDesc": "Kontakta e-postadressen för Let's Encrypt-aviseringar och konto.",
|
||
"sslChallengeType": "Utmaningstyp",
|
||
"sslChallengeTypeDesc": "Hur man bevisar domänägande för Let's Encrypt.",
|
||
"sslChallengeHttp": "HTTP (webroot) - kräver port 80 åtkomlig från internet",
|
||
"sslChallengeDns": "DNS (Cloudflare) – kräver en Cloudflare API-token",
|
||
"sslCloudflareToken": "Cloudflare API-token",
|
||
"sslCloudflareTokenPlaceholder": "Ange token...",
|
||
"sslCloudflareTokenDesc": "Scoped-token med Zone:DNS:Edit-behörighet för din domän.",
|
||
"sslCertStatus": "Certifikatstatus",
|
||
"sslCertStatusNone": "Inget certifikat",
|
||
"sslCertStatusValid": "Giltig",
|
||
"sslCertStatusExpiring": "Utgår snart",
|
||
"sslCertStatusExpired": "Utgången",
|
||
"sslCertExpiresAt": "Utgångsdatum {{date}}",
|
||
"sslLastIssued": "Senast utfärdad {{date}}",
|
||
"sslRequestCert": "Utfärda/förnya certifikat",
|
||
"sslRequestCertLoading": "Begär certifikat...",
|
||
"sslRequestCertSuccess": "Certifikat utfärdat och installerat",
|
||
"sslRequestCertFailed": "Certifikatbegäran misslyckades",
|
||
"sslSave": "Spara inställningar",
|
||
"sslSaved": "SSL-inställningar sparade",
|
||
"sslSaveFailed": "Kunde inte spara SSL-inställningarna",
|
||
"sslRequiresDomain": "Domän och e-postadress krävs",
|
||
"sslInfoNote": "Efter att ett certifikat utfärdats eller laddats upp kommer Termix automatiskt att aktivera HTTPS på SSL_PORT (standard 8443) utöver den befintliga HTTP-porten. Se till att porten är publicerad/mappad till den här containern så att den är nåbar.",
|
||
"sslManualOption": "Manual (ladda upp certifikat)",
|
||
"sslManualCert": "Certifikat (PEM)",
|
||
"sslManualCertPlaceholder": "-----BEGIN CERTIFIKAT-----",
|
||
"sslManualKey": "Privat nyckel (PEM)",
|
||
"sslManualKeyPlaceholder": "-----BEGIN PRIVAT NYCKEL-----",
|
||
"sslManualDesc": "Klistra in ditt befintliga certifikat och din privata nyckel, inklusive en fullständig kedja om det krävs av din CA.",
|
||
"sslManualUpload": "Ladda upp och installera certifikat",
|
||
"sslManualUploadLoading": "Laddar upp certifikat...",
|
||
"sslManualUploadSuccess": "Certifikatet har laddats upp och installerats",
|
||
"sslManualUploadFailed": "Uppladdning av certifikat misslyckades",
|
||
"sslManualRequiresFields": "Certifikat och privat nyckel krävs",
|
||
"auditLogTotal": "{{total}} totala antalet poster",
|
||
"auditLogEmpty": "Inga poster i granskningsloggen hittades",
|
||
"auditLogSuccess": "Framgång",
|
||
"auditLogFailed": "Misslyckades",
|
||
"auditLogClearFilters": "Rensa filter",
|
||
"auditLogPage": "Sida {{page}} av {{totalPages}} ({{total}} totalt)",
|
||
"auditLogIp": "IP-adress",
|
||
"auditLogResourceId": "Resurs-ID",
|
||
"auditLogFilterUser": "Användare",
|
||
"auditLogFilterAction": "Handling",
|
||
"auditLogFilterResourceType": "Resurstyp",
|
||
"auditLogFilterStatus": "Status",
|
||
"auditLogFilterFrom": "Från",
|
||
"auditLogFilterTo": "Till",
|
||
"auditLogFilterAll": "Alla",
|
||
"allowRegistration": "Tillåt användarregistrering",
|
||
"allowRegistrationDesc": "Låt nya användare registrera sig själva med användarnamn och lösenord",
|
||
"allowPasswordLogin": "Tillåt lösenordsinloggning",
|
||
"allowPasswordLoginDesc": "Användarnamn/lösenord inloggning",
|
||
"oidcAutoProvision": "OIDC automatisk provisionering",
|
||
"oidcAutoProvisionDesc": "Skapa konton automatiskt för OIDC/SSO-användare vid första inloggningen (oberoende av registreringsknappen)",
|
||
"oidcSilentLoginDefault": "Tyst OIDC-inloggning som standard",
|
||
"oidcSilentLoginDefaultDesc": "Omdirigera automatiskt till OIDC-inloggning vid varje besök, hoppar över inloggningsformuläret helt",
|
||
"allowPasswordReset": "Tillåt lösenordsåterställning",
|
||
"allowPasswordResetDesc": "Återställ kod via Docker-loggar",
|
||
"commandHistoryEnabled": "Kommandohistorik",
|
||
"commandHistoryEnabledDesc": "Tillåt inspelning av kommandohistorik. När det är inaktiverat sparas inte historiken oavsett inställningarna per värd.",
|
||
"updateCommandHistoryFailed": "Misslyckades med att uppdatera inställningen för kommandohistorik",
|
||
"analyticsEnabled": "Dela anonym användningsstatistik",
|
||
"analyticsEnabledDesc": "Skickar en anonym daglig räkning av användare, värdar och funktionsanvändning för att förbättra Termix. Inga personuppgifter eller anslutningsdetaljer inkluderas någonsin.",
|
||
"analyticsEnabledLockedDesc": "Den här inställningen är låst av miljövariabeln ENABLE_TELEMETRY och kan inte ändras här.",
|
||
"updateAnalyticsFailed": "Det gick inte att uppdatera analysinställningen",
|
||
"sessionSharingGloballyEnabled": "Tillåt sessionsdelning",
|
||
"sessionSharingGloballyEnabledDesc": "Tillåt att liveterminal-, RDP-, VNC- och Telnet-sessioner delas instansövergripande. Åsidosätter alla delningsknappar per värd när de är inaktiverade.",
|
||
"updateSessionSharingFailed": "Det gick inte att uppdatera inställningen för sessionsdelning",
|
||
"sessionTimeout": "Sessionstimeout",
|
||
"hours": "timmar",
|
||
"sessionTimeoutRange": "Min 1 timme · Max 720 timmar",
|
||
"monitoringDefaults": "Övervakning av standardvärden",
|
||
"statusCheck": "Statuskontroll",
|
||
"metrics": "Metrik",
|
||
"sec": "sek",
|
||
"logLevel": "Loggnivå",
|
||
"enableGuacamole": "Aktivera guacamole",
|
||
"enableGuacamoleDesc": "RDP/VNC-fjärrskrivbord",
|
||
"enableGuacamoleDocsLink": "Visa dokument",
|
||
"guacdUrl": "guacd-URL",
|
||
"tailscaleApiKey": "Tailscale API-nyckel",
|
||
"tailscaleApiKeyDescription": "Används för enhetsidentifiering i värdredigeraren. Stöder Tailscale- (tskey-) och Headscale- (hskey-) nycklar. Generera en nyckel på tailscale.com/admin/settings/keys eller från din Headscale-instans.",
|
||
"tailscaleApiKeyDocsLink": "Visa dokument",
|
||
"tailscaleApiBaseUrl": "API-bas-URL",
|
||
"tailscaleApiBaseUrlDescription": "Valfritt. Peka på en självhostad Headscale-instans istället för api.tailscale.com. Lämna tomt för att använda standardvärdet för Tailscale.",
|
||
"oidcDescription": "Konfigurera OpenID Connect för SSO. Fält markerade med * är obligatoriska.",
|
||
"oidcDocsLink": "Visa dokument",
|
||
"oidcClientId": "Klient-ID",
|
||
"oidcClientSecret": "Klienthemlighet",
|
||
"oidcAuthUrl": "Auktoriserings-URL",
|
||
"oidcIssuerUrl": "Utgivarens URL",
|
||
"oidcTokenUrl": "Token-URL",
|
||
"oidcUserIdentifier": "Användaridentifierarens sökväg",
|
||
"oidcDisplayName": "Sökväg för visningsnamn",
|
||
"oidcScopes": "Omfattningar",
|
||
"oidcUserinfoUrl": "Åsidosätt användarinformations-URL",
|
||
"oidcAllowedUsers": "Tillåtna användare",
|
||
"oidcAllowedUsersDesc": "Ett e-postmeddelande per rad. Lämna tomt för att tillåta alla.",
|
||
"oidcAdminGroup": "Administratörsgrupp",
|
||
"oidcAdminGroupDesc": "Användare i den här gruppen har administratörsrättigheter. Lämna tomt för att inaktivera gruppsynkronisering.",
|
||
"oidcGroupClaim": "Gruppanspråk",
|
||
"oidcGroupClaimDesc": "Valfritt. Anspråkssökvägen som innehåller användarens grupper. Standardinställningen är grupper, roller och sedan grupp. Använd detta för leverantörer med ett anpassat anspråk (t.ex. Zitadel).",
|
||
"oidcCaCert": "Anpassat CA-certifikat",
|
||
"oidcCaCertDesc": "Valfritt. PEM-kodat CA-certifikat för OIDC-leverantörer som använder en privat eller självsignerad CA. Lämna tomt för att använda systemets förtroendearkiv.",
|
||
"removeOidc": "Ta bort",
|
||
"usersCount": "{{count}} användare",
|
||
"searchUsers": "Sök användare...",
|
||
"noUsers": "Inga användare",
|
||
"noUsersMatch": "Inga användare matchar din sökning",
|
||
"pageOf": "Sida {{page}} av {{total}}",
|
||
"createUser": "Skapa",
|
||
"newRole": "Ny roll",
|
||
"roleName": "Namn",
|
||
"roleDisplayName": "Visningsnamn",
|
||
"roleDescription": "Beskrivning",
|
||
"rolesCount": "{{count}} roller",
|
||
"createRole": "Skapa",
|
||
"creating": "Skapande...",
|
||
"exportDatabase": "Exportera databas",
|
||
"exportDatabaseDesc": "Ladda ner en säkerhetskopia av alla värdar, inloggningsuppgifter och inställningar",
|
||
"export": "Exportera",
|
||
"exporting": "Exporterar...",
|
||
"importDatabase": "Importera databas",
|
||
"importDatabaseDesc": "Återställ från en .sqlite-säkerhetskopia",
|
||
"importDatabaseSelected": "Vald: {{name}}",
|
||
"selectFile": "Välj fil",
|
||
"changeFile": "Ändra",
|
||
"import": "Importera",
|
||
"importing": "Importerar...",
|
||
"apiKeysCount": "{{count}} nycklar",
|
||
"apiKeysDocsLink": "Visa dokument",
|
||
"apiKeysCliHint": "Använd en API-nyckel med Termix CLI för att hantera servrar från din terminal.",
|
||
"apiKeysCliLink": "Visa CLI-dokumentation",
|
||
"newApiKey": "Ny API-nyckel",
|
||
"apiKeyCreatedWarning": "Nyckel skapad – kopiera den nu, den visas inte igen.",
|
||
"apiKeyName": "Namn",
|
||
"apiKeyUser": "Användare",
|
||
"apiKeySelectUser": "Välj en användare...",
|
||
"apiKeyExpiresAt": "Utgår vid",
|
||
"createKey": "Skapa nyckel",
|
||
"apiKeyNoExpiry": "Ingen utgångsdatum",
|
||
"revokedBadge": "ÅTERKALLAD",
|
||
"authTypeDual": "Dubbel autentisering",
|
||
"authTypeOidc": "OIDC",
|
||
"authTypeLocal": "Lokal",
|
||
"adminStatusAdministrator": "Administratör",
|
||
"adminStatusRegularUser": "Vanlig användare",
|
||
"adminBadge": "ADMINISTRATION",
|
||
"systemBadge": "SYS",
|
||
"customBadge": "BESTÄLLNINGS",
|
||
"youBadge": "DU",
|
||
"sessionsActive": "{{count}} aktiv",
|
||
"sessionActive": "Aktiv: {{time}}",
|
||
"sessionExpires": "Utgångsdatum: {{time}}",
|
||
"revokeAll": "Alla",
|
||
"revokeAllSessionsSuccess": "Alla sessioner för användaren återkallade",
|
||
"revokeAllSessionsFailed": "Misslyckades med att återkalla sessioner",
|
||
"revokeSessionFailed": "Misslyckades med att återkalla sessionen",
|
||
"addRole": "Lägg till roll",
|
||
"noCustomRoles": "Inga anpassade roller definierade",
|
||
"removeRoleFailed": "Misslyckades med att ta bort rollen",
|
||
"assignRoleFailed": "Misslyckades med att tilldela roll",
|
||
"deleteRoleFailed": "Misslyckades med att ta bort rollen",
|
||
"userAdminAccess": "Administratör",
|
||
"userAdminAccessDesc": "Full åtkomst till alla administratörsinställningar",
|
||
"userRoles": "Roller",
|
||
"revokeAllUserSessions": "Återkalla alla sessioner",
|
||
"revokeAllUserSessionsDesc": "Tvinga fram ominloggning på alla enheter",
|
||
"revoke": "Återkalla",
|
||
"deleteUserWarning": "Att ta bort den här användaren är permanent.",
|
||
"deleteUser": "Ta bort {{username}}",
|
||
"deleting": "Tar bort...",
|
||
"deleteUserFailed": "Misslyckades med att ta bort användaren",
|
||
"deleteUserSuccess": "Användaren \"{{username}}\" har raderats",
|
||
"deleteRoleSuccess": "Rollen \"{{name}}\" raderad",
|
||
"revokeKeySuccess": "Nyckeln \"{{name}}\" återkallad",
|
||
"revokeKeyFailed": "Misslyckades med att återkalla nyckeln",
|
||
"copiedToClipboard": "Kopierad till urklipp",
|
||
"done": "Gjort",
|
||
"createUserTitle": "Skapa användare",
|
||
"createUserDesc": "Skapa ett nytt lokalt konto.",
|
||
"createUserUsername": "Användarnamn",
|
||
"createUserPassword": "Lösenord",
|
||
"createUserPasswordHint": "Minst 6 tecken.",
|
||
"createUserEnterUsername": "Ange användarnamn",
|
||
"createUserEnterPassword": "Ange lösenord",
|
||
"createUserSubmit": "Skapa användare",
|
||
"editUserTitle": "Hantera användare: {{username}}",
|
||
"editUserDesc": "Redigera roller, administratörsstatus, sessioner och kontoinställningar.",
|
||
"editUserUsername": "Användarnamn",
|
||
"editUserAuthType": "Aut.typ",
|
||
"editUserAdminStatus": "Administratörsstatus",
|
||
"editUserUserId": "Användar-ID",
|
||
"linkAccountTitle": "Länka konton",
|
||
"linkAccountDesc": "Sammanfoga OIDC-kontot {{username}} med ett befintligt lokalt konto.",
|
||
"linkAccountDescLocal": "Länka ett lokalt konto {{username}} med ett befintligt OIDC-konto.",
|
||
"linkAccountWarningTitle": "Detta kommer att:",
|
||
"linkAccountEffect1": "Ta bort OIDC-kontot",
|
||
"linkAccountEffect2": "Lägg till OIDC-inloggning till målkontot",
|
||
"linkAccountEffect3": "Tillåt både OIDC- och lösenordsinloggning",
|
||
"linkAccountTargetUsername": "Användarnamn för lokalt konto",
|
||
"linkAccountTargetPlaceholder": "Ange användarnamnet för det lokala kontot som ska länkas till",
|
||
"linkAccountOidcUsername": "OIDC-kontots användarnamn",
|
||
"linkAccountOidcPlaceholder": "Ange användarnamnet för OIDC-kontot som ska sammanfogas",
|
||
"linkAccountOidcNotFound": "Inget OIDC-konto hittades med det användarnamnet",
|
||
"linkAccounts": "Länka konton",
|
||
"linkAccountSuccess": "Konton har länkats",
|
||
"linkAccountFailed": "Misslyckades med att länka konton",
|
||
"linkAccountInProgress": "Länkar...",
|
||
"unlinkAccountTitle": "Ta bort länken till OIDC",
|
||
"unlinkAccountDesc": "Ta bort OIDC-autentisering från {{username}}. De kommer bara att kunna logga in med sitt lösenord.",
|
||
"unlinkAccountWarning": "Detta tar bort OIDC-inloggning från det här kontot. Användaren måste ha ett lösenord angett för att fortsätta logga in.",
|
||
"unlinkAccount": "Ta bort länken till OIDC",
|
||
"unlinkAccountInProgress": "Avlänkar...",
|
||
"unlinkAccountSuccess": "OIDC har kopplats bort",
|
||
"unlinkAccountFailed": "Misslyckades med att koppla bort OIDC",
|
||
"saving": "Sparande...",
|
||
"updateRegistrationFailed": "Misslyckades med att uppdatera registreringsinställningen",
|
||
"updatePasswordLoginFailed": "Misslyckades med att uppdatera lösenordsinställningen för inloggning",
|
||
"cannotDisablePasswordLoginWithTotp": "Det går inte att inaktivera lösenordsinloggning medan 2FA är aktiverat för en eller flera användare. Inaktivera 2FA först.",
|
||
"updateOidcAutoProvisionFailed": "Misslyckades med att uppdatera inställningen för automatisk OIDC-provisionering",
|
||
"updateOidcSilentLoginDefaultFailed": "Misslyckades med att uppdatera inställningen för tyst OIDC-inloggning",
|
||
"updatePasswordResetFailed": "Misslyckades med att uppdatera inställningen för lösenordsåterställning",
|
||
"sessionTimeoutRange2": "Sessionens tidsgräns måste vara mellan 1 och 720 timmar",
|
||
"sessionTimeoutSaved": "Sessionstimeout sparad",
|
||
"sessionTimeoutSaveFailed": "Misslyckades med att spara sessionens tidsgräns",
|
||
"monitoringIntervalInvalid": "Ogiltiga intervallvärden",
|
||
"monitoringSaved": "Övervakningsinställningar sparade",
|
||
"monitoringSaveFailed": "Det gick inte att spara övervakningsinställningarna",
|
||
"metricsHistoryRetention": "Bevarande av mätvärdenas historik",
|
||
"metricsHistoryRetentionRange": "1 till 90 dagar",
|
||
"days": "dagar",
|
||
"guacamoleSaved": "Guacamole-inställningarna sparade",
|
||
"guacamoleSaveFailed": "Kunde inte spara guacamole-inställningarna",
|
||
"guacamoleUpdateFailed": "Misslyckades med att uppdatera guacamole-inställningen",
|
||
"tailscaleSettingsSaved": "Inställningar för svansskala sparade",
|
||
"tailscaleSettingsSaveFailed": "Kunde inte spara Tailscale-inställningarna",
|
||
"logLevelUpdateFailed": "Misslyckades med att uppdatera loggnivån",
|
||
"oidcSaved": "OIDC-konfigurationen sparad",
|
||
"oidcSaveFailed": "Misslyckades med att spara OIDC-konfigurationen",
|
||
"oidcRemoved": "OIDC-konfigurationen har tagits bort",
|
||
"oidcRemoveFailed": "Misslyckades med att ta bort OIDC-konfigurationen",
|
||
"createUserRequired": "Användarnamn och lösenord krävs",
|
||
"createUserPasswordTooShort": "Lösenordet måste vara minst 6 tecken långt",
|
||
"createUserSuccess": "Användaren \"{{username}}\" skapades",
|
||
"createUserFailed": "Misslyckades med att skapa användaren",
|
||
"updateAdminStatusFailed": "Misslyckades med att uppdatera administratörsstatusen",
|
||
"allSessionsRevoked": "Alla sessioner återkallade",
|
||
"revokeSessionsFailed": "Misslyckades med att återkalla sessioner",
|
||
"manageUserData": "Hantera användardata",
|
||
"backToUsers": "Tillbaka till användarna",
|
||
"manageTabAccount": "Konto",
|
||
"manageTabHosts": "Värdar",
|
||
"manageTabCredentials": "Referenser",
|
||
"manageTabSnippets": "Snuttar",
|
||
"manageTabSessions": "Sessioner",
|
||
"manageTabDanger": "Fara",
|
||
"manageEditorBack": "Tillbaka till {{username}}s data",
|
||
"dataLockedBadge": "LÅST",
|
||
"dataLockedNotice": "{{username}}s data förblir låsta tills de loggar in nästa gång. Deras värdar, inloggningsuppgifter och utdrag kan inte visas eller redigeras förrän då.",
|
||
"resetPasswordTitle": "Återställ lösenord",
|
||
"resetPasswordOidcOnly": "Den här användaren loggar in via en extern leverantör och har inget lösenord.",
|
||
"resetPasswordPlaceholder": "Nytt lösenord",
|
||
"resetPasswordBtn": "Återställa",
|
||
"resetPasswordWorking": "Återställer...",
|
||
"resetPasswordSuccess": "Återställning av lösenord",
|
||
"resetPasswordSuccessWiped": "Lösenordsåterställning. Användarens krypterade data har raderats.",
|
||
"resetPasswordFailed": "Misslyckades med att återställa lösenordet",
|
||
"resetPasswordConfirmWipe": "{{username}} har inte loggat in sedan krypteringsuppgraderingen, så deras data kan inte återställas. Om du återställer nu raderas deras värdar, inloggningsuppgifter och kodavsnitt. Vill du fortsätta?",
|
||
"totpSectionTitle": "Tvåfaktorsautentisering",
|
||
"totpStatusEnabled": "TOTP är aktiverat för den här användaren",
|
||
"totpStatusDisabled": "TOTP är inte aktiverat för den här användaren",
|
||
"disableTotp": "Inaktivera",
|
||
"disableTotpConfirm": "Inaktivera tvåfaktorsautentisering för {{username}}? De kommer bara att kunna logga in med sitt lösenord.",
|
||
"totpDisabledSuccess": "TOTP inaktiverad",
|
||
"totpDisableFailed": "Misslyckades med att inaktivera TOTP",
|
||
"manageApiKeys": "API-nycklar",
|
||
"apiKeyNamePlaceholder": "Nyckelnamn",
|
||
"apiKeyCopyNotice": "Kopiera den här nyckeln nu, den kommer inte att visas igen.",
|
||
"noApiKeysForUser": "Inga API-nycklar",
|
||
"apiKeyDeleteFailed": "Misslyckades med att ta bort API-nyckeln",
|
||
"exportUserData": "Dataexport",
|
||
"exportUserDataDesc": "Ladda ner den här användarens värdar, inloggningsuppgifter och filhanteringsdata som JSON. Hemligheterna dekrypteras.",
|
||
"exportUserDataSuccess": "Användardata exporterad",
|
||
"exportUserDataFailed": "Misslyckades med att exportera användardata",
|
||
"hostsCount": "{{count}} värdar",
|
||
"addHostForUser": "Lägg till värd",
|
||
"noHostsForUser": "Den här användaren har inga värdar",
|
||
"connectToHost": "Ansluta",
|
||
"deleteHostConfirm": "Radera värden \"{{name}}\" som tillhör {{username}}?",
|
||
"hostDeletedSuccess": "Värd borttagen",
|
||
"hostDeleteFailed": "Misslyckades med att ta bort värden",
|
||
"credentialsCount": "{{count}} inloggningsuppgifter",
|
||
"addCredentialForUser": "Lägg till autentiseringsuppgifter",
|
||
"noCredentialsForUser": "Den här användaren har inga inloggningsuppgifter",
|
||
"deleteCredentialConfirm": "Ta bort inloggningsuppgifterna \"{{name}}\" som tillhör {{username}}?",
|
||
"credentialDeletedSuccess": "Inloggningsuppgifter raderade",
|
||
"credentialDeleteFailed": "Misslyckades med att ta bort inloggningsuppgifter",
|
||
"snippetsCount": "{{count}} utdrag",
|
||
"addSnippetForUser": "Lägg till utdrag",
|
||
"noSnippetsForUser": "Den här användaren har inga utdrag",
|
||
"snippetRequiredFields": "Namn och innehåll på utdrag krävs",
|
||
"snippetNamePlaceholder": "Namn på utdrag",
|
||
"snippetContentPlaceholder": "Kommandoinnehåll",
|
||
"snippetFolderPlaceholder": "Mapp (valfritt)",
|
||
"snippetSaved": "Utdrag sparat",
|
||
"snippetSaveFailed": "Kunde inte spara utdraget",
|
||
"deleteSnippetConfirm": "Ta bort utdraget \"{{name}}\" som tillhör {{username}}?",
|
||
"snippetDeletedSuccess": "Utdraget raderat",
|
||
"snippetDeleteFailed": "Misslyckades med att ta bort utdraget",
|
||
"noSessionsForUser": "Inga aktiva sessioner",
|
||
"deleteUserDangerDesc": "Ta bort {{username}} och all dess data (värdar, inloggningsuppgifter, kodavsnitt, historik) permanent. Detta kan inte ångras.",
|
||
"deleteUserConfirm": "Vill du permanent radera {{username}} och all deras data?",
|
||
"deleteUserAdminBlocked": "Ta bort administratörsstatus innan du tar bort den här användaren.",
|
||
"createRoleRequired": "Namn och visningsnamn krävs",
|
||
"createRoleSuccess": "Rollen \"{{name}}\" skapades",
|
||
"createRoleFailed": "Misslyckades med att skapa rollen",
|
||
"apiKeyNameRequired": "Nyckelnamn krävs",
|
||
"apiKeyUserRequired": "Användar-ID krävs",
|
||
"apiKeyCreatedSuccess": "API-nyckeln \"{{name}}\" skapad",
|
||
"apiKeyCreateFailed": "Misslyckades med att skapa API-nyckel",
|
||
"exportSuccess": "Databasen exporterades",
|
||
"exportFailed": "Databasexport misslyckades",
|
||
"importSelectFile": "Välj en fil först",
|
||
"importCompleted": "Importen är klar: {{total}} objekt har importerats, {{skipped}} hoppades över",
|
||
"importFailed": "Importen misslyckades: {{error}}",
|
||
"importError": "Databasimporten misslyckades",
|
||
"sectionHostDefaults": "Värdstandardinställningar",
|
||
"hostDefaultsDesc": "Inställningar tillämpas automatiskt när en ny värd skapas. Enskilda värdar kan fortfarande åsidosätta dessa.",
|
||
"hostDefaultsSocks5": "SOCKS5-proxy",
|
||
"hostDefaultsUseSocks5": "Aktivera SOCKS5-proxy",
|
||
"hostDefaultsUseSocks5Desc": "Förfyll SOCKS5-proxy på alla nya värdar",
|
||
"hostDefaultsSocks5Host": "Proxyvärd/port",
|
||
"hostDefaultsSocks5Username": "Proxy-användarnamn",
|
||
"hostDefaultsSocks5Password": "Proxylösenord",
|
||
"hostDefaultsMetrics": "Värdstatistik",
|
||
"hostDefaultsMetricsEnabled": "Aktivera mätvärden",
|
||
"hostDefaultsMetricsEnabledDesc": "Samla in CPU-, minnes- och annan statistik på nya värdar som standard",
|
||
"hostDefaultsStatusCheckEnabled": "Aktivera statuskontroll",
|
||
"hostDefaultsStatusCheckEnabledDesc": "Avläs online/offline-status på nya värdar som standard",
|
||
"hostDefaultsTerminal": "Terminal",
|
||
"hostDefaultsSessionLogging": "Sessionsloggning",
|
||
"hostDefaultsSessionLoggingDesc": "Spela in terminalsessioner på nya värdar som standard",
|
||
"hostDefaultsCommandHistory": "Kommandohistorik",
|
||
"hostDefaultsCommandHistoryDesc": "Spåra kommandohistorik på nya värdar som standard",
|
||
"hostDefaultsSaved": "Värdstandardvärden sparade",
|
||
"hostDefaultsSaveFailed": "Misslyckades med att spara värdens standardinställningar",
|
||
"rolePermissions": {
|
||
"count": "{{count}} behörigheter",
|
||
"editAction": "Redigera behörigheter",
|
||
"loadError": "Det gick inte att läsa in behörighetskatalogen",
|
||
"saved": "Rollbehörigheter sparade",
|
||
"saveError": "Kunde inte spara rollbehörigheter",
|
||
"save": "Spara",
|
||
"saving": "Sparande..."
|
||
},
|
||
"aiGloballyEnabled": "AI-assistent",
|
||
"aiGloballyEnabledDesc": "Låt användare aktivera AI-assistenten. Medan detta är avstängt är assistenten dold och blockerad för alla.",
|
||
"aiPrivateEndpoints": "Tillåtna privata AI-värdar",
|
||
"aiPrivateEndpointsDesc": "Värdar på ditt privata nätverk som användare kan hänvisa en leverantör till, till exempel en egenhostad Ollama. Separera dem med kommatecken.",
|
||
"updateAiEnabledFailed": "Kunde inte uppdatera AI-inställningen",
|
||
"updateAiEndpointsFailed": "Kunde inte uppdatera de tillåtna värdarna"
|
||
},
|
||
"newUi": {
|
||
"sidebar": {
|
||
"quickConnect": {
|
||
"hostLabel": "Värd",
|
||
"hostPlaceholder": "192.168.1.1 eller exempel.com",
|
||
"portLabel": "Hamn",
|
||
"portPlaceholder": "22",
|
||
"usernameLabel": "Användarnamn",
|
||
"usernamePlaceholder": "användarnamn",
|
||
"authLabel": "Auktorisering",
|
||
"passwordLabel": "Lösenord",
|
||
"passwordPlaceholder": "lösenord",
|
||
"privateKeyLabel": "Privat nyckel",
|
||
"privateKeyPlaceholder": "Klistra in privat nyckel...",
|
||
"credentialLabel": "Referenser",
|
||
"credentialPlaceholder": "Välj en sparad autentiseringsuppgift",
|
||
"connectToTerminal": "Anslut till terminalen",
|
||
"connectToFiles": "Anslut till filer"
|
||
},
|
||
"history": {
|
||
"noTerminalSelected": "Ingen terminal vald",
|
||
"noTerminalSelectedHint": "Öppna en SSH-terminalflik för att visa dess kommandohistorik",
|
||
"searchPlaceholder": "Sökhistorik...",
|
||
"clearAll": "Rensa alla",
|
||
"noHistoryEntries": "Inga historikposter",
|
||
"trackingDisabled": "Historikspårning är inaktiverad",
|
||
"trackingDisabledHint": "Aktivera det i värdens terminalinställningar."
|
||
},
|
||
"sshTools": {
|
||
"keyRecordingTitle": "Nyckelinspelning",
|
||
"recordToTerminals": "Spela in till terminaler",
|
||
"selectAll": "Alla",
|
||
"selectNone": "Ingen",
|
||
"noTerminalTabsOpen": "Inga terminalflikar öppna",
|
||
"selectTerminalsAbove": "Välj terminaler ovan",
|
||
"broadcastInputPlaceholder": "Skriv här för att sända tangenttryckningar...",
|
||
"fillPassword": "Fyll i lösenordet",
|
||
"fillPasswordSuccess": "Ifyllt lösenord i {{count}} terminal(er)",
|
||
"fillPasswordMissing": "Inget sparat lösenord för {{count}} vald(a) terminal(er)",
|
||
"stopRecording": "Stoppa inspelningen",
|
||
"startRecording": "Starta inspelning",
|
||
"settingsTitle": "Inställningar",
|
||
"enableRightClickCopyPaste": "Aktivera högerklickskopiera/klistra in"
|
||
},
|
||
"splitScreen": {
|
||
"layoutTitle": "Layout",
|
||
"selectLayoutAbove": "Välj en layout ovan",
|
||
"selectLayoutHint": "Välj hur många rutor som ska visas",
|
||
"panesTitle": "Rutor",
|
||
"openTabsTitle": "Öppna flikar",
|
||
"dragTabsHint": "Dra flikar till rutor ovan eller använd Snabbtilldelning",
|
||
"dropHere": "Släpp här",
|
||
"emptyPane": "Tömma",
|
||
"dashboard": "Instrumentpanel",
|
||
"clearSplitScreen": "Rensa delad skärm",
|
||
"quickAssign": "Snabbtilldelning",
|
||
"alreadyAssigned": "Ruta {{index}}",
|
||
"splitTab": "Dela fliken",
|
||
"addToSplit": "Lägg till i delning",
|
||
"removeFromSplit": "Ta bort från Split",
|
||
"assignToPane": "Tilldela till ruta",
|
||
"hotkeysTitle": "Kortkommandon",
|
||
"hotkeysSplitRight": "Växla 2-vägsdelning",
|
||
"hotkeysSplitBelow": "Växla 3-vägsdelning",
|
||
"hotkeysNavigatePane": "Navigera i rutor",
|
||
"hotkeysNextTab": "Nästa flik",
|
||
"hotkeysPrevTab": "Föregående flik",
|
||
"hotkeysJumpTab": "Hoppa till fliken"
|
||
},
|
||
"snippets": {
|
||
"title": "Snuttar",
|
||
"createSnippetTitle": "Skapa utdrag",
|
||
"createSnippetDescription": "Skapa ett nytt kommandokodavsnitt för snabb körning",
|
||
"nameLabel": "Namn",
|
||
"namePlaceholder": "t.ex. starta om Nginx",
|
||
"descriptionLabel": "Beskrivning",
|
||
"descriptionPlaceholder": "Valfri beskrivning",
|
||
"optional": "Frivillig",
|
||
"folderLabel": "Mapp",
|
||
"noFolder": "Ingen mapp (Okategoriserad)",
|
||
"commandLabel": "Kommando",
|
||
"commandPlaceholder": "t.ex. sudo systemctl starta om nginx",
|
||
"typeLabel": "Typ",
|
||
"typeCommand": "Kommando",
|
||
"typeNote": "Notera",
|
||
"noteLabel": "Notera",
|
||
"notePlaceholder": "t.ex. en återanvändbar prompt eller påminnelsetext",
|
||
"cancel": "Avboka",
|
||
"createSnippetButton": "Skapa utdrag",
|
||
"createFolderTitle": "Skapa mapp",
|
||
"createFolderDescription": "Organisera dina utdrag i mappar",
|
||
"folderNameLabel": "Mappnamn",
|
||
"folderNamePlaceholder": "t.ex. systemkommandon, Docker-skript",
|
||
"folderColorLabel": "Mappfärg",
|
||
"folderIconLabel": "Mappikon",
|
||
"previewLabel": "Förhandsvisning",
|
||
"folderNameFallback": "Mappnamn",
|
||
"createFolderButton": "Skapa mapp",
|
||
"targetTerminals": "Target-terminaler",
|
||
"selectAll": "Alla",
|
||
"selectNone": "Ingen",
|
||
"noTerminalTabsOpen": "Inga terminalflikar öppna",
|
||
"searchPlaceholder": "Sök utdrag...",
|
||
"newSnippet": "Nytt utdrag",
|
||
"newFolder": "Ny mapp",
|
||
"run": "Sikt",
|
||
"noSnippetsInFolder": "Inga utdrag i den här mappen",
|
||
"uncategorized": "Okategoriserad",
|
||
"editSnippetTitle": "Redigera utdrag",
|
||
"editSnippetDescription": "Uppdatera detta kommandokodavsnitt",
|
||
"saveSnippetButton": "Spara ändringar",
|
||
"createSuccess": "Kodavsnittet har skapats",
|
||
"createFailed": "Misslyckades med att skapa utdrag",
|
||
"updateSuccess": "Kodavsnittet har uppdaterats",
|
||
"updateFailed": "Misslyckades med att uppdatera utdraget",
|
||
"deleteFailed": "Misslyckades med att ta bort utdraget",
|
||
"folderCreateSuccess": "Mappen skapades",
|
||
"folderCreateFailed": "Misslyckades med att skapa mappen",
|
||
"editFolderTitle": "Redigera mapp",
|
||
"editFolderDescription": "Byt namn på eller ändra utseendet på den här mappen",
|
||
"saveFolderButton": "Spara ändringar",
|
||
"editFolder": "Redigera mapp",
|
||
"deleteFolder": "Ta bort mapp",
|
||
"folderDeleteSuccess": "Mappen \"{{name}}\" raderad",
|
||
"folderDeleteFailed": "Misslyckades med att ta bort mappen",
|
||
"folderEditSuccess": "Mappen har uppdaterats",
|
||
"folderEditFailed": "Misslyckades med att uppdatera mappen",
|
||
"confirmRunMessage": "Kör \"{{name}}\"?",
|
||
"confirmRunButton": "Sikt",
|
||
"runSuccess": "Körde \"{{name}}\" i {{count}} terminal(er)",
|
||
"pasteSuccess": "Klistrade in \"{{name}}\" i {{count}} terminal(er)",
|
||
"pasteToTerminal": "Klistra",
|
||
"copySuccess": "Kopierade \"{{name}}\" till urklipp",
|
||
"shareTitle": "Dela utdrag",
|
||
"shareUser": "Användare",
|
||
"shareRole": "Roll",
|
||
"selectUser": "Välj en användare...",
|
||
"selectRole": "Välj en roll...",
|
||
"shareSuccess": "Kodavsnittet delades",
|
||
"shareFailed": "Misslyckades med att dela utdraget",
|
||
"revokeSuccess": "Åtkomst återkallad",
|
||
"revokeFailed": "Misslyckades med att återkalla åtkomst",
|
||
"currentAccess": "Nuvarande åtkomst",
|
||
"shareLoadError": "Misslyckades med att ladda delningsdata",
|
||
"loading": "Belastning...",
|
||
"close": "Nära",
|
||
"reorderFailed": "Det gick inte att spara kodavsnittets ordning",
|
||
"importExport": "Importera / Exportera",
|
||
"exportBtn": "Exportera JSON",
|
||
"importBtn": "Importera JSON",
|
||
"exportSuccess": "Snippet har exporterats",
|
||
"exportFailed": "Misslyckades med att exportera utdrag",
|
||
"importTitle": "Importera utdrag",
|
||
"importDescription": "Importera utdrag och mappar från en JSON-fil som exporterats av Termix",
|
||
"importDropOrClick": "Släpp en JSON-fil här eller klicka för att bläddra",
|
||
"importSelectedFile": "Vald: {{name}}",
|
||
"importOverwrite": "Skriv över befintliga utdrag med samma namn och mapp",
|
||
"importStartBtn": "Importera",
|
||
"importSuccess": "Importen är klar: {{snippets}} kodavsnitt tillagda, {{updated}} uppdaterade, {{skipped}} hoppade över, {{folders}} mapp(ar) tillagda",
|
||
"importFailed": "Misslyckades med att importera utdrag",
|
||
"importInvalidFile": "Ogiltig fil: förväntade ett JSON-objekt med kodavsnitt eller mappmatriser",
|
||
"targetHostsLabel": "Målvärdar",
|
||
"targetHostsHint": "Tilldela värdar att köra detta kodavsnitt direkt utan en öppen terminal.",
|
||
"noHostsAvailable": "Inga värdar konfigurerade",
|
||
"clearTargetHosts": "Rensa alla",
|
||
"hasTargetHosts": "Har målvärdar",
|
||
"runOnTargets": "Kör på mål",
|
||
"directRunSuccess": "Körde \"{{name}}\" på {{count}} värd(ar)",
|
||
"directRunPartialFail": "\"{{name}}\" misslyckades på en eller flera värdar",
|
||
"executionResultTitle": "Exekveringsresultat: {{name}}",
|
||
"executionResultDescription": "Utdata från att köra kodavsnittet på varje målvärd.",
|
||
"executionSuccess": "Framgång",
|
||
"executionFailed": "Misslyckades",
|
||
"expandAll": "Expandera alla mappar",
|
||
"collapseAll": "Komprimera alla mappar",
|
||
"settings": "Inställningar för utdrag",
|
||
"variablesHint": "Variabler: $HOST, $USER, $PORT, $NAME, ${INPUT_1:Etikett}",
|
||
"variablesDialogTitle": "Kör \"{{name}}\"",
|
||
"variablesDialogDescription": "Fyll i de värden som detta kodavsnitt behöver innan du kör det.",
|
||
"variablesPreviewLabel": "Förhandsvisning",
|
||
"variablesConfirmButton": "Sikt"
|
||
},
|
||
"automations": {
|
||
"title": "Automatiseringar",
|
||
"tabAutomations": "Automatiseringar",
|
||
"tabRuns": "Löpningar",
|
||
"tabChannels": "Kanaler",
|
||
"createAutomation": "Ny automatisering",
|
||
"backToAutomations": "Tillbaka till Automatiseringar",
|
||
"createTitle": "Ny automatisering",
|
||
"editTitle": "Redigera automatisering",
|
||
"empty": "Inga automatiseringar ännu. Skapa en för att reagera på ett mätvärde, ett schema eller en händelse.",
|
||
"emptyRuns": "Inga löpningar än.",
|
||
"emptyChannels": "Inga kanaler ännu. Lägg till en för att skicka aviseringar någonstans.",
|
||
"noChannelsHint": "Inga kanaler är konfigurerade än. Lägg till en på fliken Kanaler.",
|
||
"addChannel": "Lägg till kanal",
|
||
"testChannel": "Testa",
|
||
"channelTestSent": "Testmeddelande skickat",
|
||
"channelTestFailed": "Testmeddelandet misslyckades",
|
||
"channelDeleted": "Kanalen raderad",
|
||
"deleteChannelConfirm": "Vill du ta bort den här kanalen? Automatiseringar som använder den kommer att sluta skicka aviseringar.",
|
||
"nameLabel": "Namn",
|
||
"namePlaceholder": "t.ex. Rensa upp /data när den fylls",
|
||
"nameRequired": "Namn krävs",
|
||
"descriptionLabel": "Beskrivning",
|
||
"descriptionPlaceholder": "Valfri beskrivning",
|
||
"enabledLabel": "Aktiverad",
|
||
"concurrencyLabel": "Om den redan är igång",
|
||
"concurrencyHint": "Vad man ska göra när detta utlöses igen innan den sista körningen är klar.",
|
||
"concurrency": {
|
||
"skip": "Hoppa över den nya körningen",
|
||
"queue": "Vänta och spring efter",
|
||
"allow": "Kör båda samtidigt"
|
||
},
|
||
"save": "Spara",
|
||
"created": "Automatisering skapad",
|
||
"updated": "Automatisering sparad",
|
||
"deleted": "Automatisering borttagen",
|
||
"deleteConfirm": "Vill du ta bort den här automatiseringen? Dess körhistorik raderas också.",
|
||
"runNow": "Kör nu",
|
||
"testRun": "Testkörning",
|
||
"testRunHint": "Kör varje steg men rör ingenting utanför Termix.",
|
||
"runStarted": "Löpningen har startat",
|
||
"runFinished": "Körning avslutad: {{status}}",
|
||
"trigger": "Utlösare",
|
||
"steps": "Steg",
|
||
"addStep": "Lägg till steg",
|
||
"removeStep": "Ta bort steg",
|
||
"moveUp": "Flytta upp",
|
||
"moveDown": "Flytta nedåt",
|
||
"noSteps": "Inga steg ännu. Lägg till ett för att ange vad som ska hända.",
|
||
"webhookTokenTitle": "Webhook-URL",
|
||
"webhookTokenDescription": "Detta visas en gång. Spara det nu, det kan inte hämtas senare.",
|
||
"copy": "Kopiera",
|
||
"copied": "Kopierad",
|
||
"viewJson": "JSON",
|
||
"viewBuilder": "Byggmästare",
|
||
"viewGraph": "Graf",
|
||
"lastRun": "Sista körningen",
|
||
"never": "Aldrig",
|
||
"duration": "{{seconds}}s",
|
||
"stepOutput": "Produktion",
|
||
"stepError": "Fel",
|
||
"dryRunBadge": "Testkörning",
|
||
"hostSelector": {
|
||
"trigger": "Utlösande värd",
|
||
"host": "Specifik värd",
|
||
"fleet": "Flotta",
|
||
"all": "Alla värdar"
|
||
},
|
||
"triggerKinds": {
|
||
"metric_threshold": "Metrisk tröskelvärde",
|
||
"host_status": "Värden går upp eller ner",
|
||
"health_check": "Ändringar i hälsokontrollen",
|
||
"schedule": "Enligt ett schema",
|
||
"docker_event": "Containerhändelse",
|
||
"internal_event": "Termix-evenemang",
|
||
"webhook": "Inkommande webhook"
|
||
},
|
||
"stepTypes": {
|
||
"notify": "Skicka en avisering",
|
||
"http": "Anropa en URL",
|
||
"run_snippet": "Kör ett utdrag",
|
||
"run_command": "Kör ett kommando",
|
||
"docker": "Styr en container",
|
||
"tunnel": "Kontrollera en tunnel",
|
||
"wol": "Väck en värd",
|
||
"wait": "Vänta",
|
||
"set_var": "Ställ in en variabel",
|
||
"if": "Om / annars",
|
||
"run_automation": "Kör en annan automatisering",
|
||
"stop": "Stopp"
|
||
},
|
||
"statuses": {
|
||
"running": "Spring",
|
||
"success": "Framgång",
|
||
"failed": "Misslyckades",
|
||
"timeout": "Timeout",
|
||
"skipped": "Hoppade över",
|
||
"cancelled": "Avbruten"
|
||
},
|
||
"fields": {
|
||
"host": "Värd",
|
||
"metric": "Metrisk",
|
||
"mount": "Monteringspunkt",
|
||
"operator": "Är",
|
||
"value": "Värde",
|
||
"forSeconds": "Uthållen i (sekunder)",
|
||
"cooldown": "Nedkylningstid (minuter)",
|
||
"cron": "Cron-uttryck",
|
||
"intervalSeconds": "Varje (sekund)",
|
||
"timezone": "Tidszon",
|
||
"timezoneServer": "Servertid",
|
||
"timezoneHint": "Cron-tider läses i denna zon. Gäller inte för intervallscheman.",
|
||
"container": "Behållare",
|
||
"command": "Kommando",
|
||
"url": "URL",
|
||
"method": "Metod",
|
||
"body": "Kropp",
|
||
"channels": "Kanaler",
|
||
"title": "Titel",
|
||
"message": "Meddelande",
|
||
"snippet": "Utdrag",
|
||
"seconds": "Sekunder",
|
||
"conditionLeftPlaceholder": "Värde att kontrollera",
|
||
"conditionRightPlaceholder": "Jämför mot",
|
||
"variableName": "Variabelnamn",
|
||
"variableValue": "Värde",
|
||
"elevated": "Kör med sudo",
|
||
"onError": "Om detta misslyckas",
|
||
"allowPrivateNetwork": "Tillåt lokala nätverksadresser",
|
||
"allowPrivateNetworkHint": "Behövs för en självhostad tjänst på ditt lokala nätverk. Avstängt som standard för att förhindra förfrågningar till interna adresser."
|
||
},
|
||
"onError": {
|
||
"stop": "Stoppa löpningen",
|
||
"continue": "Fortsätta"
|
||
}
|
||
},
|
||
"fleets": {
|
||
"title": "Flottor",
|
||
"createFleet": "Skapa flotta",
|
||
"createFleetTitle": "Skapa flotta",
|
||
"editFleetTitle": "Redigera flotta",
|
||
"createFleetDescription": "En flotta är en namngiven grupp av värdar som du kan köra åtgärder mot som en enhet.",
|
||
"nameLabel": "Namn",
|
||
"namePlaceholder": "t.ex. webbservrar",
|
||
"nameRequired": "Flottans namn krävs",
|
||
"descriptionLabel": "Beskrivning",
|
||
"descriptionPlaceholder": "Valfri beskrivning",
|
||
"colorLabel": "Färg",
|
||
"tagRulesLabel": "Taggregler",
|
||
"tagRulesPlaceholder": "prod-web, kant",
|
||
"tagRulesHint": "Värdar med någon av dessa taggar inkluderas automatiskt, utöver värdar som läggs till manuellt.",
|
||
"fleetCreated": "Flotta skapad",
|
||
"fleetUpdated": "Flottan uppdaterad",
|
||
"fleetDeleted": "Flottan raderad",
|
||
"saveFailed": "Misslyckades med att spara flottan",
|
||
"deleteFailed": "Misslyckades med att ta bort flottan",
|
||
"loadFailed": "Misslyckades med att ladda flottor",
|
||
"deleteFleetTitle": "Ta bort flotta",
|
||
"deleteFleetDescription": "Är du säker på att du vill ta bort \"{{name}}\"? Detta tar inte bort själva medlemsvärdarna.",
|
||
"searchFleets": "Sök flottor...",
|
||
"noFleets": "Inga flottor ännu. Skapa en för att komma igång.",
|
||
"memberCount": "{{count}} värd",
|
||
"memberCount_other": "{{count}} värdar",
|
||
"manageMembers": "Hantera medlemmar",
|
||
"manageMembersTitle": "Hantera flottmedlemmar",
|
||
"manageMembersDescription": "Växla mellan att visa eller avaktivera värdar i flottans statiska medlemskap. Värdar som matchas av taggregler inkluderas alltid.",
|
||
"searchHosts": "Sök värdar...",
|
||
"noHostsFound": "Inga värdar hittades",
|
||
"noMembers": "Den här flottan har inga medlemmar ännu. Lägg till värdar eller ange en taggregel.",
|
||
"membersLoadFailed": "Misslyckades med att ladda flottmedlemmar",
|
||
"memberUpdateFailed": "Misslyckades med att uppdatera flottmedlemskapet",
|
||
"tabRun": "Kör kommando",
|
||
"tabTransfer": "Överför filer",
|
||
"tabInventory": "Lager",
|
||
"openInventoryTab": "Öppna i hela fliken",
|
||
"tabPackages": "Paket",
|
||
"runOnFleet": "Kör på flottan",
|
||
"commandPlaceholder": "drifttid && df -h",
|
||
"commandRequired": "Ett kommando krävs",
|
||
"commandInputsLabel": "Kommandoingångar",
|
||
"commandSucceeded": "Kommandot lyckades på alla värdar",
|
||
"commandPartialFailure": "{{failed}} av {{total}} värdar misslyckades",
|
||
"commandFailed": "Misslyckades med att köra kommandot",
|
||
"resultSuccess": "Framgång",
|
||
"resultFailed": "Misslyckades",
|
||
"push": "Tryck",
|
||
"pull": "Dra",
|
||
"remotePathLabel": "Fjärrväg",
|
||
"remotePathRequired": "En fjärrsökväg krävs",
|
||
"fileLabel": "Fil",
|
||
"fileRequired": "En fil krävs",
|
||
"pushHint": "Den valda filen skrivs till exakt denna sökväg på varje värd i flottan.",
|
||
"pullHint": "Filen på den här sökvägen läses från varje värd och laddas ner som en enda zip-fil, en mapp per värd.",
|
||
"transferComplete": "Överföringen är klar",
|
||
"transferFailed": "Överföringen misslyckades",
|
||
"refreshInventory": "Uppdatera lagret",
|
||
"inventoryLoadFailed": "Misslyckades med att ladda lagret",
|
||
"inventoryRefreshed": "Inventariet uppdaterat",
|
||
"inventoryRefreshFailed": "Misslyckades med att uppdatera lagret",
|
||
"inventoryNoData": "Ingen lagerdata ännu – uppdatera för att samla in den.",
|
||
"inventoryHost": "Värd",
|
||
"inventoryCollectedCount": "{{count}}/{{total}} samlade",
|
||
"inventoryOs": "operativsystem",
|
||
"inventoryKernel": "Kärna",
|
||
"inventoryArch": "Båge",
|
||
"inventoryUptime": "Drifttid",
|
||
"inventoryPackageManager": "Pakethanterare",
|
||
"inventoryCollectedAt": "Insamlad",
|
||
"packageActionLabel": "Handling",
|
||
"packageInstall": "Installera",
|
||
"packageRemove": "Ta bort",
|
||
"packageUpgradeAll": "Uppgradera alla paket",
|
||
"packageNameLabel": "Paketnamn",
|
||
"packageNameRequired": "Ett paketnamn krävs",
|
||
"packageHint": "Kräver åtkomst på hanteringsnivå per värd och höjs med hjälp av värdens lagrade sudo-lösenord."
|
||
},
|
||
"workspaces": {
|
||
"title": "Arbetsytor",
|
||
"saveCurrent": "Spara aktuell",
|
||
"saveCurrentTitle": "Spara aktuell arbetsyta",
|
||
"saveCurrentDescription": "Spara alla öppna flikar, delade layouter och rutorrangemang som en ny namngiven arbetsyta.",
|
||
"nameLabel": "Namn",
|
||
"namePlaceholder": "t.ex. produktfelsökning",
|
||
"nameRequired": "Arbetsytans namn krävs",
|
||
"colorLabel": "Färg",
|
||
"workspaceCreated": "Arbetsytan sparad",
|
||
"workspaceUpdated": "Arbetsytan uppdaterad",
|
||
"workspaceDeleted": "Arbetsytan raderad",
|
||
"workspaceDuplicated": "Arbetsyta duplicerad",
|
||
"saveFailed": "Kunde inte spara arbetsytan",
|
||
"updateFailed": "Misslyckades med att uppdatera arbetsytan",
|
||
"deleteFailed": "Misslyckades med att ta bort arbetsytan",
|
||
"duplicateFailed": "Misslyckades med att duplicera arbetsytan",
|
||
"loadFailed": "Misslyckades med att läsa in arbetsytor",
|
||
"applyFailed": "Kunde inte tillämpa arbetsytan",
|
||
"deleteWorkspaceTitle": "Ta bort arbetsyta",
|
||
"deleteWorkspaceDescription": "Är du säker på att du vill ta bort \"{{name}}\"? Detta kan inte ångras.",
|
||
"noWorkspaces": "Inga sparade arbetsytor ännu. Spara din nuvarande flikstruktur för att komma igång.",
|
||
"tabCount": "{{count}} flik",
|
||
"tabCount_other": "{{count}} flikar",
|
||
"apply": "Tillämpas",
|
||
"applyConfirmTitle": "Använd arbetsyta",
|
||
"applyConfirmDescription": "Om du använder \"{{name}}\" stängs dina nuvarande flikar och ersätts med den här arbetsytans sparade layout. Osparade ändringar i din nuvarande layout kommer att gå förlorade.",
|
||
"applyConfirmButton": "Använd arbetsyta",
|
||
"updateWithCurrent": "Uppdatera med aktuellt",
|
||
"updateWithCurrentConfirm": "Skriv över \"{{name}}\" med din nuvarande tabulering?",
|
||
"rename": "Döpa om",
|
||
"duplicate": "Duplicera",
|
||
"duplicateNameSuffix": "{{name}} (kopiera)",
|
||
"setDefault": "Ange som standard",
|
||
"unsetDefault": "Ta bort som standard",
|
||
"defaultBadge": "Standard",
|
||
"lastSession": "Senaste sessionen",
|
||
"lastSessionDescription": "Uppdateras automatiskt med din senaste flikstruktur. Använd den för att återställa det du hade öppet.",
|
||
"lastUsed": "Senast använd {{time}}",
|
||
"neverUsed": "Aldrig tillämpad",
|
||
"tabsSkipped": "Arbetsyta tillämpad — {{count}} flik(kar) hoppade över (värden finns inte längre): {{names}}"
|
||
},
|
||
"keybindings": {
|
||
"title": "Kortkommandon",
|
||
"description": "Anpassa kortkommandon för att kopiera, klistra in och kontrollera terminalen, eller bind tangenter för att skicka text eller köra ett kodavsnitt.",
|
||
"defaultsHeading": "Inbyggda genvägar",
|
||
"customHeading": "Anpassade genvägar",
|
||
"addBinding": "Lägg till genväg",
|
||
"addBindingTitle": "Lägg till genväg",
|
||
"editBindingTitle": "Redigera genväg",
|
||
"loading": "Belastning...",
|
||
"noCustomBindings": "Inga anpassade genvägar ännu",
|
||
"defaultBadge": "Standard",
|
||
"customizedBadge": "Anpassad",
|
||
"customize": "Anpassa",
|
||
"resetToDefault": "Återställ till standard",
|
||
"resetAllToDefaults": "Återställ alla till standardinställningarna",
|
||
"close": "Nära",
|
||
"cancel": "Avboka",
|
||
"saveBinding": "Spara genväg",
|
||
"saveError": "Kunde inte spara kortkommandon",
|
||
"pressKeysToRecord": "Tangentkombination",
|
||
"pressKeysPlaceholder": "Klicka och tryck på tangenterna",
|
||
"recording": "Tryck på tangenterna...",
|
||
"comboRequiredError": "Tryck först på en tangentkombination",
|
||
"textRequiredError": "Ange texten som ska skickas",
|
||
"controlCodeRequiredError": "Ange en enda bokstav för kontrollkoden",
|
||
"snippetRequiredError": "Välj ett utdrag",
|
||
"conflictWarning": "Denna kombination är redan bunden till {{combo}}. Om du sparar den aktiveras båda.",
|
||
"actionLabel": "Handling",
|
||
"actionCopy": "Kopiera val",
|
||
"actionPaste": "Klistra",
|
||
"actionSendControlCode": "Skicka Ctrl+bokstavssignal",
|
||
"actionSendText": "Skicka sms",
|
||
"actionRunSnippet": "Kör befintligt kodavsnitt",
|
||
"controlCodeLabel": "Brev",
|
||
"textLabel": "SMS att skicka",
|
||
"appendEnterLabel": "Tryck Enter efter att du skickat",
|
||
"snippetLabel": "Utdrag",
|
||
"selectSnippetPlaceholder": "Välj ett utdrag",
|
||
"orphanedSnippetWarning": "utdraget hittades inte",
|
||
"clipboardPermissionNote": "Kan be om behörighet för urklipp vid första användningen i vissa webbläsare."
|
||
},
|
||
"connectionDefaults": {
|
||
"title": "Standardinställningar för anslutning",
|
||
"description": "Ange värden som varje värd ärver om den inte åsidosätter dem.",
|
||
"manage": "Hantera",
|
||
"dialogDescription": "Dessa gäller för värdar som lämnar en inställning oaktiverad. Allt som ställs in på en värd vinner.",
|
||
"tabTerminal": "Terminal",
|
||
"tabRemoteDesktop": "Fjärrskrivbord",
|
||
"inherit": "Ärva",
|
||
"on": "På",
|
||
"off": "Av",
|
||
"resizeDisplayUpdate": "Uppdatering av displayen",
|
||
"resizeReconnect": "Återanslut",
|
||
"clearAll": "Rensa alla",
|
||
"saved": "Standardinställningar för anslutning sparade",
|
||
"saveFailed": "Kunde inte spara standardinställningarna för anslutningen"
|
||
},
|
||
"userProfile": {
|
||
"donateTitle": "Håll Termix vid liv",
|
||
"donateDescription": "Termix är gratis, självhostat och byggt av endast ett fåtal personer på sin fritid. Om det har sparat dig tid eller pengar, hjälper en kryptodonation till att hålla det igång.",
|
||
"donateMilestones": "Donationer hjälper till att finansiera tiden för att undersöka och lära sig vad som behövs för att bygga stöd för SAML, Kubernetes och agenter. Se framstegen och donera.",
|
||
"donateButton": "Donera krypto",
|
||
"storageModeLocal": "Webbläsare",
|
||
"storageModeCloud": "Databas",
|
||
"storageModeDescription": "Webbläsaren lagrar inställningar endast i den här webbläsaren. Databasen synkroniseras med servern och laddas på valfri enhet.",
|
||
"resetToDefaults": "Återställ till standardinställningar",
|
||
"resetToDefaultsSuccess": "Inställningarna återställs till standardinställningarna.",
|
||
"storageModeSwitch": "Preferenslagring",
|
||
"sectionAccount": "Konto",
|
||
"desktopProfileTitle": "Automatisk lokal skrivbordsprofil",
|
||
"desktopProfileDescription": "Den här profilen är begränsad till den inbäddade backend-funktionen och loggar in automatiskt. Den har inget inloggningslösenord; fjärrsynkronisering nedan använder ett separat serverkonto.",
|
||
"sectionInterface": "Gränssnitt",
|
||
"interfacePresetDesc": "Hur mycket detaljer Termix visar. Alla funktioner förblir tillgängliga.",
|
||
"preset_simple": "Enkel",
|
||
"preset_simple_desc": "Endast det nödvändigaste.",
|
||
"preset_balanced": "Balanserad",
|
||
"preset_balanced_desc": "Standardlayouten.",
|
||
"preset_advanced": "Avancerad",
|
||
"preset_advanced_desc": "Allt på, tätt packat.",
|
||
"presetClearOverrides": "Återställ allt",
|
||
"presetOverridesTitle": "Anpassad",
|
||
"presetRevertArea": "Återgå",
|
||
"presetConfirmTitle": "Byta till {{preset}}?",
|
||
"presetConfirmDesc": "Detta återställer sidofältet, navigeringen, instrumentpanelens layout, terminalverktygsfältet och filhanterarvyn. Dina värdar, inloggningsuppgifter och startsida påverkas inte.",
|
||
"presetConfirmApply": "Använd förinställning",
|
||
"runSetupAgainDesc": "Gå igenom den första körningens installation igen.",
|
||
"runSetupAgainButton": "Kör installationen",
|
||
"uiArea_chrome": "App Chrome",
|
||
"uiArea_hostList": "Värdlista",
|
||
"uiArea_credentialList": "Lista över autentiseringsuppgifter",
|
||
"uiArea_rail": "Navigering",
|
||
"uiArea_dashboard": "Instrumentpanel",
|
||
"uiArea_terminal": "Terminal",
|
||
"uiArea_fileManager": "Filhanteraren",
|
||
"uiArea_docker": "Hamnarbetare",
|
||
"uiArea_hostMetrics": "Värdstatistik",
|
||
"uiArea_hostEditor": "Värdredigerare",
|
||
"uiArea_homepage": "Hemsida",
|
||
"sectionAppearance": "Utseende",
|
||
"sectionSecurity": "Säkerhet",
|
||
"sectionApiKeys": "API-nycklar",
|
||
"sectionData": "Data",
|
||
"sectionC2sTunnels": "C2S-tunnlar",
|
||
"usernameLabel": "Användarnamn",
|
||
"roleLabel": "Roll",
|
||
"roleAdministrator": "Administratör",
|
||
"authMethodLabel": "Autentiseringsmetod",
|
||
"authMethodLocal": "Lokal",
|
||
"twoFaLabel": "2FA",
|
||
"twoFaOn": "På",
|
||
"twoFaOff": "Av",
|
||
"versionLabel": "Version",
|
||
"betaProgramTitle": "Betaprogram",
|
||
"betaProgramDescription": "Testa kommande funktioner tidigt med den veckovisa rullande :beta Docker-taggen. Instabil, inte för produktion.",
|
||
"betaProgramFeedback": "Hittat ett fel? Rapportera det här.",
|
||
"betaProgramLearnMore": "Läs mer",
|
||
"cliTitle": "Termix CLI",
|
||
"cliDescription": "Öppna terminaler, kör kommandon och flytta filer från ditt eget skal.",
|
||
"cliLearnMore": "Läs mer",
|
||
"deleteAccount": "Ta bort konto",
|
||
"deleteAccountDescription": "Ta bort ditt konto permanent",
|
||
"changeServerDescription": "Byt till en annan Termix-backendserver",
|
||
"deleteButton": "Radera",
|
||
"deleteAccountPermanent": "Denna åtgärd är permanent och kan inte ångras.",
|
||
"deleteAccountWarning": "Alla sessioner, värdar, inloggningsuppgifter och inställningar kommer att raderas permanent.",
|
||
"confirmPasswordDeletePlaceholder": "Ange ditt lösenord för att bekräfta",
|
||
"languageLabel": "Språk",
|
||
"themeLabel": "Tema",
|
||
"fontSizeLabel": "Fontstorlek",
|
||
"accentColorLabel": "Accentfärg",
|
||
"settingsTerminal": "Terminal",
|
||
"commandAutocomplete": "Kommando Autokomplettering",
|
||
"commandAutocompleteDesc": "Visa autokomplettering medan du skriver om du trycker på tabbtangenten",
|
||
"localEcho": "Lokalt eko",
|
||
"localEchoDesc": "Minska upplevd inmatningsfördröjning med hjälp av säker lokal tangenttryckningsprediktion",
|
||
"keyboardShortcuts": "Kortkommandon",
|
||
"keyboardShortcutsDescription": "Anpassa kortkommandon för terminalkopiering, klistra in och kommandon",
|
||
"manageShortcuts": "Hantera",
|
||
"terminalLinkBehavior": "Klicka på terminallänken",
|
||
"terminalLinkBehaviorDesc": "Standardbeteende vid klick på länkar i terminalen",
|
||
"historyTracking": "Historikspårning",
|
||
"historyTrackingDesc": "Spåra terminalkommandon",
|
||
"commandPalette": "Kommandopaletten",
|
||
"commandPaletteDesc": "Aktivera kortkommando",
|
||
"reopenTabsOnLogin": "Öppna flikar igen vid inloggning",
|
||
"reopenTabsOnLoginDesc": "Återställ dina öppna flikar när du loggar in eller uppdaterar sidan, även från en annan enhet",
|
||
"confirmTabClose": "Bekräfta stängning av fliken",
|
||
"confirmTabCloseDesc": "Fråga innan terminalflikar stängs",
|
||
"settingsAppRail": "App Rail",
|
||
"sidebarSettingsMoved": "Visningsinställningarna för värds sidofält har flyttats till panelen Anpassa sidofältet, som öppnas från verktygsfältet Värdar.",
|
||
"showHostTags": "Visa värdtaggar",
|
||
"showHostTagsDesc": "Visa taggar i värdlistan",
|
||
"hostTrayOnClick": "Klicka för att expandera värdåtgärder",
|
||
"hostTrayOnClickDesc": "Visa alltid anslutningsknappar; klicka för att expandera hanteringsalternativ istället för att hålla muspekaren över",
|
||
"compactHostView": "Kompakt värdvy",
|
||
"compactHostViewDesc": "Minimera varje värd till en enda rad som endast visar dess namn och adress",
|
||
"statusColors": "Färger för verklig status",
|
||
"statusColorsDesc": "Använd grönt/rött för online-/offline-status istället för accentfärgen",
|
||
"pinAppRail": "Pin App Rail",
|
||
"pinAppRailDesc": "Håll applist i vänster sidofält alltid expanderad istället för att expandera när du håller muspekaren över den",
|
||
"openFullscreenSettings": "Öppna inställningar i helskärmsläge",
|
||
"exitFullscreenSettings": "Avsluta helskärmsinställningar",
|
||
"expandAppRailOnHover": "Expandera appens spår vid muspekare",
|
||
"expandAppRailOnHoverDesc": "Tillåt att den vänstra sidofältets applist expanderar när pekaren flyttas över den",
|
||
"settingsNavigation": "Navigering",
|
||
"navigationTabsDesc": "Välj vilka flikar som visas i appens list",
|
||
"foldersCollapsed": "Mappar hopfällda",
|
||
"foldersCollapsedDesc": "Komprimera mappar som standard",
|
||
"confirmExecution": "Bekräfta körning",
|
||
"confirmExecutionDesc": "Bekräfta innan du kör utdrag",
|
||
"settingsUpdates": "Uppdateringar",
|
||
"disableUpdateChecks": "Inaktivera uppdateringskontroller",
|
||
"disableUpdateChecksDesc": "Sluta leta efter uppdateringar",
|
||
"totpAuthenticator": "TOTP-autentiserare",
|
||
"totpEnabled": "2FA är aktiverat",
|
||
"totpDisabled": "Lägg till extra inloggningssäkerhet",
|
||
"disable": "Inaktivera",
|
||
"enable": "Aktivera",
|
||
"setupTotp": "Konfigurera TOTP",
|
||
"qrCode": "QR-kod",
|
||
"totpInstructions": "Skanna QR-koden eller ange hemligheten i din autentiseringsapp och ange sedan den 6-siffriga koden",
|
||
"totpCodePlaceholder": "000000",
|
||
"verify": "Kontrollera",
|
||
"changePassword": "Ändra lösenord",
|
||
"currentPasswordLabel": "Nuvarande lösenord",
|
||
"currentPasswordPlaceholder": "Nuvarande lösenord",
|
||
"newPasswordLabel": "Nytt lösenord",
|
||
"newPasswordPlaceholder": "Nytt lösenord",
|
||
"confirmPasswordLabel": "Bekräfta nytt lösenord",
|
||
"confirmPasswordPlaceholder": "Bekräfta nytt lösenord",
|
||
"updatePassword": "Uppdatera lösenord",
|
||
"createApiKeyTitle": "Skapa API-nyckel",
|
||
"createApiKeyDescription": "Generera en ny API-nyckel för programmatisk åtkomst.",
|
||
"apiKeyNameLabel": "Namn",
|
||
"apiKeyNamePlaceholder": "t.ex. CI-rörledning",
|
||
"expiryDateLabel": "Utgångsdatum",
|
||
"optional": "frivillig",
|
||
"cancel": "Avboka",
|
||
"createKey": "Skapa nyckel",
|
||
"apiKeyCreatedWarning": "Nyckel skapad – kopiera den nu, den visas inte igen.",
|
||
"copyApiKey": "Kopiera API-nyckel",
|
||
"copiedToClipboard": "Kopierad till urklipp",
|
||
"apiKeyCount": "{{count}} nycklar",
|
||
"newKey": "Ny nyckel",
|
||
"noApiKeys": "Inga API-nycklar ännu.",
|
||
"apiKeyActive": "Aktiv",
|
||
"apiKeyUsageHint": "Lägg till din nyckel i",
|
||
"apiKeyUsageHintHeader": "rubrik.",
|
||
"apiKeyPermissionsHint": "Nycklar ärver behörigheterna från den skapande användaren.",
|
||
"exportData": "Exportera mina data",
|
||
"exportDataDesc": "Ladda ner en säkerhetskopia av dina värdar, inloggningsuppgifter och inställningar för att överföra till en annan enhet.",
|
||
"export": "Exportera",
|
||
"exporting": "Exporterar...",
|
||
"importData": "Importera mina data",
|
||
"importDataDesc": "Återställ dina värdar, inloggningsuppgifter och inställningar från en .sqlite-säkerhetskopia",
|
||
"importDataSelected": "Vald: {{name}}",
|
||
"selectFile": "Välj fil",
|
||
"changeFile": "Ändra",
|
||
"import": "Importera",
|
||
"importing": "Importerar...",
|
||
"exportSuccess": "Data exporterades",
|
||
"exportFailed": "Dataexport misslyckades",
|
||
"importSelectFile": "Välj en fil först",
|
||
"importCompleted": "Importen är klar: {{total}} objekt har importerats, {{skipped}} hoppades över",
|
||
"importFailed": "Importen misslyckades: {{error}}",
|
||
"roleUser": "Användare",
|
||
"authMethodDual": "Dubbel autentisering",
|
||
"authMethodOidc": "OIDC",
|
||
"totpSetupFailed": "Misslyckades med att starta TOTP-installationen",
|
||
"totpEnter6Digits": "Ange en 6-siffrig kod",
|
||
"totpEnabledSuccess": "Tvåfaktorsautentisering aktiverad",
|
||
"totpInvalidCode": "Ogiltig kod, försök igen",
|
||
"totpDisableInputRequired": "Ange din TOTP-kod eller ditt lösenord",
|
||
"totpDisabledSuccess": "Tvåfaktorsautentisering inaktiverad",
|
||
"totpDisableFailed": "Misslyckades med att inaktivera 2FA",
|
||
"totpDisableTitle": "Inaktivera 2FA",
|
||
"totpDisablePlaceholder": "Ange TOTP-kod eller lösenord",
|
||
"totpDisableConfirm": "Inaktivera 2FA",
|
||
"totpContinueVerify": "Fortsätt att verifiera",
|
||
"totpVerifyTitle": "Verifiera kod",
|
||
"totpBackupTitle": "Reservkoder",
|
||
"totpDownloadBackup": "Ladda ner reservkoder",
|
||
"passkeys": "Lösenord",
|
||
"passkeysDesc": "Använd WebAuthn/FIDO2-inloggningsuppgifter för att logga in utan lösenord",
|
||
"passkeyName": "Lösenordsnamn",
|
||
"passkeyUvPreferred": "Föredragen",
|
||
"passkeyUvRequired": "Nödvändig",
|
||
"passkeyUvDiscouraged": "Avskräckt",
|
||
"addPasskey": "Lägg till lösenord",
|
||
"noPasskeys": "Inga lösennycklar registrerade.",
|
||
"passkeyAdded": "Lösenord tillagt",
|
||
"passkeyAddFailed": "Misslyckades med att lägga till lösenord",
|
||
"passkeyDeleted": "Lösenordet raderat",
|
||
"passkeyDeleteFailed": "Misslyckades med att ta bort lösenordet",
|
||
"done": "Gjort",
|
||
"secretCopied": "Hemlighet kopierad till urklipp",
|
||
"apiKeyNameRequired": "Nyckelnamn krävs",
|
||
"apiKeyCreated": "API-nyckeln \"{{name}}\" skapad",
|
||
"apiKeyCreateFailed": "Misslyckades med att skapa API-nyckel",
|
||
"apiKeyUser": "Användare",
|
||
"apiKeyExpires": "Utgår",
|
||
"apiKeyRevoked": "API-nyckeln \"{{name}}\" återkallad",
|
||
"apiKeyRevokeFailed": "Misslyckades med att återkalla API-nyckeln",
|
||
"passwordFieldsRequired": "Nuvarande och nya lösenord krävs",
|
||
"passwordMismatch": "Lösenorden matchar inte",
|
||
"passwordTooShort": "Lösenordet måste vara minst 6 tecken långt",
|
||
"passwordUpdated": "Lösenordet har uppdaterats",
|
||
"passwordUpdateFailed": "Misslyckades med att uppdatera lösenordet",
|
||
"deletePasswordRequired": "Lösenord krävs för att radera ditt konto",
|
||
"deleteFailed": "Misslyckades med att ta bort kontot",
|
||
"deleting": "Tar bort...",
|
||
"colorPickerTooltip": "Öppna färgväljaren",
|
||
"themeSystem": "System",
|
||
"themeLight": "Ljus",
|
||
"themeDark": "Mörk",
|
||
"themeDracula": "Dracula",
|
||
"themeCatppuccin": "Catppuccin",
|
||
"themeNord": "Nord",
|
||
"themeSolarized": "Solariserad",
|
||
"themeTokyoNight": "Tokyonatten",
|
||
"themeOneDark": "En mörk",
|
||
"themeGruvbox": "Gruvbox"
|
||
}
|
||
}
|
||
},
|
||
"terminalToolbar": {
|
||
"title": "Terminalverktygsfält",
|
||
"showActions": "Visa verktygsfält",
|
||
"hideToolbar": "Dölj verktygsfältet",
|
||
"showToolbar": "Expandera verktygsfältet",
|
||
"moveToolbar": "Flytta verktygsfältet",
|
||
"moveToolbarHint": "Dra för att flytta verktygsfältet",
|
||
"layout": "Verktygsfältets visningsläge",
|
||
"layoutIcon": "Endast ikon",
|
||
"layoutLabeled": "Ikoner och etiketter",
|
||
"layoutExpanded": "Utökad med mätvärden",
|
||
"image": "Bildåtgärder (endast bilder)",
|
||
"upload": "Ladda upp bild",
|
||
"paste": "Klistra in bild",
|
||
"detachTmux": "Lossa tmux",
|
||
"detachTmuxDescription": "Koppla bort tmux-session",
|
||
"imageActionFailed": "Bildåtgärden misslyckades",
|
||
"retry": "Försöka igen",
|
||
"dismissError": "Stäng bildfel",
|
||
"cpu": "CPU",
|
||
"memory": "Minne",
|
||
"disk": "Disk",
|
||
"statsUnavailable": "Livestatistik är inte tillgänglig",
|
||
"tmuxDetach": "Koppla bort tmux-session",
|
||
"uploadImage": "Ladda upp en bild till värden",
|
||
"uploadingImage": "Laddar upp...",
|
||
"pasteImage": "Klistra in bild från urklipp (endast bilder)",
|
||
"openFiles": "Öppna filer",
|
||
"openDocker": "Öppna Docker",
|
||
"openTunnel": "Öppen tunnel",
|
||
"openHostMetrics": "Öppna värdmätvärden",
|
||
"openProxmoxStats": "Öppna Proxmox-statistik",
|
||
"openTmuxMonitor": "Öppna Tmux-monitorn"
|
||
},
|
||
"tmuxMonitor": {
|
||
"title": "Tmux-monitor",
|
||
"failedToLoadHosts": "Misslyckades med att ladda värdar",
|
||
"failedToLoad": "Misslyckades med att ladda tmux-sessioner",
|
||
"tmuxUnavailable": "tmux är inte installerat på den här värddatorn",
|
||
"noSessions": "Inga tmux-sessioner på den här värden",
|
||
"noHostSelected": "Ingen värd vald",
|
||
"attached": "Bunden",
|
||
"detached": "Fristående",
|
||
"attach": "Bifoga",
|
||
"editTags": "Redigera taggar",
|
||
"tagsHint": "Kommaavgränsade taggar (t.ex. YOLO, lab, utbildning)",
|
||
"tagsSaved": "Taggar sparade",
|
||
"tagsSaveFailed": "Det gick inte att spara taggarna",
|
||
"searchPlaceholder": "Sök utdata över flera sessioner...",
|
||
"searchResults": "{{count}} matchningar",
|
||
"searchFailed": "Sökningen misslyckades",
|
||
"selectPaneHint": "Välj en ruta för att förhandsgranska dess utdata",
|
||
"closePreview": "Stäng förhandsgranskningen",
|
||
"newSession": "Ny session",
|
||
"newSessionHint": "Sessionsnamn (bokstäver, siffror, _ @ % + = -)",
|
||
"newSessionPlaceholder": "min-session",
|
||
"create": "Skapa",
|
||
"sessionCreated": "Sessionen \"{{name}}\" skapades",
|
||
"sessionCreateFailed": "Misslyckades med att skapa sessionen",
|
||
"splitRight": "Dela höger",
|
||
"splitDown": "Dela upp",
|
||
"splitFailed": "Misslyckades med att dela rutan",
|
||
"newWindow": "Nytt fönster",
|
||
"windowCreateFailed": "Misslyckades med att skapa fönstret",
|
||
"attachSessionTooltip": "Bifoga till {{session}}",
|
||
"refresh": "Uppdatera",
|
||
"refreshFailed": "Det gick inte att uppdatera sessionerna",
|
||
"collapseAll": "Komprimera alla",
|
||
"expandAll": "Expandera alla",
|
||
"moreActions": "Fler åtgärder",
|
||
"sessionStats": "Sessionsstatistik",
|
||
"renameSessionTitle": "Byt namn på sessionen \"{{name}}\"",
|
||
"rename": "Döpa om",
|
||
"sessionRenamed": "Sessionen har bytt namn till \"{{name}}\"",
|
||
"sessionRenameFailed": "Misslyckades med att byta namn på sessionen",
|
||
"editTagsTitle": "Redigera taggar för \"{{name}}\"",
|
||
"killPane": "Döda rutan",
|
||
"resizeTree": "Dra för att ändra storlek — dubbelklicka för att återställa",
|
||
"reattach": "Sätt tillbaka (åtgärdar en förvrängd bild)",
|
||
"killWindow": "Döda fönstret",
|
||
"killWindowTitle": "Avsluta fönstret {{index}} för \"{{session}}\"?",
|
||
"killWindowBody": "Varje ruta och process i det här fönstret avslutas. Om du avslutar det sista fönstret avslutas sessionen.",
|
||
"windowKillFailed": "Misslyckades med att avsluta fönstret",
|
||
"statusActivity": "Aktivitet",
|
||
"statusWindows": "Fönster",
|
||
"statusPanes": "rutor",
|
||
"statusTags": "Taggar",
|
||
"killPaneTitle": "Avsluta rutan {{id}}?",
|
||
"killPaneBody": "Processen som körs i den här rutan kommer att avslutas. Om du avslutar den sista rutan stängs dess fönster.",
|
||
"paneKillFailed": "Misslyckades med att avsluta rutan",
|
||
"killSessionTitle": "Avsluta sessionen \"{{name}}\"?",
|
||
"killSessionBody": "Alla fönster och processer som körs i den här sessionen kommer att avslutas. Detta kan inte ångras.",
|
||
"kill": "Döda",
|
||
"sessionKilled": "Sessionen \"{{name}}\" avstängd",
|
||
"sessionKillFailed": "Misslyckades med att avsluta sessionen",
|
||
"hostUnreachable": "Kunde inte ansluta till värden. Kontrollera att den är online och nåbar.",
|
||
"noServer": "Ingen tmux-server körs på den här värden.",
|
||
"searchTruncated": "Delresultat — sökningen täcker de sista {{lines}} raderna i varje ruta och högst {{panes}} rutor.",
|
||
"closeSearchResults": "Stäng sökresultaten",
|
||
"retry": "Försöka igen",
|
||
"noHosts": "Inga SSH-värdar tillgängliga",
|
||
"noHostsHint": "Aktivera alternativet Tmux Monitor på en SSH-värd (Värdhanterare → Terminal-fliken) för att övervaka dess tmux-sessioner.",
|
||
"tmuxInstallHint": "Installera det på värden med:",
|
||
"attachTooltip": "Öppna en terminal till {{host}}",
|
||
"attachTooltipPane": "Öppna en terminal till {{host}} — tmux-session {{session}}",
|
||
"timeJustNow": "just nu",
|
||
"timeMinutes": "för {{count}}minuter sedan",
|
||
"timeHours": "för {{count}}timmar sedan",
|
||
"timeDays": "för {{count}}dagar sedan"
|
||
},
|
||
"mobileKeyboard": {
|
||
"shift": "Flytta",
|
||
"ctrl": "Ctrl",
|
||
"esc": "Esc",
|
||
"tab": "Flik",
|
||
"backTab": "⇥",
|
||
"arrowUp": "Pil upp",
|
||
"arrowDown": "Pil nedåt",
|
||
"arrowLeft": "Pil vänster",
|
||
"arrowRight": "Pil höger",
|
||
"home": "Hem",
|
||
"end": "Avsluta",
|
||
"pageUp": "PgUp",
|
||
"pageDown": "PgDn",
|
||
"delete": "Del",
|
||
"paste": "Klistra",
|
||
"editQuickKeys": "Redigera snabbknappar",
|
||
"quickKeysTitle": "Snabbtangenter",
|
||
"quickKeysDesc": "Tryck på × för att ta bort. Stöder upp till 8 tecken.",
|
||
"quickKeyPlaceholder": "t.ex. sudo ",
|
||
"addQuickKey": "Tillägga",
|
||
"removeQuickKey": "Ta bort",
|
||
"resetDefaults": "Återställ till standardinställningarna",
|
||
"done": "Gjort"
|
||
},
|
||
"serial": {
|
||
"title": "Serie",
|
||
"portLabel": "Hamn",
|
||
"portPlaceholder": "/dev/ttyUSB0 eller COM3",
|
||
"baudRateLabel": "Baudhastighet",
|
||
"dataBitsLabel": "Data",
|
||
"stopBitsLabel": "Stopp",
|
||
"parityLabel": "Paritet",
|
||
"parityNone": "Ingen",
|
||
"parityEven": "Även",
|
||
"parityOdd": "Udda",
|
||
"connect": "Anslut till seriellt",
|
||
"disconnect": "Koppla från",
|
||
"refreshPorts": "Uppdatera portar",
|
||
"connected": "Ansluten till {{path}} vid {{baud}} baud",
|
||
"disconnected": "Seriell port frånkopplad",
|
||
"connectionError": "Misslyckades med att öppna serieporten",
|
||
"wsError": "WebSocket-fel",
|
||
"errorNoServerUrl": "Ingen server-URL konfigurerad",
|
||
"notSupportedTitle": "Seriellt stöds inte",
|
||
"notSupported": "Seriella anslutningar kräver en webbläsare med stöd för Web Serial API (Chrome, Edge eller Firefox 151+), eller Termix-skrivbordsappen.",
|
||
"hideHint": "Du kan dölja fliken Seriell under Användarprofil > Utseende > Sidofält > Navigering.",
|
||
"browserPickerHint": "Klicka på Anslut så öppnar din webbläsare en portväljare där du kan välja enheten."
|
||
},
|
||
"metricsHistory": {
|
||
"title": "Statistikhistorik",
|
||
"historySuffix": "Historia",
|
||
"cpuMemoryDisk": "CPU / Minne / Disk",
|
||
"network": "Nätverk",
|
||
"download": "RX",
|
||
"upload": "TX",
|
||
"noData": "Ingen historikdata tillgänglig för detta tidsintervall.",
|
||
"custom": "Beställnings",
|
||
"to": "till",
|
||
"apply": "Tillämpas",
|
||
"viewHistory": "Visa historik"
|
||
},
|
||
"alerts": {
|
||
"tabFirings": "Aviseringar",
|
||
"tabRules": "Regler",
|
||
"tabChannels": "Kanaler",
|
||
"noFirings": "Inga okvitterade varningar",
|
||
"noRules": "Inga varningsregler konfigurerade",
|
||
"noChannels": "Inga aviseringskanaler konfigurerade",
|
||
"rulesDesc": "Aviseringsregler utlöser aviseringar",
|
||
"channelsDesc": "Vart varningsmeddelanden skickas",
|
||
"acknowledge": "Erkänna",
|
||
"ackAll": "Bekräfta alla",
|
||
"allAcknowledged": "Alla varningar bekräftade",
|
||
"ackFailed": "Kunde inte bekräfta varningen",
|
||
"ackAllFailed": "Kunde inte bekräfta alla varningar",
|
||
"showAcknowledged": "Visa alla",
|
||
"hideAcknowledged": "Dölj godkända",
|
||
"addChannel": "Lägg till kanal",
|
||
"editChannel": "Redigera kanal",
|
||
"channelName": "Namn",
|
||
"channelType": "Typ",
|
||
"channelNameRequired": "Namn krävs",
|
||
"webhookUrl": "URL",
|
||
"webhookUrlRequired": "Webhook-URL krävs",
|
||
"webhookDesc": "POST JSON-nyttolasten till denna URL vid varje varningsutlösning",
|
||
"ntfyServer": "Server-URL",
|
||
"ntfyTopic": "Ämne",
|
||
"ntfyTopicRequired": "Ämne är obligatoriskt",
|
||
"ntfyToken": "Åtkomsttoken (valfritt)",
|
||
"channelSaveFailed": "Misslyckades med att spara kanalen",
|
||
"test": "Testa",
|
||
"testSent": "Testmeddelande skickat",
|
||
"testFailed": "Testmeddelandet misslyckades",
|
||
"testFailedWithReason": "Testmeddelande misslyckades: {{reason}}",
|
||
"addRule": "Lägg till varningsregel",
|
||
"editRule": "Redigera varningsregel",
|
||
"ruleName": "Regelnamn",
|
||
"ruleNameRequired": "Namn krävs",
|
||
"triggerType": "Utlösare",
|
||
"thresholdValue": "Tröskelvärde (%)",
|
||
"durationSeconds": "Varaktighet (sekunder, 0 = avfyras omedelbart)",
|
||
"cooldownMinutes": "Nedkylningstid (minuter)",
|
||
"channels": "Aviseringskanaler",
|
||
"noChannelsHint": "Lägg först till kanaler på fliken Kanaler",
|
||
"ruleSaveFailed": "Det gick inte att spara regeln"
|
||
},
|
||
"ai": {
|
||
"title": "Assistent",
|
||
"send": "Skicka",
|
||
"stop": "Stopp",
|
||
"save": "Spara",
|
||
"cancel": "Avboka",
|
||
"running": "spring",
|
||
"approve": "Godkänna",
|
||
"reject": "Avvisa",
|
||
"inputPlaceholder": "Fråga om era servrar, eller beskriv en förändring att föreslå",
|
||
"selectProvider": "Välj en leverantör",
|
||
"providerSettings": "Leverantörsinställningar",
|
||
"addProvider": "Lägg till leverantör",
|
||
"removeProvider": "Ta bort leverantör",
|
||
"providerType": "Leverantör",
|
||
"providerLabel": "Namn",
|
||
"providerLabelPlaceholder": "Till exempel: Lokal Ollama",
|
||
"baseUrl": "Serveradress",
|
||
"apiKey": "API-nyckel",
|
||
"defaultModel": "Standardmodell",
|
||
"defaultModelPlaceholder": "Till exempel: llama3.1 eller claude-opus-5",
|
||
"labelRequired": "Ge den här leverantören ett namn",
|
||
"providerSaveFailed": "Kunde inte spara leverantören",
|
||
"providerDeleteFailed": "Kunde inte ta bort leverantören",
|
||
"privateEndpointHint": "Adresser i ditt privata nätverk behöver en administratör som först tillåter värden.",
|
||
"providerOllama": "Ollama",
|
||
"providerAnthropic": "Antropisk",
|
||
"providerOpenai": "Öppen AI",
|
||
"providerGemini": "Google Gemini",
|
||
"providerOpenaiCompatible": "OpenAI-kompatibel",
|
||
"toolArguments": "Input",
|
||
"toolResult": "Resultat",
|
||
"statusApplied": "Tillämpad",
|
||
"statusRejected": "Avvisad",
|
||
"proposalApplied": "Ändring tillämpad",
|
||
"proposalApplyFailed": "Kunde inte tillämpa ändringen",
|
||
"proposalRejectFailed": "Kunde inte avvisa ändringen",
|
||
"enableTitle": "Aktivera AI-assistenten",
|
||
"enableDescription": "Låt assistenten läsa dina inställningar och föreslå ändringar som du kan godkänna.",
|
||
"readOnlyCommands": "Tillåt skrivskyddade diagnostikkommandon",
|
||
"readOnlyCommandsDescription": "Assistenten kan köra en kort lista med säkra kommandon som df och uptime utan att fråga varje gång. Allt som ändrar en server föreslås alltid först.",
|
||
"modelDetectFailed": "Kunde inte nå leverantören, så detta är en allmän lista. Du kan skriva in vilket modellnamn som helst.",
|
||
"modelCustom": "Ange ett modellnamn",
|
||
"modelRefresh": "Uppdatera listan",
|
||
"modelPlaceholder": "Välj eller skriv en modell",
|
||
"attachHint": "Skriv @ för att referera till en värd, ett kodavsnitt eller en automatisering. Ändringar föreslås för dig att godkänna.",
|
||
"runCommandTitle": "Kör kommando"
|
||
},
|
||
"macros": {
|
||
"title": "Makron",
|
||
"description": "Kör en sparad serie kommandon i en terminal och reagera på vad servern skickar tillbaka.",
|
||
"target": "Mål",
|
||
"noTerminal": "Ingen terminal öppen",
|
||
"empty": "Inga makron ännu",
|
||
"emptyHint": "Skapa ett makro för att automatisera ett terminalflöde, som att logga in, starta om en tjänst eller svara på frågor.",
|
||
"create": "Nytt makro",
|
||
"back": "Tillbaka till makron",
|
||
"name": "Namn",
|
||
"namePlaceholder": "Starta om webbservern",
|
||
"nameRequired": "Ge makrot ett namn innan du sparar",
|
||
"descriptionLabel": "Beskrivning",
|
||
"descriptionPlaceholder": "Vad detta makro gör (valfritt)",
|
||
"unsaved": "Osparade ändringar",
|
||
"save": "Spara",
|
||
"saved": "Makrot sparat",
|
||
"saveFailed": "Kunde inte spara makrot",
|
||
"delete": "Radera",
|
||
"deleteTitle": "Ta bort det här makrot?",
|
||
"deleteBody": "\"{{name}}\" kommer att raderas permanent. Detta kan inte ångras.",
|
||
"deleted": "Makro borttaget",
|
||
"cancel": "Avboka",
|
||
"run": "Sikt",
|
||
"stop": "Stopp",
|
||
"running": "Spring...",
|
||
"completed": "Makro klart",
|
||
"failed": "Makrot misslyckades",
|
||
"loadFailed": "Kunde inte läsa in makron",
|
||
"needTerminal": "Öppna och anslut en terminal först",
|
||
"noSteps": "Det här makrot har inga steg ännu. Lägg till ett nedan.",
|
||
"addStep": "Lägg till steg",
|
||
"stepNumber": "Steg {{number}}",
|
||
"removeStep": "Ta bort steg",
|
||
"confirmRunTitle": "Köra det här makrot?",
|
||
"confirmRunBody": "\"{{name}}\" skickar kommandon till {{host}}.",
|
||
"confirmRunAction": "Kör makro",
|
||
"stepTypes": {
|
||
"send": {
|
||
"label": "Skicka kommando",
|
||
"help": "Skriver text i terminalen, på samma sätt som om du hade skrivit den."
|
||
},
|
||
"wait": {
|
||
"label": "Vänta på utdata",
|
||
"help": "Pausar tills servern skriver ut texten du anger, som en lösenordsfråga."
|
||
},
|
||
"delay": {
|
||
"label": "Paus",
|
||
"help": "Väntar en fastställd tid innan nästa steg."
|
||
},
|
||
"if": {
|
||
"label": "Om utdata innehåller",
|
||
"help": "Kontrollerar allt som servern har skrivit ut hittills och kör sedan en av två grenar."
|
||
},
|
||
"repeat": {
|
||
"label": "Upprepa",
|
||
"help": "Kör stegen inuti ett visst antal gånger."
|
||
}
|
||
},
|
||
"send": {
|
||
"text": "Kommando eller text",
|
||
"textPlaceholder": "systemctl starta om nginx",
|
||
"pressEnter": "Tryck Enter efter att du skickat",
|
||
"pressEnterHelp": "Stäng av detta för att skriva text utan att skicka in den."
|
||
},
|
||
"wait": {
|
||
"pattern": "Vänta tills utdata innehåller",
|
||
"patternPlaceholder": "lösenord:",
|
||
"timeout": "Ge upp efteråt",
|
||
"onTimeout": "Om det aldrig dyker upp",
|
||
"stop": "Stoppa makrot",
|
||
"continue": "Fortsätt ändå"
|
||
},
|
||
"delay": {
|
||
"duration": "Vänta på"
|
||
},
|
||
"ifStep": {
|
||
"pattern": "Om utdata innehåller",
|
||
"patternPlaceholder": "Aktiv: aktiv (löper)",
|
||
"then": "Gör sedan detta",
|
||
"else": "Annars gör så här",
|
||
"emptyBranch": "Inga steg"
|
||
},
|
||
"repeat": {
|
||
"count": "Antal gånger",
|
||
"times": "gånger"
|
||
},
|
||
"match": {
|
||
"useRegex": "Matcha med ett reguljärt uttryck",
|
||
"useRegexHelp": "Lämna detta av för att texten ska se exakt ut som den är skriven.",
|
||
"invalidRegex": "Inte ett giltigt reguljärt uttryck, det kommer att matchas som vanlig text"
|
||
},
|
||
"seconds": "sekunder",
|
||
"secondsShort": "{{count}}s"
|
||
}
|
||
}
|