Files
Termix/src/ui/locales/translated/pl_PL.json
T
+5 7ae1648c25 release-2.7.0 (#1264)
* 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>
2026-08-19 14:12:06 -05:00

4650 lines
251 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"connection": {
"retryingIn": "Ponowna próba za {{seconds}}s ({{attempt}}/{{max}})",
"retryingNow": "Ponawianie próby... ({{attempt}}/{{max}})",
"disconnected": "Nie można połączyć",
"reconnect": "Na nowo połączyć"
},
"termixId": {
"title": "Identyfikator Termix",
"loadFailed": "Nie udało się załadować identyfikatora Termix",
"claimTitle": "Zdobądź swój identyfikator Termix",
"claimIntro": "Wybierz unikalny identyfikator. Twoje publiczne klucze SSH zostaną opublikowane pod publicznym adresem URL, który możesz dodać do pliku authorized_keys dowolnego serwera.",
"handleLabel": "Uchwyt",
"handlePlaceholder": "Alicja",
"checking": "Sprawdzanie…",
"available": "Dostępny",
"taken": "Już zajęte",
"invalidHandle": "Tylko małe litery, cyfry i - oraz _",
"descriptionLabel": "Opis (opcjonalnie)",
"descriptionPlaceholder": "Klawisze do laptopa i telefonu służbowego",
"create": "Utwórz identyfikator Termix",
"created": "Utworzono identyfikator Termix",
"createFailed": "Nie udało się utworzyć identyfikatora Termix",
"deleteConfirm": "Usunąć swój identyfikator Termix i wszystkie opublikowane klucze? Serwery, które utworzyłeś, zachowają klucze, dopóki nie usuniesz ich ręcznie.",
"deleted": "Usunięto identyfikator Termix",
"deleteFailed": "Nie udało się usunąć identyfikatora Termix",
"copyFailed": "Kopiowanie nie powiodło się",
"resolverUrlLabel": "Publiczny adres URL resolvera",
"provisionLabel": "Zapewnij serwer",
"publishTitle": "Opublikuj klucz publiczny",
"generate": "Spowodować",
"generateTooltip": "Wygeneruj parę kluczy Ed25519 — opublikuj klucz publiczny i pobierz klucz prywatny na swoje urządzenie",
"saveToVault": "Zapisz w poświadczeniach",
"keyPlaceholder": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5... użytkownik@host",
"labelPlaceholder": "Etykieta (opcjonalnie)",
"add": "Dodać",
"importFromCredential": "Lub zaimportuj z zapisanych danych uwierzytelniających",
"keyPublished": "Klucz opublikowany",
"addKeyFailed": "Nie udało się dodać klucza",
"generatedSaved": "Para kluczy została wygenerowana i zapisana w Twoim sejfie danych uwierzytelniających. Klucz prywatny również został pobrany.",
"generatedOnly": "Wygenerowano parę kluczy — pobrano klucz prywatny (wyświetlany tylko raz).",
"generateFailed": "Nie udało się wygenerować klucza",
"imported": "Klucz zaimportowany z poświadczeń",
"importFailed": "Nie udało się zaimportować klucza",
"noKeys": "Klucze publiczne nie zostały jeszcze opublikowane.",
"keysTitle": "Opublikowane klucze",
"published": "Opublikowany",
"hidden": "Ukryty",
"keyRemoved": "Klucz wyjęty",
"removeKeyFailed": "Nie udało się usunąć klucza",
"updateKeyFailed": "Nie udało się zaktualizować klucza",
"fromVault": "Z magazynu danych uwierzytelniających",
"linkedToTermixId": "Opublikowano za pośrednictwem Termix ID",
"selectCredential": "Wybierz dane uwierzytelniające...",
"import": "Import",
"caTitle": "Urząd certyfikacji",
"caIntro": "Zaufaj temu CA na serwerze, a zaakceptuje on każdy podpisany przez Ciebie certyfikat. Rotacja spowoduje unieważnienie wszystkich certyfikatów naraz; certyfikaty również wygasają automatycznie.",
"caEnable": "Włącz CA",
"caEnabled": "CA włączone",
"caCreateFailed": "Nie udało się włączyć CA",
"caPublicKeyLabel": "Klucz publiczny CA",
"caTrustLabel": "Zaufaj serwerowi (uruchom jako root)",
"caRotate": "Obracać",
"caRotateConfirm": "Rotacja urzędu certyfikacji? Każdy podpisany przez niego certyfikat przestanie być akceptowany i będzie musiał zostać ponownie wydany.",
"caRotated": "Obrócono urząd certyfikacji — poprzednie certyfikaty zostały odwołane",
"caRotateFailed": "Nie udało się obrócić CA",
"caDelete": "Usuń CA",
"caDeleteConfirm": "Usunąć urząd certyfikacji?",
"caDeleted": "CA usunięto",
"caDeleteFailed": "Nie udało się usunąć CA",
"caValidityLabel": "Ważność certyfikatu (dni)",
"issueCert": "Certyfikat",
"issueCertTooltip": "Wydaj certyfikat SSH dla tego klucza podpisany przez Twój urząd certyfikacji",
"certIssued": "Certyfikat wydany i pobrany",
"certIssueFailed": "Nie udało się wystawić certyfikatu"
},
"credentials": {
"folders": "Lornetka składana",
"folder": "Falcówka",
"password": "Hasło",
"key": "Klawisz",
"sshPrivateKey": "Klucz prywatny SSH",
"upload": "Wgrywać",
"keyPassword": "Hasło klucza",
"sshKey": "Klucz SSH",
"uploadPrivateKeyFile": "Prześlij plik klucza prywatnego",
"searchCredentials": "Wyszukaj dane uwierzytelniające...",
"addCredential": "Dodaj poświadczenia",
"caCertificate": "Certyfikat CA (-cert.pub)",
"caCertificateDescription": "Opcjonalnie: Prześlij lub wklej plik certyfikatu podpisanego przez CA (np. id_ed25519-cert.pub). Wymagane, gdy serwer SSH korzysta z autoryzacji opartej na certyfikacie.",
"uploadCertFile": "Prześlij plik -cert.pub",
"clearCert": "Jasne",
"certLoaded": "Certyfikat załadowany",
"certPublicKeyLabel": "Certyfikat CA",
"certTypeLabel": "Typ certyfikatu",
"pasteOrUploadCert": "Wklej lub prześlij certyfikat -cert.pub...",
"hasCaCert": "Posiada certyfikat CA",
"noCaCert": "Brak certyfikatu CA",
"noPublicKeyAvailable": "Brak dostępnego klucza publicznego. Najpierw otwórz edytor danych uwierzytelniających.",
"deployCommandCopied": "Skopiowano polecenie wdrożenia",
"sortCredentials": "Sortuj dane uwierzytelniające",
"sortDefault": "Domyślna kolejność",
"sortNameAsc": "Imię (A → Z)",
"sortNameDesc": "Imię (Z → A)",
"sortUsernameAsc": "Nazwa użytkownika (A → Z)",
"sortUsernameDesc": "Nazwa użytkownika (Z → A)",
"filterCredentials": "Filtruj dane uwierzytelniające",
"filterClearAll": "Wyczyść filtry",
"filterTypeGroup": "Typ",
"filterTypePassword": "Hasło",
"filterTypeKey": "Klucz SSH",
"filterTagsGroup": "Tagi",
"copyDeployCommand": "Kopiuj polecenie wdrożenia",
"deleteCredentialAction": "Usuń poświadczenia",
"editCredentialAction": "Edytuj poświadczenia",
"failedToDeleteCredential": "Nie udało się usunąć poświadczeń",
"idBadge": "ID",
"keyBadge": "KLAWISZ",
"passwordBadge": "Osoby niepełnosprawne",
"renameFolder": "Zmień nazwę folderu",
"deleteFolder": "Usuń folder",
"deleteCredentialConfirm": "Usunąć poświadczenie „{{name}}”?",
"deletedCredential": "Usunięto {{name}}",
"deploySSHKeyTitle": "Wdróż klucz na hoście",
"loadingCredentials": "Ładowanie danych uwierzytelniających...",
"noCredentialsFound": "Nie znaleziono danych uwierzytelniających",
"noCredentialsMatchSearch": "Brak danych uwierzytelniających pasujących do wyszukiwania",
"addCredentialBtn": "Dodaj poświadczenia",
"failedToReorder": "Nie udało się zmienić kolejności poświadczeń",
"failedToMoveCredential": "Nie udało się przenieść danych uwierzytelniających",
"sortManual": "Manual (przeciągnij, aby zmienić kolejność)",
"customizeSidebar": "Dostosuj pasek boczny",
"customizeSidebarDescription": "Wybierz wygląd i zachowanie listy poświadczeń.",
"customizeDensityTitle": "Gęstość",
"densityComfortableDesc": "Jedno poświadczenie w każdym wierszu, z dodatkowymi szczegółami.",
"densityCompactDesc": "Jeden wiersz na poświadczenie w przypadku dłuższych list.",
"displayDensityComfortable": "Wygodny",
"displayDensityCompact": "Kompaktowy",
"customizeBehaviorTitle": "Zachowanie",
"showCredentialTags": "Pokaż tagi",
"showCredentialTagsDesc": "Wyświetlaj tagi na liście poświadczeń",
"actionsVisibility": "Akcje poświadczeń",
"actionsVisibilityDesc": "Gdy pojawią się przyciski połączenia i zarządzania dla każdego poświadczenia",
"actionsAlways": "Zawsze widoczny",
"actionsOnly": "Tylko połączenie, reszta po kliknięciu",
"actionsHover": "Pokaż po najechaniu kursorem",
"actionsClick": "Pokaż po kliknięciu",
"customizeSortHint": "Kolejność sortowania można ustawić w menu sortowania na pasku narzędzi.",
"expandActions": "Rozwiń działania",
"collapseActions": "Zwiń akcje",
"backToHosts": "Powrót do Gospodarzy",
"backToCredentials": "Powrót do danych uwierzytelniających",
"searchCredentialsPlaceholder": "Wyszukaj dane uwierzytelniające…",
"deployDialogTitle": "Wdróż klucz SSH",
"deployDialogDesc": "Wdróż {{name}} do kluczy autoryzowanych hosta.",
"targetHostLabel": "Host docelowy",
"selectHostOption": "Wybierz hosta...",
"deployingBtn": "Wdrażanie...",
"deployBtn": "Wdrożyć",
"keyDeployedSuccess": "Klucz wdrożony pomyślnie",
"failedToDeployKey": "Nie udało się wdrożyć klucza",
"folderRenamedTo": "Zmieniono nazwę folderu na „{{name}}”",
"failedToRenameFolder": "Nie udało się zmienić nazwy folderu",
"arrangeUnlockedSwitchedToManual": "Przeszedłem na sortowanie ręczne, aby zachować kolejność",
"arrangeUnlocked": "Odblokuj przeciąganie, aby zmienić kolejność"
},
"homepage": {
"title": "Strona główna",
"addWidget": "Dodaj widget",
"editWidget": "Edytuj widżet",
"deleteWidget": "Usuwać",
"widgetTypes": "Typy widżetów",
"serviceLink": "Łącze serwisowe",
"folder": "Falcówka",
"clock": "Zegar",
"notes": "Notatki",
"hostStatus": "Status hosta",
"bookmarkList": "Zakładki",
"zoomIn": "Powiększ",
"zoomOut": "Oddal",
"resetView": "Resetuj widok",
"lockLayout": "Układ blokady",
"unlockLayout": "Odblokuj układ",
"noWidgets": "Kliknij prawym przyciskiem myszy lub kliknij +, aby dodać pierwszy widżet",
"openFullView": "Otwórz pełny widok",
"previewTitle": "Podgląd strony głównej",
"cancel": "Anulować",
"save": "Ratować",
"title_label": "Tytuł",
"widgetTitlePlaceholder": "Tytuł widżetu (opcjonalnie)",
"url": "Adres URL",
"imageUrl": "Niestandardowy adres URL obrazu",
"imageUrlHint": "Pozostaw puste, aby automatycznie użyć ikony witryny",
"showImage": "Pokaż obraz",
"description": "Opis",
"color": "Kolor",
"icon": "Ikona",
"expanded": "Rozszerzone domyślnie",
"timezone": "Strefa czasowa",
"showSeconds": "Pokaż sekundy",
"format12h": "12-godzinny",
"format24h": "24-godzinny",
"content": "Treść",
"backgroundColor": "Kolor tła",
"host": "Gospodarz",
"showMetrics": "Pokaż metryki",
"links": "Spinki do mankietów",
"addLink": "Dodaj link",
"linkLabel": "Etykieta",
"linkUrl": "Adres URL",
"removeLink": "Usunąć",
"categoryLinks": "Spinki do mankietów",
"categoryInfo": "Informacje",
"categorySystem": "System",
"widgetServiceLinkDesc": "Klikalny kafelek łączący się z adresem URL usługi",
"widgetFolderDesc": "Kontener do grupowania powiązanych widżetów",
"widgetClockDesc": "Zegar na żywo z konfigurowalną strefą czasową",
"widgetNotesDesc": "Widżet notatek Markdown",
"widgetHostStatusDesc": "Pokazuje aktualne zużycie procesora, pamięci i dysku dla hosta SSH",
"widgetBookmarkListDesc": "Lista szybkich linków",
"copyLink": "Kopiuj link",
"linkCopied": "Link skopiowany!",
"location": "Lokalizacja",
"temperatureUnit": "Jednostka temperatury",
"showForecast": "Pokaż prognozę 3-dniową",
"scrolling": "Zezwól na przewijanie",
"feedUrl": "Adres URL kanału",
"maxItems": "Maksymalna liczba elementów",
"showDescription": "Pokaż opis",
"widgetWeatherName": "Pogoda",
"widgetWeatherDesc": "Pogoda na żywo dla dowolnej lokalizacji",
"widgetIframeName": "Osadzenie iFrame",
"widgetIframeDesc": "Osadź dowolny adres URL w ramce iframe",
"widgetRssName": "Kanał RSS",
"widgetRssDesc": "Wyświetlaj elementy z kanału RSS lub Atom",
"dragToFolder": "Przeciągnij widżety tutaj lub użyj +, aby je dodać",
"showDisk": "Pokaż użycie dysku",
"addToFolder": "Dodaj widget do folderu",
"noHostSelected": "Nie wybrano hosta",
"metricsNotAvailable": "Dane niedostępne",
"selectHost": "Wybierz hosta...",
"displayedMetrics": "Wyświetlane metryki",
"metricCpu": "Procesor",
"metricMemory": "Pamięć",
"metricDisk": "Dysk",
"metricUptime": "Czas sprawności",
"metricSystem": "System",
"metricOs": "System operacyjny",
"metricKernel": "Jądro",
"metricHostname": "Nazwa hosta",
"metricNetwork": "Sieć",
"metricProcesses": "Procesy",
"metricProcessesTotal": "całkowity",
"metricProcessesRunning": "działanie",
"categoryMonitoring": "Monitorowanie",
"loading": "Załadunek...",
"noData": "Brak dostępnych danych",
"allClear": "Wszystko jasne",
"acknowledgeAlert": "Uznawać",
"noPingUrls": "Brak skonfigurowanych adresów URL",
"pingLabel": "Etykieta",
"addPingUrl": "Dodaj adres URL",
"showLatency": "Pokaż opóźnienie",
"refreshInterval": "Interwał odświeżania",
"seconds": "towary drugiej jakości",
"filterActivityTypes": "Typy filtrów",
"filterTypesHint": "Pozostaw puste, aby wyświetlić wszystkie",
"showTimestamp": "Pokaż znacznik czasu",
"uptimeUnavailable": "Czas pracy niedostępny",
"uptimeLabel": "Czas sprawności",
"overviewVersion": "Wersja",
"overviewUpdate": "Aktualny",
"overviewUpdateLabel": "Aktualizacja",
"overviewUpdateAvailable": "Dostępna aktualizacja",
"overviewDatabase": "Baza danych",
"overviewUptime": "Czas sprawności",
"noHosts": "Brak skonfigurowanych hostów",
"hostGridHosts": "Zastępy niebieskie",
"hostGridAllHint": "Pozostaw puste, aby wyświetlić wszystkich hostów",
"columns": "Kolumny",
"showIp": "Pokaż adres IP",
"connectionType": "Typ połączenia",
"layout": "Układ",
"showStatus": "Pokaż status",
"showHostName": "Pokaż nazwę hosta",
"noDockerActivity": "Brak aktywności Dockera",
"noActivity": "Brak aktywności",
"showAcknowledged": "Pokaż potwierdzone",
"showCurrentValue": "Pokaż wartość bieżącą",
"chartMetric": "Metryczny",
"metricRange": "Zakres",
"widgetMetricsChartName": "Wykres metryk",
"widgetMetricsChartDesc": "Historyczny wykres procesora, pamięci, dysku lub sieci dla hosta",
"widgetHostGridName": "Siatka hosta",
"widgetHostGridDesc": "Widok siatki statusów hostów SSH",
"widgetAlertFeedName": "Kanał alertów",
"widgetAlertFeedDesc": "Ostrzeżenia na żywo z potwierdzeniem obsługi",
"widgetPingStatusName": "Status pingu",
"widgetPingStatusDesc": "Status pingu HTTP dla jednego lub większej liczby adresów URL",
"widgetRecentActivityName": "Ostatnia aktywność",
"widgetRecentActivityDesc": "Przewijalny kanał z informacjami o ostatniej aktywności Termix",
"widgetTermixUptimeName": "Czas sprawności Termix",
"widgetTermixUptimeDesc": "Licznik czasu pracy na żywo dla serwera Termix",
"widgetSystemOverviewName": "Przegląd systemu",
"widgetSystemOverviewDesc": "Wersja Termix, stan bazy danych i dostępność w skrócie",
"widgetSshQuickConnectName": "Szybkie połączenie SSH",
"widgetSshQuickConnectDesc": "Przyciski otwierania sesji SSH jednym kliknięciem",
"widgetDockerActivityName": "Aktywność Dockera",
"widgetDockerActivityDesc": "Ostatnie zdarzenia dotyczące kontenerów Docker na wszystkich hostach",
"widgetCalendarName": "Kalendarz",
"widgetCalendarDesc": "Miesięczny kalendarz z wyróżnionym dniem dzisiejszym",
"widgetCountdownName": "Odliczanie",
"widgetCountdownDesc": "Odliczanie do daty docelowej",
"widgetSearchBarName": "Pasek wyszukiwania",
"widgetSearchBarDesc": "Szybki widżet wyszukiwania w sieci",
"widgetTextBannerName": "Baner tekstowy",
"widgetTextBannerDesc": "Pogrubiona etykieta lub nagłówek sekcji dla płótna",
"widgetImageWidgetName": "Obraz",
"widgetImageWidgetDesc": "Wyświetl obraz z adresu URL",
"widgetMarkdownNotesName": "Notatki Markdown",
"widgetMarkdownNotesDesc": "Bogate notatki z wbudowanym renderowaniem znaczników",
"widgetCustomApiName": "Niestandardowe API",
"widgetCustomApiDesc": "Pobieranie i wyświetlanie danych z dowolnego interfejsu API JSON",
"widgetServiceGridName": "Sieć usług",
"widgetServiceGridDesc": "Konfigurowalna siatka łączy kafelków usług",
"widgetDashboardLinksName": "Linki do pulpitu nawigacyjnego",
"widgetDashboardLinksDesc": "Wyświetlaj skonfigurowane łącza usług z poziomu pulpitu nawigacyjnego",
"widgetSearchLinksName": "Skróty wyszukiwania",
"widgetSearchLinksDesc": "Szybkie przyciski skrótów wyszukiwania z wbudowanym wprowadzaniem danych",
"widgetLinkTreeName": "Drzewo linków",
"widgetLinkTreeDesc": "Zgrupowane sekcje linków z nagłówkami",
"calMon": "Mo",
"calTue": "Tu",
"calWed": "My",
"calThu": "Cz",
"calFri": "Ks.",
"calSat": "Sa",
"calSun": "Su",
"startOnMonday": "Zacznij tydzień w poniedziałek",
"countdownNoDate": "Nie ustalono daty docelowej",
"countdownPast": "Wydarzenie minęło",
"countdownDays": "dni",
"countdownHours": "godz.",
"countdownMinutes": "min",
"countdownSeconds": "sek",
"countdownLabel": "Etykieta",
"countdownLabelPlaceholder": "np. Dzień premiery",
"countdownShowDays": "Dni pokazowe",
"countdownShowHours": "Godziny otwarcia",
"targetDate": "Data docelowa",
"searchEngine": "Wyszukiwarka",
"customSearchUrl": "Niestandardowy adres URL wyszukiwania",
"searchPlaceholder": "Szukaj...",
"searchGo": "Iść",
"searchPlaceholderLabel": "Tekst zastępczy",
"searchPlaceholderHint": "Tekst wyświetlany w polu wyszukiwania",
"openInNewTab": "Otwórz w nowej karcie",
"searchQueryPlaceholder": "Wprowadź zapytanie...",
"noSearchShortcuts": "Brak skonfigurowanych skrótów",
"addSearchShortcut": "Dodaj skrót",
"fontSize": "Rozmiar czcionki",
"textAlign": "Wyrównanie tekstu",
"fontWeight": "Grubość czcionki",
"clearColor": "Czysty kolor",
"imageFit": "Dopasowanie obrazu",
"imageLinkUrl": "Adres URL łącza",
"noImage": "Nie ustawiono adresu URL obrazu",
"altText": "Tekst alternatywny",
"altTextPlaceholder": "Opisz obraz",
"renderMarkdown": "Renderuj Markdown",
"displayMode": "Tryb wyświetlania",
"displayField": "Pole wyświetlania",
"jsonPath": "Ścieżka JSON",
"customApiLabel": "Etykieta",
"customApiLabelPlaceholder": "np. Temperatura",
"customApiUnit": "Jednostka",
"customApiNoUrl": "Brak skonfigurowanego adresu URL API",
"customApiError": "Nie udało się pobrać",
"customApiNotArray": "Odpowiedź nie jest tablicą",
"addService": "Dodaj usługę",
"showLabels": "Pokaż etykiety",
"iconSize": "Rozmiar ikony",
"noDashboardLinks": "Brak skonfigurowanych łączy do pulpitu nawigacyjnego",
"noLimit": "Bez limitu",
"sectionHeading": "Nagłówek sekcji",
"addSection": "Dodaj sekcję",
"compactMode": "Tryb kompaktowy",
"showDetailed": "Pokaż szczegółowe",
"selectHosts": "Wybierz gospodarzy",
"allHosts": "Wszyscy gospodarze",
"listLayout": "Lista",
"gridLayout": "Siatka",
"terminal": "Terminal",
"files": "Akta",
"docker": "Doker",
"range15m": "15 minut",
"range1h": "1 godzina",
"range6h": "6 godzin",
"range24h": "24 godziny",
"metricNetRx": "Pobieranie sieciowe",
"metricNetTx": "Przesyłanie przez sieć",
"severityFilter": "Filtr ważności",
"filterAll": "Wszystko",
"accentColor": "Kolor akcentowy",
"widgetSshTerminalName": "Terminal SSH",
"widgetSshTerminalDesc": "Terminal SSH połączony ze skonfigurowanym hostem",
"sshTerminalNoHost": "Brak skonfigurowanego hosta",
"sshTerminalConnect": "Łączyć",
"sshTerminalAutoConnect": "Automatyczne łączenie przy obciążeniu",
"widgetQuickConnectName": "Szybkie połączenie",
"widgetQuickConnectDesc": "Przyciski uruchamiania jednym kliknięciem dla dowolnego typu połączenia między hostami",
"connectionTypes": "Typy połączeń",
"connType_terminal": "Terminal",
"connType_files": "Menedżer plików",
"connType_docker": "Doker",
"connType_tunnel": "Tunel",
"connType_host-metrics": "Metryki hosta",
"connType_rdp": "RDP",
"connType_vnc": "VNC",
"connType_telnet": "Telnet",
"widgetFileManagerName": "Menedżer plików",
"widgetFileManagerDesc": "Wbudowany menedżer plików SFTP dla skonfigurowanego hosta",
"widgetDockerName": "Menedżer Dockera",
"widgetDockerDesc": "Wbudowany menedżer kontenerów Docker dla skonfigurowanego hosta",
"widgetTunnelName": "Menedżer tunelu",
"widgetTunnelDesc": "Wbudowany menedżer tunelu SSH dla skonfigurowanego hosta",
"widgetNoHostSelected": "Brak skonfigurowanego hosta"
},
"serverConfig": {
"title": "Konfiguracja serwera",
"description": "Skonfiguruj adres URL serwera Termix, aby połączyć się z usługami zaplecza",
"serverUrl": "Adres URL serwera",
"enterServerUrl": "Proszę podać adres URL serwera",
"saveFailed": "Nie udało się zapisać konfiguracji",
"saveError": "Błąd podczas zapisywania konfiguracji",
"saving": "Oszczędność...",
"saveConfig": "Zapisz konfigurację",
"helpText": "Wprowadź adres URL, pod którym działa Twój serwer Termix (np. http://localhost:30001 lub https://your-server.com)",
"changeServer": "Zmień serwer",
"mustIncludeProtocol": "Adres URL serwera musi zaczynać się od http:// lub https://",
"allowInvalidCertificate": "Zezwól na nieprawidłowy certyfikat",
"allowInvalidCertificateDesc": "Używaj tylko w przypadku zaufanych serwerów hostowanych samodzielnie, z certyfikatami podpisanymi samodzielnie lub opartymi na adresie IP.",
"useEmbedded": "Użyj serwera lokalnego",
"embeddedDesc": "Uruchom Termix za pomocą wbudowanego serwera lokalnego (serwer zdalny nie jest potrzebny)",
"embeddedConnecting": "Łączenie z serwerem lokalnym...",
"embeddedNotReady": "Serwer lokalny nie jest jeszcze gotowy. Poczekaj chwilę i spróbuj ponownie.",
"localServer": "Serwer lokalny",
"savedServers": "Zapisane serwery",
"noSavedServers": "Brak zapisanych serwerów",
"removeServer": "Usunąć"
},
"migrationNotice": {
"title": "Termix Desktop działa teraz autonomicznie",
"body1": "Ta aplikacja łączyła się bezpośrednio z serwerem Termix. Została przeprojektowana tak, aby działać w pełni samodzielnie, przechowując hosty i dane uwierzytelniające lokalnie, dzięki czemu działa w trybie offline. Dwukierunkowa synchronizacja z samodzielnie hostowanym serwerem Termix jest teraz opcjonalna.",
"body2": "Twoje obecne hosty i dane uwierzytelniające są nadal na {{url}}. Włącz synchronizację zdalną i ponownie połącz się z tym serwerem, aby je przywrócić i zapewnić synchronizację w przyszłości.",
"dismiss": "Nie teraz",
"setUpSync": "Skonfiguruj synchronizację zdalną"
},
"remoteSync": {
"title": "Zdalna synchronizacja",
"description": "Opcjonalnie połącz tę aplikację desktopową z samodzielnie hostowanym serwerem Termix, aby synchronizować hosty, dane uwierzytelniające i fragmenty kodu na różnych urządzeniach. Aplikacja zawsze działa w pełni offline, niezależnie od tego, czy masz połączenie z siecią, czy nie.",
"notConnected": "Nie połączony",
"connected": "Połączony",
"connectedTo": "Połączono z {{url}}",
"lastSynced": "Ostatnia synchronizacja {{time}}",
"neverSynced": "Nigdy nie zsynchronizowane",
"syncError": "Błąd synchronizacji: {{message}}",
"needsReauth": "Logowanie wygasło",
"connectButton": "Połącz się z serwerem",
"disconnectButton": "Odłączyć",
"syncNowButton": "Synchronizuj teraz",
"syncing": "Synchronizacja...",
"serverUrl": "Adres URL serwera",
"enterServerUrl": "Proszę podać adres URL serwera",
"mustIncludeProtocol": "Adres URL serwera musi zaczynać się od http:// lub https://",
"connectionTestFailed": "Nie można nawiązać połączenia z serwerem Termix pod tym adresem URL",
"allowInvalidCertificate": "Zezwól na nieprawidłowy certyfikat",
"allowInvalidCertificateDesc": "Używaj tylko w przypadku zaufanych serwerów hostowanych samodzielnie, z certyfikatami podpisanymi samodzielnie lub opartymi na adresie IP.",
"savedServers": "Zapisane serwery",
"removeServer": "Usunąć",
"continueButton": "Kontynuować",
"cancelButton": "Anulować",
"signInTitle": "Zaloguj się do {{url}}",
"originTitle": "Pochodzenie połączenia",
"originDescription": "Wybierz domyślne źródło połączeń SSH. Można to zmienić dla każdego hosta.",
"originLocal": "To urządzenie (sieć lokalna)",
"originRemote": "Serwer zdalny",
"bannerReconnect": "Na nowo połączyć",
"bannerMessage": "Zdalna synchronizacja wymaga ponownego uwierzytelnienia"
},
"versionCheck": {
"error": "Błąd sprawdzania wersji",
"checkFailed": "Nie udało się sprawdzić dostępności aktualizacji",
"upToDate": "Aplikacja jest aktualna",
"currentVersion": "Używasz wersji {{version}}",
"updateAvailable": "Aktualizacja dostępna",
"updateLinkLabel": "Dostępna aktualizacja — otwórz notatki dotyczące wydania w serwisie GitHub",
"newVersionAvailable": "Dostępna jest nowa wersja! Używasz wersji {{current}}, ale dostępna jest wersja {{latest}}.",
"betaVersion": "Wersja beta",
"betaVersionDesc": "Używasz wersji {{current}}, która jest nowsza od najnowszej stabilnej wersji {{latest}}.",
"releasedOn": "Wydano {{date}}",
"downloadUpdate": "Pobierz aktualizację",
"checking": "Sprawdzanie aktualizacji...",
"checkUpdates": "Sprawdź aktualizacje",
"checkingUpdates": "Sprawdzanie aktualizacji...",
"updateRequired": "Wymagana aktualizacja"
},
"common": {
"close": "Zamknąć",
"minimize": "Zminimalizować",
"online": "W sieci",
"offline": "Niedostępny",
"unknown": "Nieznany",
"continue": "Kontynuować",
"maintenance": "Konserwacja",
"degraded": "Zdegradowany",
"error": "Błąd",
"warning": "Ostrzeżenie",
"unsavedChanges": "Niezapisane zmiany",
"dismiss": "Odrzucać",
"more": "Więcej",
"loading": "Załadunek...",
"optional": "Fakultatywny",
"connect": "Łączyć",
"copied": "Skopiowano",
"connecting": "Złączony...",
"updateAvailable": "Aktualizacja dostępna",
"appName": "Termix",
"openInNewTab": "Otwórz w nowej karcie",
"noReleases": "Brak wydań",
"updatesAndReleases": "Aktualizacje i wydania",
"newVersionAvailable": "Dostępna jest nowa wersja ({{version}}).",
"failedToFetchUpdateInfo": "Nie udało się pobrać informacji o aktualizacji",
"preRelease": "Przedpremiera",
"noReleasesFound": "Nie znaleziono żadnych wydań.",
"cancel": "Anulować",
"username": "Nazwa użytkownika",
"login": "Login",
"logout": "Wyloguj",
"register": "Rejestr",
"password": "Hasło",
"confirmPassword": "Potwierdź hasło",
"back": "Z powrotem",
"save": "Ratować",
"saving": "Oszczędność...",
"delete": "Usuwać",
"rename": "Przemianować",
"edit": "Redagować",
"add": "Dodać",
"confirm": "Potwierdzać",
"no": "NIE",
"or": "LUB",
"next": "Następny",
"previous": "Poprzedni",
"refresh": "Odświeżać",
"language": "Język",
"checking": "Kontrola...",
"checkingDatabase": "Sprawdzanie połączenia z bazą danych...",
"checkingAuthentication": "Sprawdzanie uwierzytelniania...",
"backendReconnected": "Przywrócono połączenie z serwerem",
"connectionDegraded": "Utracono połączenie z serwerem, odzyskiwanie…",
"reload": "Przeładować",
"remove": "Usunąć",
"create": "Tworzyć",
"update": "Aktualizacja",
"copy": "Kopia",
"copyFailed": "Nie udało się skopiować do schowka",
"maximize": "Wyolbrzymiać",
"restore": "Przywrócić",
"of": "z",
"saved": "Zapisano",
"deleted": "Usunięto",
"deleteFailed": "Nie udało się usunąć",
"saveFailed": "Nie udało się zapisać",
"required": "Wymagany"
},
"onboarding": {
"stepCounter": "Krok {{current}} z {{total}}",
"skip": "Pomiń konfigurację",
"next": "Następny",
"finish": "Zacznij",
"welcomeTitle": "Witamy w Termix",
"welcomeIntro": "Termix zarządza Twoimi serwerami z jednego miejsca. Ta konfiguracja zajmuje około minuty i nic nie jest tu trwałe.",
"welcome_hosts": "Zapisz swoje serwery",
"welcome_hosts_desc": "Przechowuj wszystkie zarządzane przez siebie maszyny na jednej liście.",
"welcome_terminal": "Połącz się natychmiast",
"welcome_terminal_desc": "Otwórz terminal w karcie, nie używaj osobnego klienta SSH.",
"welcome_files": "Przeglądaj i edytuj pliki",
"welcome_files_desc": "Przesyłaj, pobieraj i edytuj pliki zdalne.",
"presetTitle": "Ile chcesz, żeby było na ekranie?",
"presetIntro": "Termix może być tak prosty lub tak szczegółowy, jak chcesz. Wybierz punkt wyjścia.",
"presetChangeLater": "Możesz później przełączać się między ustawieniami lub zmieniać pojedyncze ustawienia w Ustawieniach, w obszarze Interfejs.",
"appearanceTitle": "Uczyń to swoim",
"appearanceIntro": "Wybierz motyw, kolor akcentujący i język. Wszystkie trzy ustawienia można później zmienić w Ustawieniach.",
"featuresTitle": "Co jeszcze robi Termix",
"featuresIntro": "Każdy zapisany serwer można otworzyć w więcej niż jednym terminalu. Oto, co kryje się za ikonami po lewej stronie.",
"feature_files": "Menedżer plików",
"feature_files_desc": "Przeglądaj, przesyłaj, pobieraj i edytuj pliki przez SFTP bez opuszczania aplikacji.",
"feature_desktop": "Zdalny pulpit",
"feature_desktop_desc": "Otwórz sesje RDP, VNC i Telnet w tej samej karcie co SSH.",
"feature_tunnels": "Tunele",
"feature_tunnels_desc": "Przekieruj porty przez serwer, aby dotrzeć do usług, które nie są narażone.",
"feature_docker": "Doker",
"feature_docker_desc": "Przeglądaj kontenery, czytaj logi i śledź statystyki na dowolnym hoście, na którym działa Docker.",
"feature_snippets": "Fragmenty",
"feature_snippets_desc": "Zapisuj często uruchamiane polecenia i wysyłaj je do terminala jednym kliknięciem.",
"feature_automations": "Automatyzacje",
"feature_automations_desc": "Uruchamiaj kroki automatycznie, gdy coś się wydarzy, i otrzymuj powiadomienia.",
"feature_metrics": "Metryki i alerty",
"feature_metrics_desc": "Monitoruj zużycie procesora, pamięci i dysku na przestrzeni czasu i otrzymuj powiadomienia, gdy ulegną awarii.",
"featuresRailHint": "Nie potrzebujesz żadnej z tych opcji? Ukryj dowolną ikonę na pasku bocznym w Ustawieniach, w sekcji Nawigacja.",
"workflowTitle": "Poruszaj się szybciej",
"workflowIntro": "Kilka nawyków, które oszczędzają najwięcej czasu, gdy masz już kilka serwerów.",
"workflow_palette": "Paleta poleceń",
"workflow_palette_desc": "Przejdź do dowolnego serwera lub akcji, wpisując tekst. Naciśnij Shift dwa razy, aby je otworzyć.",
"workflow_split": "Podzielony ekran",
"workflow_split_desc": "Wyświetlaj do czterech kart obok siebie, aby przeglądać dzienniki podczas pracy.",
"workflow_dock": "Panel boczny",
"workflow_dock_desc": "Kliknij środkowym lub prawym przyciskiem myszy ikonę na pasku bocznym, aby otworzyć ją jako kartę lub przypiąć po prawej stronie.",
"workflow_workspaces": "Przestrzenie robocze",
"workflow_workspaces_desc": "Zapisz zestaw otwartych kart i otwórz cały układ później.",
"securityTitle": "Dbanie o bezpieczeństwo Twoich danych logowania",
"securityIntro": "Termix przechowuje Twoje dane uwierzytelniające, warto więc poświęcić chwilę, aby zobaczyć, jak to działa.",
"security_credentials": "Wielokrotnego użytku dane uwierzytelniające",
"security_credentials_desc": "Zapisz klucz lub hasło raz i przypisz je do tylu serwerów, ilu chcesz.",
"security_twofa": "Dwuskładnikowe uwierzytelnianie i klucze dostępu",
"security_twofa_desc": "Dodaj TOTP lub klucz dostępu do swojego konta w Ustawieniach, w sekcji Bezpieczeństwo.",
"security_identity": "Identyfikator Termix",
"security_identity_desc": "Zamiast kopiować klucze na każdy serwer, wydawaj krótkotrwałe certyfikaty SSH.",
"security_sharing": "Partycypujący",
"security_sharing_desc": "Udostępnij innym użytkownikom dostęp do serwera bez podawania hasła.",
"securityEncryptionNote": "Dane uwierzytelniające są szyfrowane przed ich zapisaniem i odszyfrowywane tylko wtedy, gdy połączenie ich wymaga.",
"doneTitle": "Wszystko gotowe",
"doneHeading": "Konfiguracja ukończona",
"doneDesc": "Wybierz serwer z paska bocznego, aby otworzyć terminal, przeglądać jego pliki lub zobaczyć jego metryki.",
"done_settings": "Zmień cokolwiek później",
"done_settings_desc": "Motywy, gęstość układu i wyświetlane ikony — wszystko to znajdziesz w Ustawieniach.",
"done_rerun": "Chcesz to jeszcze raz?",
"done_rerun_desc": "Otwórz Ustawienia, przejdź do Interfejsu i wybierz Uruchom konfigurację, aby ponownie przejść przez te kroki.",
"done_desktop": "Aplikacja na komputer",
"done_desktop_desc": "Termix działa jako aplikacja komputerowa w systemach Windows, macOS i Linux.",
"done_desktop_link": "Pobierz aplikację na komputer",
"done_mobile": "Aplikacja mobilna",
"done_mobile_desc": "Zabierz swoje serwery ze sobą na iOS i Androida.",
"done_mobile_link": "Pobierz aplikację mobilną",
"done_docs": "Pełna dokumentacja",
"done_docs_desc": "Przewodniki po każdej funkcji, także tych nieujętych w tym artykule.",
"done_docs_link": "Otwórz dokumenty",
"done_cli": "Narzędzie wiersza poleceń",
"done_cli_desc": "Zarządzaj swoimi serwerami z terminala i używaj Termixa we własnych skryptach.",
"done_cli_link": "Otwórz dokumentację CLI",
"aiTitle": "Asystent AI",
"aiIntro": "Termix może zawierać opcjonalnego asystenta AI. Możesz to później zmienić w ustawieniach.",
"aiEnableTitle": "Włącz to",
"aiEnableDesc": "Dodaje asystenta, który odczytuje Twoją konfigurację i sugeruje zmiany, które musisz zatwierdzić. Wymaga dostawcy, którego wskażesz, takiego jak lokalny Ollama.",
"aiSkipTitle": "Zostaw to",
"aiSkipDesc": "Termix działa tak jak teraz. Asystent pozostaje ukryty.",
"aiNote": "Dopóki nie dodasz dostawcy i nie wyślesz wiadomości, nic nie zostanie wysłane."
},
"nav": {
"home": "Dom",
"terminal": "Terminal",
"localTerminal": "Terminal lokalny",
"docker": "Doker",
"tunnels": "Tunele",
"fileManager": "Menedżer plików",
"serverStats": "Metryki hosta",
"hostMetrics": "Metryki hosta",
"admin": "Administrator",
"termixId": "ID",
"userProfile": "Profil użytkownika",
"splitScreen": "Podzielony ekran",
"confirmClose": "Zamknąć tę aktywną sesję?",
"close": "Zamknąć",
"cancel": "Anulować",
"sshManager": "Menedżer SSH",
"cannotSplitTab": "Nie można podzielić tej karty",
"hostTabTitle": "{{username}}@{{ip}}:{{port}}",
"copyPassword": "Kopiuj hasło",
"copySudoPassword": "Skopiuj hasło Sudo",
"passwordCopied": "Hasło skopiowane do schowka",
"noPasswordAvailable": "Brak dostępnego hasła",
"failedToCopyPassword": "Nie udało się skopiować hasła",
"refreshTab": "Odśwież połączenie",
"renameTab": "Zmień nazwę karty",
"openFileManager": "Otwórz Menedżera Plików",
"dashboard": "Panel",
"networkGraph": "Wykres sieciowy",
"tmuxMonitor": "Monitor Tmux",
"homepage": "Strona główna",
"quickConnect": "Szybkie połączenie",
"sshTools": "Narzędzia SSH",
"history": "Historia",
"sessionLogs": "Dzienniki sesji",
"openAsTabHint": "Ctrl+kliknięcie lub środkowy przycisk myszy, aby otworzyć jako kartę",
"openAsTab": "Otwórz jako kartę",
"openInRightDock": "Otwórz w prawym doku",
"closeRightDock": "Zamknij prawy dok",
"toggleRightDock": "Przełącz prawy dok",
"multiPanelHintTitle": "Praca z więcej niż jednym panelem",
"multiPanelHintBody": "Pozostaw ten panel otwarty, gdy pasek boczny jest używany do czegoś innego. Dwa sposoby na jego przeniesienie:",
"multiPanelHintTabHow": "Kliknij ikonę szyny, naciskając klawisz Ctrl, lub użyj przycisku w tym nagłówku.",
"multiPanelHintDockHow": "Kliknij prawym przyciskiem myszy ikonę szyny lub użyj ikony panelu na pasku kart.",
"sidebarSettings": "Ustawienia paska bocznego...",
"hosts": "Zastępy niebieskie",
"snippets": "Fragmenty",
"macros": "Makra",
"fleets": "Floty",
"automations": "Automatyzacje",
"workspaces": "Przestrzenie robocze",
"hostManager": "Menedżer hosta",
"credentials": "Referencje",
"connections": "Znajomości",
"alerts": "Alerty",
"serial": "Seryjny",
"roleAdministrator": "Administrator",
"roleUser": "Użytkownik",
"ai": "Sztuczna inteligencja"
},
"hosts": {
"hosts": "Zastępy niebieskie",
"noHosts": "Brak hostów SSH",
"retry": "Spróbować ponownie",
"refresh": "Odświeżać",
"optional": "Fakultatywny",
"downloadSample": "Pobierz próbkę",
"failedToDeleteHost": "Nie udało się usunąć {{name}}",
"importSkipExisting": "Importuj (pomiń istniejące)",
"importSSHConfig": "Importuj z konfiguracji SSH",
"connectionDetails": "Szczegóły połączenia",
"ssh": "SSH",
"telnet": "Telnet",
"remoteDesktop": "Pulpit zdalny",
"port": "Port",
"username": "Nazwa użytkownika",
"folder": "Falcówka",
"tags": "Tagi",
"pin": "Szpilka",
"addHost": "Dodaj hosta",
"editHost": "Edytuj hosta",
"cloneHost": "Klon hosta",
"enableTerminal": "Włącz terminal",
"enableTunnel": "Włącz tunel",
"enableFileManager": "Włącz Menedżera plików",
"enableDocker": "Włącz Docker",
"defaultPath": "Domyślna ścieżka",
"connection": "Połączenie",
"upload": "Wgrywać",
"authentication": "Uwierzytelnianie",
"password": "Hasło",
"passwordSaved": "Hasło zapisane, wpisz, aby zmienić",
"key": "Klawisz",
"credential": "Mandat",
"none": "Nic",
"sshPrivateKey": "Klucz prywatny SSH",
"keyType": "Typ klucza",
"uploadFile": "Prześlij plik",
"tabGeneral": "Ogólny",
"tabSsh": "SSH",
"tabTerminal": "Terminal",
"tabRdp": "RDP",
"tabVnc": "VNC",
"tabTunnels": "Tunele",
"tabDocker": "Doker",
"tabFiles": "Akta",
"tabStats": "Metryki hosta",
"tabHostMetrics": "Metryki hosta",
"tabTelnet": "Telnet",
"tabSharing": "Partycypujący",
"tabAuthentication": "Uwierzytelnianie",
"terminal": "Terminal",
"tunnel": "Tunel",
"fileManager": "Menedżer plików",
"serverStats": "Metryki hosta",
"status": "Status",
"folderRenamed": "Folder „{{oldName}}” został pomyślnie przemianowany na „{{newName}}”",
"failedToRenameFolder": "Nie udało się zmienić nazwy folderu",
"unsavedChangesDescription": "Zmiany w ustawieniach hosta nie zostały zapisane. Czy je odrzucić?",
"keepEditing": "Kontynuuj edycję",
"discardChanges": "Odrzuć zmiany",
"movedToFolder": "Przeniesiono {{count}} hostów do „{{folder}}”",
"editHostTooltip": "Edytuj hosta",
"statusChecks": "Sprawdzanie statusu",
"metricsCollection": "Zbieranie metryk",
"metricsInterval": "Interwał zbierania metryk",
"metricsIntervalDesc": "Jak często zbierać statystyki serwera (5 sek. - 1 godz.)",
"behavior": "Zachowanie",
"themePreview": "Podgląd motywu",
"theme": "Temat",
"fontFamily": "Rodzina czcionek",
"fontSize": "Rozmiar czcionki",
"letterSpacing": "Odstępy między literami",
"lineHeight": "Wysokość linii",
"cursorStyle": "Styl kursora",
"cursorBlink": "Miganie kursora",
"scrollbackBuffer": "Bufor przewijania",
"bellStyle": "Styl dzwonka",
"rightClickSelectsWord": "Kliknięcie prawym przyciskiem myszy zaznacza słowo",
"fastScrollModifier": "Modyfikator szybkiego przewijania",
"fastScrollSensitivity": "Szybka czułość przewijania",
"sshAgentForwarding": "Przekierowywanie agenta SSH",
"backspaceMode": "Tryb Backspace",
"startupSnippet": "Fragment kodu startowego",
"selectSnippet": "Wybierz fragment",
"forceKeyboardInteractive": "Wymuś klawiaturę interaktywną",
"overrideCredentialUsername": "Zastąp nazwę użytkownika poświadczeń",
"overrideCredentialUsernameDesc": "Użyj nazwy użytkownika określonej powyżej zamiast nazwy użytkownika podanej w poświadczeniu",
"oidcUsernameHint": "Użyj $oidc.preferred_username, aby zastąpić swoją nazwę logowania OIDC.",
"tailscaleUsernameHint": "Musi to być użytkownik systemu Unix, któremu Twoja tożsamość Tailscale została przypisana na liście kontroli dostępu SSH sieci tailnet, niekoniecznie musi to być użytkownik root.",
"jumpHostChain": "Łańcuch hosta skoku",
"portKnocking": "Port Knocking",
"addKnock": "Dodaj port",
"addProxyNode": "Dodaj węzeł",
"proxyNode": "Węzeł proxy",
"proxyType": "Typ serwera proxy",
"quickActions": "Szybkie akcje",
"sudoPasswordAutoFill": "Automatyczne uzupełnianie hasła Sudo",
"sudoPassword": "Hasło Sudo",
"keepaliveInterval": "Interwał podtrzymywania aktywności (ms)",
"moshCommand": "Dowództwo MOSH",
"environmentVariables": "Zmienne środowiskowe",
"addVariable": "Dodaj zmienną",
"docker": "Doker",
"copyTerminalUrl": "Kopiuj adres URL terminala",
"copyFileManagerUrl": "Kopiuj adres URL Menedżera plików",
"copyRemoteDesktopUrl": "Kopiuj adres URL pulpitu zdalnego",
"failedToConnect": "Nie udało się połączyć z konsolą",
"connect": "Łączyć",
"disconnect": "Odłączyć",
"start": "Start",
"enableStatusCheck": "Włącz sprawdzanie statusu",
"enableMetrics": "Włącz metryki",
"bulkUpdateFailed": "Aktualizacja zbiorcza nie powiodła się",
"selectAll": "Zaznacz wszystko",
"deselectAll": "Odznacz wszystko",
"protocols": "Protokoły",
"secureShell": "Bezpieczna powłoka",
"virtualNetwork": "Sieć wirtualna",
"unencryptedShell": "Niezaszyfrowana powłoka",
"addressIp": "Adres / IP",
"friendlyName": "Przyjazna nazwa",
"macAddress": "Adres MAC",
"wolBroadcastAddress": "Adres rozgłoszeniowy WoL",
"wolBroadcastAddressDesc": "Opcjonalne ukierunkowane rozgłaszanie dla sieci Docker/routed (np. 192.168.1.255). Pozostaw puste, aby użyć 255.255.255.255.",
"folderAndAdvanced": "Folder i zaawansowane",
"showAdvancedSettings": "Pokaż ustawienia zaawansowane",
"hideAdvancedSettings": "Ukryj ustawienia zaawansowane",
"privateNotes": "Prywatne notatki",
"privateNotesPlaceholder": "Szczegóły dotyczące tego serwera...",
"pinToTop": "Przypnij do góry",
"pinToTopDesc": "Zawsze pokazuj tego hosta na górze listy",
"portKnockingSequence": "Sekwencja pukania do portu",
"addKnockBtn": "Dodaj pukanie",
"noPortKnocking": "Nie skonfigurowano funkcji port knocking.",
"knockPort": "Knock Port",
"protocol": "Protokół",
"delayAfterMs": "Opóźnienie po (ms)",
"useSocks5Proxy": "Użyj serwera proxy SOCKS5",
"useSocks5ProxyDesc": "Przekieruj połączenie przez serwer proxy",
"connectionOrigin": "Pochodzenie połączenia",
"connectionOriginDesc": "Skąd pochodzi połączenie SSH tego hosta. Zastępuje domyślne globalne ustawienie aplikacji na komputerze.",
"connectionOriginDefault": "Użyj domyślnego",
"connectionOriginLocal": "To urządzenie (sieć lokalna)",
"connectionOriginRemote": "Serwer zdalny",
"proxyHost": "Host proxy",
"proxyPort": "Port proxy",
"proxyUsername": "Nazwa użytkownika proxy",
"proxyPassword": "Hasło proxy",
"proxySingleMode": "Pojedynczy serwer proxy",
"proxyChainMode": "Łańcuch proxy",
"you": "Ty",
"jumpHostChainLabel": "Łańcuch hosta skoku",
"addJumpBtn": "Dodaj skok",
"noJumpHosts": "Nie skonfigurowano żadnych hostów przeskoku.",
"selectAServer": "Wybierz serwer...",
"sshPort": "Port SSH",
"authMethod": "Metoda uwierzytelniania",
"authenticationMethod": "Metoda uwierzytelniania",
"authenticationMethodDesc": "Wybierz metodę, której Termix będzie używać do uwierzytelniania tego połączenia SSH. Inne metody nie będą automatycznie wypróbowywane.",
"storedCredential": "Zapisane dane uwierzytelniające",
"selectACredential": "Wybierz dane uwierzytelniające...",
"vaultProfile": "Profil sygnatariusza Vault",
"selectAVaultProfile": "Wybierz profil Vault...",
"vaultProfileHint": "Ustawienia pochodzą z profilu współdzielonego. Po połączeniu zalogujesz się do Vault przez OIDC. Nie są przechowywane żadne sekrety.",
"vaultNewProfile": "Nowy profil",
"vaultManageProfiles": "Zarządzaj profilami Vault",
"vaultAddrLabel": "Adres skarbca",
"vaultNamespaceLabel": "Przestrzeń nazw",
"vaultOidcMountLabel": "Mocowanie autoryzacyjne OIDC",
"vaultOidcRoleLabel": "Rola OIDC",
"vaultSshMountLabel": "SSH Secrets Mount",
"vaultSshRoleLabel": "Rola sygnatariusza SSH",
"vaultValidPrincipalsLabel": "Ważne zasady",
"vaultKeyTypeLabel": "Typ klucza efemerycznego",
"vaultSharedLabel": "Udostępnij wszystkim użytkownikom",
"vaultCreateProfile": "Utwórz profil",
"vaultProfileCreated": "Utworzono profil skarbca",
"vaultProfileSaved": "Zapisano profil skarbca",
"vaultProfileDeleted": "Usunięto profil skarbca",
"vaultProfileSaveFailed": "Nie udało się zapisać profilu Vault",
"vaultProfileDeleteFailed": "Nie udało się usunąć profilu Vault",
"vaultSaveProfile": "Zapisz profil",
"vaultProfileValidationError": "Wymagane są imię i nazwisko, adres skarbca i rola sygnatariusza SSH",
"vaultNoProfiles": "Brak profili Vault.",
"vaultSharedBadge": "wspólny",
"keyTypeLabel": "Typ klucza",
"keyTypeAuto": "Automatyczne wykrywanie",
"keyPasteTab": "Pasta",
"keyUploadTab": "Wgrywać",
"keyFileLoaded": "Załadowano plik klucza",
"keyUploadClick": "Kliknij, aby przesłać .pem / .key / .ppk",
"clearKey": "Wyczyść klucz",
"keySaved": "Klucz SSH zapisany",
"keyReplaceNotice": "wklej poniżej nowy klucz, aby go zastąpić",
"keyPassphraseSaved": "Hasło zapisane, wpisz, aby zmienić",
"replaceKey": "Wymień klucz",
"docsLink": "Wyświetl dokumenty",
"opksshLabel": "OPKSSH",
"opksshDesc": "Zaloguj się do tego hosta, używając swojego dostawcy tożsamości, a nie hasła lub klucza. Wymagane jest skonfigurowanie OPKSSH na serwerze.",
"warpgateLabel": "Brama Warpgate",
"warpgateDesc": "Ten host łączy się przez proxy SSH Warpgate. Termix automatycznie obsłuży proces zatwierdzania w przeglądarce po uwierzytelnieniu.",
"agentLabel": "Agent SSH",
"agentDesc": "Uwierzytelnij się za pomocą agenta SSH uruchomionego na serwerze Termix (Bitwarden, 1Password, gpg-agent, KeeAgent, ssh-agent). Agent musi być uruchomiony na komputerze, na którym hostowany jest Termix.",
"agentAuthenticationDesc": "Użyj kluczy agenta SSH do uwierzytelnienia tego połączenia. Pozostaw ścieżkę do gniazda pustą, aby użyć SSH_AUTH_SOCK.",
"agentSocketPathLabel": "Ścieżka gniazda agenta",
"agentSocketPathPlaceholder": "Pozostaw puste, aby użyć SSH_AUTH_SOCK",
"agentSocketPathHint": "Pozostaw puste, aby automatycznie wykryć na podstawie zmiennej środowiskowej SSH_AUTH_SOCK, lub wprowadź niestandardową ścieżkę gniazda (np. /run/user/1000/gnupg/S.gpg-agent.ssh).",
"shareSshAuthLabel": "Udostępnij uwierzytelnianie SSH",
"shareSshAuthDesc": "Przekaż odbiorcom zaszyfrowane kopie uwierzytelnienia SSH tego hosta. Dane osobowe odbiorcy nadal mają pierwszeństwo.",
"tailscaleDeviceSelect": "Wybierz urządzenie Tailscale",
"tailscaleDeviceSelectPlaceholder": "Wybierz urządzenie...",
"tailscaleNoApiKey": "Nie skonfigurowano klucza API Tailscale. Dodaj go w Ustawieniach administratora, aby włączyć wykrywanie urządzeń.",
"tailscaleDocsLink": "Wyświetl dokumenty",
"tailscaleLoadingDevices": "Ładowanie urządzeń...",
"tailscaleDeviceLoadFailed": "Nie udało się załadować urządzeń Tailscale. Sprawdź adres URL API i połączenie sieciowe.",
"tailscaleNoDevices": "Nie znaleziono urządzeń w Twojej sieci ogonowej.",
"tailscaleDeviceAutoFill": "Wybranie urządzenia spowoduje automatyczne wypełnienie adresu IP hosta.",
"forceKeyboardInteractiveLabel": "Klawiatura interaktywna Force",
"forceKeyboardInteractiveShortDesc": "Wymuś ręczne wprowadzenie hasła, nawet jeśli klucze są obecne",
"allowLegacyAlgorithmsLabel": "Zezwalaj na starsze algorytmy",
"allowLegacyAlgorithmsDesc": "Włącz przestarzałe algorytmy SSH (ssh-dss, ssh-rsa, diffie-hellman-group1-sha1, hmac-md5, 3des-cbc) w przypadku połączeń ze starymi urządzeniami, których nie można uaktualnić.",
"insecure": "Niepewny",
"terminalAppearance": "Wygląd terminala",
"colorTheme": "Motyw kolorów",
"fontFamilyLabel": "Rodzina czcionek",
"fontFamilyCustomOption": "Zwyczaj...",
"fontFamilyCustomPlaceholder": "Dokładna nazwa czcionki, np. MesloLGS NF",
"fontFamilyCustomHint": "Wybierz czcionkę dołączoną do zestawu lub wybierz opcję Niestandardowa i wpisz dokładną nazwę czcionki już zainstalowanej w systemie (np. MesloLGS NF, Noto Sans Mono). Termix nie może zainstalować czcionek za Ciebie, zainstaluj go najpierw w swoim systemie operacyjnym.",
"fontSizeLabel": "Rozmiar czcionki",
"cursorStyleLabel": "Styl kursora",
"letterSpacingPx": "Odstępy między literami (px)",
"lineHeightLabel": "Wysokość linii",
"bellStyleLabel": "Styl dzwonka",
"backspaceModeLabel": "Tryb Backspace",
"cursorBlinking": "Migający kursor",
"cursorBlinkingDesc": "Włącz animację migania kursora terminala",
"rightClickSelectsWordLabel": "Kliknięcie prawym przyciskiem myszy powoduje zaznaczenie słowa",
"rightClickSelectsWordShortDesc": "Wybierz słowo pod kursorem po kliknięciu prawym przyciskiem myszy",
"macOptionIsMetaLabel": "Klawisz opcji wysyła meta",
"macOptionIsMetaShortDesc": "Wyłącz możliwość wpisywania znaków specjalnych (takich jak @ lub |) za pomocą klawisza Option/Alt w systemie macOS zamiast wysyłania metadanych",
"backgroundImageLabel": "Adres URL obrazu tła",
"backgroundImageDesc": "Opcjonalny adres URL obrazu tła terminala",
"backgroundImageOpacityLabel": "Krycie obrazu tła",
"customThemeColors": "Niestandardowe kolory",
"customThemeBackground": "Tło",
"customThemeForeground": "Pierwszoplanowy",
"customThemeCursor": "Kursor",
"customThemeCursorAccent": "Akcent kursora",
"customThemeSelection": "Wybór",
"customThemeAnsiColors": "Kolory ANSI",
"customThemeBlack": "Czarny",
"customThemeRed": "Czerwony",
"customThemeGreen": "Zielony",
"customThemeYellow": "Żółty",
"customThemeBlue": "Niebieski",
"customThemeMagenta": "Magenta",
"customThemeCyan": "Cyjan",
"customThemeWhite": "Biały",
"customThemeBrightBlack": "Jasnoczarny",
"customThemeBrightRed": "Pąsowy",
"customThemeBrightGreen": "Jasnozielony",
"customThemeBrightYellow": "Jasnożółty",
"customThemeBrightBlue": "Jasnoniebieski",
"customThemeBrightMagenta": "Jasna magenta",
"customThemeBrightCyan": "Jasny cyjan",
"customThemeBrightWhite": "Jasna biel",
"customThemeResetTooltip": "Przywróć ustawienia domyślne",
"savedThemesLabel": "Zapisane motywy",
"saveAsGlobalTheme": "Zapisz jako motyw globalny",
"saveGlobalThemeNamePrompt": "Wprowadź nazwę tego motywu",
"saveGlobalThemeSuccess": "Motyw zapisany",
"saveGlobalThemeError": "Nie udało się zapisać motywu",
"applyGlobalThemeTooltip": "Zastosuj ten motyw",
"deleteGlobalThemeTooltip": "Usuń ten motyw",
"noSavedThemes": "Brak zapisanych motywów",
"syntaxHighlightingLabel": "Podświetlanie składni",
"syntaxHighlightingDesc": "Kolorowanie danych wyjściowych terminala (błędy, ścieżki, adresy IP, znaczniki czasu)",
"syntaxHighlightingCategories": "Podświetl kategorie",
"syntaxHighlightingCategoriesDesc": "Wybierz typy treści do pokolorowania",
"syntaxCategoryLogLevels": "Poziomy dziennika",
"syntaxCategoryLogLevelsDesc": "błąd, ostrzeżenie, informacja, debugowanie, krytyczny",
"syntaxCategoryPaths": "Ścieżki plików",
"syntaxCategoryPathsDesc": "/usr/share/doc, ~/plik.txt",
"syntaxCategoryTimestamps": "Znaczniki czasu",
"syntaxCategoryTimestampsDesc": "[12:34:56], 2024-01-15",
"syntaxCategoryIpAddresses": "Adresy IP",
"syntaxCategoryIpAddressesDesc": "192.168.1.1, 10.0.0.1:8080",
"syntaxCategoryUrls": "Adresy URL",
"syntaxCategoryUrlsDesc": "https://example.com",
"syntaxCategoryNumbers": "Oznaczone liczby",
"syntaxCategoryNumbersDesc": "port 8080, wyjście 1, status 404",
"behaviorAndAdvanced": "Zachowanie i zaawansowane",
"scrollbackBufferLabel": "Bufor przewijania",
"scrollbackMaxLines": "Maksymalna liczba wierszy przechowywanych w historii",
"sshAgentForwardingLabel": "Przekierowanie agenta SSH",
"sshAgentForwardingShortDesc": "Zezwól temu zdalnemu hostowi na używanie lokalnego agenta SSH do nawiązywania połączeń. Nie jest to wymagane do uwierzytelnienia agenta.",
"useSSHTitleLabel": "Użyj tytułu okna SSH",
"useSSHTitleDesc": "Zaktualizuj tytuł karty na podstawie tytułu okna powłoki zamiast nazwy hosta",
"enableAutoMosh": "Włącz Auto-Mosh",
"enableAutoMoshDesc": "Jeśli to możliwe, preferuj Mosh zamiast SSH",
"enableAutoTmux": "Włącz Auto-Tmux",
"enableAutoTmuxDesc": "Automatyczne uruchamianie lub dołączanie do sesji tmux",
"enableSessionLogging": "Rejestrowanie sesji",
"enableSessionLoggingDesc": "Rejestruj dane wyjściowe sesji terminalowej w celu późniejszego przejrzenia",
"allowSessionSharing": "Zezwól na udostępnianie sesji",
"allowSessionSharingDesc": "Zezwól na udostępnianie sesji na żywo na tym hoście za pośrednictwem łącza lub innym użytkownikom",
"enableCommandHistory": "Historia dowodzenia",
"enableCommandHistoryDesc": "Rejestruj polecenia uruchamiane w tym terminalu w celu historii i automatycznego uzupełniania",
"localEchoLabel": "Lokalne echo",
"localEchoDesc": "Przewiduj bezpieczne, możliwe do wydrukowania naciśnięcia klawiszy lokalnie na wolnych połączeniach. Monity o hasło i wprowadzanie danych sterujących nigdy nie są powtarzane.",
"localEchoDefault": "Użyj ustawienia globalnego",
"localEchoOff": "Wyłączony",
"localEchoAuto": "Automatyczny",
"localEchoOn": "Zawsze włączony",
"linkClickBehaviorLabel": "Zachowanie kliknięcia linku",
"linkClickBehaviorDesc": "Kontroluje, co się dzieje po kliknięciu linku w terminalu. Użyj opcji „Domyślne”, aby zastosować ustawienia na poziomie aplikacji.",
"linkClickBehaviorDefault": "Domyślne (zgodnie z ustawieniami aplikacji)",
"linkClickBehaviorConfirm": "Pokaż wyskakujące okienko do otwarcia lub skopiowania",
"linkClickBehaviorDirect": "Otwórz bezpośrednio",
"sudoPasswordAutoFillLabel": "Automatyczne uzupełnianie hasła Sudo",
"sudoPasswordAutoFillShortDesc": "Automatycznie podawaj hasło sudo po wyświetleniu monitu",
"sudoPasswordAutoFillDesc": "Przechowuj hasło sudo, aby metryki hosta, monity terminala i inne narzędzia mogły automatycznie uruchamiać polecenia uprzywilejowane.",
"sudoPasswordLabel": "Hasło Sudo",
"sudoPasswordSaved": "Hasło zapisane, wpisz, aby zmienić",
"environmentVariablesLabel": "Zmienne środowiskowe",
"addVariableBtn": "Dodaj zmienną",
"noEnvVars": "Nie skonfigurowano żadnych zmiennych środowiskowych.",
"fastScrollModifierLabel": "Modyfikator szybkiego przewijania",
"fastScrollSensitivityLabel": "Szybka czułość przewijania",
"moshCommandLabel": "Dowództwo Mosh",
"startupSnippetLabel": "Fragment kodu startowego",
"keepaliveIntervalLabel": "Interwał utrzymywania połączenia (sekundy)",
"maxKeepaliveMisses": "Max Keepalive nie trafia",
"tunnelSettings": "Ustawienia tunelu",
"enableTunneling": "Włącz tunelowanie",
"enableTunnelingDesc": "Włącz funkcjonalność tunelu SSH dla tego hosta",
"serverTunnelsSection": "Tunele serwerowe",
"addTunnelBtn": "Dodaj tunel",
"noTunnelsConfigured": "Nie skonfigurowano żadnych tuneli.",
"tunnelLabel": "Tunel {{number}}",
"tunnelType": "Typ tunelu",
"tunnelModeLocalDesc": "Przekieruj port lokalny do portu na serwerze zdalnym (lub do hosta, do którego można uzyskać dostęp z tego serwera).",
"tunnelModeRemoteDesc": "Przekieruj port na serwerze zdalnym z powrotem do portu lokalnego na swoim komputerze.",
"tunnelModeDynamicDesc": "Utwórz serwer proxy SOCKS5 na porcie lokalnym w celu dynamicznego przekierowywania portów.",
"sameHost": "Ten host (tunel bezpośredni)",
"endpointHost": "Host punktu końcowego",
"endpointHostPlaceholder": "Ten sam host, host SSH lub dostępny host/adres IP",
"endpointPort": "Port końcowy",
"bindHost": "Powiąż hosta",
"sourcePort": "Port źródłowy",
"maxRetries": "Maksymalna liczba ponownych prób",
"retryIntervalS": "Interwał ponawiania prób (s)",
"autoStartLabel": "Autostart",
"autoStartDesc": "Automatycznie połącz ten tunel po załadowaniu hosta",
"tunnelConnecting": "Tunel łączący...",
"tunnelDisconnected": "Tunel odłączony",
"failedToConnectTunnel": "Nie udało się połączyć",
"failedToDisconnectTunnel": "Nie udało się rozłączyć",
"dockerIntegration": "Integracja z Dockerem",
"enableDockerMonitor": "Włącz Docker",
"enableDockerMonitorDesc": "Monitoruj i zarządzaj kontenerami na tym hoście za pomocą Dockera",
"containerRuntime": "Środowisko wykonawcze kontenera",
"containerRuntimeDesc": "Wybierz interfejs wiersza poleceń używany do zarządzania kontenerami na tym hoście",
"containerRuntimeDocker": "Doker",
"containerRuntimePodman": "Podman",
"enableTmuxMonitor": "Włącz monitor Tmux",
"enableTmuxMonitorDesc": "Pokaż tego hosta w monitorze Tmux i dodaj jego akcje tmux do paska bocznego",
"enableTerminalToolbar": "Włącz pasek narzędzi terminala",
"enableTerminalToolbarDesc": "Pokaż pasek narzędzi szybkiego dostępu zadokowany do aktywnego terminala, umożliwiający dostęp do narzędzi i statystyk na żywo tego hosta",
"tabProxmox": "Proxmox",
"proxmoxIntegration": "Integracja Proxmox",
"enableProxmox": "Włącz Proxmox",
"enableProxmoxDesc": "Oznacz ten host jako węzeł Proxmox. Umożliwia wykrywanie gości i importowanie bezpośrednio z tego hosta.",
"proxmoxDefaultAuthType": "Domyślny typ autoryzacji",
"proxmoxDefaultAuthTypeDesc": "Metoda uwierzytelniania stosowana do importowanych hostów gościnnych. Wybierz typ uwierzytelniania odpowiadający sposobowi, w jaki łączysz się z gośćmi.",
"authTypePassword": "Hasło",
"authTypeKey": "Klucz SSH",
"authTypeCredential": "Mandat",
"authTypeOpkssh": "OPKSSH",
"authTypeNone": "Nic",
"proxmoxDefaultCredential": "Domyślne poświadczenie",
"proxmoxDefaultCredentialDesc": "Dane uwierzytelniające używane w przypadku importowanych gości, gdy typ uwierzytelniania jest ustawiony na Poświadczenie.",
"proxmoxWindowsDetection": "Wykrywanie systemu Windows/RDP",
"proxmoxWindowsDetectionDesc": "Wzorce nazw rozdzielone przecinkami, które wyzwalają protokół RDP zamiast protokołu SSH (bez uwzględniania wielkości liter)",
"proxmoxDockerDetection": "Wykrywanie Dockera",
"proxmoxDockerDetectionDesc": "Wzorce nazw rozdzielone przecinkami, które umożliwiają Dockerowi dopasowywanie gości",
"proxmoxPreferredRanges": "Preferowane zakresy adresów IP",
"proxmoxPreferredRangesDesc": "Prefiksy rozdzielone przecinkami w kolejności priorytetów wyboru adresu IP, gdy gość ma wiele interfejsów",
"proxmoxAutoSync": "Automatyczna synchronizacja gości",
"proxmoxAutoSyncDesc": "Okresowo wykrywaj ten węzeł Proxmox i twórz lub aktualizuj importowane hosty gościnne, gdy Twoja sesja jest odblokowana.",
"proxmoxSyncInterval": "Interwał synchronizacji (minuty)",
"proxmoxSyncIntervalDesc": "Minimum 5 minut. Harmonogram pomija zablokowane sesje użytkowników.",
"proxmoxMarkMissing": "Oznacz brakujących gości",
"proxmoxMarkMissingDesc": "Dodaj znacznik proxmox-missing, gdy wcześniej zaimportowany gość zniknie, zamiast go usuwać.",
"proxmoxLastSync": "Ostatnia synchronizacja",
"proxmoxLastSyncNever": "Jeszcze nie zsynchronizowano",
"proxmoxLastSyncNoResult": "Brak szczegółów wyników",
"proxmoxLastSyncSummary": "{{created}} utworzono, {{updated}} zaktualizowano, {{markedMissing}} brakuje, {{skipped}} pominięto",
"proxmoxLastSyncStatus": {
"success": "Sukces",
"error": "Przegrany",
"pending": "Aż do"
},
"proxmoxDiscoverAction": "Odkryj i importuj gości Proxmox",
"proxmoxImportTitle": "Import z Proxmox",
"proxmoxSelectHost": "Wybierz hosta Proxmox…",
"proxmoxDiscover": "Odkryć",
"proxmoxDiscovering": "Odkrywanie…",
"proxmoxDiscoverGuests": "Odkryj gości",
"proxmoxGuestsSelected_one": "{{count}} gość — wybrano {{selected}}",
"proxmoxGuestsSelected_other": "{{count}} gości — wybrano {{selected}}",
"proxmoxSelectAll": "Zaznacz wszystko",
"proxmoxDeselectAll": "Odznacz wszystko",
"proxmoxNoGuests": "Nie znaleziono gości na tym węźle Proxmox.",
"proxmoxImportButton_one": "Importuj hosta {{count}}",
"proxmoxImportButton_other": "Importuj {{count}} hostów",
"proxmoxResultImported": "{{count}} zaimportowano",
"proxmoxResultUpdated": "{{count}} zaktualizowano",
"proxmoxResultFailed": "{{count}} nie powiodło się",
"proxmoxResultSkippedNoIp": "{{count}} pominięto (nie znaleziono adresu IP)",
"proxmoxImportComplete": "Zakończono importowanie Proxmox: {{summary}}",
"proxmoxDiscoveryFailed": "Odkrycie nie powiodło się",
"proxmoxImportFailed": "Import nie powiódł się",
"enableProxmoxStats": "Włącz statystyki Proxmox",
"enableProxmoxStatsDesc": "Pokaż kartę statystyk Proxmox dla tego hosta ze statystykami węzła na żywo, gościa, pamięci masowej i klastra zebranymi przez SSH.",
"proxmoxStatsPollInterval": "Interwał sondowania (sekundy)",
"proxmoxStatsPollIntervalDesc": "Minimum 15 sekund. Jak często odświeżać statystyki węzła Proxmox.",
"proxmoxStatsNodeOverride": "Nadpisanie nazwy węzła",
"proxmoxStatsNodeOverrideDesc": "Zastąp automatyczne wykrywanie nazwy węzła Proxmox (domyślnie wykrywane za pomocą nazwy hosta).",
"proxmoxStatsNodeOverridePlaceholder": "Automatycznie wykryto na podstawie nazwy hosta",
"proxmoxStatsUrlCopied": "Adres URL statystyk Proxmox skopiowany do schowka",
"copyProxmoxStatsUrlAction": "Skopiuj adres URL statystyk Proxmox",
"enableFileManagerMonitor": "Włącz Menedżera plików",
"enableFileManagerMonitorDesc": "Przeglądaj i zarządzaj plikami na tym hoście przez SFTP",
"scpLegacyLabel": "Tryb SCP Legacy",
"scpLegacyDesc": "W przypadku serwerów, które nie obsługują podsystemu SFTP (np. serwerów wbudowanych lub minimalnych serwerów SSH), należy używać starszej metody transferu plików.",
"defaultPathLabel": "Domyślna ścieżka",
"fileManagerPathHint": "Katalog, który zostanie otwarty po uruchomieniu menedżera plików dla tego hosta.",
"statusChecksLabel": "Sprawdzanie statusu",
"enableStatusChecks": "Włącz sprawdzanie statusu",
"enableStatusChecksDesc": "Okresowo wysyłaj polecenie ping do tego hosta w celu sprawdzenia dostępności",
"useGlobalInterval": "Użyj interwału globalnego",
"useGlobalIntervalDesc": "Zastąp interwałem sprawdzania stanu całego serwera",
"checkIntervalS": "Interwał sprawdzania (s)",
"checkIntervalDesc": "Sekundy między każdym pingiem łączności",
"metricsCollectionLabel": "Zbieranie metryk",
"enableMetricsLabel": "Włącz metryki",
"enableMetricsDesc": "Zbierz dane dotyczące procesora, pamięci RAM, dysku i inne dane z tego hosta",
"useGlobalMetrics": "Użyj interwału globalnego",
"useGlobalMetricsDesc": "Zastąp interwałem metryk obejmującym cały serwer",
"metricsIntervalS": "Interwał metryk (s)",
"metricsIntervalDesc2": "Sekundy między migawkami metrycznymi",
"excludedMountsLabel": "Wykluczone wierzchowce",
"monitoredMountsLabel": "Niestandardowe monitorowane ścieżki",
"monitoredMountsDesc": "Dodaj ścieżki, które nie są udostępniane jako osobne montowania, w tym ścieżki Home Assistant montowane przy użyciu powiązania, takie jak /config.",
"monitoredMountPathPlaceholder": "Ścieżka (/config, /mnt/data)",
"monitoredMountLabelPlaceholder": "Etykieta (opcjonalnie)",
"addMonitoredMount": "Dodaj ścieżkę",
"excludedMountsDesc": "Ukryj określone punkty montowania lub typy systemów plików (np. nfs, cifs) w informacjach o wykorzystaniu dysku i alertach dla tego hosta.",
"excludedMountsPlaceholder": "Ścieżka montowania (/mnt/nas) lub typ systemu plików (nfs, cifs)",
"excludedMountsEmpty": "Brak wykluczonych montowań. Wyświetlane są wszystkie wykryte systemy plików.",
"addExcludedMount": "Dodać",
"visibleWidgets": "Widoczne widżety",
"widgetsMovedToHostMetrics": "Karty są teraz dodawane, układane i zmieniane rozmiarem bezpośrednio na karcie „Metryki hosta”. Otwórz kartę „Metryki hosta” dla tego hosta i użyj opcji „Dostosuj”, aby wybrać, które karty mają być wyświetlane.",
"cpuUsageLabel": "Wykorzystanie procesora",
"cpuUsageDesc": "Procent procesora, średnie obciążenie, wykres liniowy",
"memoryLabel": "Wykorzystanie pamięci",
"memoryDesc": "Użycie pamięci RAM, wymiana, pamięć podręczna",
"storageLabel": "Wykorzystanie dysku",
"storageDesc": "Wykorzystanie dysku na punkt montowania",
"networkLabel": "Interfejsy sieciowe",
"networkDesc": "Lista interfejsów i przepustowość",
"uptimeLabel": "Czas sprawności",
"uptimeDesc": "Czas sprawności systemu i czas rozruchu",
"systemInfoLabel": "Informacje o systemie",
"systemInfoDesc": "System operacyjny, jądro, nazwa hosta, architektura",
"recentLoginsLabel": "Ostatnie logowania",
"recentLoginsDesc": "Pomyślne i nieudane zdarzenia logowania",
"topProcessesLabel": "Najważniejsze procesy",
"topProcessesDesc": "PID, CPU%, MEM%, polecenie",
"listeningPortsLabel": "Porty nasłuchujące",
"listeningPortsDesc": "Otwórz porty z procesem i stanem",
"firewallLabel": "Zapora sieciowa",
"firewallDesc": "Zapora sieciowa, AppArmor, status SELinux",
"quickActionsLabel": "Szybkie akcje",
"quickActionsToolbar": "Szybkie akcje pojawiają się jako przyciski na pasku narzędzi Host Metrics, umożliwiając wykonanie polecenia jednym kliknięciem.",
"noQuickActions": "Na razie nie podjęto żadnych szybkich działań.",
"buttonLabel": "Etykieta przycisku",
"selectSnippetPlaceholder": "Wybierz fragment...",
"addActionBtn": "Dodaj akcję",
"hostSharedSuccessfully": "Udostępnienie hosta powiodło się",
"failedToShareHost": "Nie udało się udostępnić hosta",
"accessRevoked": "Dostęp odwołany",
"failedToRevokeAccess": "Nie udało się cofnąć dostępu",
"cancelBtn": "Anulować",
"savingBtn": "Oszczędność...",
"addHostBtn": "Dodaj hosta",
"hostUpdated": "Zaktualizowano hosta",
"hostCreated": "Utworzono hosta",
"failedToSave": "Nie udało się zapisać hosta",
"credentialUpdated": "Zaktualizowano dane uwierzytelniające",
"credentialCreated": "Utworzono poświadczenie",
"failedToSaveCredential": "Nie udało się zapisać danych uwierzytelniających",
"credentialNameRequired": "Proszę podać nazwę poświadczenia",
"credentialAuthRequired": "Dodaj hasło, klucz SSH lub oba",
"createCredentialFromHostBtn": "Utwórz poświadczenia",
"createCredentialFromHostTitle": "Utwórz poświadczenia z hosta",
"createCredentialFromHostDesc": "Utwórz wpis danych uwierzytelniających, który można wielokrotnie wykorzystywać i udostępniać, wstępnie wypełniony bieżącą nazwą użytkownika, hasłem i/lub kluczem SSH tego hosta.",
"backToHosts": "Powrót do Gospodarzy",
"pinned": "Przypięte",
"noHostsFound": "Nie znaleziono żadnych hostów",
"tryDifferentTerm": "Spróbuj innego terminu",
"addFirstHost": "Dodaj swojego pierwszego hosta, aby rozpocząć",
"noCredentialsFound": "Nie znaleziono danych uwierzytelniających",
"addCredentialBtn": "Dodaj poświadczenia",
"updateCredentialBtn": "Aktualizacja poświadczeń",
"features": "Cechy",
"noFolder": "(Brak folderu)",
"deleteSelected": "Usuwać",
"exitSelection": "Wyjście z wyboru",
"importSkip": "Importuj (pomiń istniejące)",
"importOverwrite": "Importuj (nadpisz)",
"collapseBtn": "Zawalić się",
"importExportBtn": "Import/Eksport",
"hostStatusesRefreshed": "Odświeżono statusy hostów",
"failedToRefreshHosts": "Nie udało się odświeżyć hostów",
"movedHostTo": "Przeniesiono {{host}} do „{{folder}}”",
"failedToMoveHost": "Nie udało się przenieść hosta",
"deletedFolder": "Usunięto folder „{{name}}”",
"failedToDeleteFolder": "Nie udało się usunąć folderu",
"deleteAllInFolder": "Usunąć wszystkie hosty w „{{name}}”? Tego nie da się cofnąć.",
"folderPickerPlaceholder": "Brak folderu",
"folderPickerSearch": "Wyszukaj lub utwórz (użyj / dla podfolderów)...",
"folderPickerNone": "Brak folderu",
"folderPickerCreate": "Utwórz „{{path}}”",
"folderPickerEmpty": "Brak pasujących folderów",
"parentHost": "Gospodarz rodzica",
"useFolderInstead": "Zamiast tego użyj folderu",
"useParentHostInstead": "Zamiast tego użyj hosta nadrzędnego",
"parentHostPickerPlaceholder": "Brak gospodarza nadrzędnego",
"parentHostPickerSearch": "Wyszukaj hostów...",
"parentHostPickerNone": "Brak gospodarza nadrzędnego",
"parentHostPickerEmpty": "Brak pasujących hostów",
"collapseSubHosts": "Zwiń podgospodarsów",
"expandSubHosts": "Rozwiń podhosty",
"cannotNestUnderDescendant": "Nie można zagnieździć hosta pod własnym podhostem",
"movedToParent": "Przeniesiono {{count}} hostów do „{{parent}}”",
"newFolder": "Nowy folder",
"createFolderTitle": "Utwórz folder",
"editFolderTitle": "Edytuj folder",
"folderDialogDescription": "Wybierz nazwę, kolor i ikonę. Użyj /, aby zagnieżdżać foldery.",
"folderNameLabel": "Nazwa folderu",
"folderNamePlaceholder": "np. Produkcja/Sieć",
"folderNestingHint": "Użyj / do oddzielenia poziomów i utworzenia zagnieżdżonych folderów.",
"folderNameDuplicate": "Folder o tej nazwie już tutaj istnieje.",
"folderColor": "Kolor",
"folderIcon": "Ikona",
"folderCredential": "Mandat",
"folderCredentialNone": "Brak przypisanych danych uwierzytelniających",
"folderCredentialHint": "Hosty w tym folderze korzystające z uwierzytelniania „Zapisane dane uwierzytelniające” bez wybrania własnych danych uwierzytelniających odziedziczą to dane.",
"folderPreview": "Zapowiedź",
"folderNameFallback": "Folder bez tytułu",
"createFolderButton": "Utwórz folder",
"saveFolderButton": "Zapisz folder",
"cancel": "Anulować",
"iconSearchPlaceholder": "Szukaj ikon...",
"openAllSessions": "Otwórz wszystkie sesje",
"editFolder": "Edytuj folder",
"deleteFolder": "Usuń folder",
"selectFolder": "Wybierz wszystkich hostów w folderze",
"deselectFolder": "Odznacz wszystkie hosty w folderze",
"folderSaved": "Folder zapisany",
"failedToSaveFolder": "Nie udało się zapisać folderu",
"folderDeleted": "Usunięto folder „{{name}}”",
"deleteFolderConfirm": "Usunąć „{{name}}” i jego hosta(ów) {{count}} ? Tej operacji nie da się cofnąć.",
"failedToMoveHosts": "Nie udało się przenieść hostów",
"failedToReorder": "Nie udało się ponownie zamówić",
"expandAll": "Rozwiń wszystkie foldery",
"collapseAll": "Zwiń wszystkie foldery",
"moreActions": "Więcej",
"groupBy": "Grupuj według",
"GroupByFolder": "Falcówka",
"GroupByTag": "Etykietka",
"GroupByStatus": "Status",
"GroupByProtocol": "Protokół",
"GroupByAuth": "Typ autoryzacji",
"groupUngrouped": "Niezgrupowane",
"customizeSidebar": "Dostosuj pasek boczny",
"customizeSidebarDescription": "Wybierz wygląd i zachowanie listy hostów.",
"customizeDensityTitle": "Gęstość",
"customizeBehaviorTitle": "Zachowanie",
"customizeSortHint": "Kolejność sortowania i grupowania można ustawić w menu sortowania i grupowania na pasku narzędzi.",
"densityComfortableDesc": "Więcej szczegółów na temat poszczególnych hostów: adresy, tagi i wykorzystanie zasobów.",
"densityCompactDesc": "Jeden wiersz na hosta w przypadku dłuższych list.",
"display": "Wyświetlacz",
"displayDensity": "Gęstość",
"displayDensityComfortable": "Wygodny",
"displayDensityCompact": "Kompaktowy",
"displayShowTags": "Pokaż tagi",
"displayTrayOnClick": "Otwórz akcje po kliknięciu (zamiast po najechaniu kursorem)",
"actionsVisibility": "Działania gospodarza",
"actionsVisibilityDesc": "Gdy na każdym hoście pojawią się przyciski połączenia i zarządzania",
"actionsAlways": "Zawsze widoczny",
"actionsOnly": "Tylko połączenie, reszta po kliknięciu",
"actionsHover": "Pokaż po najechaniu kursorem",
"actionsClick": "Pokaż po kliknięciu",
"openOnDoubleClick": "Otwórz po dwukrotnym kliknięciu",
"openOnDoubleClickDesc": "Wymagaj dwukrotnego kliknięcia, aby otworzyć sesję hosta zamiast pojedynczego kliknięcia",
"deletedHost": "Usunięto {{name}}",
"copiedToClipboard": "Skopiowano do schowka",
"terminalUrlCopied": "Skopiowano adres URL terminala",
"fileManagerUrlCopied": "Skopiowano adres URL Menedżera plików",
"tunnelUrlCopied": "Skopiowano adres URL tunelu",
"dockerUrlCopied": "Skopiowano adres URL Dockera",
"hostMetricsUrlCopied": "Skopiowano adres URL metryk hosta",
"tmuxMonitorUrlCopied": "Skopiowano adres URL monitora Tmux",
"rdpUrlCopied": "Skopiowano adres URL RDP",
"openNativeRdp": "Otwórz w Pulpicie zdalnym systemu Windows",
"nativeRdpOpened": "Otwarto w Pulpicie zdalnym systemu Windows",
"nativeRdpFailed": "Nie udało się otworzyć pulpitu zdalnego systemu Windows",
"vncUrlCopied": "Skopiowano adres URL VNC",
"telnetUrlCopied": "Skopiowano adres URL Telnet",
"remoteDesktopUrlCopied": "Skopiowano adres URL pulpitu zdalnego",
"expandActions": "Rozwiń działania",
"collapseActions": "Zwiń akcje",
"wakeOnLanAction": "Wake on LAN",
"wakeOnLanSuccess": "Pakiet magiczny wysłany do {{name}}",
"wakeOnLanError": "Nie udało się wysłać pakietu magicznego",
"cloneHostAction": "Klon hosta",
"copyAddress": "Kopiuj adres",
"copyLink": "Kopiuj link",
"copyTerminalUrlAction": "Kopiuj adres URL terminala",
"copyFileManagerUrlAction": "Kopiuj adres URL Menedżera plików",
"copyTunnelUrlAction": "Kopiuj adres URL tunelu",
"copyDockerUrlAction": "Kopiuj adres URL Dockera",
"copyHostMetricsUrlAction": "Kopiuj adres URL metryk hosta",
"copyTmuxMonitorUrlAction": "Kopiuj adres URL monitora Tmux",
"copyRdpUrlAction": "Kopiuj adres URL RDP",
"copyVncUrlAction": "Kopiuj adres URL VNC",
"copyTelnetUrlAction": "Kopiuj adres URL Telnet",
"copyRemoteDesktopUrlAction": "Kopiuj adres URL pulpitu zdalnego",
"deleteCredentialConfirm": "Usunąć poświadczenie „{{name}}”?",
"deletedCredential": "Usunięto {{name}}",
"deleteHostsConfirm": "Usunąć {{count}} hosta{{plural}}? Tego nie można cofnąć.",
"movedToRoot": "Przeniesiono do roota",
"enableTerminalFeature": "Włącz terminal",
"disableTerminalFeature": "Wyłącz terminal",
"enableFilesFeature": "Włącz pliki",
"disableFilesFeature": "Wyłącz pliki",
"enableTunnelsFeature": "Włącz tunele",
"disableTunnelsFeature": "Wyłącz tunele",
"enableDockerFeature": "Włącz Docker",
"disableDockerFeature": "Wyłącz Dockera",
"enableProxmoxFeature": "Włącz Proxmox",
"disableProxmoxFeature": "Wyłącz Proxmox",
"addTagsPlaceholder": "Dodaj tagi...",
"authDetails": "Szczegóły uwierzytelniania",
"credType": "Typ",
"generateKeyPairDesc": "Wygeneruj nową parę kluczy. Klucze prywatne i publiczne zostaną wypełnione automatycznie.",
"generatingKey": "Generowanie...",
"generateLabel": "Wygeneruj {{label}}",
"uploadFileBtn": "Prześlij plik",
"keyPassphraseOptional": "Hasło klucza (opcjonalnie)",
"sshPublicKeyOptional": "Klucz publiczny SSH (opcjonalnie)",
"publicKeyGenerated": "Wygenerowano klucz publiczny",
"failedToGeneratePublicKey": "Nie udało się wyprowadzić klucza publicznego",
"publicKeyCopied": "Klucz publiczny skopiowany",
"keyPairGenerated": "Wygenerowano parę kluczy {{label}}",
"failedToGenerateKeyPair": "Nie udało się wygenerować pary kluczy",
"searchHostsPlaceholder": "Wyszukaj hosty, adresy, tagi…",
"refreshBtn": "Odświeżać",
"addTag": "Dodaj tagi...",
"deleteConfirmBtn": "Usuwać",
"tunnelRequirementsText": "Serwer SSH musi mieć ustawione opcje GatewayPorts (tak), AllowTcpForwarding (tak) i PermitRootLogin (tak) w pliku /etc/ssh/sshd_config.",
"deleteHostConfirm": "Usunąć \"{{name}}\"?",
"enableAtLeastOneProtocol": "Włącz co najmniej jeden z powyższych protokołów, aby skonfigurować ustawienia uwierzytelniania i połączenia.",
"keyPassphrase": "Hasło kluczowe",
"connectBtn": "Łączyć",
"disconnectBtn": "Odłączyć",
"basicInformation": "Informacje podstawowe",
"authDetailsSection": "Szczegóły uwierzytelniania",
"credTypeLabel": "Typ",
"hostsTab": "Zastępy niebieskie",
"credentialsTab": "Referencje",
"selectMultiple": "Wybierz wiele",
"selectHosts": "Wybierz gospodarzy",
"connectionLabel": "Połączenie",
"authenticationLabel": "Uwierzytelnianie",
"generateKeyPairTitle": "Wygeneruj parę kluczy",
"generateKeyPairDescription": "Wygeneruj nową parę kluczy. Klucze prywatne i publiczne zostaną wypełnione automatycznie.",
"generateFromPrivateKey": "Wygeneruj z klucza prywatnego",
"refreshBtn2": "Odświeżać",
"exitSelectionTitle": "Wyjście z wyboru",
"addHostBtn2": "Dodaj hosta",
"addCredentialBtn2": "Dodaj poświadczenia",
"checkingHostStatuses": "Sprawdzanie statusu hosta...",
"pinnedSection": "Przypięte",
"hostsExported": "Hosty zostały pomyślnie wyeksportowane",
"export": {
"menuItem": "Eksport...",
"title": "Eksportuj hosty",
"scope": "Zakres",
"scopeAll": "Wszystko",
"scopeSelected": "Wybrany",
"searchHosts": "Wyszukaj hostów...",
"include": "Włączać",
"groupConnection": "Połączenie",
"groupCredentials": "Referencje",
"groupNotes": "Notatki",
"groupTags": "Tagi i przypinanie",
"groupTunnels": "Tunele",
"groupJumpHosts": "Hosty skoku",
"groupQuickActions": "Szybkie akcje",
"groupFeatureFlags": "Flagi funkcji",
"groupAdvanced": "Zaawansowana konfiguracja",
"preview": "Zapowiedź",
"moreHosts": "... {{count}} więcej gospodarzy",
"summary": "{{selected}} z {{total}} gospodarzy",
"credentialsIncluded": "dołączone poświadczenia",
"credentialsExcluded": "poświadczenia wykluczone",
"noneSelected": "Nie wybrano żadnych gospodarzy",
"cancel": "Anulować",
"confirm": "Eksport",
"fetchFailed": "Nie udało się załadować hostów do eksportu",
"bulkButton": "Eksport"
},
"sampleDownloaded": "Pobrano przykładowy plik",
"failedToDeleteCredential2": "Nie udało się usunąć poświadczeń",
"noFolderOption": "(Brak folderu)",
"nSelected": "{{count}} wybrano",
"featuresMenu": "Cechy",
"moveMenu": "Przenosić",
"connectSelected": "Łączyć",
"cancelSelection": "Anulować",
"deletedCount": "Usunięto {{count}} hostów",
"failedToDeleteCount": "Nie udało się usunąć {{count}} hostów",
"duplicatedHost": "Zduplikowano „{{name}}”",
"failedToDuplicateHost": "Nie udało się zduplikować hosta",
"updatedCount": "Zaktualizowano {{count}} hostów",
"friendlyNameLabel": "Przyjazna nazwa",
"descriptionLabel": "Opis",
"loadingHost": "Ładowanie hosta...",
"loadingHosts": "Ładowanie hostów...",
"loadingCredentials": "Ładowanie danych uwierzytelniających...",
"noHostsYet": "Brak jeszcze gospodarzy",
"noHostsYetHint": "Dodaj serwer, aby otwierać terminale, przeglądać pliki i sprawdzać metryki.",
"noHostsMatchSearch": "Brak gospodarzy odpowiadających Twojemu wyszukiwaniu",
"hostNotFound": "Nie znaleziono hosta",
"searchHosts": "Wyszukaj hostów...",
"sortHosts": "Sortuj hosty",
"sortDefault": "Domyślna kolejność",
"sortNameAsc": "Imię (A → Z)",
"sortNameDesc": "Imię (Z → A)",
"sortIpAsc": "Adres IP (rosnąco)",
"sortIpDesc": "Adres IP (opis)",
"sortOnlineFirst": "Pierwszy online",
"sortOfflineFirst": "Najpierw offline",
"sortManual": "Manual (przeciągnij, aby zmienić kolejność)",
"sortPinnedFirst": "Przypięte jako pierwsze",
"filterHosts": "Filtruj hosty",
"filterClearAll": "Wyczyść filtry",
"filterStatusGroup": "Status",
"filterOnline": "W sieci",
"filterOffline": "Niedostępny",
"filterPinned": "Przypięte",
"filterAuthGroup": "Typ autoryzacji",
"filterAuthPassword": "Hasło",
"filterAuthKey": "Klucz SSH",
"filterAuthCredential": "Mandat",
"filterAuthNone": "Nic",
"filterAuthOpkssh": "OPKSSH",
"filterProtocolGroup": "Protokół",
"filterProtocolSsh": "SSH",
"filterProtocolRdp": "RDP",
"filterProtocolVnc": "VNC",
"filterProtocolTelnet": "Telnet",
"filterFeaturesGroup": "Cechy",
"filterFeatureTerminal": "Terminal",
"filterFeatureFileManager": "Menedżer plików",
"filterFeatureTunnel": "Tunel",
"filterFeatureDocker": "Doker",
"filterTagsGroup": "Tagi",
"connectRdp": "RDP",
"connectVnc": "VNC",
"connectTelnet": "Telnet",
"editHostAction": "Edytuj hosta",
"moreOptions": "Więcej opcji",
"shareHost": "Udostępnij hosta",
"shareHostTitle": "Udostępnij: {{name}}",
"shareFolder": "Udostępnij folder",
"shareFolderTitle": "Udostępnij folder: {{name}}",
"folderSharedSuccessfully": "Udostępniono {{count}} hostów w folderze",
"failedToShareFolder": "Nie udało się udostępnić folderu",
"sharing": {
"loadError": "Nie udało się załadować udostępnianych danych. Spróbuj ponownie.",
"shareWithSection": "Podziel się z",
"usersTab": "Użytkownicy",
"rolesTab": "Role",
"searchPlaceholder": "Wyszukaj użytkowników lub role...",
"noMatches": "Nie znaleziono wyników",
"permissionLevelLabel": "Poziom uprawnień",
"levels": {
"connect": {
"label": "Łączyć",
"description": "Tylko sesje otwarte: terminal, pulpit zdalny, menedżer plików, tunele i Docker. Brak dostępu do konfiguracji hosta."
},
"view": {
"label": "Pogląd",
"description": "Połącz się i zobacz konfigurację hosta. Sekrety nigdy nie są widoczne."
},
"edit": {
"label": "Redagować",
"description": "Przeglądaj i modyfikuj ustawienia hosta bez uwierzytelniania. Uwierzytelnianie SSH właściciela pozostaje prywatne i dostępne tylko dla właściciela."
},
"manage": {
"label": "Zarządzać",
"description": "Edytuj, udostępniaj hosta innym osobom, zmieniaj poziomy uprawnień i cofaj dostęp."
}
},
"expiryLabel": "Wygaśnięcie dostępu",
"expiry": {
"never": "Nigdy",
"oneHour": "1 godzina",
"oneDay": "24 godziny",
"sevenDays": "7 dni",
"thirtyDays": "30 dni",
"custom": "Zwyczaj"
},
"customHoursPlaceholder": "Godziny do wygaśnięcia dostępu",
"shareButton": "Udział",
"shareWithCount": "Udostępnij ({{count}})",
"currentAccess": "Aktualny dostęp",
"noAccessEntries": "Ten host nie został jeszcze udostępniony",
"folderShareSummary": "Udostępniono {{shared}} z {{total}} hostów w tym folderze",
"grantedBy": "Przyznane przez",
"expires": "Wygasa",
"expired": "Wygasły",
"never": "Nigdy",
"revoke": "Unieważnić",
"accessUpdated": "Dostęp zaktualizowany",
"accessUpdateFailed": "Nie udało się zaktualizować dostępu",
"sharedBadge": "Wspólny",
"sharedBadgeTooltip": "Udostępnione przez {{owner}} (dostęp{{level}})",
"viewOnlyBanner": "Ten host jest udostępniany Tobie przez {{owner}} z dostępem do przeglądania. Konfiguracja jest tylko do odczytu.",
"sharedEditBanner": "Ten host jest udostępniany Tobie przez {{owner}} z dostępem do edycji. Zmiany dotyczą rzeczywistego hosta; referencje uwierzytelniające może zmieniać tylko właściciel.",
"ownerOnlyControl": "Tylko właściciel hosta może to zmienić",
"ownerAuthPrivate": "Uwierzytelnianie SSH właściciela hosta jest prywatne. Użyj opcji „Ustaw osobiste uwierzytelnianie SSH” w menu hosta, aby wybrać własne dane uwierzytelniające.",
"ownerAuthShared": "Właściciel hosta udostępnił uwierzytelnianie SSH dla tego hosta. Możesz z niego skorzystać lub wybrać własne dane uwierzytelniające w sekcji „Ustaw osobiste uwierzytelnianie SSH”.",
"authOverrideAction": "Ustaw osobiste uwierzytelnianie SSH",
"authOverrideTitle": "Osobiste uwierzytelnianie SSH",
"authOverrideDescriptionPrivate": "Dane logowania SSH właściciela hosta pozostają prywatne. Wybierz jedno z zapisanych danych logowania do połączeń z {{host}}.",
"authOverrideDescriptionShared": "Użyj uwierzytelniania udostępnionego przez właściciela hosta lub zastąp je jednym ze swoich zapisanych poświadczeń w przypadku połączeń z {{host}}.",
"authOverrideCredentialLabel": "Dane uwierzytelniające",
"useSharedAuthentication": "Użyj uwierzytelniania hosta współdzielonego",
"noPersonalCredential": "Brak danych osobowych",
"authOverrideNoCredentials": "Nie masz jeszcze żadnych zapisanych danych logowania SSH. Utwórz je w sekcji Dane logowania, aby łączyć się z hostami wymagającymi uwierzytelnienia.",
"authOverrideRequired": "Aby móc się połączyć, ten host wymaga podania jednego z zapisanych przez Ciebie danych uwierzytelniających.",
"authOverridePrivateHint": "Te dane uwierzytelniające są prywatne i dostępne tylko dla Ciebie. Właściciel hosta i inni odbiorcy nie mogą ich zobaczyć ani używać.",
"authOverrideSaved": "Zapisano osobiste uwierzytelnianie SSH",
"authOverrideCleared": "Usunięto osobiste uwierzytelnianie SSH",
"authOverrideClearedToShared": "Korzystanie z uwierzytelniania hosta współdzielonego",
"authOverrideLoadError": "Nie udało się załadować uwierzytelnienia SSH. Spróbuj ponownie.",
"authOverrideSaveError": "Nie udało się zapisać uwierzytelnienia SSH"
},
"guac": {
"connection": "Połączenie",
"authentication": "Uwierzytelnianie",
"storedCredential": "Zapisane dane uwierzytelniające",
"noCredential": "Brak danych uwierzytelniających (bezpośrednie dane uwierzytelniające poniżej)",
"authMethod": "Metoda uwierzytelniania",
"authTypeDirect": "Bezpośredni",
"authTypeCredential": "Mandat",
"authTypeNone": "Nic",
"authTypeNoneDesc": "Żadne dane uwierzytelniające nie są przechowywane. Przy każdym połączeniu zostaniesz poproszony o podanie nazwy użytkownika i hasła; dane te nie zostaną zapisane.",
"selectCredential": "Wybierz dane uwierzytelniające...",
"connectionSettings": "Ustawienia połączenia",
"displaySettings": "Ustawienia wyświetlania",
"audioSettings": "Ustawienia audio",
"rdpPerformance": "Wydajność RDP",
"deviceRedirection": "Przekierowanie urządzenia",
"session": "Sesja",
"gateway": "Wejście",
"remoteApp": "Aplikacja zdalna",
"clipboard": "Schowek",
"sessionRecording": "Nagrywanie sesji",
"wakeOnLan": "Wake-on-LAN",
"vncSettings": "Ustawienia VNC",
"terminalSettings": "Ustawienia terminala",
"rdpPort": "Port RDP",
"username": "Nazwa użytkownika",
"password": "Hasło",
"passwordSaved": "Hasło zapisane, wpisz, aby zmienić",
"domain": "Domena",
"securityMode": "Tryb bezpieczeństwa",
"colorDepth": "Głębia koloru",
"width": "Szerokość",
"height": "Wysokość",
"dpi": "DPI",
"resizeMethod": "Metoda zmiany rozmiaru",
"clientName": "Nazwa klienta",
"initialProgram": "Program początkowy",
"serverLayout": "Układ serwera",
"timezone": "Strefa czasowa",
"loadBalanceInfo": "Informacje o równoważeniu obciążenia / pliki cookie",
"loadBalanceInfoDesc": "Plik cookie brokera połączeń usług pulpitu zdalnego do równoważenia obciążenia farmy usług pulpitu zdalnego (np. tsv://MS Terminal Services Plugin.1.CollectionName)",
"guacdProxy": "Serwer proxy guacd",
"guacdHostname": "Host guacd",
"guacdHostnamePlaceholder": "Globalne domyślne",
"guacdPort": "Port Guacd",
"guacdProxyDesc": "Zastąp globalną instancję GUACD dla tego połączenia. Pozostaw puste, aby użyć globalnie skonfigurowanej instancji GUACD.",
"gatewayHostname": "Nazwa hosta bramy",
"gatewayPort": "Port bramny",
"gatewayUsername": "Nazwa użytkownika bramy",
"gatewayPassword": "Hasło bramy",
"gatewayDomain": "Domena bramy",
"remoteAppProgram": "Program RemoteApp",
"workingDirectory": "Katalog roboczy",
"arguments": "Argumenty",
"normalizeLineEndings": "Normalizuj zakończenia linii",
"recordingPath": "Ścieżka nagrywania",
"recordingName": "Nazwa nagrania",
"macAddress": "Adres MAC",
"broadcastAddress": "Adres rozgłoszeniowy",
"udpPort": "Port UDP",
"waitTimeS": "Czas oczekiwania (s)",
"driveName": "Nazwa dysku",
"drivePath": "Ścieżka jazdy",
"ignoreCertificate": "Ignoruj certyfikat",
"ignoreCertificateDesc": "Zezwalaj na połączenia z hostami z certyfikatami podpisanymi samodzielnie",
"forceLossless": "Siła bezstratna",
"forceLosslessDesc": "Wymuś bezstratne kodowanie obrazu (wyższa jakość, większa przepustowość)",
"disableAudio": "Wyłącz dźwięk",
"disableAudioDesc": "Wycisz cały dźwięk z sesji zdalnej",
"enableAudioInput": "Włącz wejście audio (mikrofon)",
"enableAudioInputDesc": "Przekaż lokalny mikrofon do sesji zdalnej",
"wallpaper": "Tapeta",
"wallpaperDesc": "Pokaż tapetę pulpitu (wyłączenie poprawia wydajność)",
"theming": "Tematyka",
"themingDesc": "Włącz motywy i style wizualne",
"fontSmoothing": "Wygładzanie czcionek",
"fontSmoothingDesc": "Włącz renderowanie czcionek ClearType",
"fullWindowDrag": "Przeciąganie pełnego okna",
"fullWindowDragDesc": "Pokaż zawartość okna podczas przeciągania",
"desktopComposition": "Kompozycja pulpitu",
"desktopCompositionDesc": "Włącz efekty Aero Glass",
"menuAnimations": "Animacje menu",
"menuAnimationsDesc": "Włącz zanikanie menu i animacje slajdów",
"disableBitmapCaching": "Wyłącz buforowanie map bitowych",
"disableBitmapCachingDesc": "Wyłącz pamięć podręczną mapy bitowej (może pomóc w przypadku usterek)",
"disableOffscreenCaching": "Wyłącz buforowanie poza ekranem",
"disableOffscreenCachingDesc": "Wyłącz pamięć podręczną poza ekranem",
"disableGlyphCaching": "Wyłącz buforowanie glifów",
"disableGlyphCachingDesc": "Wyłącz pamięć podręczną glifów",
"enableGfx": "Włącz GFX",
"enableGfxDesc": "Użyj potoku graficznego RemoteFX",
"enablePrinting": "Włącz drukowanie",
"enablePrintingDesc": "Przekieruj drukarki lokalne do sesji zdalnej",
"enableDriveRedirection": "Włącz przekierowanie dysku",
"enableDriveRedirectionDesc": "Mapowanie folderu lokalnego jako dysku w sesji zdalnej",
"createDrivePath": "Utwórz ścieżkę dysku",
"createDrivePathDesc": "Automatycznie utwórz folder, jeśli nie istnieje",
"disableDownload": "Wyłącz pobieranie",
"disableDownloadDesc": "Zapobiegaj pobieraniu plików z sesji zdalnej",
"disableUpload": "Wyłącz przesyłanie",
"disableUploadDesc": "Zapobiegaj przesyłaniu plików do sesji zdalnej",
"enableTouch": "Włącz dotyk",
"enableTouchDesc": "Włącz przekazywanie danych dotykowych",
"consoleSession": "Sesja konsoli",
"consoleSessionDesc": "Połącz się z konsolą (sesja 0) zamiast z nową sesją",
"sendWolPacket": "Wyślij pakiet WOL",
"sendWolPacketDesc": "Wyślij magiczny pakiet, aby obudzić tego hosta przed połączeniem",
"disableCopy": "Wyłącz kopiowanie",
"disableCopyDesc": "Zapobiegaj kopiowaniu tekstu z sesji zdalnej",
"disablePaste": "Wyłącz wklejanie",
"disablePasteDesc": "Zapobiegaj wklejaniu tekstu do sesji zdalnej",
"createPathIfMissing": "Utwórz ścieżkę, jeśli brakuje",
"createPathIfMissingDesc": "Automatyczne tworzenie katalogu nagrań",
"excludeOutput": "Wyklucz dane wyjściowe",
"excludeOutputDesc": "Nie nagrywaj danych wyjściowych z ekranu (tylko metadane)",
"excludeMouse": "Wyklucz mysz",
"excludeMouseDesc": "Nie nagrywaj ruchów myszy",
"includeKeystrokes": "Uwzględnij naciśnięcia klawiszy",
"includeKeystrokesDesc": "Rejestruj surowe naciśnięcia klawiszy oprócz danych wyjściowych na ekranie",
"vncPort": "Port VNC",
"vncPassword": "Hasło VNC",
"vncUsernameOptional": "Nazwa użytkownika (opcjonalnie)",
"vncLeaveBlank": "Jeśli nie jest to wymagane, pozostaw puste",
"cursorMode": "Tryb kursora",
"swapRedBlue": "Zamień czerwony/niebieski",
"swapRedBlueDesc": "Zamień kanały kolorów czerwonego i niebieskiego (rozwiązuje niektóre problemy z kolorami)",
"readOnly": "Tylko do odczytu",
"readOnlyDesc": "Wyświetlaj ekran zdalny bez wysyłania żadnych danych wejściowych",
"telnetPort": "Port Telnet",
"terminalType": "Typ terminala",
"fontName": "Nazwa czcionki",
"fontSize": "Rozmiar czcionki",
"colorScheme": "Schemat kolorów",
"backspaceKey": "Klawisz Backspace",
"saveHostFirst": "Najpierw zapisz hosta.",
"sharingOptionsAfterSave": "Opcje udostępniania będą dostępne po zapisaniu hosta.",
"permissionLevel": "Poziom uprawnień",
"typeHeader": "Typ",
"targetHeader": "Cel",
"permissionHeader": "Pozwolenie",
"cancelBtn": "Anulować",
"savingBtn": "Oszczędność...",
"updateHostBtn": "Aktualizacja hosta",
"addHostBtn": "Dodaj hosta"
},
"arrangeUnlockedSwitchedToManual": "Przeszedłem na sortowanie ręczne, aby zachować kolejność",
"dragToRearrange": "Przeciągnij, aby zmienić kolejność",
"arrangeUnlocked": "Odblokuj przeciąganie, aby zmienić kolejność"
},
"commandPalette": {
"searchPlaceholder": "Wyszukaj hosty, polecenia lub ustawienia...",
"quickActions": "Szybkie akcje",
"navigation": "Nawigacja",
"orShortcut": "Lub",
"hostManager": "Menedżer hosta",
"hostManagerDesc": "Zarządzaj, dodawaj lub edytuj hosty",
"addNewHost": "Dodaj nowego hosta",
"addNewHostDesc": "Zarejestruj nowego hosta",
"adminSettings": "Ustawienia administratora",
"adminSettingsDesc": "Konfiguruj preferencje systemowe i użytkowników",
"userProfile": "Profil użytkownika",
"userProfileDesc": "Zarządzaj swoim kontem i preferencjami",
"addCredential": "Dodaj poświadczenia",
"addCredentialDesc": "Przechowuj klucze SSH lub hasła",
"tmuxMonitor": "Monitor Tmux",
"tmuxMonitorDesc": "Monitoruj sesje tmux na wszystkich swoich hostach",
"snippets": "Fragmenty",
"runSnippetDesc": "Uruchom w aktywnej karcie terminala",
"noSnippetsFound": "Nie znaleziono fragmentów pasujących do „{{search}}”",
"recentActivity": "Ostatnia aktywność",
"serversAndHosts": "Serwery i hosty",
"noHostsFound": "Nie znaleziono hostów pasujących do „{{search}}”",
"links": "Spinki do mankietów",
"navigate": "Nawigować",
"select": "Wybierać",
"toggleWith": "Przełącz z",
"localTerminal": "Terminal lokalny",
"localTerminalDesc": "Otwórz powłokę na tym komputerze"
},
"splitScreen": {
"paneEmpty": "Panel {{index}} - pusty",
"noTabAssigned": "Brak przypisanej karty",
"focusedPane": "Aktywny panel"
},
"connections": {
"noConnections": "Brak połączeń",
"noConnectionsDesc": "Otwórz terminal, menedżera plików lub pulpit zdalny, aby zobaczyć połączenia tutaj",
"connectedFor": "Połączono dla {{duration}}",
"connected": "Połączony",
"disconnected": "Bezładny",
"closeTab": "Zamknij kartę",
"closeConnection": "Bliskie połączenie",
"forgetTab": "Zapominać",
"removeBackground": "Usunąć",
"reconnect": "Na nowo połączyć",
"reopenTab": "Otworzyć na nowo",
"sectionOpen": "Otwarte",
"sectionBackground": "Tło",
"backgroundDesc": "Sesje trwają przez 30 minut od momentu rozłączenia, po czym można je ponownie nawiązać.",
"persisted": "Trwały w tle",
"expiresIn": "Wygasa za {{duration}}",
"search": "Wyszukaj połączenia...",
"noSearchResults": "Brak połączeń odpowiadających Twojemu wyszukiwaniu",
"rename": "Zmień nazwę sesji",
"sectionSharedWithMe": "Udostępniono mi",
"sharedBy": "Udostępnione przez {{username}}",
"join": "Dołączyć",
"sharedSessionLabel": "{{hostName}} (udostępnione)"
},
"sessionSharing": {
"guestView": {
"loading": "Łączenie z sesją współdzieloną...",
"linkInvalid": "Ten link do udostępniania jest nieprawidłowy, wygasł lub został odwołany",
"rateLimited": "Zbyt wiele prób, spróbuj ponownie za chwilę",
"sessionEnded": "Ta sesja dobiegła końca",
"readOnlyBadge": "Tylko do podglądu"
},
"modalTitle": "Udostępnij sesję",
"shareButton": "Udział",
"notReadyToShare": "Sesja nie jest jeszcze gotowa do udostępnienia",
"modeTab": {
"link": "Połączyć",
"user": "Użytkownik"
},
"linkModeDescription": "Każdy mający ten link może dołączyć, nie jest wymagane założenie konta.",
"userModeDescription": "Udostępnij dane konkretnemu użytkownikowi, który ma już dostęp do tego hosta. Jeśli jeszcze nie ma dostępu, najpierw udostępnij mu hosta lub skorzystaj z linku. Po udostępnieniu sesja pojawi się na jego karcie Połączenia.",
"permissionLevel": {
"label": "Poziom uprawnień",
"readOnly": "Tylko do odczytu",
"readOnlyDescription": "Można oglądać sesję na żywo, ale nie można pisać ani brać udziału w interakcji.",
"readWrite": "Odczyt-zapis",
"readWriteDescription": "Może pisać i uczestniczyć w sesji tak samo jak właściciel."
},
"expiryLabel": "Wygaśnięcie łącza",
"createLinkButton": "Utwórz link",
"createShareButton": "Udostępnij użytkownikowi",
"searchUsersPlaceholder": "Wyszukaj użytkowników...",
"noUsersFound": "Nie znaleziono użytkowników",
"linkCreated": "Udostępnij link utworzony",
"linkCopied": "Link skopiowany do schowka",
"copyLink": "Kopiuj link",
"shareCreated": "Sesja udostępniona. Pojawi się na karcie Połączenia.",
"shareFailed": "Nie udało się utworzyć udziału",
"userLacksHostAccess": "Ten użytkownik nie ma jeszcze dostępu do tego hosta. Udostępnij mu najpierw hosta lub skorzystaj z linku.",
"activeShares": "Aktywne akcje",
"noActiveShares": "Brak aktywnych akcji w tej sesji",
"revoke": "Unieważnić",
"revokeConfirmTitle": "Cofnąć to udostępnienie?",
"revokeConfirmDescription": "Każda osoba korzystająca z tego udziału natychmiast utraci do niego dostęp.",
"revoked": "Udostępnij odwołano",
"revokeFailed": "Nie udało się odwołać udostępniania",
"joinCount": "{{count}} dołącz",
"joinCount_other": "{{count}} łączy",
"expiresAt": "Wygasa {{date}}",
"linkShareBadge": "Połączyć",
"userShareBadge": "Użytkownik: {{username}}",
"loadSharesFailed": "Nie udało się załadować aktywnych udziałów"
},
"guacamole": {
"connecting": "Łączenie z sesją {{type}}...",
"connectionError": "Błąd połączenia",
"connectionFailed": "Połączenie nieudane",
"failedToConnect": "Nie udało się uzyskać tokena połączenia",
"hostNotFound": "Nie znaleziono hosta",
"noHostSelected": "Nie wybrano hosta",
"reconnect": "Na nowo połączyć",
"retry": "Spróbować ponownie",
"guacdUnavailable": "Usługa pulpitu zdalnego (guacd) jest niedostępna. Upewnij się, że usługa guacd jest uruchomiona, dostępna i poprawnie skonfigurowana w ustawieniach administratora.",
"credentialPromptTitle": "Wprowadź dane uwierzytelniające RDP",
"credentialPromptDescription": "Ten host jest skonfigurowany tak, aby prosić o dane uwierzytelniające podczas łączenia. Są one używane tylko w tej sesji i nie są zapisywane.",
"connect": "Łączyć",
"ctrlAltDel": "Ctrl+Alt+Del",
"files": {
"title": "Pliki dyskowe",
"parent": "Katalog nadrzędny",
"refresh": "Odświeżać",
"empty": "Ten folder jest pusty",
"listFailed": "Nie udało się odczytać tego folderu",
"download": "Pobierać",
"downloadFailed": "Nie udało się pobrać {{name}}",
"upload": "Prześlij pliki",
"uploading": "Przesyłanie {{name}}...",
"uploaded": "Przesłano {{name}}",
"uploadFailed": "Nie udało się przesłać {{name}}",
"uploadDisabled": "Przesyłanie danych jest wyłączone dla tego połączenia",
"dropToUpload": "Upuść pliki, aby je przesłać"
},
"toolbar": {
"ctrlAltDel": "Ctrl+Alt+Del",
"winL": "Win+L (ekran blokady)",
"winKey": "Klawisz Windows",
"ctrl": "klawisz kontrolny",
"alt": "Alt",
"shift": "Zmiana",
"win": "Wygrać",
"stickyActive": "{{key}} (zatrzaśnięty - kliknij, aby zwolnić)",
"stickyInactive": "{{key}} (kliknij, aby zablokować)",
"esc": "Ucieczka",
"tab": "Patka",
"home": "Dom",
"end": "Koniec",
"pageUp": "Strona w górę",
"pageDown": "Strona w dół",
"arrowUp": "Strzałka w górę",
"arrowDown": "Strzałka w dół",
"arrowLeft": "Strzałka w lewo",
"arrowRight": "Strzałka w prawo",
"fnToggle": "Klawisze funkcyjne",
"reconnect": "Ponowne połączenie sesji",
"collapse": "Zwiń pasek narzędzi",
"expand": "Rozwiń pasek narzędzi",
"dragHandle": "Przeciągnij, aby zmienić położenie",
"switchToTrackpad": "Przełącz na tryb gładzika (przeciągnij, aby przesunąć kursor, dotknij, aby kliknąć)",
"switchToTouch": "Przełącz na tryb dotykowy (dotknij bezpośrednio miejsca, w którym chcesz kliknąć)"
}
},
"terminal": {
"connect": "Połącz z hostem",
"clear": "Jasne",
"paste": "Pasta",
"reconnect": "Na nowo połączyć",
"connectionLost": "Utracono połączenie",
"connected": "Połączony",
"clipboardWriteFailed": "Nie udało się skopiować do schowka. Upewnij się, że strona jest obsługiwana przez HTTPS lub localhost.",
"clipboardReadFailed": "Nie udało się odczytać danych ze schowka. Upewnij się, że uprawnienia do schowka zostały przyznane.",
"clipboardHttpWarning": "Nie udało się odczytać schowka. Niektóre przeglądarki ograniczają dostęp do schowka poza protokołem HTTPS – spróbuj zamiast tego użyć kombinacji klawiszy Ctrl+V lub obsługuj Termix przez HTTPS.",
"passwordPromptFillTitle": "Czy wpisać zapisane hasło w tym monicie?",
"unknownError": "Wystąpił nieznany błąd",
"websocketError": "Błąd połączenia WebSocket",
"connecting": "Złączony...",
"noHostSelected": "Nie wybrano hosta",
"reconnecting": "Ponowne łączenie... ({{attempt}}/{{max}})",
"reconnected": "Połączono ponownie pomyślnie",
"tmuxSessionCreated": "Utworzono sesję tmux: {{name}}",
"tmuxSessionAttached": "dołączono sesję tmux: {{name}}",
"tmuxUnavailable": "tmux nie jest zainstalowany na zdalnym hoście, co powoduje powrót do standardowej powłoki",
"tmuxSessionPickerTitle": "Sesje tmux",
"tmuxSessionPickerDesc": "Znaleziono istniejące sesje tmux na tym hoście. Wybierz jedną, aby ponownie dołączyć lub utworzyć nową sesję.",
"tmuxWindows": "Okna",
"tmuxWindowCount": "okno {{count}}",
"tmuxAttached": "Dołączeni klienci",
"tmuxAttachedCount": "{{count}} załączono",
"tmuxLastActivity": "Ostatnia aktywność",
"tmuxTimeJustNow": "właśnie",
"tmuxTimeMinutes": "{{count}}m temu",
"tmuxTimeHours": "{{count}}godz. temu",
"tmuxTimeDays": "{{count}}dni temu",
"tmuxCreateNew": "Rozpocznij nową sesję",
"tmuxCopyHint": "Dostosuj wybór i naciśnij Enter, aby skopiować do schowka",
"tmuxDetach": "Odłącz od sesji tmux",
"tmuxDetached": "Odłączono od sesji tmux",
"searchPlaceholder": "Znajdować",
"searchCaseSensitive": "Etui na zapałki",
"searchWholeWord": "Dopasuj całe słowo",
"searchRegex": "Użyj wyrażenia regularnego",
"searchNoResults": "Brak wyników",
"searchResultCount": "{{index}} z {{count}}",
"searchNext": "Następny mecz (Enter)",
"searchPrevious": "Poprzednie dopasowanie (Shift+Enter)",
"searchClose": "Zamknij (Ucieczka)",
"maxReconnectAttemptsReached": "Osiągnięto maksymalną liczbę prób ponownego połączenia",
"closeTab": "Zamknąć",
"connectionTimeout": "Przekroczono limit czasu połączenia",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Uruchomienie {{command}} - {{host}}",
"totpRequired": "Wymagane uwierzytelnianie dwuskładnikowe",
"totpCodeLabel": "Kod weryfikacyjny",
"totpVerify": "Zweryfikować",
"mfaPromptRequired": "Wymagane uwierzytelnienie",
"mfaPushRequired": "Wymagane uwierzytelnianie push",
"mfaMenuPlaceholder": "Wprowadź swoją odpowiedź",
"mfaWaitingApproval": "Oczekiwanie na zatwierdzenie na Twoim urządzeniu...",
"mfaSendRequest": "Wyślij prośbę",
"warpgateAuthRequired": "Wymagane uwierzytelnienie Warpgate",
"warpgateSecurityKey": "Klucz bezpieczeństwa",
"warpgateAuthUrl": "Adres URL uwierzytelniania",
"warpgateOpenBrowser": "Otwórz w przeglądarce",
"warpgateContinue": "Ukończyłem uwierzytelnianie",
"opksshAuthRequired": "Wymagane uwierzytelnienie OPKSSH",
"opksshAuthDescription": "Aby kontynuować, dokończ uwierzytelnianie w przeglądarce. Ta sesja będzie ważna przez 24 godziny.",
"opksshOpenBrowser": "Otwórz przeglądarkę, aby uwierzytelnić",
"opksshWaitingForAuth": "Oczekiwanie na uwierzytelnienie w przeglądarce...",
"opksshAuthenticating": "Przetwarzanie uwierzytelniania...",
"opksshTimeout": "Utracono limit czasu uwierzytelniania. Spróbuj ponownie.",
"opksshAuthFailed": "Uwierzytelnienie nie powiodło się. Sprawdź swoje dane logowania i spróbuj ponownie.",
"opksshSignInWith": "Zaloguj się za pomocą {{provider}}",
"tailscaleCheckRequired": "Wymagane uwierzytelnienie Tailscale",
"tailscaleCheckDescription": "Tailscale SSH wymaga dodatkowej weryfikacji. Uwierzytelnij się w przeglądarce, aby kontynuować.",
"tailscaleCheckOpenBrowser": "Otwórz przeglądarkę, aby uwierzytelnić",
"tailscaleCheckWaiting": "Oczekiwanie na uwierzytelnienie Tailscale...",
"tailscaleCheckTimeout": "Upłynął limit czasu uwierzytelniania Tailscale. Spróbuj ponownie.",
"vaultAuthTitle": "Wymagane jest zalogowanie się do Vault",
"vaultAuthDescription": "Otworzyło się okno logowania do HashiCorp Vault. Dokończ logowanie, a połączenie zostanie nawiązane automatycznie.",
"vaultAuthFailed": "Uwierzytelnienie skarbca nie powiodło się. Spróbuj ponownie.",
"vaultReopen": "Otwórz ponownie okno logowania",
"sudoPasswordPopupTitle": "Wprowadzić hasło?",
"linkDialogTitle": "Otwórz link",
"linkDialogOpen": "Otwarte",
"linkDialogCopy": "Kopia",
"websocketAbnormalClose": "Połączenie zostało nieoczekiwanie zamknięte. Przyczyną może być odwrotny serwer proxy lub problem z konfiguracją SSL. Sprawdź logi serwera.",
"connectionLogTitle": "Dziennik połączeń",
"connectionLogCopy": "Kopiuj dzienniki do schowka",
"connectionLogEmpty": "Brak jeszcze dzienników połączeń",
"connectionLogWaiting": "Oczekiwanie na logi połączeń...",
"connectionLogCopied": "Dzienniki połączeń skopiowane do schowka",
"connectionLogCopyFailed": "Nie udało się skopiować dzienników do schowka",
"connectionRejected": "Połączenie odrzucone przez serwer. Sprawdź uwierzytelnianie i konfigurację sieci.",
"hostKeyRejected": "Weryfikacja klucza hosta SSH odrzucona. Połączenie anulowane.",
"sessionTakenOver": "Sesja została otwarta w innej karcie. Ponowne łączenie...",
"split": {
"splitTab": "Podziel kartę",
"addToSplit": "Dodaj do podziału",
"removeFromSplit": "Usuń z podziału"
}
},
"fileManager": {
"noHostSelected": "Nie wybrano hosta",
"initializingEditor": "Inicjalizacja edytora...",
"file": "Plik",
"folder": "Falcówka",
"uploadFile": "Prześlij plik",
"downloadFile": "Pobierać",
"extractArchive": "Wyodrębnij archiwum",
"extractingArchive": "Wyodrębnianie {{name}}...",
"archiveExtractedSuccessfully": "{{name}} wyodrębniono pomyślnie",
"extractFailed": "Wyodrębnienie nie powiodło się",
"compressFile": "Kompresja pliku",
"compressFiles": "Kompresuj pliki",
"compressFilesDesc": "Kompresuj {{count}} elementów do archiwum",
"archiveName": "Nazwa archiwum",
"enterArchiveName": "Wprowadź nazwę archiwum...",
"compressionFormat": "Format kompresji",
"selectedFiles": "Wybrane pliki",
"andMoreFiles": "i {{count}} więcej...",
"compress": "Kompres",
"compressingFiles": "Kompresowanie {{count}} elementów do {{name}}...",
"filesCompressedSuccessfully": "{{name}} utworzono pomyślnie",
"compressFailed": "Kompresja nie powiodła się",
"edit": "Redagować",
"preview": "Zapowiedź",
"previous": "Poprzedni",
"next": "Następny",
"pageXOfY": "Strona {{current}} z {{total}}",
"zoomOut": "Oddal",
"zoomIn": "Powiększ",
"newFile": "Nowy plik",
"newFolder": "Nowy folder",
"rename": "Przemianować",
"uploading": "Przesyłanie...",
"uploadingFile": "Przesyłanie {{name}}...",
"fileName": "Nazwa pliku",
"folderName": "Nazwa folderu",
"fileUploadedSuccessfully": "Plik „{{name}}” został pomyślnie przesłany",
"failedToUploadFile": "Nie udało się przesłać pliku",
"fileDownloadedSuccessfully": "Plik „{{name}}” został pomyślnie pobrany",
"failedToDownloadFile": "Nie udało się pobrać pliku",
"fileCreatedSuccessfully": "Plik „{{name}}” został pomyślnie utworzony",
"folderCreatedSuccessfully": "Folder „{{name}}” został pomyślnie utworzony",
"failedToCreateItem": "Nie udało się utworzyć elementu",
"operationFailed": "Operacja {{operation}} nie powiodła się dla {{name}}: {{error}}",
"failedToResolveSymlink": "Nie udało się rozwiązać dowiązania symbolicznego",
"itemsDeletedSuccessfully": "{{count}} elementów pomyślnie usunięto",
"failedToDeleteItems": "Nie udało się usunąć elementów",
"sudoPasswordRequired": "Wymagane hasło administratora",
"enterSudoPassword": "Wprowadź hasło sudo, aby kontynuować tę operację",
"sudoPassword": "Hasło Sudo",
"sudoOperationFailed": "Operacja sudo nie powiodła się",
"sudoAuthFailed": "Uwierzytelnianie Sudo nie powiodło się",
"dragFilesToUpload": "Upuść pliki tutaj, aby je przesłać",
"emptyFolder": "Ten folder jest pusty",
"searchFiles": "Wyszukaj pliki...",
"upload": "Wgrywać",
"selectHostToStart": "Wybierz hosta, aby rozpocząć zarządzanie plikami",
"sshRequiredForFileManager": "Menedżer plików wymaga protokołu SSH. Ten host nie ma włączonego protokołu SSH.",
"failedToConnect": "Nie udało się połączyć z SSH",
"failedToLoadDirectory": "Nie udało się załadować katalogu",
"noSSHConnection": "Brak dostępnego połączenia SSH",
"copy": "Kopia",
"cut": "Cięcie",
"paste": "Pasta",
"copyPath": "Kopiuj ścieżkę",
"copyPaths": "Kopiuj ścieżki",
"delete": "Usuwać",
"properties": "Właściwości",
"refresh": "Odświeżać",
"downloadFiles": "Pobierz {{count}} plików do przeglądarki",
"copyFiles": "Skopiuj {{count}} elementów",
"cutFiles": "Wytnij {{count}} elementów",
"deleteFiles": "Usuń {{count}} elementów",
"filesCopiedToClipboard": "{{count}} elementów skopiowano do schowka",
"filesCutToClipboard": "{{count}} elementów wycięto do schowka",
"pathCopiedToClipboard": "Ścieżka skopiowana do schowka",
"pathsCopiedToClipboard": "{{count}} ścieżek skopiowano do schowka",
"failedToCopyPath": "Nie udało się skopiować ścieżki do schowka",
"copyFolderLink": "Kopiuj link do folderu",
"copyCurrentFolderLink": "Kopiuj link do bieżącego folderu",
"folderLinkCopied": "Link do folderu skopiowany do schowka",
"failedToCopyFolderLink": "Nie udało się skopiować łącza do folderu",
"movedItems": "Przeniesiono {{count}} elementów",
"failedToDeleteItem": "Nie udało się usunąć elementu",
"itemRenamedSuccessfully": "{{type}} pomyślnie zmieniono nazwę",
"failedToRenameItem": "Nie udało się zmienić nazwy elementu",
"download": "Pobierać",
"openExternalEditor": "Otwórz zewnętrznie",
"chooseExternalEditor": "Wybierz edytor zewnętrzny",
"externalEditorSelected": "Wybrano edytor zewnętrzny",
"externalEditorDesktopOnly": "Edytor zewnętrzny jest dostępny tylko w aplikacji na komputer",
"externalEditorOpened": "Otwarto w edytorze zewnętrznym. Zapisanie tam spowoduje przesłanie zmian z powrotem na serwer.",
"failedToOpenExternalEditor": "Nie udało się otworzyć edytora zewnętrznego",
"failedToSelectExternalEditor": "Nie udało się wybrać edytora zewnętrznego",
"permissions": "Uprawnienia",
"size": "Rozmiar",
"modified": "Zmodyfikowany",
"path": "Ścieżka",
"confirmDelete": "Czy na pewno chcesz usunąć {{name}}?",
"permissionDenied": "Odmowa pozwolenia",
"serverError": "Błąd serwera",
"fileSavedSuccessfully": "Plik zapisany pomyślnie",
"failedToSaveFile": "Nie udało się zapisać pliku",
"confirmDeleteSingleItem": "Czy na pewno chcesz trwale usunąć „{{name}}”?",
"confirmDeleteMultipleItems": "Czy na pewno chcesz trwale usunąć {{count}} elementów?",
"confirmDeleteMultipleItemsWithFolders": "Czy na pewno chcesz trwale usunąć {{count}} elementów? Dotyczy to również folderów i ich zawartości.",
"confirmDeleteFolder": "Czy na pewno chcesz trwale usunąć folder „{{name}}” i całą jego zawartość?",
"permanentDeleteWarning": "Tej czynności nie można cofnąć. Elementy zostaną trwale usunięte z serwera.",
"moveToTrashWarning": "Przedmiot(y) zostaną przeniesione do Kosza Termix i będzie można je przywrócić przed upływem okresu przechowywania.",
"itemsMovedToTrash": "{{count}} elementów przeniesiono do Kosza",
"trash": "Śmieci",
"trashDescription": "Usunięte elementy są przechowywane na tym hoście przez {{days}} dni.",
"trashLoadFailed": "Nie udało się załadować Kosza",
"trashEmpty": "Kosz jest pusty",
"trashRestore": "Przywrócić",
"trashRestored": "Przywrócono {{name}}",
"trashRestoreFailed": "Nie udało się przywrócić elementu. Oryginalna ścieżka może już istnieć.",
"trashDeletePermanently": "Usuń trwale",
"trashDeleteConfirm": "Czy trwale usunąć {{name}}? Tego nie można cofnąć.",
"trashPermanentlyDeleted": "Trwale usunięty {{name}}",
"trashDeleteFailed": "Nie udało się trwale usunąć elementu",
"trashEmptyAction": "Opróżnij kosz",
"trashEmptyConfirm": "Trwale usunąć wszystkie elementy z Kosza? Tego nie da się cofnąć.",
"trashEmptied": "Kosz opróżniony",
"trashRetention": "Automatyczne czyszczenie po (dniach)",
"trashRetentionSaved": "Zaktualizowano przechowywanie śmieci",
"trashRetentionFailed": "Nie udało się zaktualizować przechowywania w koszu",
"trashUnavailableConfirm": "Tego elementu nie można przenieść do Kosza, zazwyczaj dlatego, że znajduje się w innym systemie plików lub wymaga podwyższonych uprawnień. Czy zamiast tego usunąć go trwale?",
"recent": "Ostatni",
"pinned": "Przypięte",
"folderShortcuts": "Skróty folderów",
"failedToReconnectSSH": "Nie udało się ponownie połączyć z sesją SSH",
"openTerminalHere": "Otwórz terminal tutaj",
"run": "Uruchomić",
"openTerminalInFolder": "Otwórz terminal w tym folderze",
"openTerminalInFileLocation": "Otwórz terminal w lokalizacji pliku",
"runningFile": "Bieganie - {{file}}",
"onlyRunExecutableFiles": "Można uruchamiać tylko pliki wykonywalne",
"directories": "Katalogi",
"removedFromRecentFiles": "Usunięto „{{name}}” z ostatnich plików",
"removeFailed": "Usuń nieudane",
"unpinnedSuccessfully": "Odpięto pomyślnie „{{name}}”",
"unpinFailed": "Odpięcie nie powiodło się",
"removedShortcut": "Usunięto skrót „{{name}}”",
"removeShortcutFailed": "Nie udało się usunąć skrótu",
"clearedAllRecentFiles": "Wyczyszczono wszystkie ostatnie pliki",
"clearFailed": "Wyczyść nieudane",
"removeFromRecentFiles": "Usuń z ostatnich plików",
"clearAllRecentFiles": "Wyczyść wszystkie ostatnie pliki",
"unpinFile": "Odepnij plik",
"removeShortcut": "Usuń skrót",
"pinFile": "Przypnij plik",
"addToShortcuts": "Dodaj do skrótów",
"pasteFailed": "Wklejenie nie powiodło się",
"noUndoableActions": "Brak działań niemożliwych do cofnięcia",
"undoCopySuccess": "Cofnięta operacja kopiowania: Usunięto {{count}} skopiowanych plików",
"undoCopyFailedDelete": "Nie udało się cofnąć: Nie udało się usunąć żadnych skopiowanych plików",
"undoCopyFailedNoInfo": "Nie udało się cofnąć: Nie można znaleźć informacji o skopiowanym pliku",
"undoMoveSuccess": "Cofnięta operacja przenoszenia: przeniesiono {{count}} plików z powrotem do oryginalnej lokalizacji",
"undoMoveFailedMove": "Nie udało się cofnąć: Nie można przenieść żadnych plików z powrotem",
"undoMoveFailedNoInfo": "Nie udało się cofnąć: Nie można znaleźć informacji o przeniesionym pliku",
"undoDeleteNotSupported": "Operacji usunięcia nie można cofnąć: pliki zostały trwale usunięte z serwera",
"undoTypeNotSupported": "Nieobsługiwany typ operacji cofania",
"undoOperationFailed": "Operacja cofania nie powiodła się",
"unknownError": "Nieznany błąd",
"confirm": "Potwierdzać",
"find": "Znajdować...",
"replace": "Zastępować",
"downloadInstead": "Pobierz zamiast",
"keyboardShortcuts": "Skróty klawiaturowe",
"searchAndReplace": "Wyszukaj i zamień",
"editing": "Redagowanie",
"search": "Szukaj",
"findNext": "Znajdź następny",
"findPrevious": "Znajdź poprzednie",
"save": "Ratować",
"selectAll": "Zaznacz wszystko",
"undo": "Anulować",
"redo": "Przerobić",
"moveLineUp": "Przesuń linię w górę",
"moveLineDown": "Przesuń linię w dół",
"toggleComment": "Przełącz komentarz",
"autoComplete": "Automatyczne uzupełnianie",
"imageLoadError": "Nie udało się załadować obrazu",
"startTyping": "Zacznij pisać...",
"unknownSize": "Nieznany rozmiar",
"fileIsEmpty": "Plik jest pusty",
"largeFileWarning": "Ostrzeżenie o dużym pliku",
"largeFileWarningDesc": "Rozmiar tego pliku wynosi {{size}} , co może powodować problemy z wydajnością podczas otwierania go w formacie tekstowym.",
"fileNotFoundAndRemoved": "Plik „{{name}}” nie został znaleziony i został usunięty z ostatnich/przypiętych plików",
"failedToLoadFile": "Nie udało się załadować pliku: {{error}}",
"serverErrorOccurred": "Wystąpił błąd serwera. Spróbuj ponownie później.",
"autoSaveFailed": "Automatyczne zapisywanie nie powiodło się",
"fileAutoSaved": "Plik zapisany automatycznie",
"moveFileFailed": "Nie udało się przenieść {{name}}",
"moveOperationFailed": "Operacja przenoszenia nie powiodła się",
"canOnlyCompareFiles": "Można porównać tylko dwa pliki",
"comparingFiles": "Porównywanie plików: {{file1}} i {{file2}}",
"dragFailed": "Operacja przeciągania nie powiodła się",
"filePinnedSuccessfully": "Plik „{{name}}” został pomyślnie przypięty",
"pinFileFailed": "Nie udało się przypiąć pliku",
"fileUnpinnedSuccessfully": "Plik „{{name}}” został pomyślnie odpięty",
"unpinFileFailed": "Nie udało się odpiąć pliku",
"shortcutAddedSuccessfully": "Skrót folderu „{{name}}” został pomyślnie dodany",
"addShortcutFailed": "Nie udało się dodać skrótu",
"operationCompletedSuccessfully": "{{operation}} {{count}} elementów pomyślnie",
"operationCompleted": "{{operation}} {{count}} elementów",
"downloadFileSuccess": "Plik {{name}} został pomyślnie pobrany",
"downloadFileFailed": "Pobieranie nie powiodło się",
"moveTo": "Przejdź do {{name}}",
"diffCompareWith": "Porównaj z {{name}}",
"dragOutsideToDownload": "Przeciągnij poza okno, aby pobrać ({{count}} plików)",
"newFolderDefault": "Nowy folder",
"newFileDefault": "NowyPlik.txt",
"successfullyMovedItems": "Pomyślnie przeniesiono {{count}} elementów do {{target}}",
"move": "Przenosić",
"searchInFile": "Wyszukaj w pliku (Ctrl+F)",
"showKeyboardShortcuts": "Pokaż skróty klawiaturowe",
"decreaseFontSize": "Zmniejsz rozmiar czcionki",
"increaseFontSize": "Zwiększ rozmiar czcionki",
"startWritingMarkdown": "Zacznij pisać swoją treść w formacie Markdown...",
"loadingFileComparison": "Ładowanie porównania plików...",
"reload": "Przeładować",
"compare": "Porównywać",
"sideBySide": "Obok siebie",
"inline": "W linii",
"fileComparison": "Porównanie plików: {{file1}} vs {{file2}}",
"fileTooLarge": "Plik jest za duży: {{error}}",
"sshConnectionFailed": "Połączenie SSH nie powiodło się. Sprawdź połączenie z {{name}} ({{ip}}:{{port}})",
"loadFileFailed": "Nie udało się załadować pliku: {{error}}",
"connecting": "Złączony...",
"connectedSuccessfully": "Połączono pomyślnie",
"totpVerificationFailed": "Weryfikacja TOTP nie powiodła się",
"warpgateVerificationFailed": "Nie udało się uwierzytelnić bramy Warpgate",
"authenticationFailed": "Uwierzytelnianie nie powiodło się",
"incorrectPassphrase": "Nieprawidłowe hasło. Spróbuj ponownie.",
"verificationCodePrompt": "Kod weryfikacyjny:",
"changePermissions": "Zmień uprawnienia",
"currentPermissions": "Aktualne uprawnienia",
"owner": "Właściciel",
"group": "Grupa",
"others": "Inni",
"read": "Czytać",
"write": "Pisać",
"execute": "Wykonać",
"permissionsChangedSuccessfully": "Uprawnienia zostały pomyślnie zmienione",
"failedToChangePermissions": "Nie udało się zmienić uprawnień",
"name": "Nazwa",
"sortByName": "Nazwa",
"sortByDate": "Data modyfikacji",
"sortBySize": "Rozmiar",
"ascending": "Rosnąco",
"descending": "Zstępujący",
"root": "Źródło",
"new": "Nowy",
"sortBy": "Sortuj według",
"items": "Rzeczy",
"selected": "Wybrany",
"editor": "Redaktor",
"octal": "Ósemkowy",
"storage": "Składowanie",
"disk": "Dysk",
"used": "Używany",
"of": "z",
"toggleSidebar": "Przełącz pasek boczny",
"cannotLoadPdf": "Nie można załadować pliku PDF",
"pdfLoadError": "Wystąpił błąd podczas ładowania pliku PDF.",
"loadingPdf": "Ładowanie pliku PDF...",
"loadingPage": "Ładowanie strony..."
},
"transfer": {
"copyToHost": "Kopiuj do hosta…",
"moveToHost": "Przenieś do hosta…",
"copyItemsToHost": "Skopiuj {{count}} elementów do hosta…",
"moveItemsToHost": "Przenieś {{count}} elementów do hosta…",
"noHostsConnected": "Brak innych dostępnych hostów menedżerów plików.",
"noHostsConnectedHint": "Dodaj kolejny host SSH z włączonym Menedżerem plików w Menedżerze hosta.",
"selectDestinationHost": "Wybierz hosta docelowego",
"destinationPath": "Ścieżka docelowa",
"recentDestinations": "Ostatnie miejsca docelowe",
"collapseRecentDestinations": "Zwiń ostatnie miejsca docelowe",
"expandRecentDestinations": "Rozszerz ostatnie miejsca docelowe",
"browseFolders": "Przeglądaj foldery docelowe",
"browseDestination": "Przeglądaj lub wprowadź ścieżkę",
"confirmCopy": "Kopia",
"confirmMove": "Przenosić",
"transferring": "Przenoszenie…",
"progressVerifying": "Sprawdzanie integralności pliku…",
"progressBenchmarking": "Wybór najszybszej trasy transferu…",
"compressing": "Kompresja…",
"extracting": "Wyodrębnianie…",
"transferringItems": "Przenoszenie {{current}} z {{total}} elementów…",
"transferSuccess": "Transfer zakończony",
"transferError": "Transfer nie powiódł się",
"transferPartial": "Transfer zakończony z błędami {{count}}",
"transferPartialHint": "Nie można przesłać: {{paths}}",
"itemsSummary": "{{count}} elementów",
"destMustBeDirectory": "Miejsce docelowe musi być katalogiem w przypadku transferów obejmujących wiele pozycji",
"selectThisFolder": "Wybierz ten folder",
"browsePathWillBeCreated": "Ten folder jeszcze nie istnieje. Zostanie utworzony po rozpoczęciu transferu.",
"browsePathError": "Nie można otworzyć tej ścieżki na hoście docelowym.",
"goUp": "Wchodzić",
"copyFolderToHost": "Kopiuj folder do hosta…",
"moveFolderToHost": "Przenieś folder do hosta…",
"hostReady": "Gotowy",
"hostConnecting": "Łączenie…",
"hostDisconnected": "Nie połączony",
"hostAuthRequired": "Wymagane uwierzytelnienie — najpierw otwórz Menedżera plików na tym hoście",
"hostConnectionFailed": "Połączenie nieudane",
"metricsTitle": "Czasy transferu",
"metricsPrepare": "Przygotuj miejsce docelowe: {{duration}}",
"metricsCompress": "Kompresja w źródle: {{duration}}",
"metricsHopSourceRead": "Źródło → serwer: {{throughput}}",
"metricsHopDestSftpWrite": "Serwer → cel (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Serwer → dest (lokalny): {{throughput}}",
"metricsTransfer": "Od końca do końca: {{throughput}} ({{duration}})",
"metricsExtract": "Wyciąg w miejscu docelowym: {{duration}}",
"metricsVerify": "Zweryfikowano SHA-256: {{duration}}",
"metricsRouteBenchmark": "Sonda trasy — bezpośrednia: {{direct}}, przekaźnikowa: {{relay}}",
"metricsSourceDelete": "Usuń ze źródła: {{duration}}",
"metricsTotal": "Razem: {{duration}}",
"progressCompressing": "Kompresja na hoście źródłowym…",
"progressExtracting": "Wyodrębnianie w miejscu docelowym…",
"progressTransferring": "Przesyłanie danych…",
"progressReconnecting": "Ponowne łączenie…",
"parallelSegmentsLabel": "Równoległe pasy transferowe",
"parallelSegmentsOption": "{{count}} pasów",
"parallelSegmentsHint": "Duże pliki są dzielone na fragmenty o rozmiarze 256 MB. Wiele pasm korzysta z oddzielnych połączeń (np. uruchamiając kilka transferów), co zapewnia większą całkowitą przepustowość.",
"progressTotalSpeed": "{{speed}} łącznie ({{lanes}} pasów)",
"progressTransferringItems": "Przesyłanie plików ({{current}} z {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "Pliki {{current}} / {{total}}",
"sourceNotDeletedPartial": "Zachowano pliki źródłowe (częściowy transfer)",
"jumpHostLimitation": "Oba hosty muszą być dostępne z serwera Termix. Bezpośrednie routing między hostami nie jest obsługiwany.",
"cancel": "Anulować",
"methodLabel": "Metoda transferu",
"methodAuto": "Automatyczny",
"methodTar": "Archiwum Tar",
"methodItemSftp": "SFTP dla każdego pliku",
"methodAutoHint": "Wybiera protokół tar lub protokół SFTP dla poszczególnych plików na podstawie liczby plików, ich rozmiaru i możliwości kompresji. Pojedyncze pliki zawsze korzystają ze strumieniowego protokołu SFTP.",
"methodTarHint": "Kompresja w źródle, transfer jednego archiwum, rozpakowanie w miejscu docelowym. Wymagany jest tar na obu hostach Unix.",
"methodItemSftpHint": "Przesyłaj każdy plik osobno przez SFTP. Działa na wszystkich hostach, w tym Windows.",
"methodPreviewLoading": "Obliczanie metody transferu…",
"methodPreviewError": "Nie można wyświetlić podglądu metody transferu. Serwer i tak wybierze metodę po uruchomieniu.",
"methodPreviewWillUseTar": "Użyje: archiwum Tar",
"methodPreviewWillUseItemSftp": "Będzie używać: SFTP dla każdego pliku",
"methodPreviewScanSummary": "{{fileCount}} plików, łącznie {{totalSize}} (przeskanowano na hoście źródłowym).",
"methodItemSftpLimitation": "Każdy plik korzysta z tego samego strumienia SFTP jako pojedyncza kopia pliku, jeden po drugim. Postęp jest łączony we wszystkich plikach, więc pasek przesuwa się powoli w przypadku dużych plików.",
"methodReason": {
"user_item_sftp": "Wybrano SFTP dla poszczególnych plików.",
"user_tar": "Wybrano archiwum tar.",
"tar_unavailable": "Tar nie jest dostępny na jednym lub obu hostach — zamiast tego używany będzie protokół SFTP dla każdego pliku.",
"windows_host": "Wymagany jest host Windows — nie używa się pliku tar.",
"auto_multi_large": "Auto: wiele plików, w tym duży plik ({{largestSize}}) z kompresowalnymi danymi — pakiety tar w jednym transferze.",
"auto_single_large_in_archive": "Auto: jeden duży plik ({{largestSize}}) w tym zestawie — SFTP dla każdego pliku.",
"auto_many_incompressible": "Auto: dane w większości niekompresowalne — SFTP dla każdego pliku.",
"auto_many_files": "Auto: wiele plików ({{fileCount}}) — tar zmniejsza obciążenie pojedynczego pliku.",
"auto_default": "Auto: SFTP dla każdego pliku dla tego zestawu."
},
"progressCancel": "Anulować",
"progressCancelling": "Anulowanie…",
"progressStalled": "Zatrzymany",
"resumedHint": "Połączono ponownie z aktywnym transferem rozpoczętym w innym oknie.",
"transferCancelled": "Transfer anulowany",
"transferCancelledCopyHint": "W miejscu docelowym mogą pozostać częściowe pliki.",
"transferCancelledMoveHint": "W miejscu docelowym mogą pozostać częściowe pliki. Pliki źródłowe nie zostały usunięte.",
"cleanupDestFiles": "Miejsce sprzątania",
"cleanupDestFilesSuccess": "Usunięto częściowe pliki z miejsca docelowego",
"cleanupDestFilesPartial": "Niektórych częściowych plików nie można było usunąć",
"cleanupDestFilesNothing": "Nic do posprzątania w miejscu docelowym",
"cleanupDestFilesError": "Czyszczenie nie powiodło się",
"retryTransfer": "Spróbować ponownie",
"retryTransferError": "Ponowna próba nie powiodła się",
"transferFailedRetryHint": "W miejscu docelowym zachowano częściowe dane. Ponowna próba zostanie wznowiona po przywróceniu połączenia."
},
"tunnels": {
"noSshTunnels": "Brak tuneli SSH",
"createFirstTunnelMessage": "Nie utworzyłeś jeszcze żadnych tuneli SSH. Skonfiguruj połączenia tunelowe w Menedżerze hosta, aby rozpocząć.",
"connected": "Połączony",
"disconnected": "Bezładny",
"connecting": "Złączony...",
"error": "Błąd",
"canceling": "Anulowanie...",
"connect": "Łączyć",
"disconnect": "Odłączyć",
"cancel": "Anulować",
"port": "Port",
"localPort": "Port lokalny",
"remotePort": "Zdalny port",
"currentHostPort": "Aktualny port hosta",
"endpointPort": "Port końcowy",
"bindIp": "Lokalny adres IP",
"endpointSshConfig": "Konfiguracja punktu końcowego SSH",
"endpointSshHost": "Host SSH punktu końcowego",
"endpointSshHostPlaceholder": "Wybierz skonfigurowanego hosta",
"endpointSshHostRequired": "Wybierz hosta SSH punktu końcowego dla każdego tunelu klienta.",
"attempt": "Próba {{current}} z {{max}}",
"nextRetryIn": "Następna próba za {{seconds}} sekund",
"clientTunnels": "Tunele klienckie",
"clientTunnel": "Tunel klienta",
"addClientTunnel": "Dodaj tunel klienta",
"noClientTunnels": "Na tym pulpicie nie skonfigurowano żadnych tuneli klienckich.",
"tunnelName": "Nazwa tunelu",
"remoteHost": "Zdalny host",
"autoStart": "Autostart",
"clientAutoStartDesc": "Uruchamia się po uruchomieniu klienta stacjonarnego i pozostaje połączony.",
"clientManualStartDesc": "Użyj przycisków Start i Stop z tego wiersza. Termix nie otworzy go automatycznie.",
"clientRemoteServerNote": "Zdalne przekierowanie może wymagać opcji AllowTcpForwarding i GatewayPorts na serwerze SSH punktu końcowego. Port zdalny zostanie zamknięty po rozłączeniu się tego pulpitu.",
"clientTunnelStarted": "Uruchomiono tunel klienta",
"clientTunnelStopped": "Tunel klienta zatrzymany",
"tunnelTestSucceeded": "Test tunelowy zakończony sukcesem",
"tunnelTestFailed": "Test tunelowy nie powiódł się",
"localSaved": "Zapisano tunele klientów",
"localSaveError": "Nie udało się zapisać lokalnych tuneli klientów",
"invalidBindIp": "Lokalny adres IP musi być prawidłowym adresem IPv4.",
"invalidLocalTargetIp": "Lokalny adres IP docelowy musi być prawidłowym adresem IPv4.",
"invalidLocalPort": "Port lokalny musi mieścić się w zakresie od 1 do 65535.",
"invalidRemotePort": "Port zdalny musi mieścić się w zakresie od 1 do 65535.",
"invalidLocalTargetPort": "Lokalny port docelowy musi mieścić się w zakresie od 1 do 65535.",
"invalidEndpointPort": "Port końcowy musi mieścić się w zakresie od 1 do 65535.",
"duplicateAutoStartBind": "Tylko jeden tunel klienta z automatycznym uruchomieniem może używać {{bind}}.",
"manualControlError": "Nie udało się zaktualizować stanu tunelu.",
"active": "Aktywny",
"start": "Start",
"stop": "Zatrzymywać się",
"test": "Test",
"type": "Typ tunelu",
"typeLocal": "Lokalny (-L)",
"typeRemote": "Zdalny (-R)",
"typeDynamic": "Dynamiczny (-D)",
"typeServerLocalDesc": "Bieżący host do punktu końcowego.",
"typeServerRemoteDesc": "Punkt końcowy z powrotem do bieżącego hosta.",
"typeClientLocalDesc": "Komputer lokalny do punktu końcowego.",
"typeClientRemoteDesc": "Punkt końcowy z powrotem do komputera lokalnego.",
"typeClientDynamicDesc": "SOCKS na komputerze lokalnym.",
"typeDynamicDesc": "Przekieruj ruch SOCKS5 CONNECT przez SSH",
"forwardDescriptionServerLocal": "Aktualny host {{sourcePort}} → punkt końcowy {{endpointPort}}.",
"forwardDescriptionServerRemote": "Punkt końcowy {{endpointPort}} → bieżący host {{sourcePort}}.",
"forwardDescriptionServerDynamic": "SOCKS na bieżącym hoście {{sourcePort}}.",
"forwardDescriptionClientLocal": "Lokalny {{sourcePort}} → zdalny {{endpointPort}}.",
"forwardDescriptionClientRemote": "Zdalny {{sourcePort}} → lokalny {{endpointPort}}.",
"forwardDescriptionClientDynamic": "SOCKS na porcie lokalnym {{sourcePort}}.",
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{endpoint}}:{{remotePort}}",
"summaryClientRemote": "{{endpoint}}:{{remotePort}} → {{localHost}}:{{localPort}}",
"summaryClientDynamic": "{{localHost}}:{{localPort}} → SOCKS przez {{endpoint}}",
"autoNameClientLocal": "Lokalny {{localPort}} → {{endpoint}} {{remotePort}}",
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → lokalny {{localPort}}",
"autoNameClientDynamic": "SKARPETKI {{localPort}} przez {{endpoint}}",
"route": "Trasa:",
"lastStarted": "Ostatnio rozpoczęte",
"lastTested": "Ostatnio testowane",
"lastError": "Ostatni błąd",
"maxRetries": "Maksymalna liczba ponownych prób",
"maxRetriesDescription": "Maksymalna liczba ponownych prób.",
"retryInterval": "Interwał ponawiania próby (sekundy)",
"retryIntervalDescription": "Czas oczekiwania pomiędzy kolejnymi próbami.",
"local": "Lokalny",
"remote": "Zdalny",
"destination": "Miejsce docelowe",
"host": "Gospodarz",
"mode": "Tryb",
"noHostSelected": "Nie wybrano hosta",
"working": "Pracujący..."
},
"cardGrid": {
"dragToMove": "Przeciągnij, aby przesunąć",
"dragToResize": "Przeciągnij, aby zmienić rozmiar",
"changeWidth": "Zmień szerokość",
"removeCard": "Usuń {{label}}",
"addCard": "Dodać",
"columns": "Kolumny",
"empty": "Brak kart. Użyj opcji „Dodaj” poniżej, aby umieścić karty."
},
"hostMetrics": {
"cpu": "Procesor",
"memory": "Pamięć",
"disk": "Dysk",
"network": "Sieć",
"uptime": "Czas sprawności",
"processes": "Procesy",
"available": "Dostępny",
"free": "Bezpłatny",
"connecting": "Złączony...",
"connectionFailed": "Nie udało się połączyć z serwerem",
"naCpus": "N/A CPU(y)",
"cpuCores_one": "{{count}} Rdzeń",
"cpuCores_other": "{{count}} Rdzenie",
"cpuUsage": "Wykorzystanie procesora",
"memoryUsage": "Wykorzystanie pamięci",
"diskUsage": "Wykorzystanie dysku",
"selectFilesystem": "Wybierz system plików",
"temperature": "Temperatura",
"highestTemperature": "Najwyższa temperatura",
"failedToFetchHostConfig": "Nie udało się pobrać konfiguracji hosta",
"serverOffline": "Serwer offline",
"cannotFetchMetrics": "Nie można pobrać metryk z serwera offline",
"totpFailed": "Weryfikacja TOTP nie powiodła się",
"noneAuthNotSupported": "Host Metrics nie obsługuje typu uwierzytelniania „brak”.",
"noHostSelected": "Nie wybrano hosta",
"load": "Obciążenie",
"systemInfo": "Informacje o systemie",
"hostname": "Nazwa hosta",
"operatingSystem": "System operacyjny",
"kernel": "Jądro",
"seconds": "towary drugiej jakości",
"networkInterfaces": "Interfejsy sieciowe",
"noInterfacesFound": "Nie znaleziono interfejsów sieciowych",
"noProcessesFound": "Nie znaleziono procesów",
"processesTotal": "całkowity",
"processesRunning": "działanie",
"loginStats": "Statystyki logowania SSH",
"noRecentLoginData": "Brak ostatnich danych logowania",
"executingQuickAction": "Wykonywanie {{name}}...",
"quickActionSuccess": "{{name}} ukończono pomyślnie",
"quickActionFailed": "{{name}} nie powiodło się",
"quickActionError": "Nie udało się wykonać {{name}}",
"ports": {
"title": "Porty nasłuchujące",
"protocol": "Protokół",
"port": "Port",
"address": "Adres",
"process": "Proces",
"search": "Przeszukaj porty...",
"allProtocols": "Wszystko",
"noData": "Brak danych portów nasłuchujących"
},
"firewall": {
"title": "Zapora sieciowa",
"inactive": "Nieaktywny",
"policy": "Polityka",
"rules": "zasady",
"noRules": "Brak zasad w tym łańcuchu",
"noData": "Brak dostępnych danych zapory sieciowej",
"action": "Działanie",
"protocol": "Proto",
"port": "Port",
"source": "Źródło",
"anywhere": "Gdziekolwiek",
"chains": "więzy"
},
"loadAvg": "Obciążenie średnie",
"swap": "Zamieniać",
"architecture": "Architektura",
"refresh": "Odświeżać",
"retry": "Spróbować ponownie",
"customize": "Dostosuj układ",
"reset": "Nastawić",
"tabLive": "Na żywo",
"editModeInstructions": "Przeciągnij karty, aby zmienić ich kolejność, przeciągnij dolną krawędź, aby zmienić rozmiar, i użyj przycisku szerokości, aby zmienić rozpiętość karty. Dodaj lub usuń karty poniżej.",
"managers": {
"services": "Usługi",
"processInspector": "Inspektor Procesów",
"logViewer": "Przeglądarka dzienników",
"cron": "Zadania Cron",
"packages": "Pakiety",
"ssl": "Certyfikaty SSL",
"firewall": "Zapora sieciowa",
"users": "Użytkownicy i uprawnienia",
"healthCheck": "Kontrole stanu zdrowia",
"diskBreakdown": "Awaria dysku",
"systemdTimers": "Timery",
"topMemory": "Na górze według pamięci",
"noData": "Brak danych",
"sudoHint": "Ustaw hasło sudo dla tego hosta w edytorze hosta, aby włączyć akcje uprzywilejowane.",
"filter": "Filtr...",
"start": "Start",
"stop": "Zatrzymywać się",
"restart": "Uruchom ponownie",
"actionDone": "{{name}} zaktualizowano",
"actionFailed": "Akcja nie powiodła się",
"signalSent": "Sygnał wysłany do PID {{pid}}",
"killHint": "Kliknięcie: zakończ (SIGTERM). Kliknięcie prawym przyciskiem myszy: wymuś zakończenie (SIGKILL).",
"working": "Pracujący...",
"update": "Aktualizacja",
"upgradeAll": "Uaktualnij wszystko",
"allUpToDate": "Wszystko jest aktualne",
"save": "Ratować",
"command": "Rozkaz",
"enabled": "Włączony",
"cronSaved": "Zaktualizowano Crontab",
"clients": "Klienci",
"dryRun": "Próba generalna",
"renew": "Odnowić",
"noAcmeClient": "Nie znaleziono klienta ACME (certbot lub acme.sh) na tym hoście.",
"addInputRule": "Dodaj regułę INPUT",
"firewallWarning": "Zmiany są wprowadzane tylko w czasie wykonywania, dopóki nie zostaną zapisane. Uważaj, żeby się nie zablokować.",
"ruleApplied": "Zastosowano zasadę",
"invalidPort": "Wprowadź prawidłowy port (1-65535)",
"newUsername": "Nowa nazwa użytkownika",
"addUser": "Dodać",
"deleteUser": "Usuń użytkownika",
"noHealthChecks": "Nie skonfigurowano jeszcze żadnych kontroli stanu zdrowia.",
"follow": "Podążać",
"noLogData": "Brak wyników dziennika.",
"tree": "Drzewo",
"enableDisable": "Włącz/wyłącz podczas rozruchu",
"grantSudo": "Przyznaj sudo",
"revokeSudo": "Odwołaj sudo",
"sslIssueCert": "Wydanie certyfikatu",
"sslExpired": "Wygasły",
"sslInDays": "w {{days}}d",
"sslNeedDomain": "Wprowadź co najmniej jedną domenę",
"sslIssued": "Certyfikat wydany",
"sslDomainsPlaceholder": "example.com, www.example.com",
"sslHttpStandalone": "HTTP (samodzielny)",
"sslHttpWebroot": "HTTP (webroot)",
"sslDns": "DNS",
"sslDnsProvider": "Dostawca DNS (np. Cloudflare)",
"sslIssueHint": "Dane uwierzytelniające dostawcy DNS muszą być już skonfigurowane na hoście.",
"sslRevoke": "Odwołaj certyfikat",
"sslRevoked": "Certyfikat odwołany",
"sslRevokeConfirm": "Cofnąć i usunąć certyfikat „{{name}}”? Tego nie można cofnąć.",
"healthRun": "Uruchomić",
"healthName": "Nazwa",
"healthTarget": "Host / adres",
"healthAddCheck": "Dodaj czek",
"healthSaved": "Zapisano kontrole stanu zdrowia",
"healthMissingFields": "Każde sprawdzenie wymaga nazwy i celu",
"logFile": "Plik",
"logUnit": "Jednostka",
"logCustomPath": "Ścieżka niestandardowa w /var/log (opcjonalnie)",
"logGrep": "Linie filtrów...",
"firewallPersist": "Zasady trwałości",
"firewallPersisted": "Reguły zapory sieciowej zostały zachowane",
"wireguard": "WireGuard",
"tailscale": "Łuska ogonowa",
"wgNotInstalled": "WireGuard nie jest zainstalowany na tym hoście",
"wgNoInterfaces": "Brak skonfigurowanych interfejsów WireGuard",
"wgInterfaceUp": "Wychować",
"wgInterfaceDown": "Obniżać",
"wgBringingUp": "Włączam {{name}}...",
"wgBringingDown": "Obniżam {{name}}...",
"wgInterfaceUpDone": "{{name}} jest w górze",
"wgInterfaceDownDone": "{{name}} jest wyłączony",
"wgListenPort": "Port",
"wgPublicKey": "Klucz publiczny",
"wgEndpoint": "Punkt końcowy",
"wgAllowedIPs": "Dozwolone adresy IP",
"wgLastHandshake": "Ostatnie uścisk dłoni",
"wgHandshakeNever": "Nigdy",
"wgTransfer": "Przenosić",
"tsNotInstalled": "Tailscale nie jest zainstalowany na tym hoście",
"tsRunning": "Działanie",
"tsStopped": "Zatrzymany",
"tsEnable": "Łączyć",
"tsDisable": "Odłączyć",
"tsEnabling": "Łączenie z Tailscale...",
"tsDisabling": "Rozłączanie z Tailscale...",
"tsEnabled": "Podłączona waga końcowa",
"tsDisabled": "Odłączona waga końcowa",
"tsIPs": "Wersje IP Tailscale",
"tsPeers": "Rówieśnicy",
"tsOnline": "W sieci",
"tsOffline": "Niedostępny",
"tsExitNode": "Węzeł wyjściowy",
"tsExitNodeActive": "Węzeł wyjściowy aktywny",
"tsHostname": "Nazwa hosta"
}
},
"proxmoxStats": {
"tabTitle": "Statystyki Proxmox",
"cpuUsage": "Wykorzystanie procesora",
"memoryUsage": "Wykorzystanie pamięci",
"diskUsage": "Wykorzystanie dysku",
"networkInterfaces": "Interfejsy sieciowe",
"uptime": "Czas sprawności",
"systemInfo": "Informacje o systemie",
"guestsSummary": "Goście",
"storagePools": "Baseny magazynowe",
"clusterHealth": "Zdrowie klastra",
"cpuCores_one": "{{count}} Rdzeń",
"cpuCores_other": "{{count}} Rdzenie",
"used": "Używany",
"total": "Całkowity",
"hostname": "Nazwa hosta",
"kernel": "Jądro",
"pveVersion": "Wersja PVE",
"name": "Nazwa",
"status": "Status",
"type": "Typ",
"cpu": "Procesor",
"mem": "Pamięć",
"disk": "Dysk",
"running": "Działanie",
"stopped": "Zatrzymany",
"guestCounts": "{{running}}/{{total}} bieganie",
"inactive": "Nieaktywny",
"notClustered": "Samodzielny węzeł (nie jest częścią klastra)",
"quorate": "Kworum",
"notQuorate": "Nie kworum",
"nodeOnline": "W sieci",
"nodeOffline": "Niedostępny",
"noHostSelected": "Nie wybrano hosta",
"pveshNotFound": "pvesh nie znaleziono - czy to węzeł Proxmox?",
"nodeDetectionFailed": "Nie można ustalić prawidłowej nazwy węzła Proxmox",
"connecting": "Złączony...",
"connectionFailed": "Nie udało się połączyć z węzłem Proxmox",
"refresh": "Odświeżać",
"searchGuests": "Wyszukaj gości...",
"filterAll": "Wszystko",
"filterVm": "Maszyna wirtualna",
"filterLxc": "LXC",
"noGuests": "Nie znaleziono maszyn wirtualnych ani kontenerów LXC na tym węźle.",
"noGuestsMatch": "Żaden gość nie spełnia wymagań obecnych filtrów."
},
"auth": {
"tagline": "Samodzielnie hostowany SSH i zdalne zarządzanie pulpitem",
"loginTitle": "Witamy ponownie",
"registerTitle": "Utwórz konto",
"forgotPassword": "Zapomniałeś hasła?",
"rememberMe": "Zapamiętaj urządzenie na 30 dni (obejmuje TOTP)",
"noAccount": "Nie masz konta?",
"hasAccount": "Masz już konto?",
"twoFactorAuth": "Uwierzytelnianie dwuskładnikowe",
"enterCode": "Wprowadź kod weryfikacyjny",
"backupCode": "Lub użyj kodu zapasowego",
"verifyCode": "Kod weryfikacyjny",
"redirectingToApp": "Przekierowywanie do aplikacji...",
"sshAuthenticationRequired": "Wymagane uwierzytelnienie SSH",
"sshNoKeyboardInteractive": "Uwierzytelnianie za pomocą klawiatury jest niedostępne",
"sshAuthenticationFailed": "Uwierzytelnianie nie powiodło się",
"sshAuthenticationTimeout": "Przekroczono limit czasu uwierzytelniania",
"sshNoKeyboardInteractiveDescription": "Serwer nie obsługuje uwierzytelniania interaktywnego za pomocą klawiatury. Podaj hasło lub klucz SSH.",
"sshAuthFailedDescription": "Podane dane logowania są nieprawidłowe. Spróbuj ponownie, używając prawidłowych danych logowania.",
"sshTimeoutDescription": "Próba uwierzytelnienia przekroczyła limit czasu. Spróbuj ponownie.",
"sshProvideCredentialsDescription": "Podaj dane uwierzytelniające SSH, aby połączyć się z tym serwerem.",
"sshPasswordDescription": "Wprowadź hasło dla tego połączenia SSH.",
"sshKeyPasswordDescription": "Jeśli Twój klucz SSH jest zaszyfrowany, wpisz tutaj hasło.",
"passphraseRequired": "Wymagane hasło",
"passphraseRequiredDescription": "Klucz SSH jest zaszyfrowany. Wprowadź hasło, aby je odblokować.",
"back": "Z powrotem",
"firstUser": "Pierwszy użytkownik",
"firstUserMessage": "Jesteś pierwszym użytkownikiem i zostaniesz administratorem. Ustawienia administratora możesz wyświetlić w menu rozwijanym użytkownika na pasku bocznym. Jeśli uważasz, że to błąd, sprawdź logi Dockera lub zgłoś problem w GitHubie.",
"external": "Zewnętrzny",
"loginWithExternal": "Zaloguj się za pomocą zewnętrznego dostawcy",
"loginWithExternalDesc": "Zaloguj się, korzystając ze skonfigurowanego zewnętrznego dostawcy tożsamości",
"externalNotSupportedInElectron": "Uwierzytelnianie zewnętrzne nie jest jeszcze obsługiwane w aplikacji Electron. Do logowania do OIDC należy używać wersji internetowej.",
"loginWithProvider": "Zaloguj się za pomocą {{name}}",
"orContinueWith": "lub kontynuuj",
"ldapUsername": "Nazwa użytkownika LDAP",
"ldapPassword": "Hasło LDAP",
"ldapSignIn": "Zalogować się",
"ldapLoginFailed": "Nie udało się zalogować do LDAP",
"resetPasswordButton": "Zresetuj hasło",
"sendResetCode": "Wyślij kod resetowania",
"resetCodeDesc": "Wprowadź swoją nazwę użytkownika, aby otrzymać kod resetowania hasła. Kod zostanie zapisany w logach kontenera Docker.",
"resetCode": "Resetuj kod",
"verifyCodeButton": "Kod weryfikacyjny",
"enterResetCode": "Wprowadź 6-cyfrowy kod z dzienników kontenera Docker dla użytkownika:",
"newPassword": "Nowe hasło",
"confirmNewPassword": "Potwierdź hasło",
"enterNewPassword": "Wprowadź nowe hasło dla użytkownika:",
"signUp": "Zapisać się",
"desktopApp": "Aplikacja na komputer",
"loggingInToDesktopApp": "Logowanie do aplikacji komputerowej",
"loadingServer": "Ładowanie serwera...",
"dataLossWarning": "Zresetowanie hasła w ten sposób spowoduje usunięcie wszystkich zapisanych hostów SSH, danych logowania i innych zaszyfrowanych danych. Tej czynności nie można cofnąć. Użyj tej opcji tylko wtedy, gdy zapomniałeś hasła i nie jesteś zalogowany.",
"authenticationDisabled": "Uwierzytelnianie wyłączone",
"authenticationDisabledDesc": "Wszystkie metody uwierzytelniania są obecnie wyłączone. Skontaktuj się z administratorem.",
"passwordLoginDisabledDesc": "Logowanie hasłem jest wyłączone. Użyj klucza dostępu lub zewnętrznego dostawcy uwierzytelniania.",
"signInWithPasskey": "Zaloguj się za pomocą klucza dostępu",
"passkeyLoginFailed": "Nie udało się zalogować za pomocą klucza dostępu",
"attemptsRemaining": "Pozostało {{count}} prób",
"confirmResetDataWipe": "To konto nie było logowane od czasu aktualizacji szyfrowania, więc nie można odzyskać zapisanych na nim danych bez starego hasła. Zresetowanie spowoduje trwałe usunięcie hostów, danych logowania i fragmentów kodu. Kontynuować?"
},
"hostKey": {
"verifyNewHost": "Zweryfikuj klucz hosta SSH",
"keyChangedWarning": "Zmieniono klucz hosta SSH",
"firstConnectionTitle": "Pierwsze połączenie z tym hostem",
"firstConnectionDescription": "Nie można potwierdzić autentyczności tego hosta. Sprawdź, czy odcisk palca jest zgodny z oczekiwaniami.",
"keyChangedDescription": "Klucz hosta dla tego serwera zmienił się od czasu Twojego ostatniego połączenia. Może to oznaczać problem z bezpieczeństwem.",
"previousKey": "Poprzedni klucz",
"newFingerprint": "Nowy odcisk palca",
"fingerprint": "Odcisk palca",
"verifyInstructions": "Jeśli ufasz temu hostowi, kliknij Akceptuj, aby kontynuować i zapisać ten odcisk palca na potrzeby przyszłych połączeń.",
"securityWarning": "Ostrzeżenie dotyczące bezpieczeństwa",
"acceptAndContinue": "Akceptuj i kontynuuj",
"acceptNewKey": "Zaakceptuj nowy klucz i kontynuuj"
},
"errors": {
"databaseConnection": "Nie można połączyć się z bazą danych",
"unknownError": "Nieznany błąd",
"loginFailed": "Logowanie nieudane",
"failedPasswordReset": "Nie udało się zainicjować resetowania hasła",
"failedVerifyCode": "Nie udało się zweryfikować kodu resetowania",
"failedCompleteReset": "Nie udało się ukończyć resetowania hasła",
"invalidTotpCode": "Nieprawidłowy kod TOTP",
"failedOidcLogin": "Nie udało się rozpocząć logowania OIDC",
"silentSigninOidcUnavailable": "Poproszono o ciche logowanie, ale logowanie OIDC jest niedostępne.",
"failedUserInfo": "Nie udało się pobrać informacji o użytkowniku po zalogowaniu",
"oidcAuthFailed": "Uwierzytelnianie OIDC nie powiodło się",
"invalidAuthUrl": "Otrzymano nieprawidłowy adres URL autoryzacji z zaplecza",
"requiredField": "To pole jest wymagane",
"minLength": "Minimalna długość to {{min}}",
"passwordMismatch": "Hasła nie pasują",
"passwordLoginDisabled": "Logowanie za pomocą nazwy użytkownika i hasła jest obecnie wyłączone",
"sessionExpired": "Sesja wygasła – zaloguj się ponownie",
"totpRateLimited": "Ograniczenie szybkości: Zbyt wiele prób weryfikacji TOTP. Spróbuj ponownie później.",
"totpRateLimitedWithTime": "Ograniczenie szybkości: Zbyt wiele prób weryfikacji TOTP. Odczekaj {{time}} sekund przed ponowną próbą.",
"resetCodeRateLimited": "Ograniczenie szybkości: Zbyt wiele prób weryfikacji. Spróbuj ponownie później.",
"resetCodeRateLimitedWithTime": "Ograniczenie szybkości: Zbyt wiele prób weryfikacji. Odczekaj {{time}} sekund przed ponowną próbą.",
"authTokenSaveFailed": "Nie udało się zapisać tokenu uwierzytelniającego",
"keyringUnavailable": "Zalogowano, ale sesji nie udało się zapisać: ten system nie ma dostępnego zestawu kluczy do jej zaszyfrowania. Uruchom usługę Secret Service (np. gnome-keyring lub KWallet) i zaloguj się ponownie.",
"failedToLoadServer": "Nie udało się załadować serwera",
"remoteServerRequired": "Wymagany jest serwer zdalny. Połącz się z serwerem zdalnym w Ustawieniach, aby korzystać z tego typu połączenia."
},
"messages": {
"registrationDisabled": "Rejestracja nowych kont jest obecnie wyłączona przez administratora. Zaloguj się lub skontaktuj się z administratorem.",
"userNotAllowed": "Twoje konto nie jest autoryzowane do rejestracji. Skontaktuj się z administratorem.",
"databaseConnectionFailed": "Nie udało się połączyć z serwerem bazy danych",
"resetCodeSent": "Kod resetowania wysłany do logów Dockera",
"codeVerified": "Kod zweryfikowany pomyślnie",
"passwordResetSuccess": "Pomyślnie zresetowano hasło",
"loginSuccess": "Logowanie pomyślne",
"registrationSuccess": "Rejestracja pomyślna"
},
"profile": {
"c2sTunnelConfigDesc": "Lokalne tunele komputerów stacjonarnych skierowane do skonfigurowanych hostów SSH.",
"c2sTunnelPresets": "Ustawienia wstępne tunelu klienta",
"c2sTunnelPresetsDesc": "Zapisz listę lokalnych tuneli tego klienta stacjonarnego jako nazwane ustawienie wstępne serwera lub załaduj ustawienie wstępne z powrotem do tego klienta.",
"c2sTunnelPresetsUnavailable": "Ustawienia wstępne tunelu klienta są dostępne tylko w kliencie komputerowym.",
"c2sPresetName": "Nazwa ustawienia wstępnego",
"c2sPresetNamePlaceholder": "Nazwa ustawienia wstępnego klienta",
"c2sPresetToLoad": "Wstępnie ustawione do załadowania",
"c2sNoPresetSelected": "Nie wybrano żadnego ustawienia wstępnego",
"c2sNoPresets": "Brak zapisanych ustawień wstępnych",
"c2sLoadPreset": "Obciążenie",
"c2sCurrentLocalConfig": "{{count}} lokalnych tuneli klienckich skonfigurowanych na tym pulpicie.",
"c2sPresetSyncNote": "Ustawienia wstępne to wyraźne migawki; załadowanie jednej z nich powoduje zastąpienie listy lokalnych tuneli klientów danego klienta stacjonarnego.",
"c2sPresetSaved": "Zapisano ustawienia wstępne tunelu klienta",
"c2sPresetLoaded": "Wstępnie załadowany tunel klienta lokalnie",
"c2sPresetRenamed": "Zmieniono nazwę ustawienia wstępnego tunelu klienta",
"c2sPresetDeleted": "Usunięto ustawienia wstępne tunelu klienta",
"c2sPresetLoadError": "Nie udało się załadować ustawień wstępnych tunelu klienta"
},
"placeholders": {
"maxRetries": "3",
"retryInterval": "10",
"language": "Język",
"keyPassword": "hasło kluczowe",
"pastePrivateKey": "Wklej tutaj swój klucz prywatny...",
"localListenerHost": "127.0.0.1 (nasłuch lokalny)",
"localTargetHost": "127.0.0.1 (cel na tym komputerze)",
"socksListenerHost": "127.0.0.1 (nasłuchiwacz SOCKS)",
"enterPassword": "Wprowadź swoje hasło",
"defaultPort": "22",
"defaultEndpointPort": "224"
},
"dashboard": {
"title": "Panel",
"loading": "Ładowanie pulpitu nawigacyjnego...",
"github": "GitHub",
"support": "Wsparcie",
"discord": "Niezgoda",
"docs": "Dokumenty",
"donate": "Podarować",
"serverOverview": "Przegląd serwera",
"version": "Wersja",
"upToDate": "Aktualny",
"updateAvailable": "Aktualizacja dostępna",
"beta": "Beta",
"uptime": "Czas sprawności",
"database": "Baza danych",
"healthy": "Zdrowy",
"error": "Błąd",
"totalHosts": "Łączna liczba gospodarzy",
"totalTunnels": "Całkowite tunele",
"totalCredentials": "Łączne uprawnienia",
"recentActivity": "Ostatnia aktywność",
"reset": "Nastawić",
"loadingRecentActivity": "Ładowanie ostatniej aktywności...",
"noRecentActivity": "Brak ostatniej aktywności",
"quickActions": "Szybkie akcje",
"addHost": "Dodaj hosta",
"addCredential": "Dodaj poświadczenia",
"adminSettings": "Ustawienia administratora",
"userProfile": "Profil użytkownika",
"serverStats": "Statystyki serwera",
"loadingServerStats": "Ładowanie statystyk serwera...",
"noServerData": "Brak dostępnych danych serwera",
"cpu": "Procesor",
"ram": "BARAN",
"customizeLayout": "Dostosuj pulpit nawigacyjny",
"dashboardSettings": "Ustawienia pulpitu nawigacyjnego",
"enableDisableCards": "Włącz/wyłącz karty",
"resetLayout": "Przywróć domyślne",
"serverOverviewCard": "Przegląd serwera",
"recentActivityCard": "Ostatnia aktywność",
"networkGraphCard": "Wykres sieciowy",
"networkGraph": "Wykres sieciowy",
"quickActionsCard": "Szybkie akcje",
"serverStatsCard": "Statystyki serwera",
"panelMain": "Główny",
"panelSide": "Strona",
"justNow": "właśnie",
"serviceLinks": "Linki serwisowe",
"homepagePreview": "Podgląd strony głównej"
},
"donation": {
"title": "Podoba Ci się Termix?",
"body": "Termix jest darmowy i ma otwarte oprogramowanie, tworzone i utrzymywane przez dwuosobowy zespół w wolnym czasie. Jeśli zastąpi on komercyjne narzędzie, za które w przeciwnym razie musiałbyś płacić, darowizna pomoże pokryć koszty hostingu i umożliwi dalszy rozwój. Na chwilę obecną darowizny są możliwe wyłącznie w kryptowalutach.",
"milestones": "Darowizny pomagają również sfinansować czas poświęcony na badania i zdobywanie wiedzy niezbędnej do tworzenia funkcji takich jak obsługa SAML i Kubernetes. Postępy można śledzić na stronie darowizn.",
"cta": "Podarować",
"dismiss": "Może później"
},
"dashboardTab": {
"stable": "STABILNY",
"hostsOnline": "Gospodarze online",
"activeTunnels": "Aktywne tunele",
"registerNewServer": "Zarejestruj nowy serwer",
"storeSshKeysOrPasswords": "Przechowuj klucze SSH lub hasła",
"manageUsersAndRoles": "Zarządzaj użytkownikami i rolami",
"manageYourAccount": "Zarządzaj swoim kontem",
"hostStatus": "Status hosta",
"noHostsConfigured": "Brak skonfigurowanych hostów",
"online": "ONLINE",
"offline": "NIEAKTYWNY",
"checking": "KONTROLA",
"onlineLower": "W sieci",
"nodes": "{{count}} węzłów",
"add": "Dodać:",
"commandPalette": "Paleta poleceń",
"done": "Zrobione",
"editModeInstructions": "Przeciągnij karty, aby zmienić kolejność · Przeciągnij podział kolumn, aby zmienić rozmiar kolumn · Przeciągnij dolną krawędź karty, aby zmienić rozmiar jej wysokości · Kosz, aby usunąć",
"empty": "Pusty",
"clear": "Jasne",
"serviceLinksTitle": "Linki serwisowe",
"serviceLinksEmpty": "Brak jeszcze łączy do usług",
"serviceLinksAddLabel": "Etykieta",
"serviceLinksAddUrl": "Adres URL",
"serviceLinksAdd": "Dodać",
"serviceLinksLabelPlaceholder": "Moja usługa",
"serviceLinksUrlPlaceholder": "http://192.168.1.10:8080",
"serviceLinksInvalidUrl": "Wprowadź prawidłowy adres internetowy",
"serviceLinksAddFailed": "Nie udało się dodać łącza do usługi",
"disk": "Dysk",
"viewServerDetails": "Wyświetl szczegóły serwera"
},
"sessionLogs": {
"title": "Dzienniki sesji",
"noLogs": "Brak jeszcze dzienników sesji",
"noLogsDesc": "Włącz rejestrowanie sesji na hoście, aby rozpocząć nagrywanie",
"duration": "Czas trwania",
"viewLog": "Wyświetl dziennik",
"downloadLog": "Pobierać",
"downloadAsText": "Pobierz jako tekst",
"deleteLog": "Usuwać",
"confirmDelete": "Usunąć ten dziennik sesji?",
"confirmDeleteDesc": "Tej czynności nie można cofnąć.",
"copyContent": "Kopia",
"copied": "Skopiowano!",
"loadError": "Nie udało się załadować dzienników sesji",
"deleteError": "Nie udało się usunąć dziennika sesji",
"filterByHost": "Filtruj według hosta..."
},
"networkGraph": {
"addHost": "Dodaj hosta",
"addGroup": "Dodaj grupę",
"addLink": "Dodaj link",
"zoomIn": "Powiększ",
"zoomOut": "Oddal",
"resetView": "Resetuj widok",
"selectHost": "Wybierz hosta",
"chooseHost": "Wybierz hosta...",
"parentGroup": "Grupa Rodziców",
"noGroup": "Brak grupy",
"groupName": "Nazwa grupy",
"color": "Kolor",
"source": "Źródło",
"target": "Cel",
"moveToGroup": "Przenieś do grupy",
"selectGroup": "Wybierz grupę...",
"addConnection": "Dodaj połączenie",
"hostDetails": "Szczegóły hosta",
"removeFromGroup": "Usuń z grupy",
"addHostHere": "Dodaj hosta tutaj",
"editGroup": "Edytuj grupę",
"delete": "Usuwać",
"add": "Dodać",
"create": "Tworzyć",
"move": "Przenosić",
"connect": "Łączyć",
"createGroup": "Utwórz grupę",
"selectSourcePlaceholder": "Wybierz źródło...",
"selectTargetPlaceholder": "Wybierz cel...",
"invalidFile": "Nieprawidłowy plik",
"hostAlreadyExists": "Host jest już w topologii",
"connectionExists": "Połączenie już istnieje",
"unknown": "Nieznany",
"name": "Nazwa",
"ip": "IP",
"status": "Status",
"failedToAddNode": "Nie udało się dodać węzła",
"sourceDifferentFromTarget": "Źródło i cel muszą być różne",
"exportJSON": "Eksportuj JSON",
"importJSON": "Importuj JSON",
"terminal": "Terminal",
"fileManager": "Menedżer plików",
"tunnel": "Tunel",
"docker": "Doker",
"serverStats": "Metryki hosta",
"hostMetrics": "Metryki hosta",
"noNodes": "Brak węzłów"
},
"docker": {
"notEnabled": "Docker nie jest włączony dla tego hosta",
"validating": "Sprawdzanie poprawności Dockera...",
"connecting": "Złączony...",
"error": "Błąd",
"version": "{{runtime}} {{version}}",
"connectionFailed": "Nie udało się połączyć z Dockerem",
"containerStarted": "Kontener {{name}} został uruchomiony",
"failedToStartContainer": "Nie udało się uruchomić kontenera {{name}}",
"containerStopped": "Kontener {{name}} zatrzymany",
"failedToStopContainer": "Nie udało się zatrzymać kontenera {{name}}",
"containerRestarted": "Kontener {{name}} został ponownie uruchomiony",
"failedToRestartContainer": "Nie udało się ponownie uruchomić kontenera {{name}}",
"containerPaused": "Kontener {{name}} wstrzymany",
"containerUnpaused": "Kontener {{name}} wznowiony",
"failedToTogglePauseContainer": "Nie udało się przełączyć stanu pauzy dla kontenera {{name}}",
"containerRemoved": "Kontener {{name}} został usunięty",
"failedToRemoveContainer": "Nie udało się usunąć kontenera {{name}}",
"image": "Obraz",
"ports": "Porty",
"noPorts": "Brak portów",
"start": "Start",
"confirmRemoveContainer": "Czy na pewno chcesz usunąć kontener „{{name}}”? Tej czynności nie można cofnąć.",
"runningContainerWarning": "Ostrzeżenie: Ten kontener jest obecnie uruchomiony. Jego usunięcie spowoduje najpierw jego zatrzymanie.",
"loadingContainers": "Ładowanie kontenerów...",
"manager": "Menedżer Dockera",
"autoRefresh": "Automatyczne odświeżanie",
"timestamps": "Znaczniki czasu",
"lines": "Kwestia",
"filterLogs": "Filtruj dzienniki...",
"refresh": "Odświeżać",
"download": "Pobierać",
"clear": "Jasne",
"logsDownloaded": "Dzienniki pobrano pomyślnie",
"last50": "Ostatnie 50",
"last100": "Ostatnie 100",
"last500": "Ostatnie 500",
"last1000": "Ostatnie 1000",
"allLogs": "Wszystkie dzienniki",
"noLogsMatching": "Brak logów pasujących do „{{query}}”",
"noLogsAvailable": "Brak dostępnych dzienników",
"noContainersFound": "Nie znaleziono kontenerów",
"noContainersFoundHint": "Na tym hoście nie ma dostępnych kontenerów Docker",
"searchPlaceholder": "Przeszukaj kontenery...",
"allStatuses": "Wszystkie statusy",
"stateRunning": "Działanie",
"statePaused": "Wstrzymano",
"stateExited": "Wyszedł",
"stateRestarting": "Ponowne uruchomienie",
"noContainersMatchFilters": "Brak kontenerów pasujących do Twoich filtrów",
"noContainersMatchFiltersHint": "Spróbuj dostosować kryteria wyszukiwania lub filtrowania",
"failedToFetchStats": "Nie udało się pobrać statystyk kontenera",
"containerNotRunning": "Kontener nie działa",
"startContainerToViewStats": "Uruchom kontener, aby wyświetlić statystyki",
"loadingStats": "Ładowanie statystyk...",
"errorLoadingStats": "Błąd ładowania statystyk",
"noStatsAvailable": "Brak dostępnych statystyk",
"cpuUsage": "Wykorzystanie procesora",
"current": "Aktualny",
"memoryUsage": "Wykorzystanie pamięci",
"networkIo": "Wejście/wyjście sieciowe",
"input": "Wejście",
"output": "Wyjście",
"blockIo": "Blok I/O",
"read": "Czytać",
"write": "Pisać",
"pids": "PID-y",
"containerInformation": "Informacje o kontenerze",
"name": "Nazwa",
"id": "ID",
"state": "Państwo",
"containerMustBeRunning": "Aby uzyskać dostęp do konsoli, kontener musi być uruchomiony",
"verificationCodePrompt": "Wprowadź kod weryfikacyjny",
"totpVerificationFailed": "Weryfikacja TOTP nie powiodła się. Spróbuj ponownie.",
"warpgateVerificationFailed": "Uwierzytelnianie Warpgate nie powiodło się. Spróbuj ponownie.",
"connectedTo": "Połączono z {{containerName}}",
"disconnected": "Bezładny",
"consoleError": "Błąd konsoli",
"errorMessage": "Błąd: {{message}}",
"failedToConnect": "Nie udało się połączyć z kontenerem",
"console": "Konsola",
"selectShell": "Wybierz powłokę",
"bash": "Grzmotnąć",
"sh": "cii",
"ash": "popiół",
"connect": "Łączyć",
"disconnect": "Odłączyć",
"notConnected": "Nie połączony",
"clickToConnect": "Kliknij „Połącz”, aby rozpocząć sesję powłoki",
"connectingTo": "Łączenie z {{containerName}}...",
"containerNotFound": "Nie znaleziono kontenera",
"backToList": "Powrót do listy",
"logs": "Dzienniki",
"stats": "Statystyki",
"consoleTab": "Konsola",
"startContainerToAccess": "Uruchom kontener, aby uzyskać dostęp do konsoli"
},
"admin": {
"sectionGeneral": "Ogólny",
"sectionOidc": "OIDC",
"sectionSso": "Dostawcy SSO",
"ssoAddProvider": "Dodaj dostawcę",
"ssoDocsLink": "Wyświetl dokumenty",
"ssoProviderDocsLink": "Wyświetl dokumenty",
"ssoNoProviders": "Nie skonfigurowano dostawców SSO.",
"ssoProviderName": "Nazwa wyświetlana",
"ssoProviderType": "Typ dostawcy",
"ssoDeleteProvider": "Usuń dostawcę",
"ssoDeleteConfirm": "Usunąć tego dostawcę? Powiązani użytkownicy nie będą mogli się zalogować.",
"ssoTypeOidc": "OIDC",
"ssoTypeLdap": "LDAP",
"ssoTypeGithub": "GitHub",
"ssoTypeGoogle": "Google",
"ssoEnabled": "Włączony",
"ssoDisabled": "Wyłączony",
"ssoSaveProvider": "Zapisz dostawcę",
"ssoTestConnection": "Połączenie testowe",
"ssoEditProvider": "Edytuj dostawcę",
"ldapHost": "Host LDAP",
"ldapPort": "Port",
"ldapUseTls": "Użyj TLS (LDAPS)",
"ldapBindDn": "Powiąż DN",
"ldapBindPassword": "Powiąż hasło",
"ldapUserSearchBase": "Baza wyszukiwania użytkowników",
"ldapUserSearchFilter": "Filtr wyszukiwania użytkownika",
"ldapUsernameAttr": "Atrybut nazwy użytkownika",
"ldapDisplayNameAttr": "Atrybut nazwy wyświetlanej",
"ldapGroupSearchBase": "Baza wyszukiwania grupowego",
"ldapAdminGroup": "Grupa administratorów",
"ldapAllowedUsers": "Dozwoleni użytkownicy",
"sectionUsers": "Użytkownicy",
"sectionSessions": "Sesje",
"sectionRoles": "Role",
"sectionDatabase": "Baza danych",
"sectionApiKeys": "Klucze API",
"sectionAuditLog": "Dziennik audytu",
"sectionSsl": "SSL / Let's Encrypt",
"sectionTouchInput": "Wprowadzanie dotykowe",
"touchEnabled": "Włącz wprowadzanie dotykowe",
"touchEnabledDesc": "Zezwól na przewijanie jednym palcem w terminalach",
"touchMomentumEnabled": "Włącz Momentum",
"touchMomentumEnabledDesc": "Kontynuuj przewijanie przez chwilę po przesunięciu",
"touchAdvanced": "Zaawansowany",
"touchDragThreshold": "Próg przeciągania",
"touchMaxWheelDelta": "Maksymalna delta koła",
"touchMomentumSampleWindow": "Okno próbki pędu",
"touchReleaseGracePeriod": "Okres karencji wydania",
"touchMinimumVelocity": "Minimalna prędkość",
"touchMaximumVelocity": "Maksymalna prędkość",
"touchMaximumDuration": "Maksymalny czas trwania",
"touchMaximumTravel": "Maksymalna podróż",
"touchDecayTime": "Czas rozpadu",
"touchPixelsPerTick": "Pikseli na tick",
"touchMaximumFrameInterval": "Maksymalny interwał klatek",
"touchMaximumTicksPerFrame": "Maksymalna liczba kliknięć na klatkę",
"touchResetDefaults": "Przywróć ustawienia domyślne",
"touchSaved": "Ustawienia wprowadzania dotykowego zostały zapisane",
"touchSaveFailed": "Nie udało się zapisać ustawień wprowadzania dotykowego",
"sectionImageStorage": "Przechowywanie obrazów",
"imageStorageMode": "Tryb przechowywania",
"imageStorageModeDesc": "Miejsce, w którym zapisano wklejone i przesłane obrazy terminala. Automatyczne wybieranie według połączenia, lokalnego i zdalnego (SFTP) jest naprawione.",
"imageStorageModeAuto": "Automatyczny",
"imageStorageModeLocal": "Lokalny",
"imageStorageModeRemoteSftp": "Zdalny (SFTP)",
"imageStorageLocalDir": "Katalog lokalny",
"imageStorageLocalDirDesc": "Ścieżka bezwzględna w zapleczu Termix. Nie jest wyświetlana po zapisaniu ze względów bezpieczeństwa.",
"imageStorageLocalDirPlaceholder": "Pozostaw puste, aby zachować aktualność",
"imageStorageHostPath": "Ścieżka hosta",
"imageStorageHostPathDesc": "Widok katalogu lokalnego od strony hosta, który otrzymują agenci terminalowi.",
"imageStorageTtl": "Czas życia (ms)",
"imageStorageMaxCount": "Maksymalna liczba obrazów",
"imageStorageMaxBytes": "Maksymalna liczba bajtów pamięci masowej",
"imageStorageSaved": "Ustawienia przechowywania obrazu zostały zapisane",
"imageStorageSaveFailed": "Nie udało się zapisać ustawień przechowywania obrazu",
"imageStorageInstanceId": "Identyfikator instancji sesji terminalowej",
"imageStorageInstanceIdDesc": "Identyfikator instancji jednej z podłączonych kart terminala, używany do testowania widoczności.",
"imageStorageInstanceIdRequired": "Najpierw wprowadź identyfikator instancji sesji terminala",
"imageStorageTest": "Test",
"imageStorageTesting": "Testowanie...",
"imageStorageTestFailed": "Nie udało się przetestować pamięci obrazu",
"imageStorageTestConnected": "Sesja terminalowa jest połączona.",
"imageStorageTestNotConnected": "Brak połączonej sesji terminala z tym identyfikatorem instancji.",
"imageStorageTestSelectedMode": "Do przesłania użyto by: {{mode}}",
"imageStorageSelectedModeUnavailable": "Nie płynny",
"imageStorageTestLocalVisible": "Katalog lokalny jest widoczny z podłączonego hosta.",
"imageStorageTestLocalNotVisible": "Katalog lokalny NIE jest widoczny z podłączonego hosta.",
"sslDescription": "Automatycznie wystawiaj i odnawiaj zaufany certyfikat SSL od Let's Encrypt. Wymaga domeny publicznej i portu 80 lub dostępu DNS.",
"sslDocsLink": "Wyświetl dokumentację SSL",
"sslDomain": "Domena",
"sslDomainPlaceholder": "termix.example.com",
"sslDomainDesc": "Publiczna nazwa domeny certyfikatu.",
"sslEmail": "E-mail",
"sslEmailPlaceholder": "admin@example.com",
"sslEmailDesc": "Adres e-mail kontaktowy do powiadomień i konta Let's Encrypt.",
"sslChallengeType": "Typ wyzwania",
"sslChallengeTypeDesc": "Jak udowodnić Let's Encrypt własność domeny.",
"sslChallengeHttp": "HTTP (webroot) – wymaga portu 80 dostępnego z Internetu",
"sslChallengeDns": "DNS (Cloudflare) – wymaga tokenu API Cloudflare",
"sslCloudflareToken": "Token API Cloudflare",
"sslCloudflareTokenPlaceholder": "Wprowadź token...",
"sslCloudflareTokenDesc": "Token zakresowy z uprawnieniem Zone:DNS:Edit dla Twojej domeny.",
"sslCertStatus": "Status certyfikatu",
"sslCertStatusNone": "Brak certyfikatu",
"sslCertStatusValid": "Ważny",
"sslCertStatusExpiring": "Wkrótce wygasa",
"sslCertStatusExpired": "Wygasły",
"sslCertExpiresAt": "Wygasa {{date}}",
"sslLastIssued": "Ostatnio wydano {{date}}",
"sslRequestCert": "Wydanie/odnowienie certyfikatu",
"sslRequestCertLoading": "Żądanie certyfikatu...",
"sslRequestCertSuccess": "Certyfikat został pomyślnie wydany i zainstalowany",
"sslRequestCertFailed": "Żądanie certyfikatu nie powiodło się",
"sslSave": "Zapisz ustawienia",
"sslSaved": "Ustawienia SSL zapisane",
"sslSaveFailed": "Nie udało się zapisać ustawień SSL",
"sslRequiresDomain": "Wymagane są domena i adres e-mail",
"sslInfoNote": "Po wystawieniu lub przesłaniu certyfikatu, Termix automatycznie włączy protokół HTTPS na porcie SSL_PORT (domyślnie 8443) oprócz istniejącego portu HTTP. Upewnij się, że port ten jest opublikowany/zamapowany w tym kontenerze, aby był osiągalny.",
"sslManualOption": "Instrukcja (przesyłanie certyfikatu)",
"sslManualCert": "Certyfikat (PEM)",
"sslManualCertPlaceholder": "-----ROZPOCZĄTEK CERTYFIKATU-----",
"sslManualKey": "Klucz prywatny (PEM)",
"sslManualKeyPlaceholder": "-----POCZĄTEK KLUCZA PRYWATNEGO-----",
"sslManualDesc": "Wklej istniejący certyfikat i klucz prywatny, łącznie z pełnym łańcuchem, jeśli jest wymagany przez urząd certyfikacji.",
"sslManualUpload": "Prześlij i zainstaluj certyfikat",
"sslManualUploadLoading": "Przesyłanie certyfikatu...",
"sslManualUploadSuccess": "Certyfikat został pomyślnie przesłany i zainstalowany",
"sslManualUploadFailed": "Nie udało się przesłać certyfikatu",
"sslManualRequiresFields": "Wymagany jest certyfikat i klucz prywatny",
"auditLogTotal": "{{total}} całkowita liczba wpisów",
"auditLogEmpty": "Nie znaleziono wpisów w dzienniku audytu",
"auditLogSuccess": "Sukces",
"auditLogFailed": "Przegrany",
"auditLogClearFilters": "Wyczyść filtry",
"auditLogPage": "Strona {{page}} z {{totalPages}} (w sumie{{total}})",
"auditLogIp": "IP",
"auditLogResourceId": "Identyfikator zasobu",
"auditLogFilterUser": "Użytkownik",
"auditLogFilterAction": "Działanie",
"auditLogFilterResourceType": "Typ zasobu",
"auditLogFilterStatus": "Status",
"auditLogFilterFrom": "Z",
"auditLogFilterTo": "Do",
"auditLogFilterAll": "Wszystko",
"allowRegistration": "Zezwól na rejestrację użytkownika",
"allowRegistrationDesc": "Pozwól nowym użytkownikom na samodzielną rejestrację przy użyciu nazwy użytkownika i hasła",
"allowPasswordLogin": "Zezwalaj na logowanie hasłem",
"allowPasswordLoginDesc": "Nazwa użytkownika/hasło logowania",
"oidcAutoProvision": "Automatyczne udostępnianie OIDC",
"oidcAutoProvisionDesc": "Automatyczne tworzenie kont dla użytkowników OIDC/SSO przy pierwszym logowaniu (niezależnie od przełącznika rejestracji)",
"oidcSilentLoginDefault": "Domyślne ciche logowanie do OIDC",
"oidcSilentLoginDefaultDesc": "Automatyczne przekierowywanie do logowania OIDC przy każdej wizycie, całkowicie pomijając formularz logowania",
"allowPasswordReset": "Zezwól na resetowanie hasła",
"allowPasswordResetDesc": "Zresetuj kod za pomocą dzienników Dockera",
"commandHistoryEnabled": "Historia dowodzenia",
"commandHistoryEnabledDesc": "Zezwól na rejestrowanie historii poleceń. Po wyłączeniu historia nie jest zapisywana, niezależnie od ustawień hosta.",
"updateCommandHistoryFailed": "Nie udało się zaktualizować ustawień historii poleceń",
"analyticsEnabled": "Udostępnij anonimowe statystyki użytkowania",
"analyticsEnabledDesc": "Wysyła anonimowe, codzienne zestawienie użytkowników, hostów i wykorzystania funkcji, aby pomóc w ulepszaniu Termix. Nie zawiera ono żadnych danych osobowych ani szczegółów połączenia.",
"analyticsEnabledLockedDesc": "To ustawienie jest zablokowane przez zmienną środowiskową ENABLE_TELEMETRY i nie można go tutaj zmienić.",
"updateAnalyticsFailed": "Nie udało się zaktualizować ustawień analityki",
"sessionSharingGloballyEnabled": "Zezwól na udostępnianie sesji",
"sessionSharingGloballyEnabledDesc": "Zezwalaj na udostępnianie sesji terminala na żywo, RDP, VNC i Telnet w obrębie instancji. Po wyłączeniu zastępuje wszystkie przełączniki udostępniania dla poszczególnych hostów.",
"updateSessionSharingFailed": "Nie udało się zaktualizować ustawień udostępniania sesji",
"sessionTimeout": "Przekroczenie limitu czasu sesji",
"hours": "godziny",
"sessionTimeoutRange": "Min. 1 godz. · Maks. 720 godz.",
"monitoringDefaults": "Monitorowanie ustawień domyślnych",
"statusCheck": "Sprawdź status",
"metrics": "Metryka",
"sec": "sek",
"logLevel": "Poziom dziennika",
"enableGuacamole": "Włącz Guacamole",
"enableGuacamoleDesc": "Zdalny pulpit RDP/VNC",
"enableGuacamoleDocsLink": "Wyświetl dokumenty",
"guacdUrl": "adres URL GUACD",
"tailscaleApiKey": "Klucz API Tailscale",
"tailscaleApiKeyDescription": "Służy do wykrywania urządzeń w edytorze hosta. Obsługuje klucze Tailscale (tskey-) i Headscale (hskey-). Wygeneruj klucz na stronie tailscale.com/admin/settings/keys lub z poziomu instancji Headscale.",
"tailscaleApiKeyDocsLink": "Wyświetl dokumenty",
"tailscaleApiBaseUrl": "Podstawowy adres URL API",
"tailscaleApiBaseUrlDescription": "Opcjonalnie. Wskaż samodzielnie hostowaną instancję Headscale zamiast api.tailscale.com. Pozostaw puste, aby użyć domyślnej instancji Tailscale.",
"oidcDescription": "Skonfiguruj OpenID Connect dla logowania jednokrotnego (SSO). Pola oznaczone * są wymagane.",
"oidcDocsLink": "Wyświetl dokumenty",
"oidcClientId": "Identyfikator klienta",
"oidcClientSecret": "Tajemnica klienta",
"oidcAuthUrl": "Adres URL autoryzacji",
"oidcIssuerUrl": "Adres URL wystawcy",
"oidcTokenUrl": "Adres URL tokena",
"oidcUserIdentifier": "Ścieżka identyfikatora użytkownika",
"oidcDisplayName": "Ścieżka nazwy wyświetlanej",
"oidcScopes": "Zakresy",
"oidcUserinfoUrl": "Zastąp adres URL informacji o użytkowniku",
"oidcAllowedUsers": "Dozwoleni użytkownicy",
"oidcAllowedUsersDesc": "Jeden adres e-mail w każdym wierszu. Pozostaw puste, aby zezwolić na wszystkie.",
"oidcAdminGroup": "Grupa administratorów",
"oidcAdminGroupDesc": "Użytkownicy w tej grupie otrzymują uprawnienia administratora. Pozostaw puste, aby wyłączyć synchronizację grupy.",
"oidcGroupClaim": "Roszczenie grupowe",
"oidcGroupClaimDesc": "Opcjonalnie. Ścieżka zgłoszenia zawierająca grupy użytkownika. Domyślnie: grupy, role, a następnie grupa. Użyj tego w przypadku dostawców z niestandardowym zgłoszeniem (np. Zitadel).",
"oidcCaCert": "Niestandardowy certyfikat CA",
"oidcCaCertDesc": "Opcjonalnie. Certyfikat CA zakodowany w formacie PEM dla dostawców OIDC korzystających z prywatnego lub samopodpisanego urzędu certyfikacji. Pozostaw puste, aby użyć systemowego magazynu zaufanych certyfikatów.",
"removeOidc": "Usunąć",
"usersCount": "{{count}} użytkowników",
"searchUsers": "Wyszukaj użytkowników...",
"noUsers": "Brak użytkowników",
"noUsersMatch": "Brak użytkowników odpowiadających Twojemu wyszukiwaniu",
"pageOf": "Strona {{page}} z {{total}}",
"createUser": "Tworzyć",
"newRole": "Nowa rola",
"roleName": "Nazwa",
"roleDisplayName": "Nazwa wyświetlana",
"roleDescription": "Opis",
"rolesCount": "{{count}} ról",
"createRole": "Tworzyć",
"creating": "Tworzenie...",
"exportDatabase": "Eksportuj bazę danych",
"exportDatabaseDesc": "Pobierz kopię zapasową wszystkich hostów, poświadczeń i ustawień",
"export": "Eksport",
"exporting": "Eksportowanie...",
"importDatabase": "Importuj bazę danych",
"importDatabaseDesc": "Przywracanie z pliku kopii zapasowej .sqlite",
"importDatabaseSelected": "Wybrano: {{name}}",
"selectFile": "Wybierz plik",
"changeFile": "Zmiana",
"import": "Import",
"importing": "Importowanie...",
"apiKeysCount": "klawisze {{count}}",
"apiKeysDocsLink": "Wyświetl dokumenty",
"apiKeysCliHint": "Użyj klucza API z interfejsem CLI Termix, aby zarządzać serwerami z poziomu terminala.",
"apiKeysCliLink": "Wyświetl dokumentację CLI",
"newApiKey": "Nowy klucz API",
"apiKeyCreatedWarning": "Klucz został utworzony - skopiuj go teraz, nie będzie już widoczny.",
"apiKeyName": "Nazwa",
"apiKeyUser": "Użytkownik",
"apiKeySelectUser": "Wybierz użytkownika...",
"apiKeyExpiresAt": "Wygasa o",
"createKey": "Utwórz klucz",
"apiKeyNoExpiry": "Brak wygaśnięcia",
"revokedBadge": "ODWOŁANY",
"authTypeDual": "Podwójna autoryzacja",
"authTypeOidc": "OIDC",
"authTypeLocal": "Lokalny",
"adminStatusAdministrator": "Administrator",
"adminStatusRegularUser": "Zwykły użytkownik",
"adminBadge": "ADMINISTRATOR",
"systemBadge": "SYS",
"customBadge": "ZWYCZAJ",
"youBadge": "TY",
"sessionsActive": "{{count}} aktywny",
"sessionActive": "Aktywny: {{time}}",
"sessionExpires": "Wygaśnięcie: {{time}}",
"revokeAll": "Wszystko",
"revokeAllSessionsSuccess": "Wszystkie sesje dla użytkownika zostały odwołane",
"revokeAllSessionsFailed": "Nie udało się odwołać sesji",
"revokeSessionFailed": "Nie udało się odwołać sesji",
"addRole": "Dodaj rolę",
"noCustomRoles": "Nie zdefiniowano żadnych niestandardowych ról",
"removeRoleFailed": "Nie udało się usunąć roli",
"assignRoleFailed": "Nie udało się przypisać roli",
"deleteRoleFailed": "Nie udało się usunąć roli",
"userAdminAccess": "Administrator",
"userAdminAccessDesc": "Pełny dostęp do wszystkich ustawień administracyjnych",
"userRoles": "Role",
"revokeAllUserSessions": "Odwołaj wszystkie sesje",
"revokeAllUserSessionsDesc": "Wymuś ponowne logowanie na wszystkich urządzeniach",
"revoke": "Unieważnić",
"deleteUserWarning": "Usunięcie tego użytkownika jest nieodwracalne.",
"deleteUser": "Usuń {{username}}",
"deleting": "Usuwanie...",
"deleteUserFailed": "Nie udało się usunąć użytkownika",
"deleteUserSuccess": "Użytkownik „{{username}}” został usunięty",
"deleteRoleSuccess": "Rola „{{name}}” została usunięta",
"revokeKeySuccess": "Klawisz „{{name}}” został odwołany",
"revokeKeyFailed": "Nie udało się cofnąć klucza",
"copiedToClipboard": "Skopiowano do schowka",
"done": "Zrobione",
"createUserTitle": "Utwórz użytkownika",
"createUserDesc": "Utwórz nowe konto lokalne.",
"createUserUsername": "Nazwa użytkownika",
"createUserPassword": "Hasło",
"createUserPasswordHint": "Minimum 6 znaków.",
"createUserEnterUsername": "Wprowadź nazwę użytkownika",
"createUserEnterPassword": "Wprowadź hasło",
"createUserSubmit": "Utwórz użytkownika",
"editUserTitle": "Zarządzaj użytkownikiem: {{username}}",
"editUserDesc": "Edytuj role, status administratora, sesje i ustawienia konta.",
"editUserUsername": "Nazwa użytkownika",
"editUserAuthType": "Typ autoryzacji",
"editUserAdminStatus": "Status administratora",
"editUserUserId": "Identyfikator użytkownika",
"linkAccountTitle": "Połącz konta",
"linkAccountDesc": "Połącz konto OIDC {{username}} z istniejącym kontem lokalnym.",
"linkAccountDescLocal": "Połącz konto lokalne {{username}} z istniejącym kontem wyłącznie OIDC.",
"linkAccountWarningTitle": "To spowoduje:",
"linkAccountEffect1": "Usuń konto tylko dla OIDC",
"linkAccountEffect2": "Dodaj logowanie OIDC do konta docelowego",
"linkAccountEffect3": "Zezwól na logowanie OIDC i za pomocą hasła",
"linkAccountTargetUsername": "Nazwa użytkownika konta lokalnego",
"linkAccountTargetPlaceholder": "Wprowadź nazwę użytkownika konta lokalnego, z którym chcesz nawiązać połączenie",
"linkAccountOidcUsername": "Nazwa użytkownika konta OIDC",
"linkAccountOidcPlaceholder": "Wprowadź nazwę użytkownika konta tylko dla OIDC, aby je scalić",
"linkAccountOidcNotFound": "Nie znaleziono konta OIDC o tej nazwie użytkownika",
"linkAccounts": "Połącz konta",
"linkAccountSuccess": "Konta zostały pomyślnie połączone",
"linkAccountFailed": "Nie udało się połączyć kont",
"linkAccountInProgress": "Łączenie...",
"unlinkAccountTitle": "Odłącz OIDC",
"unlinkAccountDesc": "Usuń uwierzytelnianie OIDC z {{username}}. Będą mogli się logować tylko przy użyciu swojego hasła.",
"unlinkAccountWarning": "Spowoduje to usunięcie danych logowania OIDC z tego konta. Aby kontynuować logowanie, użytkownik musi mieć ustawione hasło.",
"unlinkAccount": "Odłącz OIDC",
"unlinkAccountInProgress": "Odłączanie...",
"unlinkAccountSuccess": "OIDC zostało pomyślnie odłączone",
"unlinkAccountFailed": "Nie udało się odłączyć OIDC",
"saving": "Oszczędność...",
"updateRegistrationFailed": "Nie udało się zaktualizować ustawień rejestracji",
"updatePasswordLoginFailed": "Nie udało się zaktualizować ustawień logowania hasłem",
"cannotDisablePasswordLoginWithTotp": "Nie można wyłączyć logowania hasłem, gdy 2FA jest włączone dla jednego lub większej liczby użytkowników. Najpierw wyłącz 2FA.",
"updateOidcAutoProvisionFailed": "Nie udało się zaktualizować ustawienia automatycznego udostępniania OIDC",
"updateOidcSilentLoginDefaultFailed": "Nie udało się zaktualizować ustawień cichego logowania OIDC",
"updatePasswordResetFailed": "Nie udało się zaktualizować ustawienia resetowania hasła",
"sessionTimeoutRange2": "Limit czasu sesji musi mieścić się w przedziale od 1 do 720 godzin",
"sessionTimeoutSaved": "Zapisano limit czasu sesji",
"sessionTimeoutSaveFailed": "Nie udało się zapisać limitu czasu sesji",
"monitoringIntervalInvalid": "Nieprawidłowe wartości interwału",
"monitoringSaved": "Ustawienia monitorowania zapisane",
"monitoringSaveFailed": "Nie udało się zapisać ustawień monitorowania",
"metricsHistoryRetention": "Przechowywanie historii metryk",
"metricsHistoryRetentionRange": "od 1 do 90 dni",
"days": "dni",
"guacamoleSaved": "Ustawienia guacamole zapisane",
"guacamoleSaveFailed": "Nie udało się zapisać ustawień Guacamole",
"guacamoleUpdateFailed": "Nie udało się zaktualizować ustawień Guacamole",
"tailscaleSettingsSaved": "Ustawienia skali ogonowej zapisane",
"tailscaleSettingsSaveFailed": "Nie udało się zapisać ustawień Tailscale",
"logLevelUpdateFailed": "Nie udało się zaktualizować poziomu dziennika",
"oidcSaved": "Konfiguracja OIDC zapisana",
"oidcSaveFailed": "Nie udało się zapisać konfiguracji OIDC",
"oidcRemoved": "Usunięto konfigurację OIDC",
"oidcRemoveFailed": "Nie udało się usunąć konfiguracji OIDC",
"createUserRequired": "Wymagana jest nazwa użytkownika i hasło",
"createUserPasswordTooShort": "Hasło musi mieć co najmniej 6 znaków",
"createUserSuccess": "Utworzono użytkownika „{{username}}”",
"createUserFailed": "Nie udało się utworzyć użytkownika",
"updateAdminStatusFailed": "Nie udało się zaktualizować statusu administratora",
"allSessionsRevoked": "Wszystkie sesje odwołane",
"revokeSessionsFailed": "Nie udało się odwołać sesji",
"manageUserData": "Zarządzaj danymi użytkownika",
"backToUsers": "Powrót do użytkowników",
"manageTabAccount": "Konto",
"manageTabHosts": "Zastępy niebieskie",
"manageTabCredentials": "Referencje",
"manageTabSnippets": "Fragmenty",
"manageTabSessions": "Sesje",
"manageTabDanger": "Niebezpieczeństwo",
"manageEditorBack": "Powrót do danych {{username}}",
"dataLockedBadge": "ZAMKNIĘTY",
"dataLockedNotice": "Dane użytkownika {{username}}pozostaną zablokowane do momentu jego następnego zalogowania. Do tego czasu nie będzie można przeglądać ani edytować jego hostów, danych uwierzytelniających i fragmentów kodu.",
"resetPasswordTitle": "Zresetuj hasło",
"resetPasswordOidcOnly": "Ten użytkownik loguje się za pośrednictwem zewnętrznego dostawcy i nie ma hasła.",
"resetPasswordPlaceholder": "Nowe hasło",
"resetPasswordBtn": "Nastawić",
"resetPasswordWorking": "Resetowanie...",
"resetPasswordSuccess": "Resetowanie hasła",
"resetPasswordSuccessWiped": "Resetowanie hasła. Zaszyfrowane dane użytkownika zostały usunięte.",
"resetPasswordFailed": "Nie udało się zresetować hasła",
"resetPasswordConfirmWipe": "{{username}} nie zalogował się od czasu aktualizacji szyfrowania, więc jego danych nie da się odzyskać. Zresetowanie teraz spowoduje usunięcie jego hostów, danych logowania i fragmentów kodu. Kontynuować?",
"totpSectionTitle": "Uwierzytelnianie dwuskładnikowe",
"totpStatusEnabled": "TOTP jest włączony dla tego użytkownika",
"totpStatusDisabled": "TOTP nie jest włączony dla tego użytkownika",
"disableTotp": "Wyłączyć",
"disableTotpConfirm": "Wyłączyć uwierzytelnianie dwuskładnikowe dla {{username}}? Będą mogli się logować, podając tylko swoje hasło.",
"totpDisabledSuccess": "TOTP wyłączony",
"totpDisableFailed": "Nie udało się wyłączyć TOTP",
"manageApiKeys": "Klucze API",
"apiKeyNamePlaceholder": "Nazwa klucza",
"apiKeyCopyNotice": "Skopiuj ten klucz teraz, nie będzie on już więcej wyświetlany.",
"noApiKeysForUser": "Brak kluczy API",
"apiKeyDeleteFailed": "Nie udało się usunąć klucza API",
"exportUserData": "Eksport danych",
"exportUserDataDesc": "Pobierz hosty, dane uwierzytelniające i dane menedżera plików tego użytkownika w formacie JSON. Sekrety są odszyfrowane.",
"exportUserDataSuccess": "Wyeksportowano dane użytkownika",
"exportUserDataFailed": "Nie udało się wyeksportować danych użytkownika",
"hostsCount": "{{count}} gospodarzy",
"addHostForUser": "Dodaj hosta",
"noHostsForUser": "Ten użytkownik nie ma żadnych hostów",
"connectToHost": "Łączyć",
"deleteHostConfirm": "Usunąć hosta „{{name}}” należącego do {{username}}?",
"hostDeletedSuccess": "Usunięto hosta",
"hostDeleteFailed": "Nie udało się usunąć hosta",
"credentialsCount": "{{count}} dane uwierzytelniające",
"addCredentialForUser": "Dodaj poświadczenia",
"noCredentialsForUser": "Ten użytkownik nie ma żadnych danych uwierzytelniających",
"deleteCredentialConfirm": "Usunąć poświadczenie „{{name}}” należące do {{username}}?",
"credentialDeletedSuccess": "Usunięto poświadczenie",
"credentialDeleteFailed": "Nie udało się usunąć poświadczeń",
"snippetsCount": "{{count}} fragmenty",
"addSnippetForUser": "Dodaj fragment kodu",
"noSnippetsForUser": "Ten użytkownik nie ma żadnych fragmentów",
"snippetRequiredFields": "Nazwa i treść fragmentu kodu są wymagane",
"snippetNamePlaceholder": "Nazwa fragmentu kodu",
"snippetContentPlaceholder": "Treść polecenia",
"snippetFolderPlaceholder": "Folder (opcjonalnie)",
"snippetSaved": "Fragment zapisany",
"snippetSaveFailed": "Nie udało się zapisać fragmentu kodu",
"deleteSnippetConfirm": "Usunąć fragment kodu „{{name}}” należący do {{username}}?",
"snippetDeletedSuccess": "Usunięto fragment",
"snippetDeleteFailed": "Nie udało się usunąć fragmentu kodu",
"noSessionsForUser": "Brak aktywnych sesji",
"deleteUserDangerDesc": "Trwale usuń {{username}} i wszystkie jego dane (hosty, dane uwierzytelniające, fragmenty kodu, historię). Tej operacji nie można cofnąć.",
"deleteUserConfirm": "Czy trwale usunąć {{username}} i wszystkie jego dane?",
"deleteUserAdminBlocked": "Przed usunięciem tego użytkownika usuń status administratora.",
"createRoleRequired": "Wymagane jest podanie imienia i nazwiska oraz nazwy wyświetlanej",
"createRoleSuccess": "Utworzono rolę „{{name}}”",
"createRoleFailed": "Nie udało się utworzyć roli",
"apiKeyNameRequired": "Nazwa klucza jest wymagana",
"apiKeyUserRequired": "Wymagany jest identyfikator użytkownika",
"apiKeyCreatedSuccess": "Utworzono klucz API „{{name}}”",
"apiKeyCreateFailed": "Nie udało się utworzyć klucza API",
"exportSuccess": "Baza danych została pomyślnie wyeksportowana",
"exportFailed": "Eksport bazy danych nie powiódł się",
"importSelectFile": "Proszę najpierw wybrać plik",
"importCompleted": "Import zakończony: zaimportowano {{total}} elementów, pominięto {{skipped}}",
"importFailed": "Nieudany import: {{error}}",
"importError": "Import bazy danych nie powiódł się",
"sectionHostDefaults": "Domyślne ustawienia hosta",
"hostDefaultsDesc": "Ustawienia są stosowane automatycznie podczas tworzenia nowego hosta. Poszczególni hosty nadal mogą je nadpisać.",
"hostDefaultsSocks5": "Serwer proxy SOCKS5",
"hostDefaultsUseSocks5": "Włącz serwer proxy SOCKS5",
"hostDefaultsUseSocks5Desc": "Wstępnie wypełnij serwer proxy SOCKS5 na wszystkich nowych hostach",
"hostDefaultsSocks5Host": "Host/Port proxy",
"hostDefaultsSocks5Username": "Nazwa użytkownika proxy",
"hostDefaultsSocks5Password": "Hasło proxy",
"hostDefaultsMetrics": "Metryki hosta",
"hostDefaultsMetricsEnabled": "Włącz metryki",
"hostDefaultsMetricsEnabledDesc": "Domyślnie zbieraj dane dotyczące procesora, pamięci i innych statystyk na nowych hostach",
"hostDefaultsStatusCheckEnabled": "Włącz sprawdzanie statusu",
"hostDefaultsStatusCheckEnabledDesc": "Domyślnie sprawdzaj status online/offline na nowych hostach",
"hostDefaultsTerminal": "Terminal",
"hostDefaultsSessionLogging": "Rejestrowanie sesji",
"hostDefaultsSessionLoggingDesc": "Domyślnie rejestruj sesje terminalowe na nowych hostach",
"hostDefaultsCommandHistory": "Historia dowodzenia",
"hostDefaultsCommandHistoryDesc": "Domyślnie śledź historię poleceń na nowych hostach",
"hostDefaultsSaved": "Zapisano ustawienia domyślne hosta",
"hostDefaultsSaveFailed": "Nie udało się zapisać domyślnych ustawień hosta",
"rolePermissions": {
"count": "{{count}} uprawnienia",
"editAction": "Edytuj uprawnienia",
"loadError": "Nie udało się załadować katalogu uprawnień",
"saved": "Zapisano uprawnienia roli",
"saveError": "Nie udało się zapisać uprawnień roli",
"save": "Ratować",
"saving": "Oszczędność..."
},
"aiGloballyEnabled": "Asystent AI",
"aiGloballyEnabledDesc": "Pozwól użytkownikom włączyć asystenta AI. Gdy ta opcja jest wyłączona, asystent jest ukryty i zablokowany dla wszystkich.",
"aiPrivateEndpoints": "Dozwolone prywatne hosty AI",
"aiPrivateEndpointsDesc": "Hosty w Twojej sieci prywatnej, na które użytkownicy mogą wskazać dostawcę, na przykład samodzielnie hostowany Ollama. Rozdziel je przecinkami.",
"updateAiEnabledFailed": "Nie można zaktualizować ustawień AI",
"updateAiEndpointsFailed": "Nie można zaktualizować dozwolonych hostów"
},
"newUi": {
"sidebar": {
"quickConnect": {
"hostLabel": "Gospodarz",
"hostPlaceholder": "192.168.1.1 lub example.com",
"portLabel": "Port",
"portPlaceholder": "22",
"usernameLabel": "Nazwa użytkownika",
"usernamePlaceholder": "nazwa użytkownika",
"authLabel": "Autoryzacja",
"passwordLabel": "Hasło",
"passwordPlaceholder": "hasło",
"privateKeyLabel": "Klucz prywatny",
"privateKeyPlaceholder": "Wklej klucz prywatny...",
"credentialLabel": "Mandat",
"credentialPlaceholder": "Wybierz zapisane dane uwierzytelniające",
"connectToTerminal": "Połącz się z terminalem",
"connectToFiles": "Połącz się z plikami"
},
"history": {
"noTerminalSelected": "Nie wybrano terminala",
"noTerminalSelectedHint": "Otwórz kartę terminala SSH, aby wyświetlić historię poleceń",
"searchPlaceholder": "Historia wyszukiwania...",
"clearAll": "Wyczyść wszystko",
"noHistoryEntries": "Brak wpisów w historii",
"trackingDisabled": "Śledzenie historii jest wyłączone",
"trackingDisabledHint": "Włącz tę opcję w ustawieniach terminala hosta."
},
"sshTools": {
"keyRecordingTitle": "Nagrywanie kluczy",
"recordToTerminals": "Nagrywanie do terminali",
"selectAll": "Wszystko",
"selectNone": "Nic",
"noTerminalTabsOpen": "Brak otwartych kart terminala",
"selectTerminalsAbove": "Wybierz terminale powyżej",
"broadcastInputPlaceholder": "Wpisz tutaj, aby nadać naciśnięcia klawiszy...",
"fillPassword": "Wpisz hasło",
"fillPasswordSuccess": "Wprowadzono hasło do terminala(ów) {{count}}",
"fillPasswordMissing": "Brak zapisanego hasła dla {{count}} wybranych terminali",
"stopRecording": "Zatrzymaj nagrywanie",
"startRecording": "Rozpocznij nagrywanie",
"settingsTitle": "Ustawienia",
"enableRightClickCopyPaste": "Włącz kopiowanie/wklejanie prawym przyciskiem myszy"
},
"splitScreen": {
"layoutTitle": "Układ",
"selectLayoutAbove": "Wybierz układ powyżej",
"selectLayoutHint": "Wybierz liczbę wyświetlanych paneli",
"panesTitle": "Szyby",
"openTabsTitle": "Otwórz karty",
"dragTabsHint": "Przeciągnij karty do paneli powyżej lub użyj funkcji Szybkie przypisywanie",
"dropHere": "Upuść tutaj",
"emptyPane": "Pusty",
"dashboard": "Panel",
"clearSplitScreen": "Wyczyść podzielony ekran",
"quickAssign": "Szybkie przypisanie",
"alreadyAssigned": "Panel {{index}}",
"splitTab": "Podziel kartę",
"addToSplit": "Dodaj do podziału",
"removeFromSplit": "Usuń z podziału",
"assignToPane": "Przypisz do panelu",
"hotkeysTitle": "Skróty klawiaturowe",
"hotkeysSplitRight": "Przełącz podział 2-drożny",
"hotkeysSplitBelow": "Przełącz podział na 3 drogi",
"hotkeysNavigatePane": "Nawiguj po panelach",
"hotkeysNextTab": "Następna karta",
"hotkeysPrevTab": "Poprzednia karta",
"hotkeysJumpTab": "Przejdź do zakładki"
},
"snippets": {
"title": "Fragmenty",
"createSnippetTitle": "Utwórz fragment kodu",
"createSnippetDescription": "Utwórz nowy fragment kodu polecenia w celu szybkiego wykonania",
"nameLabel": "Nazwa",
"namePlaceholder": "np. Uruchom ponownie Nginx",
"descriptionLabel": "Opis",
"descriptionPlaceholder": "Opis opcjonalny",
"optional": "Fakultatywny",
"folderLabel": "Falcówka",
"noFolder": "Brak folderu (bez kategorii)",
"commandLabel": "Rozkaz",
"commandPlaceholder": "np. sudo systemctl restart nginx",
"typeLabel": "Typ",
"typeCommand": "Rozkaz",
"typeNote": "Notatka",
"noteLabel": "Notatka",
"notePlaceholder": "np. wielokrotnego użytku tekst zachęty lub przypomnienia",
"cancel": "Anulować",
"createSnippetButton": "Utwórz fragment kodu",
"createFolderTitle": "Utwórz folder",
"createFolderDescription": "Zorganizuj swoje fragmenty kodu w folderach",
"folderNameLabel": "Nazwa folderu",
"folderNamePlaceholder": "np. polecenia systemowe, skrypty Dockera",
"folderColorLabel": "Kolor folderu",
"folderIconLabel": "Ikona folderu",
"previewLabel": "Zapowiedź",
"folderNameFallback": "Nazwa folderu",
"createFolderButton": "Utwórz folder",
"targetTerminals": "Terminale docelowe",
"selectAll": "Wszystko",
"selectNone": "Nic",
"noTerminalTabsOpen": "Brak otwartych kart terminala",
"searchPlaceholder": "Wyszukaj fragmenty...",
"newSnippet": "Nowy fragment kodu",
"newFolder": "Nowy folder",
"run": "Uruchomić",
"noSnippetsInFolder": "Brak fragmentów w tym folderze",
"uncategorized": "Bez kategorii",
"editSnippetTitle": "Edytuj fragment kodu",
"editSnippetDescription": "Zaktualizuj ten fragment polecenia",
"saveSnippetButton": "Zapisz zmiany",
"createSuccess": "Fragment kodu został pomyślnie utworzony",
"createFailed": "Nie udało się utworzyć fragmentu kodu",
"updateSuccess": "Fragment kodu został pomyślnie zaktualizowany",
"updateFailed": "Nie udało się zaktualizować fragmentu kodu",
"deleteFailed": "Nie udało się usunąć fragmentu kodu",
"folderCreateSuccess": "Folder został pomyślnie utworzony",
"folderCreateFailed": "Nie udało się utworzyć folderu",
"editFolderTitle": "Edytuj folder",
"editFolderDescription": "Zmień nazwę lub wygląd tego folderu",
"saveFolderButton": "Zapisz zmiany",
"editFolder": "Edytuj folder",
"deleteFolder": "Usuń folder",
"folderDeleteSuccess": "Folder „{{name}}” został usunięty",
"folderDeleteFailed": "Nie udało się usunąć folderu",
"folderEditSuccess": "Folder został pomyślnie zaktualizowany",
"folderEditFailed": "Nie udało się zaktualizować folderu",
"confirmRunMessage": "Uruchomić \"{{name}}\"?",
"confirmRunButton": "Uruchomić",
"runSuccess": "Uruchomiono „{{name}}” w terminalach {{count}}",
"pasteSuccess": "Wklejono „{{name}}” do terminala(ów) {{count}}",
"pasteToTerminal": "Pasta",
"copySuccess": "Skopiowano „{{name}}” do schowka",
"shareTitle": "Udostępnij fragment",
"shareUser": "Użytkownik",
"shareRole": "Rola",
"selectUser": "Wybierz użytkownika...",
"selectRole": "Wybierz rolę...",
"shareSuccess": "Fragment kodu udostępniono pomyślnie",
"shareFailed": "Nie udało się udostępnić fragmentu kodu",
"revokeSuccess": "Dostęp odwołany",
"revokeFailed": "Nie udało się cofnąć dostępu",
"currentAccess": "Aktualny dostęp",
"shareLoadError": "Nie udało się załadować danych udostępniania",
"loading": "Załadunek...",
"close": "Zamknąć",
"reorderFailed": "Nie udało się zapisać kolejności fragmentów",
"importExport": "Import/Eksport",
"exportBtn": "Eksportuj JSON",
"importBtn": "Importuj JSON",
"exportSuccess": "Fragmenty kodu zostały pomyślnie wyeksportowane",
"exportFailed": "Nie udało się wyeksportować fragmentów kodu",
"importTitle": "Importuj fragmenty kodu",
"importDescription": "Importuj fragmenty kodu i foldery z pliku JSON wyeksportowanego przez Termix",
"importDropOrClick": "Upuść plik JSON tutaj lub kliknij, aby przeglądać",
"importSelectedFile": "Wybrano: {{name}}",
"importOverwrite": "Nadpisz istniejące fragmenty kodu tą samą nazwą i folderem",
"importStartBtn": "Import",
"importSuccess": "Import ukończony: dodano {{snippets}} fragmentów kodu, zaktualizowano {{updated}} , pominięto {{skipped}} , dodano {{folders}} folderów",
"importFailed": "Nie udało się zaimportować fragmentów kodu",
"importInvalidFile": "Nieprawidłowy plik: oczekiwano obiektu JSON z tablicami fragmentów kodu lub folderów",
"targetHostsLabel": "Docelowi gospodarze",
"targetHostsHint": "Przypisz hostom możliwość bezpośredniego uruchomienia tego fragmentu kodu bez otwierania terminala.",
"noHostsAvailable": "Brak skonfigurowanych hostów",
"clearTargetHosts": "Wyczyść wszystko",
"hasTargetHosts": "Ma hosty docelowe",
"runOnTargets": "Biegnij do celów",
"directRunSuccess": "Uruchomiono „{{name}}” na {{count}} hostach",
"directRunPartialFail": "„{{name}}” nie powiodło się na jednym lub kilku hostach",
"executionResultTitle": "Wyniki wykonania: {{name}}",
"executionResultDescription": "Dane wyjściowe uruchomienia fragmentu kodu na każdym hoście docelowym.",
"executionSuccess": "Sukces",
"executionFailed": "Przegrany",
"expandAll": "Rozwiń wszystkie foldery",
"collapseAll": "Zwiń wszystkie foldery",
"settings": "Ustawienia fragmentu kodu",
"variablesHint": "Zmienne: $HOST, $USER, $PORT, $NAME, ${INPUT_1:Label}",
"variablesDialogTitle": "Uruchom „{{name}}”",
"variablesDialogDescription": "Przed uruchomieniem fragmentu kodu wprowadź wymagane wartości.",
"variablesPreviewLabel": "Zapowiedź",
"variablesConfirmButton": "Uruchomić"
},
"automations": {
"title": "Automatyzacje",
"tabAutomations": "Automatyzacje",
"tabRuns": "Biegi",
"tabChannels": "Kanały",
"createAutomation": "Nowa automatyzacja",
"backToAutomations": "Powrót do automatyzacji",
"createTitle": "Nowa automatyzacja",
"editTitle": "Edytuj automatyzację",
"empty": "Brak jeszcze automatyzacji. Utwórz automatyzację, która będzie reagować na metrykę, harmonogram lub zdarzenie.",
"emptyRuns": "Na razie brak przebiegów.",
"emptyChannels": "Brak kanałów. Dodaj jeden, aby wysyłać powiadomienia.",
"noChannelsHint": "Nie skonfigurowano jeszcze żadnych kanałów. Dodaj jeden w zakładce Kanały.",
"addChannel": "Dodaj kanał",
"testChannel": "Test",
"channelTestSent": "Wysłano powiadomienie testowe",
"channelTestFailed": "Powiadomienie testowe nie powiodło się",
"channelDeleted": "Kanał usunięty",
"deleteChannelConfirm": "Usunąć ten kanał? Automatyzacje z niego korzystające przestaną wysyłać powiadomienia.",
"nameLabel": "Nazwa",
"namePlaceholder": "np. Wyczyść /dane, gdy się zapełnią",
"nameRequired": "Imię jest wymagane",
"descriptionLabel": "Opis",
"descriptionPlaceholder": "Opis opcjonalny",
"enabledLabel": "Włączony",
"concurrencyLabel": "Jeśli już działa",
"concurrencyHint": "Co zrobić, gdy sytuacja taka wystąpi ponownie przed zakończeniem ostatniego przebiegu.",
"concurrency": {
"skip": "Pomiń nowy bieg",
"queue": "Poczekaj i biegnij za",
"allow": "Uruchom oba naraz"
},
"save": "Ratować",
"created": "Stworzono automatyzację",
"updated": "Automatyzacja zapisana",
"deleted": "Automatyzacja usunięta",
"deleteConfirm": "Usunąć tę automatyzację? Jej historia uruchomień również zostanie usunięta.",
"runNow": "Biegnij teraz",
"testRun": "Przebieg próbny",
"testRunHint": "Przebiega przez każdy krok, ale nie dotyka niczego poza Termixem.",
"runStarted": "Uruchomiono bieg",
"runFinished": "Zakończono bieg: {{status}}",
"trigger": "Spust",
"steps": "Kroki",
"addStep": "Dodaj krok",
"removeStep": "Usuń krok",
"moveUp": "Podnieść",
"moveDown": "Opuszczać",
"noSteps": "Brak kroków. Dodaj jeden, aby określić, co powinno się stać.",
"webhookTokenTitle": "Adres URL webhooka",
"webhookTokenDescription": "Wyświetla się raz. Zapisz teraz, nie będzie można go później odzyskać.",
"copy": "Kopia",
"copied": "Skopiowano",
"viewJson": "JSON",
"viewBuilder": "Budowniczy",
"viewGraph": "Wykres",
"lastRun": "Ostatni bieg",
"never": "Nigdy",
"duration": "{{seconds}}s",
"stepOutput": "Wyjście",
"stepError": "Błąd",
"dryRunBadge": "Przebieg próbny",
"hostSelector": {
"trigger": "Wyzwalający host",
"host": "Konkretny gospodarz",
"fleet": "Flota",
"all": "Wszyscy gospodarze"
},
"triggerKinds": {
"metric_threshold": "Próg metryczny",
"host_status": "Host idzie w górę lub w dół",
"health_check": "Zmiany w kontroli stanu zdrowia",
"schedule": "Zgodnie z harmonogramem",
"docker_event": "Wydarzenie kontenerowe",
"internal_event": "Wydarzenie Termix",
"webhook": "Przychodzący webhook"
},
"stepTypes": {
"notify": "Wyślij powiadomienie",
"http": "Zadzwoń pod adres URL",
"run_snippet": "Uruchom fragment kodu",
"run_command": "Uruchom polecenie",
"docker": "Kontroluj kontener",
"tunnel": "Kontroluj tunel",
"wol": "Obudź gospodarza",
"wait": "Czekać",
"set_var": "Ustaw zmienną",
"if": "Jeśli/w przeciwnym razie",
"run_automation": "Uruchom inną automatyzację",
"stop": "Zatrzymywać się"
},
"statuses": {
"running": "Działanie",
"success": "Sukces",
"failed": "Przegrany",
"timeout": "Przekroczono limit czasu",
"skipped": "Pominięto",
"cancelled": "Odwołany"
},
"fields": {
"host": "Gospodarz",
"metric": "Metryczny",
"mount": "Punkt montowania",
"operator": "Jest",
"value": "Wartość",
"forSeconds": "Utrzymywany przez (sekundy)",
"cooldown": "Czas odnowienia (minuty)",
"cron": "Wyrażenie cron",
"intervalSeconds": "Co (sekundy)",
"timezone": "Strefa czasowa",
"timezoneServer": "Czas serwera",
"timezoneHint": "W tej strefie odczytywane są czasy cron. Nie dotyczy harmonogramów interwałowych.",
"container": "Pojemnik",
"command": "Rozkaz",
"url": "Adres URL",
"method": "Metoda",
"body": "Ciało",
"channels": "Kanały",
"title": "Tytuł",
"message": "Wiadomość",
"snippet": "Skrawek",
"seconds": "Towary drugiej jakości",
"conditionLeftPlaceholder": "Wartość do sprawdzenia",
"conditionRightPlaceholder": "Porównaj z",
"variableName": "Nazwa zmiennej",
"variableValue": "Wartość",
"elevated": "Uruchom z sudo",
"onError": "Jeśli to się nie powiedzie",
"allowPrivateNetwork": "Zezwalaj na lokalne adresy sieciowe",
"allowPrivateNetworkHint": "Wymagane dla usługi hostowanej samodzielnie w sieci LAN. Domyślnie wyłączone, aby zapobiec żądaniom kierowanym do adresów wewnętrznych."
},
"onError": {
"stop": "Zatrzymaj bieg",
"continue": "Kontynuować"
}
},
"fleets": {
"title": "Floty",
"createFleet": "Utwórz flotę",
"createFleetTitle": "Utwórz flotę",
"editFleetTitle": "Edytuj flotę",
"createFleetDescription": "Flota to nazwana grupa gospodarzy, przeciwko której można podejmować działania jako jednostka.",
"nameLabel": "Nazwa",
"namePlaceholder": "np. serwery WWW",
"nameRequired": "Nazwa floty jest wymagana",
"descriptionLabel": "Opis",
"descriptionPlaceholder": "Opis opcjonalny",
"colorLabel": "Kolor",
"tagRulesLabel": "Zasady tagowania",
"tagRulesPlaceholder": "prod-web, krawędź",
"tagRulesHint": "Gospodarze z dowolnym z tych tagów są automatycznie uwzględniani, oprócz gospodarzy dodanych ręcznie.",
"fleetCreated": "Utworzono flotę",
"fleetUpdated": "Zaktualizowano flotę",
"fleetDeleted": "Flota usunięta",
"saveFailed": "Nie udało się zapisać floty",
"deleteFailed": "Nie udało się usunąć floty",
"loadFailed": "Nie udało się załadować flot",
"deleteFleetTitle": "Usuń flotę",
"deleteFleetDescription": "Czy na pewno chcesz usunąć „{{name}}”? Nie spowoduje to usunięcia samych gospodarzy.",
"searchFleets": "Przeszukaj floty...",
"noFleets": "Nie masz jeszcze flot. Utwórz ją, aby rozpocząć.",
"memberCount": "{{count}} gospodarz",
"memberCount_other": "{{count}} gospodarzy",
"manageMembers": "Zarządzaj członkami",
"manageMembersTitle": "Zarządzaj członkami floty",
"manageMembersDescription": "Przełączaj hosty do lub z członkostwa statycznego tej floty. Hosty dopasowane według reguł tagów są zawsze uwzględniane.",
"searchHosts": "Wyszukaj hostów...",
"noHostsFound": "Nie znaleziono żadnych hostów",
"noMembers": "Ta flota nie ma jeszcze żadnych członków. Dodaj gospodarzy lub ustaw regułę tagowania.",
"membersLoadFailed": "Nie udało się załadować członków floty",
"memberUpdateFailed": "Nie udało się zaktualizować członkostwa we flocie",
"tabRun": "Uruchom polecenie",
"tabTransfer": "Przesyłanie plików",
"tabInventory": "Spis",
"openInventoryTab": "Otwórz w pełnej karcie",
"tabPackages": "Pakiety",
"runOnFleet": "Run on Fleet",
"commandPlaceholder": "czas sprawności && df -h",
"commandRequired": "Wymagane jest polecenie",
"commandInputsLabel": "Wejścia poleceń",
"commandSucceeded": "Polecenie powiodło się na wszystkich hostach",
"commandPartialFailure": "{{failed}} z {{total}} hostów nie powiodło się",
"commandFailed": "Nie udało się uruchomić polecenia",
"resultSuccess": "Sukces",
"resultFailed": "Przegrany",
"push": "Naciskać",
"pull": "Ciągnąć",
"remotePathLabel": "Ścieżka zdalna",
"remotePathRequired": "Wymagana jest ścieżka zdalna",
"fileLabel": "Plik",
"fileRequired": "Wymagany jest plik",
"pushHint": "Wybrany plik zostanie zapisany w tej dokładnej ścieżce na każdym hoście we flocie.",
"pullHint": "Plik znajdujący się pod tą ścieżką jest odczytywany z każdego hosta i pobierany jako pojedynczy plik zip, jeden folder na hosta.",
"transferComplete": "Transfer zakończony",
"transferFailed": "Transfer nie powiódł się",
"refreshInventory": "Odśwież inwentarz",
"inventoryLoadFailed": "Nie udało się załadować ekwipunku",
"inventoryRefreshed": "Odświeżono zapasy",
"inventoryRefreshFailed": "Nie udało się odświeżyć stanu zapasów",
"inventoryNoData": "Brak danych o stanie magazynowym — odśwież, aby je zebrać.",
"inventoryHost": "Gospodarz",
"inventoryCollectedCount": "{{count}}/{{total}} zebrano",
"inventoryOs": "System operacyjny",
"inventoryKernel": "Jądro",
"inventoryArch": "Łuk",
"inventoryUptime": "Czas sprawności",
"inventoryPackageManager": "Menedżer pakietów",
"inventoryCollectedAt": "Zebrane",
"packageActionLabel": "Działanie",
"packageInstall": "Zainstalować",
"packageRemove": "Usunąć",
"packageUpgradeAll": "Uaktualnij wszystkie pakiety",
"packageNameLabel": "Nazwa pakietu",
"packageNameRequired": "Wymagana jest nazwa pakietu",
"packageHint": "Wymaga dostępu na poziomie zarządzania dla każdego hosta i zwiększa uprawnienia, korzystając z zapisanego hasła sudo hosta."
},
"workspaces": {
"title": "Przestrzenie robocze",
"saveCurrent": "Zapisz bieżące",
"saveCurrentTitle": "Zapisz bieżący obszar roboczy",
"saveCurrentDescription": "Zapisz każdą otwartą kartę, podzielony układ i układ panelu jako nową nazwaną przestrzeń roboczą.",
"nameLabel": "Nazwa",
"namePlaceholder": "np. Debugowanie produktu",
"nameRequired": "Nazwa obszaru roboczego jest wymagana",
"colorLabel": "Kolor",
"workspaceCreated": "Zapisano obszar roboczy",
"workspaceUpdated": "Zaktualizowano obszar roboczy",
"workspaceDeleted": "Usunięto obszar roboczy",
"workspaceDuplicated": "Zduplikowano obszar roboczy",
"saveFailed": "Nie udało się zapisać obszaru roboczego",
"updateFailed": "Nie udało się zaktualizować obszaru roboczego",
"deleteFailed": "Nie udało się usunąć obszaru roboczego",
"duplicateFailed": "Nie udało się zduplikować obszaru roboczego",
"loadFailed": "Nie udało się załadować obszarów roboczych",
"applyFailed": "Nie udało się zastosować obszaru roboczego",
"deleteWorkspaceTitle": "Usuń obszar roboczy",
"deleteWorkspaceDescription": "Czy na pewno chcesz usunąć „{{name}}”? Tego nie można cofnąć.",
"noWorkspaces": "Brak zapisanych obszarów roboczych. Zapisz aktualny układ kart, aby rozpocząć.",
"tabCount": "Karta {{count}}",
"tabCount_other": "{{count}} karty",
"apply": "Stosować",
"applyConfirmTitle": "Zastosuj obszar roboczy",
"applyConfirmDescription": "Zastosowanie polecenia „{{name}}” spowoduje zamknięcie bieżących kart i zastąpienie ich zapisanym układem tego obszaru roboczego. Niezapisane zmiany w bieżącym układzie zostaną utracone.",
"applyConfirmButton": "Zastosuj obszar roboczy",
"updateWithCurrent": "Aktualizacja z bieżącym",
"updateWithCurrentConfirm": "Nadpisać „{{name}}” obecnym układem kart?",
"rename": "Przemianować",
"duplicate": "Duplikat",
"duplicateNameSuffix": "{{name}} (kopiuj)",
"setDefault": "Ustaw jako domyślne",
"unsetDefault": "Usuń jako domyślne",
"defaultBadge": "Domyślny",
"lastSession": "Ostatnia sesja",
"lastSessionDescription": "Automatycznie aktualizowane do ostatnio otwartego układu kart. Zastosuj, aby przywrócić otwarte wcześniej zakładki.",
"lastUsed": "Ostatnio użyte {{time}}",
"neverUsed": "Nigdy nie zastosowano",
"tabsSkipped": "Zastosowano obszar roboczy — pominięto {{count}} kart (host już nie istnieje): {{names}}"
},
"keybindings": {
"title": "Skróty klawiaturowe",
"description": "Dostosuj skróty klawiaturowe do kopiowania, wklejania i sterowania w terminalu lub powiąż klawisze, aby wysłać tekst lub uruchomić fragment kodu.",
"defaultsHeading": "Wbudowane skróty",
"customHeading": "Niestandardowe skróty",
"addBinding": "Dodaj skrót",
"addBindingTitle": "Dodaj skrót",
"editBindingTitle": "Edytuj skrót",
"loading": "Załadunek...",
"noCustomBindings": "Brak niestandardowych skrótów",
"defaultBadge": "Domyślny",
"customizedBadge": "Dostosowane",
"customize": "Dostosuj",
"resetToDefault": "Przywróć ustawienia domyślne",
"resetAllToDefaults": "Przywróć ustawienia domyślne",
"close": "Zamknąć",
"cancel": "Anulować",
"saveBinding": "Zapisz skrót",
"saveError": "Nie udało się zapisać skrótów klawiaturowych",
"pressKeysToRecord": "Kombinacja klawiszy",
"pressKeysPlaceholder": "Kliknij i naciśnij klawisze",
"recording": "Naciśnij klawisze...",
"comboRequiredError": "Najpierw naciśnij kombinację klawiszy",
"textRequiredError": "Wprowadź tekst do wysłania",
"controlCodeRequiredError": "Wprowadź pojedynczą literę kodu kontrolnego",
"snippetRequiredError": "Wybierz fragment",
"conflictWarning": "Ta kombinacja jest już przypisana do {{combo}}. Zapis spowoduje, że oba zapłoną.",
"actionLabel": "Działanie",
"actionCopy": "Kopiuj wybór",
"actionPaste": "Pasta",
"actionSendControlCode": "Wyślij sygnał Ctrl+litera",
"actionSendText": "Wyślij tekst",
"actionRunSnippet": "Uruchom istniejący fragment kodu",
"controlCodeLabel": "List",
"textLabel": "Tekst do wysłania",
"appendEnterLabel": "Naciśnij Enter po wysłaniu",
"snippetLabel": "Skrawek",
"selectSnippetPlaceholder": "Wybierz fragment",
"orphanedSnippetWarning": "fragment nie znaleziony",
"clipboardPermissionNote": "Przy pierwszym użyciu w niektórych przeglądarkach może zostać wyświetlony monit o zezwolenie na dostęp do schowka."
},
"connectionDefaults": {
"title": "Domyślne ustawienia połączenia",
"description": "Ustaw wartości, które dziedziczy każdy host, chyba że je nadpisze.",
"manage": "Zarządzać",
"dialogDescription": "Dotyczą one hostów, które pozostawiają ustawienia nieustawione. Wszystko, co jest ustawione na hoście, wygrywa.",
"tabTerminal": "Terminal",
"tabRemoteDesktop": "Pulpit zdalny",
"inherit": "Dziedziczyć",
"on": "NA",
"off": "Wyłączony",
"resizeDisplayUpdate": "Wyświetl aktualizację",
"resizeReconnect": "Na nowo połączyć",
"clearAll": "Wyczyść wszystko",
"saved": "Zapisano domyślne ustawienia połączenia",
"saveFailed": "Nie udało się zapisać domyślnych ustawień połączenia"
},
"userProfile": {
"donateTitle": "Utrzymajmy Termix przy życiu",
"donateDescription": "Termix jest darmowy, hostowany samodzielnie i tworzony przez zaledwie kilka osób w wolnym czasie. Jeśli zaoszczędziłeś czas lub pieniądze, darowizna w kryptowalutach pomoże Ci go utrzymać.",
"donateMilestones": "Darowizny pomagają nam sfinansować czas poświęcony na badania i naukę potrzebną do wdrożenia obsługi SAML, Kubernetes i agentów. Zobacz postępy i przekaż darowiznę.",
"donateButton": "Przekaż kryptowalutę",
"storageModeLocal": "Przeglądarka",
"storageModeCloud": "Baza danych",
"storageModeDescription": "Przeglądarka zapisuje ustawienia tylko w tej przeglądarce. Baza danych synchronizuje się z serwerem i ładuje się na dowolnym urządzeniu.",
"resetToDefaults": "Przywróć ustawienia domyślne",
"resetToDefaultsSuccess": "Ustawienia zostały przywrócone do domyślnych.",
"storageModeSwitch": "Preferencje dotyczące przechowywania",
"sectionAccount": "Konto",
"desktopProfileTitle": "Automatyczny profil pulpitu lokalnego",
"desktopProfileDescription": "Ten profil jest ograniczony do wbudowanego zaplecza i loguje automatycznie. Nie ma hasła logowania; synchronizacja zdalna poniżej korzysta z osobnego konta na serwerze.",
"sectionInterface": "Interfejs",
"interfacePresetDesc": "Ile szczegółów pokazuje Termix. Każda funkcja pozostaje dostępna.",
"preset_simple": "Prosty",
"preset_simple_desc": "Tylko to, co najważniejsze.",
"preset_balanced": "Zrównoważony",
"preset_balanced_desc": "Standardowy układ.",
"preset_advanced": "Zaawansowany",
"preset_advanced_desc": "Wszystko jest ciasno upakowane.",
"presetClearOverrides": "Zresetuj wszystko",
"presetOverridesTitle": "Dostosowane",
"presetRevertArea": "Odwracać",
"presetConfirmTitle": "Przełącz na {{preset}}?",
"presetConfirmDesc": "Resetuje pasek boczny, nawigację, układ pulpitu, pasek narzędzi terminala i widok menedżera plików. Hosty, dane logowania i strona główna pozostają bez zmian.",
"presetConfirmApply": "Zastosuj ustawienia wstępne",
"runSetupAgainDesc": "Powtórz konfigurację pierwszego uruchomienia.",
"runSetupAgainButton": "Uruchom konfigurację",
"uiArea_chrome": "Aplikacja Chrome",
"uiArea_hostList": "Lista hostów",
"uiArea_credentialList": "Lista poświadczeń",
"uiArea_rail": "Nawigacja",
"uiArea_dashboard": "Panel",
"uiArea_terminal": "Terminal",
"uiArea_fileManager": "Menedżer plików",
"uiArea_docker": "Doker",
"uiArea_hostMetrics": "Metryki hosta",
"uiArea_hostEditor": "Redaktor gospodarza",
"uiArea_homepage": "Strona główna",
"sectionAppearance": "Wygląd",
"sectionSecurity": "Bezpieczeństwo",
"sectionApiKeys": "Klucze API",
"sectionData": "Dane",
"sectionC2sTunnels": "Tunele C2S",
"usernameLabel": "Nazwa użytkownika",
"roleLabel": "Rola",
"roleAdministrator": "Administrator",
"authMethodLabel": "Metoda uwierzytelniania",
"authMethodLocal": "Lokalny",
"twoFaLabel": "2FA",
"twoFaOn": "NA",
"twoFaOff": "Wyłączony",
"versionLabel": "Wersja",
"betaProgramTitle": "Program beta",
"betaProgramDescription": "Wypróbuj nadchodzące funkcje już teraz dzięki cotygodniowemu tagowi :beta Docker. Wersja niestabilna, nie do użytku produkcyjnego.",
"betaProgramFeedback": "Znalazłeś błąd? Zgłoś go tutaj.",
"betaProgramLearnMore": "Dowiedz się więcej",
"cliTitle": "Interfejs wiersza poleceń Termix",
"cliDescription": "Otwieraj terminale, uruchamiaj polecenia i przenoś pliki z poziomu własnej powłoki.",
"cliLearnMore": "Dowiedz się więcej",
"deleteAccount": "Usuń konto",
"deleteAccountDescription": "Trwale usuń swoje konto",
"changeServerDescription": "Przełącz się na inny serwer zaplecza Termix",
"deleteButton": "Usuwać",
"deleteAccountPermanent": "Ta czynność jest trwała i nie można jej cofnąć.",
"deleteAccountWarning": "Wszystkie sesje, hosty, dane uwierzytelniające i ustawienia zostaną trwale usunięte.",
"confirmPasswordDeletePlaceholder": "Wprowadź hasło, aby potwierdzić",
"languageLabel": "Język",
"themeLabel": "Temat",
"fontSizeLabel": "Rozmiar czcionki",
"accentColorLabel": "Kolor akcentowy",
"settingsTerminal": "Terminal",
"commandAutocomplete": "Automatyczne uzupełnianie poleceń",
"commandAutocompleteDesc": "Pokaż autouzupełnianie podczas pisania, jeśli naciśniesz klawisz Tab",
"localEcho": "Lokalne echo",
"localEchoDesc": "Zmniejsz odczuwalne opóźnienie wprowadzania danych, korzystając z bezpiecznego lokalnego przewidywania naciśnięć klawiszy",
"keyboardShortcuts": "Skróty klawiaturowe",
"keyboardShortcutsDescription": "Dostosuj skróty poleceń i kopiowania w terminalu",
"manageShortcuts": "Zarządzać",
"terminalLinkBehavior": "Kliknij łącze terminala",
"terminalLinkBehaviorDesc": "Domyślne zachowanie po kliknięciu linków w terminalu",
"historyTracking": "Śledzenie historii",
"historyTrackingDesc": "Śledź polecenia terminala",
"commandPalette": "Paleta poleceń",
"commandPaletteDesc": "Włącz skrót klawiaturowy",
"reopenTabsOnLogin": "Ponowne otwieranie kart podczas logowania",
"reopenTabsOnLoginDesc": "Przywracaj otwarte karty po zalogowaniu się lub odświeżeniu strony, nawet z innego urządzenia",
"confirmTabClose": "Potwierdź zakładkę Zamknij",
"confirmTabCloseDesc": "Zapytaj przed zamknięciem kart terminala",
"settingsAppRail": "App Rail",
"sidebarSettingsMoved": "Ustawienia wyświetlania paska bocznego hosta zostały przeniesione do panelu Dostosuj pasek boczny, otwieranego z paska narzędzi Hosty.",
"showHostTags": "Pokaż tagi hosta",
"showHostTagsDesc": "Wyświetlaj tagi na liście hostów",
"hostTrayOnClick": "Kliknij, aby rozwinąć działania hosta",
"hostTrayOnClickDesc": "Zawsze pokazuj przyciski połączeń; kliknij, aby rozwinąć opcje zarządzania, zamiast najeżdżać kursorem",
"compactHostView": "Kompaktowy widok hosta",
"compactHostViewDesc": "Zwiń każdego hosta do pojedynczego wiersza zawierającego tylko jego nazwę i adres",
"statusColors": "Kolory prawdziwego statusu",
"statusColorsDesc": "Do oznaczania statusu online/offline używaj koloru zielonego/czerwonego zamiast koloru akcentującego",
"pinAppRail": "Aplikacja Pin Rail",
"pinAppRailDesc": "Utrzymuj zawsze rozwinięty lewy pasek boczny aplikacji zamiast rozwijać go po najechaniu kursorem",
"openFullscreenSettings": "Otwórz ustawienia w trybie pełnoekranowym",
"exitFullscreenSettings": "Wyjdź z ustawień pełnoekranowych",
"expandAppRailOnHover": "Rozwiń App Rail po najechaniu kursorem",
"expandAppRailOnHoverDesc": "Zezwól na rozszerzanie się lewego paska bocznego aplikacji, gdy najedziesz na niego kursorem",
"settingsNavigation": "Nawigacja",
"navigationTabsDesc": "Wybierz, które karty będą wyświetlane w pasku aplikacji",
"foldersCollapsed": "Foldery zwinięte",
"foldersCollapsedDesc": "Domyślnie zwiń foldery",
"confirmExecution": "Potwierdź wykonanie",
"confirmExecutionDesc": "Potwierdź przed uruchomieniem fragmentów kodu",
"settingsUpdates": "Aktualizacje",
"disableUpdateChecks": "Wyłącz sprawdzanie aktualizacji",
"disableUpdateChecksDesc": "Przestań sprawdzać aktualizacje",
"totpAuthenticator": "Autoryzator TOTP",
"totpEnabled": "Włączono uwierzytelnianie dwuskładnikowe",
"totpDisabled": "Dodaj dodatkowe zabezpieczenia logowania",
"disable": "Wyłączyć",
"enable": "Włączać",
"setupTotp": "Konfiguracja TOTP",
"qrCode": "Kod QR",
"totpInstructions": "Zeskanuj kod QR lub wprowadź kod w aplikacji uwierzytelniającej, a następnie wprowadź 6-cyfrowy kod",
"totpCodePlaceholder": "000000",
"verify": "Zweryfikować",
"changePassword": "Zmień hasło",
"currentPasswordLabel": "Aktualne hasło",
"currentPasswordPlaceholder": "Aktualne hasło",
"newPasswordLabel": "Nowe hasło",
"newPasswordPlaceholder": "Nowe hasło",
"confirmPasswordLabel": "Potwierdź nowe hasło",
"confirmPasswordPlaceholder": "Potwierdź nowe hasło",
"updatePassword": "Aktualizuj hasło",
"createApiKeyTitle": "Utwórz klucz API",
"createApiKeyDescription": "Wygeneruj nowy klucz API dla dostępu programowego.",
"apiKeyNameLabel": "Nazwa",
"apiKeyNamePlaceholder": "np. rurociąg CI",
"expiryDateLabel": "Data ważności",
"optional": "fakultatywny",
"cancel": "Anulować",
"createKey": "Utwórz klucz",
"apiKeyCreatedWarning": "Klucz został utworzony - skopiuj go teraz, nie będzie już widoczny.",
"copyApiKey": "Kopiuj klucz API",
"copiedToClipboard": "Skopiowano do schowka",
"apiKeyCount": "klawisze {{count}}",
"newKey": "Nowy klucz",
"noApiKeys": "Kluczy API jeszcze nie ma.",
"apiKeyActive": "Aktywny",
"apiKeyUsageHint": "Dołącz swój klucz do",
"apiKeyUsageHintHeader": "chodnikowiec.",
"apiKeyPermissionsHint": "Klucze dziedziczą uprawnienia użytkownika, który je stworzył.",
"exportData": "Eksportuj moje dane",
"exportDataDesc": "Pobierz kopię zapasową hostów, danych uwierzytelniających i ustawień, aby przenieść ją na inne urządzenie",
"export": "Eksport",
"exporting": "Eksportowanie...",
"importData": "Importuj moje dane",
"importDataDesc": "Przywróć hosty, poświadczenia i ustawienia z pliku kopii zapasowej .sqlite",
"importDataSelected": "Wybrano: {{name}}",
"selectFile": "Wybierz plik",
"changeFile": "Zmiana",
"import": "Import",
"importing": "Importowanie...",
"exportSuccess": "Dane zostały pomyślnie wyeksportowane",
"exportFailed": "Eksport danych nie powiódł się",
"importSelectFile": "Proszę najpierw wybrać plik",
"importCompleted": "Import zakończony: zaimportowano {{total}} elementów, pominięto {{skipped}}",
"importFailed": "Nieudany import: {{error}}",
"roleUser": "Użytkownik",
"authMethodDual": "Podwójna autoryzacja",
"authMethodOidc": "OIDC",
"totpSetupFailed": "Nie udało się uruchomić konfiguracji TOTP",
"totpEnter6Digits": "Wprowadź 6-cyfrowy kod",
"totpEnabledSuccess": "Włączono uwierzytelnianie dwuskładnikowe",
"totpInvalidCode": "Nieprawidłowy kod, spróbuj ponownie",
"totpDisableInputRequired": "Wprowadź swój kod TOTP lub hasło",
"totpDisabledSuccess": "Uwierzytelnianie dwuskładnikowe wyłączone",
"totpDisableFailed": "Nie udało się wyłączyć uwierzytelniania dwuskładnikowego",
"totpDisableTitle": "Wyłącz 2FA",
"totpDisablePlaceholder": "Wprowadź kod TOTP lub hasło",
"totpDisableConfirm": "Wyłącz 2FA",
"totpContinueVerify": "Kontynuuj weryfikację",
"totpVerifyTitle": "Kod weryfikacyjny",
"totpBackupTitle": "Kody zapasowe",
"totpDownloadBackup": "Pobierz kody zapasowe",
"passkeys": "Klucze dostępu",
"passkeysDesc": "Użyj danych uwierzytelniających WebAuthn/FIDO2, aby zalogować się bez hasła",
"passkeyName": "Nazwa klucza dostępu",
"passkeyUvPreferred": "Preferowany",
"passkeyUvRequired": "Wymagany",
"passkeyUvDiscouraged": "Zniechęcony",
"addPasskey": "Dodaj klucz dostępu",
"noPasskeys": "Nie zarejestrowano żadnych kluczy dostępu.",
"passkeyAdded": "Dodano klucz dostępu",
"passkeyAddFailed": "Nie udało się dodać klucza dostępu",
"passkeyDeleted": "Klucz dostępu usunięty",
"passkeyDeleteFailed": "Nie udało się usunąć klucza dostępu",
"done": "Zrobione",
"secretCopied": "Tajemnica skopiowana do schowka",
"apiKeyNameRequired": "Nazwa klucza jest wymagana",
"apiKeyCreated": "Utworzono klucz API „{{name}}”",
"apiKeyCreateFailed": "Nie udało się utworzyć klucza API",
"apiKeyUser": "Użytkownik",
"apiKeyExpires": "Wygasa",
"apiKeyRevoked": "Klucz API „{{name}}” został odwołany",
"apiKeyRevokeFailed": "Nie udało się odwołać klucza API",
"passwordFieldsRequired": "Wymagane jest podanie aktualnego i nowego hasła",
"passwordMismatch": "Hasła nie pasują",
"passwordTooShort": "Hasło musi mieć co najmniej 6 znaków",
"passwordUpdated": "Hasło zostało pomyślnie zaktualizowane",
"passwordUpdateFailed": "Nie udało się zaktualizować hasła",
"deletePasswordRequired": "Aby usunąć konto, wymagane jest hasło",
"deleteFailed": "Nie udało się usunąć konta",
"deleting": "Usuwanie...",
"colorPickerTooltip": "Otwórz selektor kolorów",
"themeSystem": "System",
"themeLight": "Światło",
"themeDark": "Ciemny",
"themeDracula": "Drakula",
"themeCatppuccin": "Catppuccin",
"themeNord": "Północ",
"themeSolarized": "Solaryzowany",
"themeTokyoNight": "Noc Tokio",
"themeOneDark": "Jeden Ciemny",
"themeGruvbox": "Gruvbox"
}
}
},
"terminalToolbar": {
"title": "Pasek narzędzi terminala",
"showActions": "Pokaż pasek narzędzi",
"hideToolbar": "Ukryj pasek narzędzi",
"showToolbar": "Rozwiń pasek narzędzi",
"moveToolbar": "Przenieś pasek narzędzi",
"moveToolbarHint": "Przeciągnij, aby zmienić położenie paska narzędzi",
"layout": "Tryb wyświetlania paska narzędzi",
"layoutIcon": "Tylko ikona",
"layoutLabeled": "Ikony i etykiety",
"layoutExpanded": "Rozszerzone o metryki",
"image": "Akcje obrazowe (tylko obrazy)",
"upload": "Prześlij obraz",
"paste": "Wklej obraz",
"detachTmux": "Odłącz tmux",
"detachTmuxDescription": "Odłącz sesję tmux",
"imageActionFailed": "Akcja obrazu nie powiodła się",
"retry": "Spróbować ponownie",
"dismissError": "Odrzuć błąd obrazu",
"cpu": "Procesor",
"memory": "Pamięć",
"disk": "Dysk",
"statsUnavailable": "Statystyki na żywo niedostępne",
"tmuxDetach": "Odłącz sesję tmux",
"uploadImage": "Prześlij obraz do hosta",
"uploadingImage": "Przesyłanie...",
"pasteImage": "Wklej obraz ze schowka (tylko obrazy)",
"openFiles": "Otwórz pliki",
"openDocker": "Otwórz Dockera",
"openTunnel": "Otwarty tunel",
"openHostMetrics": "Otwarte metryki hosta",
"openProxmoxStats": "Otwórz statystyki Proxmox",
"openTmuxMonitor": "Otwórz monitor Tmux"
},
"tmuxMonitor": {
"title": "Monitor Tmux",
"failedToLoadHosts": "Nie udało się załadować hostów",
"failedToLoad": "Nie udało się załadować sesji tmux",
"tmuxUnavailable": "tmux nie jest zainstalowany na tym hoście",
"noSessions": "Brak sesji tmux na tym hoście",
"noHostSelected": "Nie wybrano hosta",
"attached": "Przyłączony",
"detached": "Wolnostojący",
"attach": "Przytwierdzać",
"editTags": "Edytuj tagi",
"tagsHint": "Tagi rozdzielone przecinkami (np. YOLO, laboratorium, szkolenie)",
"tagsSaved": "Tagi zapisane",
"tagsSaveFailed": "Nie udało się zapisać tagów",
"searchPlaceholder": "Przeszukaj wyniki pomiędzy sesjami...",
"searchResults": "{{count}} pasuje",
"searchFailed": "Wyszukiwanie nie powiodło się",
"selectPaneHint": "Wybierz panel, aby wyświetlić podgląd jego wyników",
"closePreview": "Zamknij podgląd",
"newSession": "Nowa sesja",
"newSessionHint": "Nazwa sesji (litery, cyfry, _ @ % + = -)",
"newSessionPlaceholder": "moja-sesja",
"create": "Tworzyć",
"sessionCreated": "Utworzono sesję „{{name}}”",
"sessionCreateFailed": "Nie udało się utworzyć sesji",
"splitRight": "Rozdziel w prawo",
"splitDown": "Rozdziel się",
"splitFailed": "Nie udało się podzielić panelu",
"newWindow": "Nowe okno",
"windowCreateFailed": "Nie udało się utworzyć okna",
"attachSessionTooltip": "Dołącz do {{session}}",
"refresh": "Odświeżać",
"refreshFailed": "Nie udało się odświeżyć sesji",
"collapseAll": "Zwiń wszystko",
"expandAll": "Rozwiń wszystko",
"moreActions": "Więcej akcji",
"sessionStats": "Statystyki sesji",
"renameSessionTitle": "Zmień nazwę sesji „{{name}}”",
"rename": "Przemianować",
"sessionRenamed": "Zmieniono nazwę sesji na „{{name}}”",
"sessionRenameFailed": "Nie udało się zmienić nazwy sesji",
"editTagsTitle": "Edytuj tagi dla „{{name}}”",
"killPane": "Panel zabijania",
"resizeTree": "Przeciągnij, aby zmienić rozmiar — kliknij dwukrotnie, aby zresetować",
"reattach": "Ponowne dołączenie (naprawia zniekształcony widok)",
"killWindow": "Zamknij okno",
"killWindowTitle": "Zamknąć okno {{index}} z \"{{session}}\"?",
"killWindowBody": "Wszystkie panele i procesy w tym oknie zostaną zamknięte. Zamknięcie ostatniego okna kończy sesję.",
"windowKillFailed": "Nie udało się zamknąć okna",
"statusActivity": "Działalność",
"statusWindows": "Okna",
"statusPanes": "szyby",
"statusTags": "Tagi",
"killPaneTitle": "Zamknij panel {{id}}?",
"killPaneBody": "Proces uruchomiony w tym panelu zostanie zakończony. Zamknięcie ostatniego panelu spowoduje zamknięcie jego okna.",
"paneKillFailed": "Nie udało się zabić panelu",
"killSessionTitle": "Zakończyć sesję \"{{name}}\"?",
"killSessionBody": "Wszystkie okna i uruchomione procesy w tej sesji zostaną zamknięte. Tej operacji nie można cofnąć.",
"kill": "Zabić",
"sessionKilled": "Sesja „{{name}}” została zakończona",
"sessionKillFailed": "Nie udało się zabić sesji",
"hostUnreachable": "Nie udało się połączyć z hostem. Sprawdź, czy jest on online i osiągalny.",
"noServer": "Na tym hoście nie działa żaden serwer tmux.",
"searchTruncated": "Wyniki częściowe — wyszukiwanie obejmuje ostatnie {{lines}} wierszy każdego panelu i maksymalnie {{panes}} paneli.",
"closeSearchResults": "Zamknij wyniki wyszukiwania",
"retry": "Spróbować ponownie",
"noHosts": "Brak dostępnych hostów SSH",
"noHostsHint": "Włącz opcję Monitor Tmux na hoście SSH (Menedżer hostów → karta Terminal), aby monitorować jego sesje Tmux.",
"tmuxInstallHint": "Zainstaluj go na hoście za pomocą:",
"attachTooltip": "Otwórz terminal do {{host}}",
"attachTooltipPane": "Otwórz terminal do {{host}} — sesja tmux {{session}}",
"timeJustNow": "właśnie",
"timeMinutes": "{{count}}m temu",
"timeHours": "{{count}}godz. temu",
"timeDays": "{{count}}dni temu"
},
"mobileKeyboard": {
"shift": "Zmiana",
"ctrl": "klawisz kontrolny",
"esc": "Esc",
"tab": "Patka",
"backTab": "⇥",
"arrowUp": "Strzałka w górę",
"arrowDown": "Strzałka w dół",
"arrowLeft": "Strzałka w lewo",
"arrowRight": "Strzałka w prawo",
"home": "Dom",
"end": "Koniec",
"pageUp": "PgUp",
"pageDown": "PgDn",
"delete": "Del",
"paste": "Pasta",
"editQuickKeys": "Edytuj szybkie klawisze",
"quickKeysTitle": "Szybkie klawisze",
"quickKeysDesc": "Kliknij ×, aby usunąć. Obsługuje maksymalnie 8 znaków.",
"quickKeyPlaceholder": "np. sudo ",
"addQuickKey": "Dodać",
"removeQuickKey": "Usunąć",
"resetDefaults": "Przywróć ustawienia domyślne",
"done": "Zrobione"
},
"serial": {
"title": "Seryjny",
"portLabel": "Port",
"portPlaceholder": "/dev/ttyUSB0 lub COM3",
"baudRateLabel": "Szybkość transmisji",
"dataBitsLabel": "Dane",
"stopBitsLabel": "Zatrzymywać się",
"parityLabel": "Parytet",
"parityNone": "Nic",
"parityEven": "Nawet",
"parityOdd": "Dziwne",
"connect": "Połącz się z szeregiem",
"disconnect": "Odłączyć",
"refreshPorts": "Odśwież porty",
"connected": "Połączono z {{path}} z szybkością {{baud}} bodów",
"disconnected": "Port szeregowy odłączony",
"connectionError": "Nie udało się otworzyć portu szeregowego",
"wsError": "Błąd WebSocket",
"errorNoServerUrl": "Brak skonfigurowanego adresu URL serwera",
"notSupportedTitle": "Numer seryjny nie jest obsługiwany",
"notSupported": "Połączenia szeregowe wymagają przeglądarki obsługującej Web Serial API (Chrome, Edge lub Firefox 151+) lub aplikacji komputerowej Termix.",
"hideHint": "Możesz ukryć kartę Serial w obszarze Profil użytkownika > Wygląd > Pasek boczny > Nawigacja.",
"browserPickerHint": "Kliknij Połącz, a w przeglądarce otworzy się narzędzie wyboru portu, umożliwiające wybranie urządzenia."
},
"metricsHistory": {
"title": "Historia metryk",
"historySuffix": "Historia",
"cpuMemoryDisk": "Procesor / Pamięć / Dysk",
"network": "Sieć",
"download": "RX",
"upload": "Teksas",
"noData": "Brak dostępnych danych historycznych dla tego przedziału czasu.",
"custom": "Zwyczaj",
"to": "Do",
"apply": "Stosować",
"viewHistory": "Wyświetl historię"
},
"alerts": {
"tabFirings": "Alerty",
"tabRules": "Zasady",
"tabChannels": "Kanały",
"noFirings": "Brak niepotwierdzonych alertów",
"noRules": "Nie skonfigurowano żadnych reguł alertów",
"noChannels": "Brak skonfigurowanych kanałów powiadomień",
"rulesDesc": "Reguły alertów wyzwalają powiadomienia",
"channelsDesc": "Gdzie wysyłane są powiadomienia o alertach",
"acknowledge": "Uznawać",
"ackAll": "Potwierdź wszystko",
"allAcknowledged": "Wszystkie alerty potwierdzone",
"ackFailed": "Nie udało się potwierdzić alertu",
"ackAllFailed": "Nie udało się potwierdzić wszystkich alertów",
"showAcknowledged": "Pokaż wszystko",
"hideAcknowledged": "Ukryj potwierdzone",
"addChannel": "Dodaj kanał",
"editChannel": "Edytuj kanał",
"channelName": "Nazwa",
"channelType": "Typ",
"channelNameRequired": "Imię jest wymagane",
"webhookUrl": "Adres URL",
"webhookUrlRequired": "Adres URL webhooka jest wymagany",
"webhookDesc": "Wysyłaj dane JSON na ten adres URL po każdym uruchomieniu alertu",
"ntfyServer": "Adres URL serwera",
"ntfyTopic": "Temat",
"ntfyTopicRequired": "Temat jest wymagany",
"ntfyToken": "Token dostępu (opcjonalnie)",
"channelSaveFailed": "Nie udało się zapisać kanału",
"test": "Test",
"testSent": "Wysłano powiadomienie testowe",
"testFailed": "Powiadomienie testowe nie powiodło się",
"testFailedWithReason": "Powiadomienie testowe nie powiodło się: {{reason}}",
"addRule": "Dodaj regułę alertu",
"editRule": "Edytuj regułę alertu",
"ruleName": "Nazwa reguły",
"ruleNameRequired": "Imię jest wymagane",
"triggerType": "Spust",
"thresholdValue": "Próg (%)",
"durationSeconds": "Czas trwania (sekundy, 0 = natychmiastowe uruchomienie)",
"cooldownMinutes": "Czas odnowienia (minuty)",
"channels": "Kanały powiadomień",
"noChannelsHint": "Najpierw dodaj kanały na karcie Kanały",
"ruleSaveFailed": "Nie udało się zapisać reguły"
},
"ai": {
"title": "Asystent",
"send": "Wysłać",
"stop": "Zatrzymywać się",
"save": "Ratować",
"cancel": "Anulować",
"running": "działanie",
"approve": "Zatwierdzić",
"reject": "Odrzucić",
"inputPlaceholder": "Zapytaj o swoje serwery lub opisz proponowaną zmianę",
"selectProvider": "Wybierz dostawcę",
"providerSettings": "Ustawienia dostawcy",
"addProvider": "Dodaj dostawcę",
"removeProvider": "Usuń dostawcę",
"providerType": "Dostawca",
"providerLabel": "Nazwa",
"providerLabelPlaceholder": "Na przykład: Lokalny Ollama",
"baseUrl": "Adres serwera",
"apiKey": "Klucz API",
"defaultModel": "Model domyślny",
"defaultModelPlaceholder": "Na przykład: llama3.1 lub claude-opus-5",
"labelRequired": "Podaj nazwę tego dostawcy",
"providerSaveFailed": "Nie udało się zapisać dostawcy",
"providerDeleteFailed": "Nie można usunąć dostawcy",
"privateEndpointHint": "Adresy w Twojej sieci prywatnej wymagają uprzedniej zgody administratora na dostęp do hosta.",
"providerOllama": "Ollama",
"providerAnthropic": "Antropiczny",
"providerOpenai": "OpenAI",
"providerGemini": "Google Gemini",
"providerOpenaiCompatible": "Kompatybilny z OpenAI",
"toolArguments": "Wejście",
"toolResult": "Wynik",
"statusApplied": "Stosowany",
"statusRejected": "Odrzucony",
"proposalApplied": "Zmiana zastosowana",
"proposalApplyFailed": "Nie można zastosować zmiany",
"proposalRejectFailed": "Nie można odrzucić zmiany",
"enableTitle": "Włącz asystenta AI",
"enableDescription": "Pozwól asystentowi przeczytać konfigurację i zaproponować zmiany, które będziesz musiał zatwierdzić.",
"readOnlyCommands": "Zezwalaj na polecenia diagnostyczne tylko do odczytu",
"readOnlyCommandsDescription": "Asystent może uruchomić krótką listę bezpiecznych poleceń, takich jak df i uptime, bez konieczności każdorazowego proszenia o nie. Wszelkie zmiany na serwerze są zawsze proponowane jako pierwsze.",
"modelDetectFailed": "Nie udało się skontaktować z dostawcą, więc jest to lista ogólna. Możesz wpisać dowolną nazwę modelu.",
"modelCustom": "Wprowadź nazwę modelu",
"modelRefresh": "Odśwież listę",
"modelPlaceholder": "Wybierz lub wpisz model",
"attachHint": "Wpisz @, aby odwołać się do hosta, fragmentu kodu lub automatyzacji. Zostaną zaproponowane zmiany do zatwierdzenia.",
"runCommandTitle": "Uruchom polecenie"
},
"macros": {
"title": "Makra",
"description": "Uruchom zapisaną serię poleceń w terminalu i zareaguj na to, co odeśle serwer.",
"target": "Cel",
"noTerminal": "Brak otwartego terminala",
"empty": "Brak makr",
"emptyHint": "Utwórz makro, aby zautomatyzować przepływ operacji terminalowych, takich jak logowanie, ponowne uruchamianie usługi lub odpowiadanie na monity.",
"create": "Nowe makro",
"back": "Powrót do makr",
"name": "Nazwa",
"namePlaceholder": "Uruchom ponownie serwer WWW",
"nameRequired": "Przed zapisaniem nadaj makrze nazwę",
"descriptionLabel": "Opis",
"descriptionPlaceholder": "Co robi ta makroinstrukcja (opcjonalnie)",
"unsaved": "Niezapisane zmiany",
"save": "Ratować",
"saved": "Makro zapisane",
"saveFailed": "Nie udało się zapisać makra",
"delete": "Usuwać",
"deleteTitle": "Usunąć to makro?",
"deleteBody": "„{{name}}” zostanie trwale usunięty. Nie można tego cofnąć.",
"deleted": "Makro usunięte",
"cancel": "Anulować",
"run": "Uruchomić",
"stop": "Zatrzymywać się",
"running": "Działanie...",
"completed": "Makro zakończone",
"failed": "Makro nie powiodło się",
"loadFailed": "Nie można załadować makr",
"needTerminal": "Najpierw otwórz i podłącz terminal",
"noSteps": "To makro nie ma jeszcze żadnych kroków. Dodaj jeden poniżej.",
"addStep": "Dodaj krok",
"stepNumber": "Krok {{number}}",
"removeStep": "Usuń krok",
"confirmRunTitle": "Uruchomić to makro?",
"confirmRunBody": "„{{name}}” wyśle polecenia do {{host}}.",
"confirmRunAction": "Uruchom makro",
"stepTypes": {
"send": {
"label": "Wyślij polecenie",
"help": "Wpisuje tekst do terminala, tak samo jakbyś go wpisywał."
},
"wait": {
"label": "Poczekaj na wynik",
"help": "Zatrzymuje się do momentu, aż serwer wydrukuje podany przez Ciebie tekst, np. monit o podanie hasła."
},
"delay": {
"label": "Pauza",
"help": "Czeka przez ustalony czas przed kolejnym krokiem."
},
"if": {
"label": "Jeśli dane wyjściowe zawierają",
"help": "Sprawdza wszystkie dane wydrukowane dotychczas przez serwer, a następnie uruchamia jedną z dwóch gałęzi."
},
"repeat": {
"label": "Powtarzać",
"help": "Uruchamia kroki wewnątrz niego ustaloną liczbę razy."
}
},
"send": {
"text": "Polecenie lub tekst",
"textPlaceholder": "systemctl restart nginx",
"pressEnter": "Naciśnij Enter po wysłaniu",
"pressEnterHelp": "Wyłącz tę opcję, aby wpisać tekst bez przesyłania go."
},
"wait": {
"pattern": "Poczekaj, aż wynik będzie zawierał",
"patternPlaceholder": "hasło:",
"timeout": "Poddaj się po",
"onTimeout": "Jeśli nigdy się nie pojawi",
"stop": "Zatrzymaj makro",
"continue": "Kontynuuj mimo wszystko"
},
"delay": {
"duration": "Czekać na"
},
"ifStep": {
"pattern": "Jeśli dane wyjściowe zawierają",
"patternPlaceholder": "Aktywny: aktywny (działający)",
"then": "Następnie zrób to",
"else": "W przeciwnym razie zrób to",
"emptyBranch": "Brak kroków"
},
"repeat": {
"count": "Liczba razy",
"times": "czasy"
},
"match": {
"useRegex": "Dopasuj do wyrażenia regularnego",
"useRegexHelp": "Pomiń tę opcję, aby tekst był dokładnie taki, jaki jest napisany.",
"invalidRegex": "Nie jest to prawidłowe wyrażenie regularne, zostanie dopasowane jako zwykły tekst"
},
"seconds": "towary drugiej jakości",
"secondsShort": "{{count}}s"
}
}