feat: type the plugin host record, move plugin strings out of core and add lint checks

This commit is contained in:
LukeGus committed 2026-09-29 13:08:39 -05:00
1 parent bba06f7ff6
commit b8bbcd2196
626 files changed
+23884 -4590

No files matched your search

+2 -11
View File
@@ -721,9 +721,6 @@ app.post("/database/export", authenticateJWT, async (req, res) => {
key_password TEXT,
key_type TEXT,
sudo_password TEXT,
autostart_password TEXT,
autostart_key TEXT,
autostart_key_password TEXT,
credential_id INTEGER,
override_credential_username INTEGER,
jump_hosts TEXT,
@@ -817,8 +814,8 @@ app.post("/database/export", authenticateJWT, async (req, res) => {
const sshHosts =
await createCurrentHostRepository().listDecryptedByUserId(userId);
const insertHost = exportDb.prepare(`
INSERT INTO ssh_data (id, user_id, connection_type, name, ip, port, username, folder, tags, pin, auth_type, force_keyboard_interactive, password, key, key_password, key_type, sudo_password, autostart_password, autostart_key, autostart_key_password, credential_id, override_credential_username, jump_hosts, status_check_enabled, status_check_interval, terminal_config, ssh_options, quick_actions, notes, use_socks5, socks5_host, socks5_port, socks5_username, socks5_password, socks5_proxy_chain, port_knock_sequence, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
INSERT INTO ssh_data (id, user_id, connection_type, name, ip, port, username, folder, tags, pin, auth_type, force_keyboard_interactive, password, key, key_password, key_type, sudo_password, credential_id, override_credential_username, jump_hosts, status_check_enabled, status_check_interval, terminal_config, ssh_options, quick_actions, notes, use_socks5, socks5_host, socks5_port, socks5_username, socks5_password, socks5_proxy_chain, port_knock_sequence, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
`);
for (const decrypted of sshHosts) {
@@ -840,9 +837,6 @@ app.post("/database/export", authenticateJWT, async (req, res) => {
decrypted.keyPassword || null,
decrypted.keyType || null,
decrypted.sudoPassword || null,
decrypted.autostartPassword || null,
decrypted.autostartKey || null,
decrypted.autostartKeyPassword || null,
decrypted.credentialId || null,
decrypted.overrideCredentialUsername ? 1 : 0,
decrypted.jumpHosts || null,
@@ -1177,9 +1171,6 @@ app.post(
keyPassword: host.key_password,
keyType: host.key_type,
sudoPassword: host.sudo_password,
autostartPassword: host.autostart_password,
autostartKey: host.autostart_key,
autostartKeyPassword: host.autostart_key_password,
credentialId: host.credential_id || null,
overrideCredentialUsername: Boolean(
host.override_credential_username,
-9
View File
@@ -304,9 +304,6 @@ async function initializeCompleteDatabase(): Promise<void> {
key TEXT,
key_password TEXT,
key_type TEXT,
autostart_password TEXT,
autostart_key TEXT,
autostart_key_password TEXT,
force_keyboard_interactive TEXT,
status_check_enabled INTEGER NOT NULL DEFAULT 1,
status_check_interval INTEGER,
@@ -910,9 +907,6 @@ const migrateSchema = () => {
"TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP",
);
addColumnIfNotExists("ssh_data", "force_keyboard_interactive", "TEXT");
addColumnIfNotExists("ssh_data", "autostart_password", "TEXT");
addColumnIfNotExists("ssh_data", "autostart_key", "TEXT");
addColumnIfNotExists("ssh_data", "autostart_key_password", "TEXT");
addColumnIfNotExists(
"ssh_data",
"credential_id",
@@ -924,9 +918,6 @@ const migrateSchema = () => {
"INTEGER",
);
addColumnIfNotExists("ssh_data", "autostart_password", "TEXT");
addColumnIfNotExists("ssh_data", "autostart_key", "TEXT");
addColumnIfNotExists("ssh_data", "autostart_key_password", "TEXT");
addColumnIfNotExists(
"ssh_data",
"status_check_enabled",
-4
View File
@@ -189,10 +189,6 @@ export const hosts = mysqlTable(
keyType: text("key_type"),
sudoPassword: text("sudo_password"),
autostartPassword: text("autostart_password"),
autostartKey: text("autostart_key"),
autostartKeyPassword: text("autostart_key_password"),
credentialId: int("credential_id").references(() => sshCredentials.id, { onDelete: "set null" }),
overrideCredentialUsername: boolean("override_credential_username"),
jumpHosts: text("jump_hosts"),
-4
View File
@@ -189,10 +189,6 @@ export const hosts = pgTable(
keyType: text("key_type"),
sudoPassword: text("sudo_password"),
autostartPassword: text("autostart_password"),
autostartKey: text("autostart_key"),
autostartKeyPassword: text("autostart_key_password"),
credentialId: integer("credential_id").references(() => sshCredentials.id, { onDelete: "set null" }),
overrideCredentialUsername: boolean("override_credential_username"),
jumpHosts: text("jump_hosts"),
-4
View File
@@ -179,10 +179,6 @@ export const hosts = sqliteTable(
keyType: text("key_type"),
sudoPassword: text("sudo_password"),
autostartPassword: text("autostart_password"),
autostartKey: text("autostart_key", { length: 8192 }),
autostartKeyPassword: text("autostart_key_password"),
credentialId: integer("credential_id").references(() => sshCredentials.id, { onDelete: "set null" }),
overrideCredentialUsername: integer("override_credential_username", {
mode: "boolean",
@@ -253,12 +253,9 @@ export function normalizeImportedHost(
const SENSITIVE_FIELDS = [
"key",
"keyPassword",
"autostartKey",
"autostartKeyPassword",
"password",
"sudoPassword",
"socks5Password",
"autostartPassword",
];
export function stripSensitiveFields(
@@ -15,9 +15,14 @@ import { createCurrentPluginSettingsRepository } from "../repositories/factory.j
import type { PluginSettingsRecord } from "../repositories/plugin-settings-repository.js";
import {
declaredFields,
findField,
resolveFieldValue,
setSetting,
} from "../../plugins/settings.js";
import {
coerceSettingValue,
validateSettingValue,
} from "@termix/plugin-sdk/settings";
import { getPluginRuntime } from "../../plugins/index.js";
import { consume } from "../../plugins/registry.js";
import { sshLogger } from "../../utils/logger.js";
@@ -262,6 +267,49 @@ export async function writeHostPluginSettings(
}
}
/**
* Checks the host settings a ctx.hosts write carries, keyed by plugin id,
* before anything is written. A key the plugin does not declare, or a value
* its field refuses, is an error. A plugin that is not running has nowhere to
* keep them, so its entry is skipped and named in `skipped`.
*/
export function checkHostPluginSettingsInput(
input: Record<string, Record<string, unknown>>,
): {
writes: Array<{ manifest: PluginManifest; values: Record<string, unknown> }>;
skipped: string[];
errors: string[];
} {
const running = new Map(hostSettingsPlugins().map((m) => [m.id, m]));
const writes: Array<{
manifest: PluginManifest;
values: Record<string, unknown>;
}> = [];
const skipped: string[] = [];
const errors: string[] = [];
for (const [pluginId, values] of Object.entries(input)) {
const manifest = running.get(pluginId);
if (!manifest) {
skipped.push(pluginId);
continue;
}
for (const [key, value] of Object.entries(values)) {
const field = findField(manifest, "host", key);
if (!field) {
errors.push(`${pluginId}.${key} is not a host setting it declares`);
continue;
}
const error = validateSettingValue(
field,
coerceSettingValue(field, value),
);
if (error) errors.push(`${pluginId}.${key}: ${error}`);
}
writes.push({ manifest, values });
}
return { writes, skipped, errors };
}
/**
* A plugin's own validator for the fields it accepts inline on a bulk host
* import row (host-bulk-routes.ts's Termix-JSON import path). Registered
-3
View File
@@ -96,9 +96,6 @@ export async function resolveHostById(
if (!ownerEquivalent) {
// Owner-only operational secrets are never shared.
host.sudoPassword = null;
host.autostartPassword = null;
host.autostartKey = null;
host.autostartKeyPassword = null;
}
// Parse JSON fields
+238 -42
View File
@@ -19,13 +19,18 @@ import type {
PluginShareTarget,
PluginShareableUser,
PluginShareableRole,
PluginHostJumpHost,
} from "@termix/plugin-sdk/backend";
import { PLUGIN_HOST_INPUT_KEYS } from "@termix/plugin-sdk/backend";
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
import { assertCapability, capabilityRefused } from "./permissions.js";
import { hostSessionStatus } from "../hosts/host-session-status.js";
import { getActor } from "./actor.js";
import { hostStatusService } from "../hosts/status/host-status-service.js";
import { parseSshOptions } from "../hosts/ssh-options.js";
import { hostTerminalExport } from "../database/routes/host-normalizers.js";
import type { DisposableBag } from "./disposables.js";
import { pluginLogger } from "../utils/logger.js";
type AuditFn = (
action: string,
@@ -76,9 +81,6 @@ export const HOST_SECRET_FIELDS = [
"passphrase",
"sudoPassword",
"socks5Password",
"autostartPassword",
"autostartKey",
"autostartKeyPassword",
"vaultToken",
] as const;
@@ -106,30 +108,184 @@ export function redactHostSecrets<T extends Record<string, unknown>>(
return copy as T;
}
/** Columns that say who a host belongs to. ctx.hosts.update never moves them. */
const PROTECTED_HOST_FIELDS = new Set(["id", "userId", "syncId"]);
function asNumber(value: unknown): number | null {
if (value === null || value === undefined || value === "") return null;
const parsed = Number(value);
return Number.isFinite(parsed) ? parsed : null;
}
function toRecord(host: Record<string, unknown>): PluginHostRecord {
return redactHostSecrets({
id: host.id as number,
userId: host.userId as string,
function asFlag(value: unknown, fallback: boolean): boolean {
if (value === null || value === undefined) return fallback;
return value === true || value === 1 || value === "1" || value === "true";
}
function parseJumpHosts(value: unknown): PluginHostJumpHost[] {
let list = value;
if (typeof list === "string") {
try {
list = JSON.parse(list);
} catch {
return [];
}
}
if (!Array.isArray(list)) return [];
return list
.map((entry) => asNumber((entry as { hostId?: unknown })?.hostId))
.filter((hostId): hostId is number => hostId !== null)
.map((hostId) => ({ hostId }));
}
/**
* A decrypted ssh_data row as PluginHostRecord. Built field by field: a
* column reaches plugins only once the SDK types it, and no secret column is
* ever copied.
*/
export function toRecord(
host: Record<string, unknown>,
pluginSettings: Record<string, unknown>,
): PluginHostRecord {
const id = Number(host.id);
const origin = host.connectionOrigin;
return {
id,
userId: String(host.userId),
syncId: (host.syncId as string | null) ?? null,
name: (host.name as string | null) ?? null,
ip: host.ip as string,
port: host.port as number,
username: host.username as string,
authType: host.authType as string,
credentialId: (host.credentialId as number | null) ?? null,
overrideCredentialUsername:
(host.overrideCredentialUsername as boolean | null) ?? null,
connectionType: (host.connectionType as string | null) ?? null,
ip: String(host.ip ?? ""),
port: asNumber(host.port) ?? 22,
username: String(host.username ?? ""),
authType: String(host.authType ?? ""),
credentialId: asNumber(host.credentialId),
overrideCredentialUsername: asFlag(host.overrideCredentialUsername, false),
connectionType: (host.connectionType as string | null) || "ssh",
tags: (host.tags as string | null) ?? null,
folder: (host.folder as string | null) ?? null,
jumpHosts: host.jumpHosts,
enableSsh: (host.enableSsh as boolean | null) ?? null,
parentHostId: asNumber(host.parentHostId),
pin: asFlag(host.pin, false),
notes: (host.notes as string | null) ?? null,
jumpHosts: parseJumpHosts(host.jumpHosts),
enableSsh: asFlag(host.enableSsh, true),
sshPort: asNumber(host.sshPort),
statusCheckEnabled: asFlag(host.statusCheckEnabled, true),
statusCheckInterval: asNumber(host.statusCheckInterval),
connectionOrigin: origin === "local" || origin === "remote" ? origin : null,
sshOptions: hostTerminalExport(host).sshOptions,
pluginSettings,
status: Number.isInteger(id) ? hostStatusService.get(id) : null,
localOnly: asFlag(host.localOnly, false),
createdAt: (host.createdAt as string | null) ?? null,
updatedAt: (host.updatedAt as string | null) ?? null,
...host,
});
};
}
/** Thrown when a plugin's host write names a field the SDK does not take. */
export class PluginHostInputError extends Error {
constructor(message: string) {
super(message);
this.name = "PluginHostInputError";
}
}
const INPUT_KEYS = new Set<string>(PLUGIN_HOST_INPUT_KEYS);
// Stops compiling when PluginHostCreateInput gains a key the list misses.
const inputKeysComplete: [
Exclude<keyof PluginHostCreateInput, (typeof PLUGIN_HOST_INPUT_KEYS)[number]>,
] extends [never]
? true
: never = true;
void inputKeysComplete;
/**
* The ssh_data columns for a create or update, plus the host settings to
* write afterwards. Refuses any key PluginHostCreateInput does not list, so a
* field that moved into a plugin cannot be written into nothing.
*/
export function toHostWrite(input: PluginHostUpdateInput): {
row: Record<string, unknown>;
settings: Record<string, Record<string, unknown>>;
} {
const unknown = Object.keys(input ?? {}).filter(
(key) => !INPUT_KEYS.has(key),
);
if (unknown.length > 0) {
throw new PluginHostInputError(
`ctx.hosts does not take ${unknown.join(", ")}; host settings go in pluginSettings, keyed by the plugin that declares them`,
);
}
const row: Record<string, unknown> = {};
const set = (key: string, value: unknown) => {
if (value !== undefined) row[key] = value;
};
set("name", input.name);
set("ip", input.ip);
set("port", input.port);
set("username", input.username);
set("authType", input.authType);
set("credentialId", input.credentialId);
set("overrideCredentialUsername", input.overrideCredentialUsername);
set("connectionType", input.connectionType);
set(
"tags",
Array.isArray(input.tags)
? input.tags
.map((tag) => String(tag).trim())
.filter(Boolean)
.join(",")
: input.tags,
);
set("folder", input.folder);
set("pin", input.pin);
set("notes", input.notes);
set(
"jumpHosts",
input.jumpHosts === undefined
? undefined
: input.jumpHosts === null
? null
: JSON.stringify(parseJumpHosts(input.jumpHosts)),
);
set("enableSsh", input.enableSsh);
set("sshPort", input.sshPort);
set("statusCheckEnabled", input.statusCheckEnabled);
set("statusCheckInterval", input.statusCheckInterval);
set(
"forceKeyboardInteractive",
input.forceKeyboardInteractive === undefined
? undefined
: input.forceKeyboardInteractive
? "true"
: "false",
);
set(
"sshOptions",
input.sshOptions === undefined
? undefined
: input.sshOptions === null
? null
: JSON.stringify(parseSshOptions(input.sshOptions)),
);
const settings: Record<string, Record<string, unknown>> = {};
if (input.pluginSettings !== undefined && input.pluginSettings !== null) {
if (
typeof input.pluginSettings !== "object" ||
Array.isArray(input.pluginSettings)
) {
throw new PluginHostInputError(
"pluginSettings must map plugin ids to their host settings",
);
}
for (const [pluginId, values] of Object.entries(input.pluginSettings)) {
if (!values || typeof values !== "object" || Array.isArray(values)) {
throw new PluginHostInputError(
`pluginSettings.${pluginId} must be an object`,
);
}
settings[pluginId] = values;
}
}
return { row, settings };
}
function actingUser(): string {
@@ -170,6 +326,53 @@ export function createPluginHosts({ manifest, bag, audit }: Deps): PluginHosts {
return access.hasAccess;
};
// The calling plugin's own host settings, one query for the whole list.
const toRecords = async (
rows: Record<string, unknown>[],
): Promise<PluginHostRecord[]> => {
const { loadHostPluginSettings } =
await import("../database/routes/host-plugin-settings.js");
const settings = await loadHostPluginSettings(
rows.map((row) => Number(row.id)),
);
return rows.map((row) =>
toRecord(row, settings.get(Number(row.id))?.[pluginId] ?? {}),
);
};
const checkSettings = async (
settings: Record<string, Record<string, unknown>>,
) => {
if (Object.keys(settings).length === 0) return [];
const { checkHostPluginSettingsInput } =
await import("../database/routes/host-plugin-settings.js");
const { writes, skipped, errors } = checkHostPluginSettingsInput(settings);
if (errors.length > 0) throw new PluginHostInputError(errors.join("; "));
if (skipped.length > 0) {
pluginLogger.warn(
"Host settings for plugins that are not running were skipped",
{
operation: "plugin_hosts_write",
pluginId,
skipped,
},
);
}
return writes;
};
const writeSettings = async (
hostId: number,
writes: Awaited<ReturnType<typeof checkSettings>>,
) => {
if (writes.length === 0) return;
const { writeHostPluginSettings } =
await import("../database/routes/host-plugin-settings.js");
for (const { manifest: owner, values } of writes) {
await writeHostPluginSettings(owner, hostId, values);
}
};
return {
list: async () => {
await requireRead();
@@ -254,30 +457,27 @@ export function createPluginHosts({ manifest, bag, audit }: Deps): PluginHosts {
try {
await requireWrite();
} catch (error) {
await audit("hosts_create", host.name ?? host.ip, {
await audit("hosts_create", host?.name ?? host?.ip ?? "host", {
success: false,
errorMessage: error instanceof Error ? error.message : String(error),
});
throw error;
}
const userId = actingUser();
const { row, settings } = toHostWrite(host);
const writes = await checkSettings(settings);
const { createCurrentHostRepository } =
await import("../database/repositories/factory.js");
const created =
await createCurrentHostRepository().createEncryptedForUser(userId, {
...host,
...row,
userId,
});
// Fields another plugin owns (a remote desktop switch) go to that
// plugin's host settings, the same way a bulk import row's do.
const { applyPluginHostImportSettings } =
await import("../database/routes/host-plugin-settings.js");
await applyPluginHostImportSettings(
created.id,
host as Record<string, unknown>,
);
await writeSettings(created.id, writes);
await audit("hosts_create", `host ${created.id}`, { success: true });
return toRecord(created as unknown as Record<string, unknown>);
return (
await toRecords([created as unknown as Record<string, unknown>])
)[0];
},
update: async (
@@ -294,24 +494,22 @@ export function createPluginHosts({ manifest, bag, audit }: Deps): PluginHosts {
throw error;
}
const userId = actingUser();
const allowed = Object.fromEntries(
Object.entries(patch as Record<string, unknown>).filter(
([field]) => !PROTECTED_HOST_FIELDS.has(field),
),
) as PluginHostUpdateInput;
const { row, settings } = toHostWrite(patch);
const writes = await checkSettings(settings);
const { createCurrentHostRepository } =
await import("../database/repositories/factory.js");
const updated =
await createCurrentHostRepository().updateEncryptedForUser(
userId,
hostId,
allowed,
row,
);
if (updated) await writeSettings(hostId, writes);
await audit("hosts_update", `host ${hostId}`, {
success: updated !== null,
});
return updated
? toRecord(updated as unknown as Record<string, unknown>)
? (await toRecords([updated as unknown as Record<string, unknown>]))[0]
: null;
},
@@ -354,9 +552,7 @@ export function createPluginHosts({ manifest, bag, audit }: Deps): PluginHosts {
await audit("hosts_list_owned", `${rows.length} host(s)`, {
success: true,
});
return rows.map((row) =>
toRecord(row as unknown as Record<string, unknown>),
);
return toRecords(rows as unknown as Record<string, unknown>[]);
},
share: async (
@@ -78,6 +78,7 @@ const {
writeHostPluginSettings,
applyPluginHostImportSettings,
setHostPluginEnabled,
checkHostPluginSettingsInput,
} = await import("../../../database/routes/host-plugin-settings.js");
function manifest(id: string, host: unknown): PluginManifest {
@@ -453,3 +454,38 @@ describe("share levels, legacy fields and generic writes", () => {
expect(await setHostPluginEnabled("missing", [3], true)).toBe(false);
});
});
describe("checkHostPluginSettingsInput", () => {
it("passes declared keys through to the plugin that owns them", () => {
loaded.push({ id: "docker", manifest: DOCKER, state: "active" });
const result = checkHostPluginSettingsInput({
docker: { enableDocker: true, socketPath: "/run/docker.sock" },
});
expect(result.errors).toEqual([]);
expect(result.skipped).toEqual([]);
expect(result.writes).toEqual([
{
manifest: DOCKER,
values: { enableDocker: true, socketPath: "/run/docker.sock" },
},
]);
});
it("refuses a key the plugin does not declare and a value it rejects", () => {
loaded.push({ id: "docker", manifest: DOCKER, state: "active" });
const { errors } = checkHostPluginSettingsInput({
docker: { dockerConfig: {}, enableDocker: "sure" },
});
expect(errors).toHaveLength(2);
expect(errors[0]).toContain("docker.dockerConfig");
expect(errors[1]).toContain("docker.enableDocker");
});
it("skips a plugin that is not running", () => {
loaded.push({ id: "docker", manifest: DOCKER, state: "disabled" });
const result = checkHostPluginSettingsInput({
docker: { enableDocker: true },
});
expect(result).toEqual({ writes: [], skipped: ["docker"], errors: [] });
});
});
+7
View File
@@ -443,6 +443,13 @@ ALTER TABLE `host_protocol_auth` ADD CONSTRAINT `host_protocol_auth_credential_i
CREATE INDEX `idx_host_protocol_auth_user` ON `host_protocol_auth` (`user_id`);--> statement-breakpoint
CREATE INDEX `idx_host_protocol_auth_credential` ON `host_protocol_auth` (`credential_id`);
-- ==== core 0064_flippant_killer_shrike ====
-- ssh_data.autostart_password, autostart_key and autostart_key_password held
-- copies of a host's login for 2.8's autostart endpoint, which nothing has read
-- since. They leave the schema but stay in place, unused, until 3.0.0, so no
-- install loses what it stored.
SELECT 1;
-- ==== plugin workspaces 0001_adopt_user_workspaces.sql ====
-- workspaces 0001: adopt_user_workspaces
-- Generated by termix-plugin migrations. Review before committing.
@@ -462,6 +462,13 @@ CREATE UNIQUE INDEX "idx_host_protocol_auth_host_protocol" ON "host_protocol_aut
CREATE INDEX "idx_host_protocol_auth_user" ON "host_protocol_auth" USING btree ("user_id");--> statement-breakpoint
CREATE INDEX "idx_host_protocol_auth_credential" ON "host_protocol_auth" USING btree ("credential_id");
-- ==== core 0064_sticky_pestilence ====
-- ssh_data.autostart_password, autostart_key and autostart_key_password held
-- copies of a host's login for 2.8's autostart endpoint, which nothing has read
-- since. They leave the schema but stay in place, unused, until 3.0.0, so no
-- install loses what it stored.
SELECT 1;
-- ==== plugin workspaces 0001_adopt_user_workspaces.sql ====
-- workspaces 0001: adopt_user_workspaces
-- Generated by termix-plugin migrations. Review before committing.
@@ -112,9 +112,6 @@ function baseHost(overrides: Record<string, unknown> = {}) {
credentialId: null,
shareSshAuth: false,
sudoPassword: "owner-sudo",
autostartPassword: "auto-pass",
autostartKey: null,
autostartKeyPassword: null,
jumpHosts: null,
tunnelConnections: null,
terminalConfig: null,
@@ -519,7 +516,6 @@ describe("resolveHostById", () => {
expect(host.username).toBe("cred-user");
// Owner-only operational secrets are NOT stripped for the admin.
expect(host.sudoPassword).toBe("owner-sudo");
expect(host.autostartPassword).toBe("auto-pass");
});
it("audits every admin-bypass host resolution", async () => {
+114 -10
View File
@@ -140,11 +140,40 @@ vi.mock("../../hosts/status/host-status-service.js", () => ({
},
}));
vi.mock("../../database/routes/host-plugin-settings.js", () => ({
applyPluginHostImportSettings: async (
hostId: number,
row: Record<string, unknown>,
loadHostPluginSettings: async (hostIds: number[]) =>
new Map(
hostIds.map((id) => [
id,
{ fixture: { mine: `own-${id}` }, other: { theirs: true } },
]),
),
checkHostPluginSettingsInput: (
input: Record<string, Record<string, unknown>>,
) => {
h.importRows.push({ hostId, row });
const errors: string[] = [];
const writes: Array<{
manifest: { id: string };
values: Record<string, unknown>;
}> = [];
const skipped: string[] = [];
for (const [pluginId, values] of Object.entries(input)) {
if (pluginId === "off") {
skipped.push(pluginId);
continue;
}
for (const key of Object.keys(values)) {
if (key === "undeclared") errors.push(`${pluginId}.${key}`);
}
writes.push({ manifest: { id: pluginId }, values });
}
return { writes, skipped, errors };
},
writeHostPluginSettings: async (
manifest: { id: string },
hostId: number,
values: Record<string, unknown>,
) => {
h.importRows.push({ hostId, row: { [manifest.id]: values } });
},
}));
vi.mock("../../utils/shared-host-secrets-manager.js", () => ({
@@ -361,6 +390,7 @@ describe("ctx.hosts", () => {
it("creates a host once granted hosts:write", async () => {
h.granted = new Set(["hosts:write"]);
h.importRows = [];
const hosts = createPluginHosts({
manifest: manifest(["hosts:write"]),
audit: vi.fn(async () => {}),
@@ -371,19 +401,92 @@ describe("ctx.hosts", () => {
port: 22,
username: "root",
authType: "password",
enableRdp: true,
tags: ["a", "b"],
jumpHosts: [{ hostId: 3 }],
pluginSettings: { "remote-desktop": { enableRdp: true } },
});
expect(created).toMatchObject({
id: 99,
name: "pve-guest",
userId: "user-1",
tags: "a,b",
jumpHosts: [{ hostId: 3 }],
pluginSettings: { mine: "own-99" },
});
expect(h.created).toHaveLength(1);
// Another plugin's fields go through its import normalizer.
expect(h.importRows.at(-1)).toMatchObject({
hostId: 99,
row: { enableRdp: true },
expect(h.created[0]).toMatchObject({
tags: "a,b",
jumpHosts: '[{"hostId":3}]',
});
// Another plugin's settings go to that plugin, validated by core.
expect(h.importRows).toEqual([
{ hostId: 99, row: { "remote-desktop": { enableRdp: true } } },
]);
});
it("refuses a field the SDK does not take instead of dropping it", async () => {
h.granted = new Set(["hosts:write"]);
const hosts = createPluginHosts({
manifest: manifest(["hosts:write"]),
audit: vi.fn(async () => {}),
});
await expect(
hosts.create({
name: "n",
ip: "10.0.0.1",
port: 22,
username: "root",
authType: "password",
enableRdp: true,
} as never),
).rejects.toThrow(/enableRdp/);
await expect(
hosts.update(5, { userId: "someone-else" } as never),
).rejects.toThrow(/userId/);
await expect(
hosts.update(5, { pluginSettings: { docker: { undeclared: 1 } } }),
).rejects.toThrow(/undeclared/);
expect(h.created).toHaveLength(0);
expect(h.updates).toHaveLength(0);
});
it("builds the record field by field, with no secret and no other plugin's settings", async () => {
h.granted = new Set(["hosts:write"]);
h.ownedHosts = [
{
id: 4,
userId: "user-1",
name: "own",
ip: "10.0.0.4",
port: 22,
username: "root",
authType: "password",
password: "secret",
key: "PRIVATE",
autostartPassword: "x",
terminalConfig: '{"keepaliveInterval":5,"fontSize":14}',
enableDocker: true,
jumpHosts: "[]",
},
];
const hosts = createPluginHosts({
manifest: manifest(["hosts:write"]),
audit: vi.fn(async () => {}),
});
const [record] = await hosts.listOwned();
const loose = record as unknown as Record<string, unknown>;
for (const field of [
"password",
"key",
"autostartPassword",
"terminalConfig",
"enableDocker",
]) {
expect(loose).not.toHaveProperty(field);
}
expect(record.sshOptions).toEqual({ keepaliveInterval: 5 });
expect(record.pluginSettings).toEqual({ mine: "own-4" });
expect(record.status).toEqual({ status: "reachable", lastChecked: "t" });
expect(record.enableSsh).toBe(true);
});
it("updates a host once granted hosts:write", async () => {
@@ -398,6 +501,7 @@ describe("ctx.hosts", () => {
expect(h.updates).toEqual([
{ userId: "user-1", hostId: 5, patch: { name: "new" } },
]);
expect(updated?.pluginSettings).toEqual({ mine: "own-5" });
});
it("returns null updating a host that does not exist for this user", async () => {
@@ -31,9 +31,6 @@ function secretHost(id: number): Record<string, unknown> {
keyPassword: "s3cret-value",
sudoPassword: "s3cret-value",
socks5Password: "s3cret-value",
autostartPassword: "s3cret-value",
autostartKey: "s3cret-value",
autostartKeyPassword: "s3cret-value",
terminalConfig: { sudoPassword: "s3cret-value", fontSize: 14 },
socks5ProxyChain: [{ host: "p", password: "s3cret-value" }],
};
@@ -98,7 +95,7 @@ vi.mock("../../../database/repositories/factory.js", () => ({
}),
}));
vi.mock("../../../database/routes/host-plugin-settings.js", () => ({
applyPluginHostImportSettings: async () => {},
loadHostPluginSettings: async () => new Map(),
}));
vi.mock("../../../hosts/host-resolver.js", () => ({
resolveHostById: async (id: number) => secretHost(id),
@@ -36,9 +36,6 @@ describe("RawSqliteUserEncryptionMigrationStore", () => {
key: "k",
key_password: "kp",
key_type: "ed25519",
autostart_password: "ap",
autostart_key: "ak",
autostart_key_password: "akp",
sudo_password: "sp",
});
store.updateCredentialSensitiveFields(13, {
@@ -56,17 +53,7 @@ describe("RawSqliteUserEncryptionMigrationStore", () => {
expect(db.prepare).toHaveBeenCalledWith(
expect.stringContaining("UPDATE ssh_credentials"),
);
expect(run).toHaveBeenCalledWith(
"p",
"k",
"kp",
"ed25519",
"ap",
"ak",
"akp",
"sp",
12,
);
expect(run).toHaveBeenCalledWith("p", "k", "kp", "ed25519", "sp", 12);
expect(run).toHaveBeenCalledWith("p", "k", "kp", "priv", "pub", "rsa", 13);
});
-3
View File
@@ -21,9 +21,6 @@ class FieldCrypto {
"key",
"keyPassword",
"sudoPassword",
"autostartPassword",
"autostartKey",
"autostartKeyPassword",
"socks5Password",
]),
ssh_credentials: new Set([
@@ -7,9 +7,6 @@ export class LazyFieldEncryption {
private static readonly LEGACY_FIELD_NAME_MAP: Record<string, string> = {
key_password: "keyPassword",
sudo_password: "sudoPassword",
autostart_password: "autostartPassword",
autostart_key: "autostartKey",
autostart_key_password: "autostartKeyPassword",
socks5_password: "socks5Password",
private_key: "privateKey",
public_key: "publicKey",
@@ -21,9 +18,6 @@ export class LazyFieldEncryption {
keyPassword: "key_password",
sudoPassword: "sudo_password",
autostartPassword: "autostart_password",
autostartKey: "autostart_key",
autostartKeyPassword: "autostart_key_password",
socks5Password: "socks5_password",
privateKey: "private_key",
publicKey: "public_key",
@@ -98,9 +92,6 @@ export class LazyFieldEncryption {
"key",
"keyPassword",
"sudoPassword",
"autostartPassword",
"autostartKey",
"autostartKeyPassword",
"socks5Password",
"privateKey",
"publicKey",
@@ -249,9 +240,6 @@ export class LazyFieldEncryption {
privateKey: "private_key",
publicKey: "public_key",
sudoPassword: "sudo_password",
autostartPassword: "autostart_password",
autostartKey: "autostart_key",
autostartKeyPassword: "autostart_key_password",
socks5Password: "socks5_password",
clientSecret: "client_secret",
oidcIdentifier: "oidc_identifier",
@@ -264,9 +252,6 @@ export class LazyFieldEncryption {
"key",
"keyPassword",
"sudoPassword",
"autostartPassword",
"autostartKey",
"autostartKeyPassword",
"socks5Password",
],
ssh_credentials: [
-3
View File
@@ -51,9 +51,6 @@ const SENSITIVE_FIELDS = [
"secret",
"clientSecret",
"keyPassword",
"autostartPassword",
"autostartKey",
"autostartKeyPassword",
"credentialId",
"authToken",
"jwt",
@@ -55,7 +55,7 @@ export class RawSqliteUserEncryptionMigrationStore implements UserEncryptionMigr
.prepare(
`
UPDATE ssh_data
SET password = ?, key = ?, key_password = ?, key_type = ?, autostart_password = ?, autostart_key = ?, autostart_key_password = ?, sudo_password = ?, updated_at = CURRENT_TIMESTAMP
SET password = ?, key = ?, key_password = ?, key_type = ?, sudo_password = ?, updated_at = CURRENT_TIMESTAMP
WHERE id = ?
`,
)
@@ -64,9 +64,6 @@ export class RawSqliteUserEncryptionMigrationStore implements UserEncryptionMigr
record.key || null,
record.key_password || null,
record.key_type || null,
record.autostart_password || null,
record.autostart_key || null,
record.autostart_key_password || null,
record.sudo_password || null,
recordId,
);
-4
View File
@@ -96,10 +96,6 @@ export type Host = {
sudoPassword?: string;
forceKeyboardInteractive?: boolean;
autostartPassword?: string;
autostartKey?: string;
autostartKeyPassword?: string;
credentialId?: number;
overrideCredentialUsername?: boolean;
userId?: string;
+2 -115
View File
@@ -207,10 +207,6 @@
"appearanceIntro": "Pick a theme, an accent color and your language. All three can be changed later in Settings.",
"featuresTitle": "What else Termix does",
"featuresIntro": "Every server you save can be opened in more than a terminal. Here is what is waiting behind the icons on the left.",
"feature_files": "File manager",
"feature_files_desc": "Browse, upload, download and edit files over SFTP without leaving the app.",
"feature_tunnels": "Tunnels",
"feature_tunnels_desc": "Forward ports through a server to reach services that are not exposed.",
"featuresRailHint": "Do not need one of these? Hide any icon from the sidebar in Settings, under Navigation.",
"workflowTitle": "Move around faster",
"workflowIntro": "A few habits that save the most time once you have a couple of servers.",
@@ -335,7 +331,6 @@
"passwordSaved": "Password saved, type to change",
"key": "Key",
"credential": "Credential",
"none": "None",
"sshPrivateKey": "SSH Private Key",
"keyType": "Key Type",
"uploadFile": "Upload File",
@@ -473,14 +468,9 @@
"keepaliveIntervalLabel": "Keepalive Interval (seconds)",
"maxKeepaliveMisses": "Max Keepalive Misses",
"sameHost": "This host (direct tunnel)",
"bindHost": "Bind Host",
"proxmoxLastSyncStatus": {
"success": "Success"
},
"proxmoxGuestsSelected_one": "{{count}} guest — {{selected}} selected",
"proxmoxGuestsSelected_other": "{{count}} guests — {{selected}} selected",
"proxmoxImportButton_one": "Import {{count}} host",
"proxmoxImportButton_other": "Import {{count}} hosts",
"proxmoxResultSkippedNoIp": "{{count}} skipped (no IP found)",
"proxmoxStatsUrlCopied": "Proxmox Stats URL copied to clipboard",
"statusChecksLabel": "Status Checks",
@@ -738,13 +728,11 @@
"updatedCount": "Updated {{count}} hosts",
"friendlyNameLabel": "Friendly Name",
"descriptionLabel": "Description",
"loadingHost": "Loading host...",
"loadingHosts": "Loading hosts...",
"loadingCredentials": "Loading credentials...",
"noHostsYet": "No hosts yet",
"noHostsYetHint": "Add a server to open terminals, browse files and see metrics.",
"noHostsMatchSearch": "No hosts match your search",
"hostNotFound": "Host not found",
"searchHosts": "Search hosts...",
"sortHosts": "Sort Hosts",
"sortDefault": "Default Order",
@@ -767,7 +755,6 @@
"filterAuthKey": "SSH Key",
"filterAuthCredential": "Credential",
"filterAuthNone": "None",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Step CA",
"filterProtocolGroup": "Protocol",
"filterProtocolSsh": "SSH",
@@ -886,7 +873,6 @@
"copyViewUrlAction": "Copy {{name}} link",
"filterAuthAgent": "SSH Agent",
"filterAuthVault": "Vault",
"filterAuthTailscale": "Tailscale",
"authTypeNeedsPlugin": "This host uses {{type}}, which needs {{plugin}}. It is turned off on this server.",
"authTypeUnknown": "This host uses {{type}}, which is not available on this server.",
"authFieldsAfterSave": "Save the host first, then fill in these fields.",
@@ -1010,13 +996,7 @@
"connect": "Connect to Host",
"clear": "Clear",
"paste": "Paste",
"connected": "Connected",
"clipboardWriteFailed": "Failed to copy to clipboard. Make sure the page is served over HTTPS or localhost.",
"clipboardReadFailed": "Failed to read from clipboard. Make sure clipboard permissions are granted.",
"tmuxDetach": "Detach from tmux session",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Running {{command}} - {{host}}",
"totpRequired": "Two-Factor Authentication Required",
"totpCodeLabel": "Verification Code",
"totpVerify": "Verify",
@@ -1040,109 +1020,20 @@
"connectionLogCopyFailed": "Failed to copy logs to clipboard"
},
"transfer": {
"copyToHost": "Copy to host…",
"moveToHost": "Move to host…",
"copyItemsToHost": "Copy {{count}} items to host…",
"moveItemsToHost": "Move {{count}} items to host…",
"noHostsConnected": "No other file-manager hosts available.",
"noHostsConnectedHint": "Add another SSH host with File Manager enabled in Host Manager.",
"selectDestinationHost": "Select destination host",
"destinationPath": "Destination path",
"recentDestinations": "Recent destinations",
"collapseRecentDestinations": "Collapse recent destinations",
"expandRecentDestinations": "Expand recent destinations",
"browseFolders": "Browse destination folders",
"browseDestination": "Browse or enter path",
"confirmCopy": "Copy",
"confirmMove": "Move",
"transferring": "Transferring…",
"progressVerifying": "Verifying file integrity…",
"progressBenchmarking": "Selecting the fastest transfer route…",
"compressing": "Compressing…",
"extracting": "Extracting…",
"transferringItems": "Transferring {{current}} of {{total}} items…",
"transferSuccess": "Transfer complete",
"transferError": "Transfer failed",
"transferPartial": "Transfer completed with {{count}} errors",
"transferPartialHint": "Could not transfer: {{paths}}",
"itemsSummary": "{{count}} items",
"destMustBeDirectory": "Destination must be a directory for multi-item transfers",
"selectThisFolder": "Select this folder",
"browsePathWillBeCreated": "This folder does not exist yet. It will be created when the transfer starts.",
"browsePathError": "Could not open this path on the destination host.",
"goUp": "Go up",
"copyFolderToHost": "Copy folder to host…",
"moveFolderToHost": "Move folder to host…",
"hostReady": "Ready",
"hostConnecting": "Connecting…",
"hostDisconnected": "Not connected",
"hostAuthRequired": "Authentication required — open File Manager on this host first",
"hostConnectionFailed": "Connection failed",
"metricsTitle": "Transfer timings",
"metricsPrepare": "Prepare destination: {{duration}}",
"metricsCompress": "Compress on source: {{duration}}",
"metricsHopSourceRead": "Source → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → dest (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → dest (local): {{throughput}}",
"metricsTransfer": "End-to-end: {{throughput}} ({{duration}})",
"metricsExtract": "Extract on destination: {{duration}}",
"metricsVerify": "SHA-256 verified: {{duration}}",
"metricsRouteBenchmark": "Route probe — direct: {{direct}}, relay: {{relay}}",
"metricsSourceDelete": "Remove from source: {{duration}}",
"metricsTotal": "Total: {{duration}}",
"progressCompressing": "Compressing on source host…",
"progressExtracting": "Extracting on destination…",
"progressTransferring": "Transferring data…",
"progressReconnecting": "Reconnecting…",
"parallelSegmentsLabel": "Parallel transfer lanes",
"parallelSegmentsOption": "{{count}} lanes",
"parallelSegmentsHint": "Large files are split into 256 MB chunks. Multiple lanes use separate connections (like starting several transfers) for higher total throughput.",
"progressTotalSpeed": "{{speed}} total ({{lanes}} lanes)",
"progressTransferringItems": "Transferring files ({{current}} of {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} files",
"sourceNotDeletedPartial": "Source files kept (partial transfer)",
"jumpHostLimitation": "Both hosts must be reachable from the Termix server. Direct host-to-host routing is not supported.",
"cancel": "Cancel",
"methodLabel": "Transfer method",
"methodAuto": "Auto",
"methodTar": "Tar archive",
"methodItemSftp": "Per-file SFTP",
"methodAutoHint": "Picks tar or per-file SFTP based on file count, size, and compressibility. Single files always use streaming SFTP.",
"methodTarHint": "Compress on source, transfer one archive, extract on destination. Requires tar on both Unix hosts.",
"methodItemSftpHint": "Transfer each file individually over SFTP. Works on all hosts including Windows.",
"methodPreviewLoading": "Calculating transfer method…",
"methodPreviewError": "Could not preview transfer method. The server will still pick a method when you start.",
"methodPreviewWillUseTar": "Will use: Tar archive",
"methodPreviewWillUseItemSftp": "Will use: Per-file SFTP",
"methodPreviewScanSummary": "{{fileCount}} files, {{totalSize}} total (scanned on source host).",
"methodItemSftpLimitation": "Each file uses the same SFTP stream as a single-file copy, one after another. Progress is combined across all files, so the bar moves slowly during large files.",
"methodReason": {
"user_item_sftp": "You chose per-file SFTP.",
"user_tar": "You chose tar archive.",
"tar_unavailable": "Tar is not available on one or both hosts — per-file SFTP will be used instead.",
"windows_host": "A Windows host is involved — tar is not used.",
"auto_multi_large": "Auto: multiple files including a large file ({{largestSize}}) with compressible data — tar bundles into one transfer.",
"auto_single_large_in_archive": "Auto: one large file ({{largestSize}}) in this set — per-file SFTP.",
"auto_many_incompressible": "Auto: mostly incompressible data — per-file SFTP.",
"auto_many_files": "Auto: many files ({{fileCount}}) — tar reduces per-file overhead.",
"auto_default": "Auto: per-file SFTP for this set."
},
"progressCancel": "Cancel",
"progressCancelling": "Cancelling…",
"progressStalled": "Stalled",
"resumedHint": "Reconnected to an active transfer started in another window.",
"transferCancelled": "Transfer cancelled",
"transferCancelledCopyHint": "Partial files may remain on the destination.",
"transferCancelledMoveHint": "Partial files may remain on the destination. Source files were not removed.",
"cleanupDestFiles": "Clean up destination",
"cleanupDestFilesSuccess": "Removed partial files from the destination",
"cleanupDestFilesPartial": "Some partial files could not be removed",
"cleanupDestFilesNothing": "Nothing to clean up on the destination",
"cleanupDestFilesError": "Cleanup failed",
"retryTransfer": "Retry",
"retryTransferError": "Retry failed",
"transferFailedRetryHint": "Partial data was kept on the destination. Retry will resume when the connection is back."
"sourceNotDeletedPartial": "Source files kept (partial transfer)"
},
"tunnels": {
"connect": "Connect",
@@ -1152,8 +1043,6 @@
"endpointSshConfig": "Endpoint SSH Configuration",
"clientTunnel": "Client Tunnel",
"addClientTunnel": "Add Client Tunnel",
"start": "Start",
"stop": "Stop",
"typeServerLocalDesc": "Current host to endpoint.",
"typeServerRemoteDesc": "Endpoint back to current host.",
"typeClientLocalDesc": "Local computer to endpoint.",
@@ -1268,8 +1157,7 @@
"resetCodeRateLimitedWithTime": "Rate limited: Too many verification attempts. Please wait {{time}} seconds before trying again.",
"authTokenSaveFailed": "Failed to save authentication token",
"authTokenMissing": "The server did not return a new authentication token. Please sign in again.",
"failedToLoadServer": "Failed to load server",
"remoteServerRequired": "Remote server required. Connect a remote server in Settings to use this connection type."
"failedToLoadServer": "Failed to load server"
},
"messages": {
"registrationDisabled": "New account registration is currently disabled by an admin. Please log in or contact an administrator.",
@@ -1714,7 +1602,6 @@
"protocolLabel": "Protocol",
"domainLabel": "Domain",
"domainPlaceholder": "optional",
"connectToTerminal": "Connect to Terminal",
"connectToAction": "Connect to {{name}}",
"sshProtocol": "SSH",
"noTarget": "Nothing installed can connect to this host type"
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Kies 'n tema, 'n aksentkleur en jou taal. Al drie kan later in Instellings verander word.",
"featuresTitle": "Wat doen Termix nog?",
"featuresIntro": "Elke bediener wat jy stoor, kan in meer as 'n terminaal oopgemaak word. Hier is wat agter die ikone aan die linkerkant wag.",
"feature_files": "Lêerbestuurder",
"feature_files_desc": "Blaai, laai op, laai af en wysig lêers via SFTP sonder om die toepassing te verlaat.",
"feature_tunnels": "Tonnels",
"feature_tunnels_desc": "Stuur poorte deur 'n bediener aan om dienste te bereik wat nie blootgestel is nie.",
"feature_snippets": "Brokkies",
"feature_snippets_desc": "Stoor opdragte wat jy gereeld uitvoer en stuur dit met een klik na 'n terminaal.",
"featuresRailHint": "Het jy nie een van hierdie nodig nie? Versteek enige ikoon in die sybalk in Instellings, onder Navigasie.",
@@ -449,7 +445,6 @@
"passwordSaved": "Wagwoord gestoor, tik om te verander",
"key": "Sleutel",
"credential": "Geloofsbrief",
"none": "Geen",
"sshPrivateKey": "SSH Privaat Sleutel",
"keyType": "Sleuteltipe",
"uploadFile": "Laai lêer op",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Lewendige interval (sekondes)",
"maxKeepaliveMisses": "Max Keepalive mis",
"sameHost": "Hierdie gasheer (direkte tonnel)",
"bindHost": "Bind gasheer",
"connectionToolbar": "Verbindingsnutsbalk",
"showConnectionToolbar": "Wys verbindingsbalk",
"showConnectionToolbarDesc": "Wys die nutsbalk in hierdie gasheer se SSH-, RDP-, VNC- en Telnet-sessies. Jy kan dit ook tydelik van die nutsbalk self versteek.",
"proxmoxLastSyncStatus": {
"success": "Sukses"
},
"proxmoxGuestsSelected_one": "{{count}} gas — {{selected}} gekies",
"proxmoxGuestsSelected_other": "{{count}} gaste — {{selected}} gekies",
"proxmoxImportButton_one": "Voer {{count}} gasheer in",
"proxmoxImportButton_other": "Voer {{count}} gashere in",
"proxmoxResultSkippedNoIp": "{{count}} oorgeslaan (geen IP gevind nie)",
"proxmoxStatsUrlCopied": "Proxmox Statistiek URL na knipbord gekopieer",
"copyProxmoxStatsUrlAction": "Kopieer Proxmox Statistiek URL",
@@ -896,13 +886,11 @@
"updatedCount": "Opgedateerde {{count}} gashere",
"friendlyNameLabel": "Vriendelike Naam",
"descriptionLabel": "Beskrywing",
"loadingHost": "Laai gasheer...",
"loadingHosts": "Laai gashere...",
"loadingCredentials": "Laai aanmeldbewyse...",
"noHostsYet": "Geen gashere nog nie",
"noHostsYetHint": "Voeg 'n bediener by om terminale oop te maak, lêers te blaai en statistieke te sien.",
"noHostsMatchSearch": "Geen gashere stem ooreen met jou soektog nie",
"hostNotFound": "Gasheer nie gevind nie",
"searchHosts": "Soek gashere...",
"sortHosts": "Sorteer gashere",
"sortDefault": "Standaardbestelling",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-sleutel",
"filterAuthCredential": "Geloofsbrief",
"filterAuthNone": "Geen",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Stap CA",
"filterProtocolGroup": "Protokol",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Koppel aan gasheer",
"clear": "Duidelik",
"paste": "Plak",
"connected": "Verbonde",
"clipboardWriteFailed": "Kon nie na knipbord kopieer nie. Maak seker dat die bladsy oor HTTPS of localhost bedien word.",
"clipboardReadFailed": "Kon nie vanaf knipbord lees nie. Maak seker dat knipbordtoestemmings toegestaan is.",
"tmuxDetach": "Ontkoppel van tmux-sessie",
"terminalTitle": "Terminaal - {{host}}",
"terminalWithPath": "Terminaal - {{host}}:{{path}}",
"runTitle": "Hardloop {{command}} - {{host}}",
"totpRequired": "Tweefaktor-verifikasie vereis",
"totpCodeLabel": "Verifikasiekode",
"totpVerify": "Verifieer",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Kopieer na gasheer…",
"moveToHost": "Skuif na gasheer…",
"copyItemsToHost": "Kopieer {{count}} items om… aan te bied",
"moveItemsToHost": "Skuif {{count}} items om… te huisves",
"noHostsConnected": "Geen ander lêerbestuurder-gashere beskikbaar nie.",
"noHostsConnectedHint": "Voeg nog 'n SSH-gasheer by met Lêerbestuurder geaktiveer in Gasheerbestuurder.",
"selectDestinationHost": "Kies bestemmingsgasheer",
"destinationPath": "Bestemmingspad",
"recentDestinations": "Onlangse bestemmings",
"collapseRecentDestinations": "Vou onlangse bestemmings in",
"expandRecentDestinations": "Vou onlangse bestemmings uit",
"browseFolders": "Blaai deur bestemmingsmappe",
"browseDestination": "Blaai of voer pad in",
"confirmCopy": "Kopieer",
"confirmMove": "Beweeg",
"transferring": "Oordra…",
"progressVerifying": "Verifieer lêerintegriteit…",
"progressBenchmarking": "Die vinnigste oordragroete kies…",
"compressing": "Kompressering…",
"extracting": "Onttrek…",
"transferringItems": "Oordrag van {{current}} van {{total}} items…",
"transferSuccess": "Oordrag voltooi",
"transferError": "Oordrag het misluk",
"transferPartial": "Oordrag voltooi met {{count}} foute",
"transferPartialHint": "Kon nie oordra nie: {{paths}}",
"itemsSummary": "{{count}} items",
"destMustBeDirectory": "Bestemming moet 'n gids wees vir oordragte van verskeie items",
"selectThisFolder": "Kies hierdie vouer",
"browsePathWillBeCreated": "Hierdie vouer bestaan nog nie. Dit sal geskep word wanneer die oordrag begin.",
"browsePathError": "Kon nie hierdie pad op die bestemmingsgasheer oopmaak nie.",
"goUp": "Gaan op",
"copyFolderToHost": "Kopieer lêergids na gasheer…",
"moveFolderToHost": "Skuif vouer na gasheer…",
"hostReady": "Gereed",
"hostConnecting": "Verbind…",
"hostDisconnected": "Nie gekoppel nie",
"hostAuthRequired": "Verifikasie vereis — maak eers Lêerbestuurder op hierdie gasheer oop",
"hostConnectionFailed": "Verbinding het misluk",
"metricsTitle": "Oordragtye",
"metricsPrepare": "Berei bestemming voor: {{duration}}",
"metricsCompress": "Kompresseer op bron: {{duration}}",
"metricsHopSourceRead": "Bron → bediener: {{throughput}}",
"metricsHopDestSftpWrite": "Bediener → bestemming (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Bediener → bestemming (plaaslik): {{throughput}}",
"metricsTransfer": "Van begin tot einde: {{throughput}} ({{duration}})",
"metricsExtract": "Uittreksel op bestemming: {{duration}}",
"metricsVerify": "SHA-256 geverifieer: {{duration}}",
"metricsRouteBenchmark": "Roete-sonde — direk: {{direct}}, aflos: {{relay}}",
"metricsSourceDelete": "Verwyder van bron: {{duration}}",
"metricsTotal": "Totaal: {{duration}}",
"progressCompressing": "Kompressering op brongasheer…",
"progressExtracting": "Onttrek op bestemming…",
"progressTransferring": "Oordrag van data…",
"progressReconnecting": "Herverbind…",
"parallelSegmentsLabel": "Parallelle oordragbane",
"parallelSegmentsOption": "{{count}} bane",
"parallelSegmentsHint": "Groot lêers word in 256 MB-stukke verdeel. Verskeie bane gebruik afsonderlike verbindings (soos om verskeie oordragte te begin) vir hoër totale deurset.",
"progressTotalSpeed": "{{speed}} totaal ({{lanes}} bane)",
"progressTransferringItems": "Oordrag van lêers ({{current}} van {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} lêers",
"sourceNotDeletedPartial": "Bronlêers gehou (gedeeltelike oordrag)",
"jumpHostLimitation": "Beide gashere moet vanaf die Termix-bediener bereikbaar wees. Direkte gasheer-tot-gasheer-roetering word nie ondersteun nie.",
"cancel": "Kanselleer",
"methodLabel": "Oordragmetode",
"methodAuto": "Outomaties",
"methodTar": "Teer-argief",
"methodItemSftp": "SFTP per lêer",
"methodAutoHint": "Kies tar- of per-lêer SFTP gebaseer op lêertelling, grootte en saampersbaarheid. Enkele lêers gebruik altyd stroom-SFTP.",
"methodTarHint": "Komprimeer op bron, dra een argief oor, onttrek op bestemming. Vereis tar op beide Unix-gashere.",
"methodItemSftpHint": "Dra elke lêer individueel oor SFTP. Werk op alle gashere, insluitend Windows.",
"methodPreviewLoading": "Berekening van oordragmetode…",
"methodPreviewError": "Kon nie oordragmetode voorskou nie. Die bediener sal steeds 'n metode kies wanneer jy begin.",
"methodPreviewWillUseTar": "Sal gebruik: Tar-argief",
"methodPreviewWillUseItemSftp": "Sal gebruik: SFTP per lêer",
"methodPreviewScanSummary": "{{fileCount}} lêers, {{totalSize}} totaal (geskandeer op brongasheer).",
"methodItemSftpLimitation": "Elke lêer gebruik dieselfde SFTP-stroom as 'n enkellêerkopie, een na die ander. Vordering word oor alle lêers gekombineer, so die balk beweeg stadig tydens groot lêers.",
"methodReason": {
"user_item_sftp": "Jy het SFTP per lêer gekies.",
"user_tar": "Jy het teer-argief gekies.",
"tar_unavailable": "Teer is nie beskikbaar op een of albei gashere nie — SFTP per lêer sal eerder gebruik word.",
"windows_host": "'n Windows-gasheer is betrokke — teer word nie gebruik nie.",
"auto_multi_large": "Outomaties: veelvuldige lêers, insluitend 'n groot lêer ({{largestSize}}) met saampersbare data — teer bundels in een oordrag.",
"auto_single_large_in_archive": "Outomaties: een groot lêer ({{largestSize}}) in hierdie stel — SFTP per lêer.",
"auto_many_incompressible": "Outomaties: meestal onsaampersbare data — SFTP per lêer.",
"auto_many_files": "Outomaties: baie lêers ({{fileCount}}) — teer verminder oorhoofse koste per lêer.",
"auto_default": "Outomaties: SFTP per lêer vir hierdie stel."
},
"progressCancel": "Kanselleer",
"progressCancelling": "Kanselleer…",
"progressStalled": "Vasgevang",
"resumedHint": "Herverbind met 'n aktiewe oordrag wat in 'n ander venster begin is.",
"transferCancelled": "Oordrag gekanselleer",
"transferCancelledCopyHint": "Gedeeltelike lêers mag dalk op die bestemming bly.",
"transferCancelledMoveHint": "Gedeeltelike lêers mag dalk op die bestemming bly. Bronlêers is nie verwyder nie.",
"cleanupDestFiles": "Maak bestemming skoon",
"cleanupDestFilesSuccess": "Gedeeltelike lêers van die bestemming verwyder",
"cleanupDestFilesPartial": "Sommige gedeeltelike lêers kon nie verwyder word nie",
"cleanupDestFilesNothing": "Niks om op die bestemming op te ruim nie",
"cleanupDestFilesError": "Opruiming het misluk",
"retryTransfer": "Probeer weer",
"retryTransferError": "Herprobeer het misluk",
"transferFailedRetryHint": "Gedeeltelike data is op die bestemming gehou. Herprobeer sal hervat word wanneer die verbinding terug is."
"sourceNotDeletedPartial": "Bronlêers gehou (gedeeltelike oordrag)"
},
"tunnels": {
"connect": "Verbind",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Kliënttonnel",
"addClientTunnel": "Voeg kliënttonnel by",
"active": "Aktief",
"start": "Begin",
"stop": "Stop",
"typeServerLocalDesc": "Huidige gasheer na eindpunt.",
"typeServerRemoteDesc": "Eindpunt terug na huidige gasheer.",
"typeClientLocalDesc": "Plaaslike rekenaar na eindpunt.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Tempo beperk: Te veel verifikasiepogings. Wag asseblief {{time}} sekondes voordat u weer probeer.",
"authTokenSaveFailed": "Kon nie verifikasietoken stoor nie",
"authTokenMissing": "Die bediener het nie 'n nuwe verifikasietoken teruggegee nie. Meld asseblief weer aan.",
"failedToLoadServer": "Kon nie bediener laai nie",
"remoteServerRequired": "Afstandbediener word benodig. Koppel 'n afstandbediener in Instellings om hierdie verbindingstipe te gebruik."
"failedToLoadServer": "Kon nie bediener laai nie"
},
"messages": {
"registrationDisabled": "Nuwe rekeningregistrasie is tans deur 'n administrateur gedeaktiveer. Meld asseblief aan of kontak 'n administrateur.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokol",
"domainLabel": "Domein",
"domainPlaceholder": "opsioneel",
"connectToTerminal": "Koppel aan terminaal",
"connectToFiles": "Koppel aan lêers"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "اختر سمة ولونًا مميزًا ولغتك. يمكنك تغيير كل هذه العناصر لاحقًا من الإعدادات.",
"featuresTitle": "ما الذي تقدمه شركة Termix أيضاً؟",
"featuresIntro": "يمكن فتح كل خادم تقوم بحفظه في أكثر من مجرد نافذة طرفية. إليك ما ينتظرك خلف الأيقونات الموجودة على اليسار.",
"feature_files": "مدير الملفات",
"feature_files_desc": "تصفح الملفات وقم بتحميلها وتنزيلها وتعديلها عبر بروتوكول SFTP دون مغادرة التطبيق.",
"feature_tunnels": "الأنفاق",
"feature_tunnels_desc": "إعادة توجيه المنافذ عبر خادم للوصول إلى الخدمات غير المكشوفة.",
"feature_snippets": "مقتطفات",
"feature_snippets_desc": "احفظ الأوامر التي تقوم بتشغيلها بشكل متكرر وأرسلها إلى الطرفية بنقرة واحدة.",
"featuresRailHint": "لا تحتاج إلى أحد هذه الخيارات؟ يمكنك إخفاء أي أيقونة من الشريط الجانبي في الإعدادات، ضمن قسم التنقل.",
@@ -449,7 +445,6 @@
"passwordSaved": "تم حفظ كلمة المرور، اكتب لتغييرها",
"key": "المفتاح",
"credential": "بيانات الاعتماد",
"none": "لا يوجد",
"sshPrivateKey": "مفتاح SSH الخاص",
"keyType": "نوع المفتاح",
"uploadFile": "رفع ملف",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "فترة إبقاء الاتصال (بالثواني)",
"maxKeepaliveMisses": "الحد الأقصى لمرات فقدان إبقاء الاتصال",
"sameHost": "هذا المضيف (نفق مباشر)",
"bindHost": "مضيف الربط",
"connectionToolbar": "شريط أدوات الاتصال",
"showConnectionToolbar": "إظهار شريط أدوات الاتصال",
"showConnectionToolbarDesc": "يمكنك إظهار شريط الأدوات في جلسات SSH وRDP وVNC وTelnet الخاصة بهذا المضيف. كما يمكنك إخفاؤه مؤقتًا من شريط الأدوات نفسه.",
"proxmoxLastSyncStatus": {
"success": "نجاح"
},
"proxmoxGuestsSelected_one": "{{count}} جهاز ضيف — {{selected}} مُحدد",
"proxmoxGuestsSelected_other": "{{count}} أجهزة ضيفة — {{selected}} مُحددة",
"proxmoxImportButton_one": "استيراد {{count}} مضيف",
"proxmoxImportButton_other": "استيراد {{count}} مضيفين",
"proxmoxResultSkippedNoIp": "تم تخطي {{count}} (لم يتم العثور على عنوان IP)",
"proxmoxStatsUrlCopied": "تم نسخ رابط إحصائيات Proxmox إلى الحافظة",
"copyProxmoxStatsUrlAction": "انسخ رابط إحصائيات Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "تم تحديث {{count}} مضيف",
"friendlyNameLabel": "الاسم المألوف",
"descriptionLabel": "الوصف",
"loadingHost": "جارٍ تحميل المضيف...",
"loadingHosts": "جارٍ تحميل المضيفين...",
"loadingCredentials": "جارٍ تحميل بيانات الاعتماد...",
"noHostsYet": "لا يوجد مضيفون بعد",
"noHostsYetHint": "أضف خادمًا لفتح المحطات الطرفية، وتصفح الملفات، وعرض المقاييس.",
"noHostsMatchSearch": "لا يوجد مضيفون يطابقون بحثك",
"hostNotFound": "المضيف غير موجود",
"searchHosts": "ابحث عن مضيفين...",
"sortHosts": "ترتيب المضيفين",
"sortDefault": "الترتيب الافتراضي",
@@ -925,7 +913,6 @@
"filterAuthKey": "مفتاح SSH",
"filterAuthCredential": "بيانات الاعتماد",
"filterAuthNone": "بلا",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "الخطوة ج",
"filterProtocolGroup": "البروتوكول",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "الاتصال بالمضيف",
"clear": "مسح",
"paste": "لصق",
"connected": "متصل",
"clipboardWriteFailed": "فشل النسخ إلى الحافظة. تأكد من تقديم الصفحة عبر HTTPS أو localhost.",
"clipboardReadFailed": "فشلت القراءة من الحافظة. تأكد من منح أذونات الحافظة.",
"tmuxDetach": "فصل من جلسة tmux",
"terminalTitle": "الطرفية - {{host}}",
"terminalWithPath": "الطرفية - {{host}}:{{path}}",
"runTitle": "تشغيل {{command}} - {{host}}",
"totpRequired": "مطلوب المصادقة الثنائية",
"totpCodeLabel": "رمز التحقق",
"totpVerify": "تحقق",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "نسخ إلى المضيف…",
"moveToHost": "نقل إلى المضيف…",
"copyItemsToHost": "نسخ {{count}} عناصر إلى المضيف…",
"moveItemsToHost": "نقل {{count}} عناصر إلى المضيف…",
"noHostsConnected": "لا تتوفر مضيفات أخرى لمدير الملفات.",
"noHostsConnectedHint": "أضف مضيف SSH آخر مع تمكين مدير الملفات في مدير المضيفات.",
"selectDestinationHost": "تحديد المضيف الوجهة",
"destinationPath": "مسار الوجهة",
"recentDestinations": "الوجهات الأخيرة",
"collapseRecentDestinations": "طي الوجهات الأخيرة",
"expandRecentDestinations": "توسيع الوجهات الأخيرة",
"browseFolders": "تصفح مجلدات الوجهة",
"browseDestination": "تصفح المسار أو أدخله",
"confirmCopy": "نسخ",
"confirmMove": "نقل",
"transferring": "جارٍ النقل…",
"progressVerifying": "التحقق من سلامة الملف…",
"progressBenchmarking": "اختيار أسرع مسار نقل…",
"compressing": "جارٍ الضغط…",
"extracting": "جارٍ الاستخراج…",
"transferringItems": "جارٍ نقل {{current}} من {{total}} عناصر…",
"transferSuccess": "اكتمل النقل",
"transferError": "فشل النقل",
"transferPartial": "اكتمل النقل مع {{count}} أخطاء",
"transferPartialHint": "تعذر النقل: {{paths}}",
"itemsSummary": "{{count}} عنصر",
"destMustBeDirectory": "يجب أن تكون الوجهة مجلدًا لنقل عناصر متعددة",
"selectThisFolder": "تحديد هذا المجلد",
"browsePathWillBeCreated": "هذا المجلد غير موجود بعد. سيتم إنشاؤه عند بدء النقل.",
"browsePathError": "تعذر فتح هذا المسار على المضيف الوجهة.",
"goUp": "للأعلى",
"copyFolderToHost": "نسخ المجلد إلى المضيف…",
"moveFolderToHost": "نقل المجلد إلى المضيف…",
"hostReady": "جاهز",
"hostConnecting": "جارٍ الاتصال…",
"hostDisconnected": "غير متصل",
"hostAuthRequired": "المصادقة مطلوبة — افتح مدير الملفات على هذا المضيف أولاً",
"hostConnectionFailed": "فشل الاتصال",
"metricsTitle": "توقيتات النقل",
"metricsPrepare": "تحضير الوجهة: {{duration}}",
"metricsCompress": "ضغط على المصدر: {{duration}}",
"metricsHopSourceRead": "المصدر → الخادم: {{throughput}}",
"metricsHopDestSftpWrite": "الخادم → الوجهة (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "الخادم → الوجهة (محلي): {{throughput}}",
"metricsTransfer": "نقل شامل: {{throughput}} ({{duration}})",
"metricsExtract": "فك على الوجهة: {{duration}}",
"metricsVerify": "تم التحقق من SHA-256: {{duration}}",
"metricsRouteBenchmark": "مسبار المسار — مباشر: {{direct}}، مرحل: {{relay}}",
"metricsSourceDelete": "إزالة من المصدر: {{duration}}",
"metricsTotal": "الإجمالي: {{duration}}",
"progressCompressing": "جارٍ الضغط على المضيف المصدر…",
"progressExtracting": "جارٍ الفك على الوجهة…",
"progressTransferring": "جارٍ نقل البيانات…",
"progressReconnecting": "جارٍ إعادة الاتصال…",
"parallelSegmentsLabel": "مسارات النقل المتوازية",
"parallelSegmentsOption": "{{count}} مسارات",
"parallelSegmentsHint": "تُقسم الملفات الكبيرة إلى أجزاء بحجم 256 ميغابايت. تستخدم المسارات المتعددة اتصالات منفصلة (مثل بدء عدة عمليات نقل) لتحقيق إنتاجية إجمالية أعلى.",
"progressTotalSpeed": "{{speed}} إجمالي ({{lanes}} مسارات)",
"progressTransferringItems": "جارٍ نقل الملفات ({{current}} من {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} ملفات",
"sourceNotDeletedPartial": "الملفات المصدر محفوظة (نقل جزئي)",
"jumpHostLimitation": "يجب أن يكون كلا المضيفين قابلين للوصول من خادم Termix. التوجيه المباشر من مضيف إلى مضيف غير مدعوم.",
"cancel": "إلغاء",
"methodLabel": "طريقة النقل",
"methodAuto": "تلقائي",
"methodTar": "أرشيف Tar",
"methodItemSftp": "SFTP لكل ملف",
"methodAutoHint": "يختار tar أو SFTP لكل ملف بناءً على عدد الملفات وحجمها وقابلية الضغط. الملفات المفردة تستخدم دائمًا SFTP التدفقي.",
"methodTarHint": "ضغط على المصدر، نقل أرشيف واحد، فك على الوجهة. يتطلب tar على كلا المضيفين Unix.",
"methodItemSftpHint": "نقل كل ملف على حدة عبر SFTP. يعمل على جميع المضيفين بما في ذلك Windows.",
"methodPreviewLoading": "جارٍ حساب طريقة النقل…",
"methodPreviewError": "تعذّر معاينة طريقة النقل. سيختار الخادم طريقة عند بدء النقل.",
"methodPreviewWillUseTar": "سيُستخدم: أرشيف Tar",
"methodPreviewWillUseItemSftp": "سيُستخدم: SFTP لكل ملف",
"methodPreviewScanSummary": "{{fileCount}} ملفات، {{totalSize}} إجمالي (تم المسح على المضيف المصدر).",
"methodItemSftpLimitation": "يستخدم كل ملف نفس تدفق SFTP كنسخ الملف الواحد، واحداً تلو الآخر. يُجمع التقدم عبر جميع الملفات، لذا يتحرك الشريط ببطء أثناء الملفات الكبيرة.",
"methodReason": {
"user_item_sftp": "اخترت SFTP لكل ملف.",
"user_tar": "اخترت أرشيف tar.",
"tar_unavailable": "tar غير متوفر على أحد المضيفين أو كليهما — سيُستخدم SFTP لكل ملف بدلاً من ذلك.",
"windows_host": "يوجد مضيف Windows — لا يُستخدم tar.",
"auto_multi_large": "تلقائي: عدة ملفات بما فيها ملف كبير ({{largestSize}}) ببيانات قابلة للضغط — يجمعها tar في حزمة واحدة.",
"auto_single_large_in_archive": "تلقائي: ملف كبير واحد ({{largestSize}}) في هذه المجموعة — SFTP لكل ملف.",
"auto_many_incompressible": "تلقائي: البيانات غالبًا غير قابلة للضغط — SFTP لكل ملف.",
"auto_many_files": "تلقائي: عدة ملفات ({{fileCount}}) — يقلل tar الحمل لكل ملف.",
"auto_default": "تلقائي: SFTP لكل ملف لهذه المجموعة."
},
"progressCancel": "إلغاء",
"progressCancelling": "جارٍ الإلغاء…",
"progressStalled": "متوقف",
"resumedHint": "تمت إعادة الاتصال بنقل نشط بدأ في نافذة أخرى.",
"transferCancelled": "تم إلغاء النقل",
"transferCancelledCopyHint": "قد تبقى ملفات جزئية على الوجهة.",
"transferCancelledMoveHint": "قد تبقى ملفات جزئية على الوجهة. لم يتم حذف ملفات المصدر.",
"cleanupDestFiles": "تنظيف الوجهة",
"cleanupDestFilesSuccess": "تمت إزالة الملفات الجزئية من الوجهة",
"cleanupDestFilesPartial": "تعذر إزالة بعض الملفات الجزئية",
"cleanupDestFilesNothing": "لا شيء للتنظيف على الوجهة",
"cleanupDestFilesError": "فشل التنظيف",
"retryTransfer": "إعادة المحاولة",
"retryTransferError": "فشلت إعادة المحاولة",
"transferFailedRetryHint": "تم الاحتفاظ بالبيانات الجزئية على الوجهة. ستُستأنف إعادة المحاولة عند عودة الاتصال."
"sourceNotDeletedPartial": "الملفات المصدر محفوظة (نقل جزئي)"
},
"tunnels": {
"connect": "اتصل",
@@ -1261,8 +1153,6 @@
"clientTunnel": "نفق العميل",
"addClientTunnel": "إضافة نفق عميل",
"active": "نشط",
"start": "تشغيل",
"stop": "إيقاف",
"typeServerLocalDesc": "من المضيف الحالي إلى نقطة النهاية.",
"typeServerRemoteDesc": "من نقطة النهاية إلى المضيف الحالي.",
"typeClientLocalDesc": "من الكمبيوتر المحلي إلى نقطة النهاية.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "محدودية المعدل: عدد كبير جداً من محاولات التحقق. يرجى الانتظار {{time}} ثانية قبل المحاولة مرة أخرى.",
"authTokenSaveFailed": "فشل في حفظ رمز المصادقة",
"authTokenMissing": "لم يُرسل الخادم رمز مصادقة جديدًا. يُرجى تسجيل الدخول مرة أخرى.",
"failedToLoadServer": "فشل في تحميل الخادم",
"remoteServerRequired": "يلزم وجود خادم بعيد. قم بتوصيل خادم بعيد في الإعدادات لاستخدام نوع الاتصال هذا."
"failedToLoadServer": "فشل في تحميل الخادم"
},
"messages": {
"registrationDisabled": "تسجيل الحسابات الجديدة معطل حالياً من قبل المسؤول. يرجى تسجيل الدخول أو الاتصال بالمسؤول.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "بروتوكول",
"domainLabel": "اِختِصاص",
"domainPlaceholder": "خياري",
"connectToTerminal": "اتصل بالطرفية",
"connectToFiles": "اتصل بالملفات"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Изберете тема, цвят за акцент и език. И трите могат да бъдат променени по-късно в „Настройки“.",
"featuresTitle": "Какво друго прави Termix",
"featuresIntro": "Всеки сървър, който запазите, може да бъде отворен в повече от терминал. Ето какво ви очаква зад иконите вляво.",
"feature_files": "Файлов мениджър",
"feature_files_desc": "Преглеждайте, качвайте, изтегляйте и редактирайте файлове през SFTP, без да напускате приложението.",
"feature_tunnels": "Тунели",
"feature_tunnels_desc": "Пренасочване на портове през сървър, за да се достигне до услуги, които не са изложени на риск.",
"feature_snippets": "Откъси",
"feature_snippets_desc": "Запазвайте команди, които изпълнявате често, и ги изпращайте към терминал с едно щракване.",
"featuresRailHint": "Не ви е нужно едно от тях? Скрийте всяка икона от страничната лента в „Настройки“, под „Навигация“.",
@@ -449,7 +445,6 @@
"passwordSaved": "Паролата е запазена, въведете, за да я промените",
"key": "Ключ",
"credential": "Пълномощия",
"none": "Няма",
"sshPrivateKey": "SSH частен ключ",
"keyType": "Тип ключ",
"uploadFile": "Качване на файл",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Интервал за поддържане на активност (секунди)",
"maxKeepaliveMisses": "Максимални пропуски на Keepalive",
"sameHost": "Този хост (директен тунел)",
"bindHost": "Свързване на хост",
"connectionToolbar": "Инструменти за свързване",
"showConnectionToolbar": "Показване на лентата с инструменти за връзки",
"showConnectionToolbarDesc": "Показване на лентата с инструменти в SSH, RDP, VNC и Telnet сесиите на този хост. Можете също така временно да я скриете от самата лента с инструменти.",
"proxmoxLastSyncStatus": {
"success": "Успех"
},
"proxmoxGuestsSelected_one": "{{count}} гост — {{selected}} избран",
"proxmoxGuestsSelected_other": "{{count}} гости — {{selected}} избрани",
"proxmoxImportButton_one": "Импортиране на хост {{count}}",
"proxmoxImportButton_other": "Импортиране на {{count}} хостове",
"proxmoxResultSkippedNoIp": "{{count}} пропуснато (не е намерен IP адрес)",
"proxmoxStatsUrlCopied": "URL адресът на статистиката на Proxmox е копиран в клипборда",
"copyProxmoxStatsUrlAction": "Копиране на URL адреса на статистиката на Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Актуализирани {{count}} хостове",
"friendlyNameLabel": "Приятелско име",
"descriptionLabel": "Описание",
"loadingHost": "Зареждане на хоста...",
"loadingHosts": "Зареждане на хостове...",
"loadingCredentials": "Зареждане на идентификационни данни...",
"noHostsYet": "Все още няма домакини",
"noHostsYetHint": "Добавете сървър, за да отваряте терминали, да преглеждате файлове и да виждате показатели.",
"noHostsMatchSearch": "Няма хостове, които да отговарят на вашето търсене",
"hostNotFound": "Хостът не е намерен",
"searchHosts": "Търсене на хостове...",
"sortHosts": "Сортиране на хостове",
"sortDefault": "По подразбиране ред",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH ключ",
"filterAuthCredential": "Пълномощия",
"filterAuthNone": "Няма",
"filterAuthOpkssh": "ОПКСШ",
"filterAuthStepca": "Стъпка CA",
"filterProtocolGroup": "Протокол",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Свързване с хоста",
"clear": "Изчисти",
"paste": "Паста",
"connected": "Свързан",
"clipboardWriteFailed": "Копирането в буфера не бе успешно. Уверете се, че страницата се предоставя през HTTPS или localhost.",
"clipboardReadFailed": "Четенето от клипборда не бе успешно. Уверете се, че са предоставени разрешения за достъп до клипборда.",
"tmuxDetach": "Отделяне от tmux сесия",
"terminalTitle": "Терминал - {{host}}",
"terminalWithPath": "Терминал - {{host}}:{{path}}",
"runTitle": "Изпълнява се {{command}} - {{host}}",
"totpRequired": "Изисква се двуфакторно удостоверяване",
"totpCodeLabel": "Код за потвърждение",
"totpVerify": "Проверка",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Копиране към хост…",
"moveToHost": "Преместване към хост…",
"copyItemsToHost": "Копиране на {{count}} елементи за хостване на…",
"moveItemsToHost": "Преместете {{count}} елементи, за да хоствате…",
"noHostsConnected": "Няма други налични хостове за файлови мениджъри.",
"noHostsConnectedHint": "Добавете друг SSH хост с активиран файлов мениджър в Host Manager.",
"selectDestinationHost": "Изберете целеви хост",
"destinationPath": "Път на местоназначението",
"recentDestinations": "Последни дестинации",
"collapseRecentDestinations": "Свиване на скорошни дестинации",
"expandRecentDestinations": "Разгъване на скорошни дестинации",
"browseFolders": "Преглед на целевите папки",
"browseDestination": "Преглед или въвеждане на път",
"confirmCopy": "Копиране",
"confirmMove": "Преместване",
"transferring": "Прехвърляне…",
"progressVerifying": "Проверка на целостта на файла…",
"progressBenchmarking": "Избор на най-бързия маршрут за трансфер…",
"compressing": "Компресиране…",
"extracting": "Извличане…",
"transferringItems": "Прехвърляне на {{current}} от {{total}} елементи…",
"transferSuccess": "Прехвърлянето е завършено",
"transferError": "Прехвърлянето не бе успешно",
"transferPartial": "Прехвърлянето е завършено с {{count}} грешки",
"transferPartialHint": "Не можа да се прехвърли: {{paths}}",
"itemsSummary": "{{count}} артикули",
"destMustBeDirectory": "Дестинацията трябва да е директория за прехвърляне на множество елементи",
"selectThisFolder": "Изберете тази папка",
"browsePathWillBeCreated": "Тази папка все още не съществува. Тя ще бъде създадена, когато започне прехвърлянето.",
"browsePathError": "Не можа да се отвори този път на целевия хост.",
"goUp": "Качи се нагоре",
"copyFolderToHost": "Копиране на папката на хост…",
"moveFolderToHost": "Преместване на папката на хост…",
"hostReady": "Готов",
"hostConnecting": "Свързване…",
"hostDisconnected": "Няма връзка",
"hostAuthRequired": "Изисква се удостоверяване — първо отворете Файловия мениджър на този хост",
"hostConnectionFailed": "Връзката не бе успешна",
"metricsTitle": "Времетраене на трансферите",
"metricsPrepare": "Подготовка на дестинацията: {{duration}}",
"metricsCompress": "Компресиране при източника: {{duration}}",
"metricsHopSourceRead": "Източник → сървър: {{throughput}}",
"metricsHopDestSftpWrite": "Сървър → дестинация (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Сървър → дестинация (локална): {{throughput}}",
"metricsTransfer": "От край до край: {{throughput}} ({{duration}})",
"metricsExtract": "Извличане в местоназначението: {{duration}}",
"metricsVerify": "SHA-256 проверен: {{duration}}",
"metricsRouteBenchmark": "Сонда за маршрут — директна: {{direct}}, релейна: {{relay}}",
"metricsSourceDelete": "Премахване от източника: {{duration}}",
"metricsTotal": "Общо: {{duration}}",
"progressCompressing": "Компресиране на изходния хост…",
"progressExtracting": "Извличане в местоназначението…",
"progressTransferring": "Прехвърляне на данни…",
"progressReconnecting": "Повторно свързване…",
"parallelSegmentsLabel": "Паралелни трансферни ленти",
"parallelSegmentsOption": "{{count}} ленти",
"parallelSegmentsHint": "Големите файлове се разделят на парчета от 256 MB. Няколко канала използват отделни връзки (като стартиране на няколко трансфера) за по-висока обща пропускателна способност.",
"progressTotalSpeed": "{{speed}} общо ({{lanes}} ленти)",
"progressTransferringItems": "Прехвърляне на файлове ({{current}} от {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} файлове",
"sourceNotDeletedPartial": "Изходните файлове са запазени (частично прехвърляне)",
"jumpHostLimitation": "И двата хоста трябва да са достъпни от Termix сървъра. Директното маршрутизиране от хост към хост не се поддържа.",
"cancel": "Отказ",
"methodLabel": "Метод на прехвърляне",
"methodAuto": "Автоматично",
"methodTar": "Тар архив",
"methodItemSftp": "SFTP за всеки файл",
"methodAutoHint": "Избира tar или SFTP за всеки файл въз основа на броя, размера и компресируемостта на файловете. Отделните файлове винаги използват стрийминг SFTP.",
"methodTarHint": "Компресиране при източника, прехвърляне на един архив, разархивиране при местоназначението. Изисква tar и на двата Unix хоста.",
"methodItemSftpHint": "Прехвърляйте всеки файл поотделно през SFTP. Работи на всички хостове, включително Windows.",
"methodPreviewLoading": "Метод за изчисляване на трансфер…",
"methodPreviewError": "Не можа да се прегледа методът за прехвърляне. Сървърът все пак ще избере метод, когато стартирате.",
"methodPreviewWillUseTar": "Ще използвам: Tar архив",
"methodPreviewWillUseItemSftp": "Ще използва: SFTP за всеки файл",
"methodPreviewScanSummary": "{{fileCount}} файлове, {{totalSize}} общо (сканирани на изходния хост).",
"methodItemSftpLimitation": "Всеки файл използва същия SFTP поток като копие на един файл, следвани един след друг. Напредъкът се комбинира във всички файлове, така че лентата се движи бавно при големи файлове.",
"methodReason": {
"user_item_sftp": "Избрали сте SFTP за всеки файл.",
"user_tar": "Избрахте tar архив.",
"tar_unavailable": "Tar не е наличен на единия или и на двата хоста — вместо това ще се използва SFTP за всеки файл.",
"windows_host": "Включен е хост на Windows — tar не се използва.",
"auto_multi_large": "Автоматично: множество файлове, включително голям файл ({{largestSize}}) със свиваеми данни — tar пакети в един трансфер.",
"auto_single_large_in_archive": "Автоматично: един голям файл ({{largestSize}}) в този набор — SFTP за всеки файл.",
"auto_many_incompressible": "Автоматично: предимно некомпресируеми данни — SFTP за всеки файл.",
"auto_many_files": "Автоматично: много файлове ({{fileCount}}) — tar намалява натоварването на всеки файл.",
"auto_default": "Автоматично: SFTP за всеки файл за този набор."
},
"progressCancel": "Отказ",
"progressCancelling": "Анулиране…",
"progressStalled": "Застоял",
"resumedHint": "Възстановена е връзка с активно прехвърляне, започнато в друг прозорец.",
"transferCancelled": "Прехвърлянето е анулирано",
"transferCancelledCopyHint": "Частични файлове може да останат в местоназначението.",
"transferCancelledMoveHint": "Възможно е част от файловете да са останали в местоназначението. Изходните файлове не са премахнати.",
"cleanupDestFiles": "Почистване на дестинацията",
"cleanupDestFilesSuccess": "Премахнати частични файлове от местоназначението",
"cleanupDestFilesPartial": "Някои частични файлове не можаха да бъдат премахнати",
"cleanupDestFilesNothing": "Няма нищо за почистване на дестинацията",
"cleanupDestFilesError": "Почистването не бе успешно",
"retryTransfer": "Опитай отново",
"retryTransferError": "Повторният опит не бе успешен",
"transferFailedRetryHint": "В местоназначението са запазени частични данни. Повторният опит ще се възобнови, когато връзката се възстанови."
"sourceNotDeletedPartial": "Изходните файлове са запазени (частично прехвърляне)"
},
"tunnels": {
"connect": "Свържете се",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Клиентски тунел",
"addClientTunnel": "Добавяне на клиентски тунел",
"active": "Активен",
"start": "Старт",
"stop": "Спри",
"typeServerLocalDesc": "Текущ хост към крайна точка.",
"typeServerRemoteDesc": "Крайна точка обратно към текущия хост.",
"typeClientLocalDesc": "Локален компютър към крайна точка.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Ограничена скорост: Твърде много опити за потвърждение. Моля, изчакайте {{time}} секунди, преди да опитате отново.",
"authTokenSaveFailed": "Запазването на токена за удостоверяване не бе успешно",
"authTokenMissing": "Сървърът не върна нов токен за удостоверяване. Моля, влезте отново.",
"failedToLoadServer": "Зареждането на сървъра не бе успешно",
"remoteServerRequired": "Изисква се отдалечен сървър. Свържете се с отдалечен сървър в „Настройки“, за да използвате този тип връзка."
"failedToLoadServer": "Зареждането на сървъра не бе успешно"
},
"messages": {
"registrationDisabled": "Регистрацията на нов акаунт в момента е деактивирана от администратор. Моля, влезте или се свържете с администратор.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Протокол",
"domainLabel": "Домейн",
"domainPlaceholder": "по избор",
"connectToTerminal": "Свързване с терминала",
"connectToFiles": "Свързване с файлове"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "একটি থিম, একটি অ্যাকসেন্ট কালার এবং আপনার ভাষা বেছে নিন। এই তিনটিই পরে সেটিংস থেকে পরিবর্তন করা যাবে।",
"featuresTitle": "টারমিক্স আর কী কী করে",
"featuresIntro": "আপনার সেভ করা প্রতিটি সার্ভার একাধিক টার্মিনালে খোলা যেতে পারে। বাম দিকের আইকনগুলোর পেছনে যা অপেক্ষা করছে তা এখানে দেওয়া হলো।",
"feature_files": "ফাইল ম্যানেজার",
"feature_files_desc": "অ্যাপ থেকে বের না হয়েই SFTP-এর মাধ্যমে ফাইল ব্রাউজ, আপলোড, ডাউনলোড এবং সম্পাদনা করুন।",
"feature_tunnels": "টানেল",
"feature_tunnels_desc": "যেসব পরিষেবা উন্মুক্ত নয়, সেগুলোতে পৌঁছানোর জন্য পোর্টগুলো একটি সার্ভারের মাধ্যমে ফরওয়ার্ড করুন।",
"feature_snippets": "খণ্ডাংশ",
"feature_snippets_desc": "আপনার প্রায়শই ব্যবহৃত কমান্ডগুলো সংরক্ষণ করুন এবং এক ক্লিকে টার্মিনালে পাঠিয়ে দিন।",
"featuresRailHint": "এগুলোর কোনোটি প্রয়োজন নেই? সেটিংস-এর নেভিগেশন বিভাগ থেকে সাইডবারের যেকোনো আইকন লুকান।",
@@ -449,7 +445,6 @@
"passwordSaved": "পাসওয়ার্ড সংরক্ষিত আছে, পরিবর্তন করতে টাইপ করুন",
"key": "চাবি",
"credential": "শংসাপত্র",
"none": "কোনোটিই না",
"sshPrivateKey": "SSH ব্যক্তিগত কী",
"keyType": "চাবির ধরন",
"uploadFile": "ফাইল আপলোড করুন",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "কিপঅ্যালাইভ ব্যবধান (সেকেন্ড)",
"maxKeepaliveMisses": "ম্যাক্স কিপঅ্যালাইভ মিস করে",
"sameHost": "এই হোস্ট (সরাসরি টানেল)",
"bindHost": "হোস্টকে বাঁধুন",
"connectionToolbar": "সংযোগ টুলবার",
"showConnectionToolbar": "সংযোগ টুলবার দেখান",
"showConnectionToolbarDesc": "এই হোস্টের SSH, RDP, VNC, এবং Telnet সেশনগুলিতে টুলবারটি দেখান। আপনি টুলবারটি থেকেই এটিকে সাময়িকভাবে লুকাতেও পারেন।",
"proxmoxLastSyncStatus": {
"success": "সাফল্য"
},
"proxmoxGuestsSelected_one": "{{count}} অতিথি — {{selected}} নির্বাচিত",
"proxmoxGuestsSelected_other": "{{count}} জন অতিথি — {{selected}} জন নির্বাচিত",
"proxmoxImportButton_one": "{{count}} হোস্ট আমদানি করুন",
"proxmoxImportButton_other": "{{count}} হোস্ট আমদানি করুন",
"proxmoxResultSkippedNoIp": "{{count}} বাদ দেওয়া হয়েছে (কোন আইপি পাওয়া যায়নি)",
"proxmoxStatsUrlCopied": "Proxmox Stats URL ক্লিপবোর্ডে কপি করা হয়েছে",
"copyProxmoxStatsUrlAction": "Proxmox Stats URL কপি করুন",
@@ -896,13 +886,11 @@
"updatedCount": "আপডেট করা {{count}} হোস্ট",
"friendlyNameLabel": "বন্ধুত্বপূর্ণ নাম",
"descriptionLabel": "বর্ণনা",
"loadingHost": "হোস্ট লোড হচ্ছে...",
"loadingHosts": "হোস্ট লোড হচ্ছে...",
"loadingCredentials": "পরিচয়পত্র লোড হচ্ছে...",
"noHostsYet": "এখনো কোনো হোস্ট নেই",
"noHostsYetHint": "টার্মিনাল খুলতে, ফাইল ব্রাউজ করতে এবং মেট্রিক্স দেখতে একটি সার্ভার যোগ করুন।",
"noHostsMatchSearch": "আপনার অনুসন্ধানের সাথে কোনো হোস্ট মেলে না।",
"hostNotFound": "হোস্ট খুঁজে পাওয়া যায়নি",
"searchHosts": "হোস্ট অনুসন্ধান করুন...",
"sortHosts": "হোস্ট বাছাই করুন",
"sortDefault": "ডিফল্ট অর্ডার",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH কী",
"filterAuthCredential": "শংসাপত্র",
"filterAuthNone": "কোনোটিই না",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "স্টেপ সিএ",
"filterProtocolGroup": "প্রোটোকল",
"filterProtocolSsh": "এসএসএইচ",
@@ -1114,13 +1101,7 @@
"connect": "হোস্টের সাথে সংযোগ করুন",
"clear": "পরিষ্কার",
"paste": "পেস্ট",
"connected": "সংযুক্ত",
"clipboardWriteFailed": "ক্লিপবোর্ডে কপি করা সম্ভব হয়নি। নিশ্চিত করুন যে পৃষ্ঠাটি HTTPS বা লোকালহোস্টের মাধ্যমে পরিবেশিত হচ্ছে।",
"clipboardReadFailed": "ক্লিপবোর্ড থেকে পড়তে ব্যর্থ হয়েছে। নিশ্চিত করুন যে ক্লিপবোর্ডের অনুমতি দেওয়া আছে।",
"tmuxDetach": "tmux সেশন থেকে বিচ্ছিন্ন করুন",
"terminalTitle": "টার্মিনাল - {{host}}",
"terminalWithPath": "টার্মিনাল - {{host}}:{{path}}",
"runTitle": "দৌড়ানো {{command}} - {{host}}",
"totpRequired": "দ্বি-স্তরীয় প্রমাণীকরণ আবশ্যক",
"totpCodeLabel": "যাচাইকরণ কোড",
"totpVerify": "যাচাই করুন",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "হোস্টে কপি করুন…",
"moveToHost": "হোস্টে যান…",
"copyItemsToHost": "{{count}} টি আইটেম হোস্টে কপি করুন…",
"moveItemsToHost": "{{count}} টি আইটেম… টি হোস্টে সরান",
"noHostsConnected": "অন্য কোনো ফাইল-ম্যানেজার হোস্ট উপলব্ধ নেই।",
"noHostsConnectedHint": "হোস্ট ম্যানেজারে ফাইল ম্যানেজার সক্রিয় করা আছে এমন আরেকটি SSH হোস্ট যোগ করুন।",
"selectDestinationHost": "গন্তব্য হোস্ট নির্বাচন করুন",
"destinationPath": "গন্তব্য পথ",
"recentDestinations": "সাম্প্রতিক গন্তব্যস্থল",
"collapseRecentDestinations": "সাম্প্রতিক গন্তব্যগুলি সংকুচিত করুন",
"expandRecentDestinations": "সাম্প্রতিক গন্তব্যস্থলগুলি প্রসারিত করুন",
"browseFolders": "গন্তব্য ফোল্ডারগুলি ব্রাউজ করুন",
"browseDestination": "ব্রাউজ করুন অথবা পথ লিখুন",
"confirmCopy": "অনুলিপি",
"confirmMove": "স্থানান্তর",
"transferring": "… স্থানান্তর করা হচ্ছে",
"progressVerifying": "ফাইলের অখণ্ডতা যাচাই করা হচ্ছে…",
"progressBenchmarking": "দ্রুততম স্থানান্তর পথ নির্বাচন করা হচ্ছে…",
"compressing": "… সংকুচিত করা হচ্ছে",
"extracting": "… নিষ্কাশন করা হচ্ছে",
"transferringItems": "{{current}} টি {{total}} টি আইটেম… টি স্থানান্তর করা হচ্ছে",
"transferSuccess": "স্থানান্তর সম্পন্ন হয়েছে",
"transferError": "স্থানান্তর ব্যর্থ হয়েছে",
"transferPartial": "{{count}} টি ত্রুটি সহ স্থানান্তর সম্পন্ন হয়েছে।",
"transferPartialHint": "স্থানান্তর করা যায়নি: {{paths}}",
"itemsSummary": "{{count}} আইটেম",
"destMustBeDirectory": "একাধিক আইটেম স্থানান্তরের জন্য গন্তব্য অবশ্যই একটি ডিরেক্টরি হতে হবে।",
"selectThisFolder": "এই ফোল্ডারটি নির্বাচন করুন",
"browsePathWillBeCreated": "এই ফোল্ডারটি এখনও তৈরি হয়নি। স্থানান্তর শুরু হলে এটি তৈরি হয়ে যাবে।",
"browsePathError": "গন্তব্য হোস্টে এই পাথটি খোলা সম্ভব হয়নি।",
"goUp": "উপরে যান",
"copyFolderToHost": "ফোল্ডারটি হোস্টে কপি করুন…",
"moveFolderToHost": "ফোল্ডারটি হোস্টে সরান…",
"hostReady": "প্রস্তুত",
"hostConnecting": "… সংযোগ করা হচ্ছে",
"hostDisconnected": "সংযুক্ত নয়",
"hostAuthRequired": "প্রমাণীকরণ আবশ্যক — প্রথমে এই হোস্টে ফাইল ম্যানেজার খুলুন।",
"hostConnectionFailed": "সংযোগ ব্যর্থ হয়েছে",
"metricsTitle": "স্থানান্তর সময়",
"metricsPrepare": "গন্তব্য প্রস্তুত করুন: {{duration}}",
"metricsCompress": "উৎস থেকে সংকুচিত করুন: {{duration}}",
"metricsHopSourceRead": "উৎস → সার্ভার: {{throughput}}",
"metricsHopDestSftpWrite": "সার্ভার → গন্তব্য (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "সার্ভার → গন্তব্য (স্থানীয়): {{throughput}}",
"metricsTransfer": "প্রান্ত থেকে প্রান্ত: {{throughput}} ({{duration}})",
"metricsExtract": "গন্তব্যে নিষ্কাশন: {{duration}}",
"metricsVerify": "SHA-256 দ্বারা যাচাইকৃত: {{duration}}",
"metricsRouteBenchmark": "রুট প্রোব — সরাসরি: {{direct}}, রিলে: {{relay}}",
"metricsSourceDelete": "উৎস থেকে সরান: {{duration}}",
"metricsTotal": "মোট: {{duration}}",
"progressCompressing": "উৎস হোস্টে সংকুচিত করা হচ্ছে…",
"progressExtracting": "গন্তব্য… থেকে নিষ্কাশন করা হচ্ছে",
"progressTransferring": "ডেটা স্থানান্তর করা হচ্ছে…",
"progressReconnecting": "পুনরায় সংযোগ স্থাপন…",
"parallelSegmentsLabel": "সমান্তরাল স্থানান্তর লেন",
"parallelSegmentsOption": "{{count}} লেন",
"parallelSegmentsHint": "বড় ফাইলগুলোকে ২৫৬ মেগাবাইটের খণ্ডে ভাগ করা হয়। মোট থ্রুপুট বাড়ানোর জন্য একাধিক লেন আলাদা সংযোগ ব্যবহার করে (যেমন কয়েকটি ট্রান্সফার শুরু করা)।",
"progressTotalSpeed": "{{speed}} মোট ({{lanes}} লেন)",
"progressTransferringItems": "ফাইল স্থানান্তর করা হচ্ছে ({{current}} {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} ফাইল",
"sourceNotDeletedPartial": "উৎস ফাইলগুলি রাখা হয়েছে (আংশিক স্থানান্তর)",
"jumpHostLimitation": "উভয় হোস্টকেই টারমিক্স সার্ভার থেকে পৌঁছানো সম্ভব হতে হবে। সরাসরি হোস্ট-টু-হোস্ট রাউটিং সমর্থিত নয়।",
"cancel": "বাতিল করুন",
"methodLabel": "স্থানান্তর পদ্ধতি",
"methodAuto": "অটো",
"methodTar": "টার আর্কাইভ",
"methodItemSftp": "প্রতি-ফাইল এসএফটিপি",
"methodAutoHint": "ফাইলের সংখ্যা, আকার এবং সংকোচনযোগ্যতার উপর ভিত্তি করে tar অথবা ফাইল-ভিত্তিক SFTP নির্বাচন করে। একক ফাইলের ক্ষেত্রে সর্বদা স্ট্রিমিং SFTP ব্যবহৃত হয়।",
"methodTarHint": "উৎসস্থলে কম্প্রেস করুন, একটি আর্কাইভ স্থানান্তর করুন, এবং গন্তব্যে এক্সট্র্যাক্ট করুন। উভয় ইউনিক্স হোস্টে tar প্রয়োজন।",
"methodItemSftpHint": "SFTP-এর মাধ্যমে প্রতিটি ফাইল আলাদাভাবে স্থানান্তর করুন। উইন্ডোজ সহ সকল হোস্টে কাজ করে।",
"methodPreviewLoading": "স্থানান্তর পদ্ধতি গণনা করা হচ্ছে…",
"methodPreviewError": "স্থানান্তর পদ্ধতির প্রিভিউ দেখা সম্ভব হয়নি। আপনি চালু করার সময় সার্ভার নিজেই একটি পদ্ধতি বেছে নেবে।",
"methodPreviewWillUseTar": "ব্যবহৃত হবে: টার আর্কাইভ",
"methodPreviewWillUseItemSftp": "ব্যবহার করা হবে: প্রতি-ফাইল এসএফটিপি",
"methodPreviewScanSummary": "{{fileCount}} টি ফাইল, {{totalSize}} টি মোট (উৎস হোস্টে স্ক্যান করা হয়েছে)।",
"methodItemSftpLimitation": "প্রতিটি ফাইল একই SFTP স্ট্রিম ব্যবহার করে একটির পর একটি একক-ফাইল কপি হিসেবে তৈরি হয়। সমস্ত ফাইলের অগ্রগতি একত্রিত করা হয়, তাই বড় ফাইলের ক্ষেত্রে বারটি ধীরে চলে।",
"methodReason": {
"user_item_sftp": "আপনি ফাইল-ভিত্তিক এসএফটিপি বেছে নিয়েছেন।",
"user_tar": "আপনি tar আর্কাইভটি বেছে নিয়েছেন।",
"tar_unavailable": "এক বা উভয় হোস্টে Tar উপলব্ধ না থাকায়, এর পরিবর্তে ফাইল-ভিত্তিক SFTP ব্যবহার করা হবে।",
"windows_host": "এখানে একটি উইন্ডোজ হোস্ট জড়িত — tar ব্যবহৃত হয় না।",
"auto_multi_large": "স্বয়ংক্রিয়: সংকোচনযোগ্য ডেটা সহ একটি বড় ফাইল ({{largestSize}}) সহ একাধিক ফাইল — tar বান্ডেল করে একটি একক স্থানান্তরে পাঠানো হয়।",
"auto_single_large_in_archive": "স্বয়ংক্রিয়: এই সেটে একটি বড় ফাইল ({{largestSize}}) — ফাইল-ভিত্তিক SFTP।",
"auto_many_incompressible": "স্বয়ংক্রিয়: প্রধানত অসংকোচনযোগ্য ডেটা — ফাইল-ভিত্তিক এসএফটিপি।",
"auto_many_files": "স্বয়ংক্রিয়: একাধিক ফাইল ({{fileCount}}) — tar প্রতি-ফাইল ওভারহেড কমায়।",
"auto_default": "স্বয়ংক্রিয়: এই সেটের জন্য প্রতি-ফাইল এসএফটিপি।"
},
"progressCancel": "বাতিল করুন",
"progressCancelling": "বাতিল করা হচ্ছে…",
"progressStalled": "স্থবির",
"resumedHint": "অন্য একটি উইন্ডোতে শুরু হওয়া একটি সক্রিয় ট্রান্সফারের সাথে পুনরায় সংযুক্ত হওয়া গেছে।",
"transferCancelled": "স্থানান্তর বাতিল করা হয়েছে",
"transferCancelledCopyHint": "গন্তব্যে আংশিক ফাইল থেকে যেতে পারে।",
"transferCancelledMoveHint": "গন্তব্যে আংশিক ফাইল থেকে যেতে পারে। মূল ফাইলগুলো সরানো হয়নি।",
"cleanupDestFiles": "পরিষ্কার করার গন্তব্য",
"cleanupDestFilesSuccess": "গন্তব্য থেকে আংশিক ফাইল সরানো হয়েছে",
"cleanupDestFilesPartial": "কিছু আংশিক ফাইল সরানো যায়নি",
"cleanupDestFilesNothing": "গন্তব্যে পরিষ্কার করার কিছু নেই।",
"cleanupDestFilesError": "পরিষ্কার করা ব্যর্থ হয়েছে",
"retryTransfer": "পুনরায় চেষ্টা করুন",
"retryTransferError": "পুনরায় চেষ্টা ব্যর্থ হয়েছে",
"transferFailedRetryHint": "গন্তব্যে আংশিক ডেটা সংরক্ষিত হয়েছে। সংযোগ ফিরে এলে পুনরায় চেষ্টা শুরু হবে।"
"sourceNotDeletedPartial": "উৎস ফাইলগুলি রাখা হয়েছে (আংশিক স্থানান্তর)"
},
"tunnels": {
"connect": "সংযোগ করুন",
@@ -1261,8 +1153,6 @@
"clientTunnel": "ক্লায়েন্ট টানেল",
"addClientTunnel": "ক্লায়েন্ট টানেল যোগ করুন",
"active": "সক্রিয়",
"start": "শুরু করুন",
"stop": "থামুন",
"typeServerLocalDesc": "বর্তমান হোস্ট থেকে এন্ডপয়েন্ট।",
"typeServerRemoteDesc": "এন্ডপয়েন্টটি বর্তমান হোস্টে ফিরে যাচ্ছে।",
"typeClientLocalDesc": "স্থানীয় কম্পিউটার থেকে এন্ডপয়েন্ট পর্যন্ত।",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "রেট সীমিত: অনেক বেশি যাচাইকরণ প্রচেষ্টা করা হয়েছে। অনুগ্রহ করে আবার চেষ্টা করার আগে {{time}} সেকেন্ড অপেক্ষা করুন।",
"authTokenSaveFailed": "প্রমাণীকরণ টোকেন সংরক্ষণ করতে ব্যর্থ হয়েছে",
"authTokenMissing": "সার্ভারটি নতুন কোনো প্রমাণীকরণ টোকেন ফেরত দেয়নি। অনুগ্রহ করে আবার সাইন ইন করুন।",
"failedToLoadServer": "সার্ভার লোড করতে ব্যর্থ হয়েছে",
"remoteServerRequired": "রিমোট সার্ভার প্রয়োজন। এই সংযোগের ধরণটি ব্যবহার করতে সেটিংস-এ একটি রিমোট সার্ভার সংযুক্ত করুন।"
"failedToLoadServer": "সার্ভার লোড করতে ব্যর্থ হয়েছে"
},
"messages": {
"registrationDisabled": "অ্যাডমিন কর্তৃক নতুন অ্যাকাউন্ট নিবন্ধন বর্তমানে বন্ধ রাখা হয়েছে। অনুগ্রহ করে লগ ইন করুন অথবা কোনো প্রশাসকের সাথে যোগাযোগ করুন।",
@@ -1831,7 +1720,6 @@
"protocolLabel": "প্রোটোকল",
"domainLabel": "ডোমেইন",
"domainPlaceholder": "ঐচ্ছিক",
"connectToTerminal": "টার্মিনালের সাথে সংযোগ করুন",
"connectToFiles": "ফাইলগুলির সাথে সংযোগ করুন"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Trieu un tema, un color d'accent i el vostre idioma. Tots tres es poden canviar més tard a Configuració.",
"featuresTitle": "Què més fa Termix?",
"featuresIntro": "Cada servidor que deseu es pot obrir en més d'un terminal. Això és el que hi ha darrere de les icones de l'esquerra.",
"feature_files": "Gestor de fitxers",
"feature_files_desc": "Navegueu, pengeu, descarregueu i editeu fitxers a través de SFTP sense sortir de l'aplicació.",
"feature_tunnels": "Túnels",
"feature_tunnels_desc": "Reenvia ports a través d'un servidor per arribar a serveis que no estan exposats.",
"feature_snippets": "Fragments",
"feature_snippets_desc": "Desa les ordres que executes sovint i envia-les a un terminal amb un sol clic.",
"featuresRailHint": "No necessiteu cap d'aquestes? Amagueu qualsevol icona de la barra lateral a Configuració, a Navegació.",
@@ -449,7 +445,6 @@
"passwordSaved": "Contrasenya desada, escriu per canviar-la",
"key": "Clau",
"credential": "Credencial",
"none": "Cap",
"sshPrivateKey": "Clau privada SSH",
"keyType": "Tipus de clau",
"uploadFile": "Puja el fitxer",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Interval de manteniment (segons)",
"maxKeepaliveMisses": "Màxims errors de manteniment en directe",
"sameHost": "Aquest host (túnel directe)",
"bindHost": "Vincula l'amfitrió",
"connectionToolbar": "Barra d'eines de connexió",
"showConnectionToolbar": "Mostra la barra d'eines de connexió",
"showConnectionToolbarDesc": "Mostra la barra d'eines a les sessions SSH, RDP, VNC i Telnet d'aquest amfitrió. També la pots ocultar temporalment des de la barra d'eines.",
"proxmoxLastSyncStatus": {
"success": "Èxit"
},
"proxmoxGuestsSelected_one": "{{count}} convidat — {{selected}} seleccionat",
"proxmoxGuestsSelected_other": "{{count}} convidats — {{selected}} seleccionats",
"proxmoxImportButton_one": "Importa l'amfitrió {{count}}",
"proxmoxImportButton_other": "Importa els amfitrions {{count}}",
"proxmoxResultSkippedNoIp": "{{count}} omès (no s'ha trobat cap IP)",
"proxmoxStatsUrlCopied": "URL de les estadístiques de Proxmox copiada al porta-retalls",
"copyProxmoxStatsUrlAction": "Copia l'URL de les estadístiques de Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Amfitrions {{count}} actualitzats",
"friendlyNameLabel": "Nom amigable",
"descriptionLabel": "Descripció",
"loadingHost": "S'està carregant l'amfitrió...",
"loadingHosts": "S'estan carregant els amfitrions...",
"loadingCredentials": "S'estan carregant les credencials...",
"noHostsYet": "Encara no hi ha amfitrions",
"noHostsYetHint": "Afegeix un servidor per obrir terminals, navegar per fitxers i veure mètriques.",
"noHostsMatchSearch": "No hi ha amfitrions que coincideixin amb la teva cerca",
"hostNotFound": "No s'ha trobat l'amfitrió",
"searchHosts": "Cerca amfitrions...",
"sortHosts": "Ordena els hosts",
"sortDefault": "Ordre per defecte",
@@ -925,7 +913,6 @@
"filterAuthKey": "Clau SSH",
"filterAuthCredential": "Credencial",
"filterAuthNone": "Cap",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Pas CA",
"filterProtocolGroup": "Protocol",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Connecta't a l'amfitrió",
"clear": "Clar",
"paste": "Enganxa",
"connected": "Connectat",
"clipboardWriteFailed": "No s'ha pogut copiar al porta-retalls. Assegureu-vos que la pàgina es serveix per HTTPS o localhost.",
"clipboardReadFailed": "No s'ha pogut llegir del porta-retalls. Assegureu-vos que els permisos del porta-retalls estiguin concedits.",
"tmuxDetach": "Desconnecta de la sessió de tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Executant {{command}} - {{host}}",
"totpRequired": "Cal autenticació de dos factors",
"totpCodeLabel": "Codi de verificació",
"totpVerify": "Verifica",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Copia a l'amfitrió…",
"moveToHost": "Moure a l'amfitrió…",
"copyItemsToHost": "Copia els elements {{count}} a l'amfitrió…",
"moveItemsToHost": "Mou els elements {{count}} a l'amfitrió…",
"noHostsConnected": "No hi ha altres amfitrions de gestors de fitxers disponibles.",
"noHostsConnectedHint": "Afegiu un altre amfitrió SSH amb el Gestor de fitxers habilitat al Gestor d'amfitrions.",
"selectDestinationHost": "Selecciona l'amfitrió de destinació",
"destinationPath": "Camí de destinació",
"recentDestinations": "Destinacions recents",
"collapseRecentDestinations": "Replega les destinacions recents",
"expandRecentDestinations": "Expandeix les destinacions recents",
"browseFolders": "Navega per les carpetes de destinació",
"browseDestination": "Navega o introdueix la ruta",
"confirmCopy": "Còpia",
"confirmMove": "Moure",
"transferring": "Transferint…",
"progressVerifying": "Verificació de la integritat del fitxer…",
"progressBenchmarking": "Selecció de la ruta de transferència més ràpida…",
"compressing": "Comprimint…",
"extracting": "Extraient…",
"transferringItems": "Transferint {{current}} de {{total}} elements…",
"transferSuccess": "Transferència completada",
"transferError": "La transferència ha fallat",
"transferPartial": "Transferència completada amb errors {{count}}",
"transferPartialHint": "No s'ha pogut transferir: {{paths}}",
"itemsSummary": "{{count}} elements",
"destMustBeDirectory": "La destinació ha de ser un directori per a transferències de diversos elements",
"selectThisFolder": "Selecciona aquesta carpeta",
"browsePathWillBeCreated": "Aquesta carpeta encara no existeix. Es crearà quan comenci la transferència.",
"browsePathError": "No s'ha pogut obrir aquesta ruta a l'amfitrió de destinació.",
"goUp": "Puja",
"copyFolderToHost": "Copia la carpeta a l'amfitrió…",
"moveFolderToHost": "Mou la carpeta a l'amfitrió…",
"hostReady": "Llest",
"hostConnecting": "Connectant…",
"hostDisconnected": "No connectat",
"hostAuthRequired": "Cal autenticació: obriu primer el Gestor de fitxers en aquest amfitrió.",
"hostConnectionFailed": "La connexió ha fallat",
"metricsTitle": "Horaris de transferència",
"metricsPrepare": "Prepara la destinació: {{duration}}",
"metricsCompress": "Comprimir a la font: {{duration}}",
"metricsHopSourceRead": "Font → servidor: {{throughput}}",
"metricsHopDestSftpWrite": "Servidor → destí (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Servidor → destí (local): {{throughput}}",
"metricsTransfer": "Extrem a extrem: {{throughput}} ({{duration}})",
"metricsExtract": "Extracte a la destinació: {{duration}}",
"metricsVerify": "SHA-256 verificat: {{duration}}",
"metricsRouteBenchmark": "Sonda de ruta — directa: {{direct}}, relé: {{relay}}",
"metricsSourceDelete": "Elimina de la font: {{duration}}",
"metricsTotal": "Total: {{duration}}",
"progressCompressing": "Compressió a l'amfitrió d'origen…",
"progressExtracting": "Extraient a la destinació…",
"progressTransferring": "Transferència de dades…",
"progressReconnecting": "Reconnectant…",
"parallelSegmentsLabel": "Carrils de transferència paral·lels",
"parallelSegmentsOption": "carrils {{count}}",
"parallelSegmentsHint": "Els fitxers grans es divideixen en blocs de 256 MB. Els carrils múltiples utilitzen connexions separades (com ara iniciar diverses transferències) per a un rendiment total més alt.",
"progressTotalSpeed": "{{speed}} total ({{lanes}} carrils)",
"progressTransferringItems": "Transferència de fitxers ({{current}} de {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} fitxers",
"sourceNotDeletedPartial": "Fitxers font conservats (transferència parcial)",
"jumpHostLimitation": "Tots dos hosts han de ser accessibles des del servidor Termix. No s'admet l'encaminament directe d'host a host.",
"cancel": "Cancel·la",
"methodLabel": "Mètode de transferència",
"methodAuto": "Automàtic",
"methodTar": "Arxiu Tar",
"methodItemSftp": "SFTP per fitxer",
"methodAutoHint": "Tria SFTP tar o per fitxer en funció del nombre de fitxers, la mida i la compressibilitat. Els fitxers individuals sempre utilitzen SFTP en temps real.",
"methodTarHint": "Comprimir a l'origen, transferir un arxiu, extreure a la destinació. Requereix tar en ambdós hosts Unix.",
"methodItemSftpHint": "Transfereix cada fitxer individualment per SFTP. Funciona en tots els hosts, inclòs Windows.",
"methodPreviewLoading": "Càlcul del mètode de transferència…",
"methodPreviewError": "No s'ha pogut previsualitzar el mètode de transferència. El servidor encara triarà un mètode quan l'inicieu.",
"methodPreviewWillUseTar": "Utilitzarà: Arxiu Tar",
"methodPreviewWillUseItemSftp": "Utilitzarà: SFTP per fitxer",
"methodPreviewScanSummary": "{{fileCount}} fitxers, {{totalSize}} total (escanejats a l'amfitrió d'origen).",
"methodItemSftpLimitation": "Cada fitxer utilitza el mateix flux SFTP com una còpia d'un sol fitxer, un darrere l'altre. El progrés es combina en tots els fitxers, de manera que la barra es mou lentament durant els fitxers grans.",
"methodReason": {
"user_item_sftp": "Heu triat SFTP per fitxer.",
"user_tar": "Has triat l'arxiu tar.",
"tar_unavailable": "Tar no està disponible en un o tots dos hosts; s'utilitzarà SFTP per fitxer.",
"windows_host": "Hi ha un host de Windows implicat; no s'utilitza tar.",
"auto_multi_large": "Automàtic: diversos fitxers, inclòs un fitxer gran ({{largestSize}}) amb dades compressibles: paquets de fitxers tar en una sola transferència.",
"auto_single_large_in_archive": "Automàtic: un fitxer gran ({{largestSize}}) en aquest conjunt — SFTP per fitxer.",
"auto_many_incompressible": "Automàtic: dades majoritàriament incompressibles — SFTP per fitxer.",
"auto_many_files": "Automàtic: molts fitxers ({{fileCount}}) — tar redueix la sobrecàrrega per fitxer.",
"auto_default": "Automàtic: SFTP per fitxer per a aquest conjunt."
},
"progressCancel": "Cancel·la",
"progressCancelling": "Cancel·lant…",
"progressStalled": "Estancat",
"resumedHint": "S'ha tornat a connectar a una transferència activa iniciada en una altra finestra.",
"transferCancelled": "Transferència cancel·lada",
"transferCancelledCopyHint": "És possible que hi hagi fitxers parcials a la destinació.",
"transferCancelledMoveHint": "És possible que hi hagi fitxers parcials a la destinació. No s'han eliminat els fitxers d'origen.",
"cleanupDestFiles": "Neteja la destinació",
"cleanupDestFilesSuccess": "S'han eliminat fitxers parcials de la destinació",
"cleanupDestFilesPartial": "No s'han pogut eliminar alguns fitxers parcials",
"cleanupDestFilesNothing": "Res a netejar a la destinació",
"cleanupDestFilesError": "La neteja ha fallat",
"retryTransfer": "Torna-ho a intentar",
"retryTransferError": "No s'ha pogut reintentar.",
"transferFailedRetryHint": "S'han conservat dades parcials a la destinació. El reintent es reprendrà quan es restableixi la connexió."
"sourceNotDeletedPartial": "Fitxers font conservats (transferència parcial)"
},
"tunnels": {
"connect": "Connecta",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Túnel del client",
"addClientTunnel": "Afegeix un túnel de client",
"active": "Actiu",
"start": "Inici",
"stop": "Atura",
"typeServerLocalDesc": "De l'amfitrió actual al punt final.",
"typeServerRemoteDesc": "Punt final torna a l'amfitrió actual.",
"typeClientLocalDesc": "Ordinador local al punt final.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Taxa limitada: massa intents de verificació. Espereu {{time}} segons abans de tornar-ho a intentar.",
"authTokenSaveFailed": "No s'ha pogut desar el testimoni d'autenticació",
"authTokenMissing": "El servidor no ha retornat un testimoni d'autenticació nou. Si us plau, torneu a iniciar la sessió.",
"failedToLoadServer": "No s'ha pogut carregar el servidor",
"remoteServerRequired": "Cal un servidor remot. Connecteu un servidor remot a Configuració per utilitzar aquest tipus de connexió."
"failedToLoadServer": "No s'ha pogut carregar el servidor"
},
"messages": {
"registrationDisabled": "El registre de comptes nous està desactivat actualment per un administrador. Si us plau, inicia la sessió o contacta amb un administrador.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protocol",
"domainLabel": "Domini",
"domainPlaceholder": "opcional",
"connectToTerminal": "Connecta't al terminal",
"connectToFiles": "Connecta't a fitxers"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Vyberte si téma, barvu zvýraznění a jazyk. Všechny tři možnosti lze později změnit v Nastavení.",
"featuresTitle": "Co dalšího Termix dělá",
"featuresIntro": "Každý server, který uložíte, lze otevřít ve více než jen terminálu. Zde je to, co čeká za ikonami vlevo.",
"feature_files": "Správce souborů",
"feature_files_desc": "Procházejte, nahrávejte, stahujte a upravujte soubory přes SFTP, aniž byste museli opustit aplikaci.",
"feature_tunnels": "Tunely",
"feature_tunnels_desc": "Přesměrování portů přes server pro přístup ke službám, které nejsou vystaveny.",
"feature_snippets": "Úryvky",
"feature_snippets_desc": "Uložte si často spouštíné příkazy a odešlete je do terminálu jedním kliknutím.",
"featuresRailHint": "Nepotřebujete jeden z nich? Skrýt libovolnou ikonu z postranního panelu v Nastavení v části Navigace.",
@@ -449,7 +445,6 @@
"passwordSaved": "Heslo uloženo, zadejte heslo pro změnu",
"key": "Klíč",
"credential": "Pověření",
"none": "Žádný",
"sshPrivateKey": "Soukromý klíč SSH",
"keyType": "Typ klíče",
"uploadFile": "Nahrát soubor",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Interval udržování aktivity (sekundy)",
"maxKeepaliveMisses": "Max. chyb v Keepalive",
"sameHost": "Tento hostitel (přímý tunel)",
"bindHost": "Vázat hostitele",
"connectionToolbar": "Panel nástrojů pro připojení",
"showConnectionToolbar": "Zobrazit panel nástrojů pro připojení",
"showConnectionToolbarDesc": "Zobrazit panel nástrojů v relacích SSH, RDP, VNC a Telnet tohoto hostitele. Můžete jej také dočasně skrýt přímo v panelu nástrojů.",
"proxmoxLastSyncStatus": {
"success": "Úspěch"
},
"proxmoxGuestsSelected_one": "{{count}} host — {{selected}} vybráno",
"proxmoxGuestsSelected_other": "{{count}} hosté — {{selected}} vybráno",
"proxmoxImportButton_one": "Importovat hostitele {{count}}",
"proxmoxImportButton_other": "Importovat hostitele {{count}}",
"proxmoxResultSkippedNoIp": "{{count}} přeskočeno (nenalezena žádná IP adresa)",
"proxmoxStatsUrlCopied": "URL statistik Proxmoxu zkopírována do schránky",
"copyProxmoxStatsUrlAction": "Kopírovat URL statistik Proxmoxu",
@@ -896,13 +886,11 @@
"updatedCount": "Aktualizovaní hostitelé {{count}}",
"friendlyNameLabel": "Přátelský název",
"descriptionLabel": "Popis",
"loadingHost": "Načítání hostitele...",
"loadingHosts": "Načítání hostitelů...",
"loadingCredentials": "Načítání přihlašovacích údajů...",
"noHostsYet": "Zatím žádní hostitelé",
"noHostsYetHint": "Přidejte server pro otevírání terminálů, procházení souborů a zobrazení metrik.",
"noHostsMatchSearch": "Vašemu vyhledávání neodpovídají žádní hostitelé",
"hostNotFound": "Hostitel nenalezen",
"searchHosts": "Hledat hostitele...",
"sortHosts": "Seřadit hostitele",
"sortDefault": "Výchozí pořadí",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH klíč",
"filterAuthCredential": "Pověření",
"filterAuthNone": "Žádný",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Krok CA",
"filterProtocolGroup": "Protokol",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Připojení k hostiteli",
"clear": "Jasný",
"paste": "Pasta",
"connected": "Připojeno",
"clipboardWriteFailed": "Kopírování do schránky se nezdařilo. Ujistěte se, že stránka je zobrazována přes HTTPS nebo localhost.",
"clipboardReadFailed": "Čtení ze schránky se nezdařilo. Ujistěte se, že máte povolena přístup ke schránce.",
"tmuxDetach": "Odpojit se od relace tmux",
"terminalTitle": "Terminál - {{host}}",
"terminalWithPath": "Terminál - {{host}}:{{path}}",
"runTitle": "Spuštěno {{command}} - {{host}}",
"totpRequired": "Vyžadováno dvoufaktorové ověřování",
"totpCodeLabel": "Ověřovací kód",
"totpVerify": "Ověřit",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Kopírovat na hostitele…",
"moveToHost": "Přesunout na hostitele…",
"copyItemsToHost": "Zkopírovat {{count}} položek pro hostování…",
"moveItemsToHost": "Přesunout {{count}} položek na hostitele…",
"noHostsConnected": "Žádní další hostitelé souborů nejsou k dispozici.",
"noHostsConnectedHint": "Přidejte dalšího hostitele SSH s povoleným Správcem souborů ve Správci hostitelů.",
"selectDestinationHost": "Vyberte cílového hostitele",
"destinationPath": "Cílová cesta",
"recentDestinations": "Nedávné destinace",
"collapseRecentDestinations": "Sbalit nedávné cíle",
"expandRecentDestinations": "Rozbalit nedávné destinace",
"browseFolders": "Procházet cílové složky",
"browseDestination": "Procházet nebo zadat cestu",
"confirmCopy": "Kopie",
"confirmMove": "Pohyb",
"transferring": "Přenos…",
"progressVerifying": "Ověřování integrity souboru…",
"progressBenchmarking": "Výběr nejrychlejší trasy přestupu…",
"compressing": "Komprese…",
"extracting": "Extrahování…",
"transferringItems": "Přenos {{current}} z {{total}} položek…",
"transferSuccess": "Převod dokončen",
"transferError": "Přenos se nezdařil",
"transferPartial": "Přenos dokončen s {{count}} chybami",
"transferPartialHint": "Nepodařilo se přenést: {{paths}}",
"itemsSummary": "{{count}} položek",
"destMustBeDirectory": "Cíl musí být adresář pro přenosy více položek.",
"selectThisFolder": "Vyberte tuto složku",
"browsePathWillBeCreated": "Tato složka zatím neexistuje. Bude vytvořena po zahájení přenosu.",
"browsePathError": "Tuto cestu se nepodařilo otevřít na cílovém hostiteli.",
"goUp": "Jdi nahoru",
"copyFolderToHost": "Zkopírovat složku na hostitele…",
"moveFolderToHost": "Přesunout složku na hostitele…",
"hostReady": "Připraveno",
"hostConnecting": "Připojování…",
"hostDisconnected": "Nepřipojeno",
"hostAuthRequired": "Vyžadováno ověření – nejprve otevřete Správce souborů na tomto hostiteli.",
"hostConnectionFailed": "Připojení se nezdařilo",
"metricsTitle": "Časy přestupů",
"metricsPrepare": "Připravit cíl: {{duration}}",
"metricsCompress": "Komprimovat u zdroje: {{duration}}",
"metricsHopSourceRead": "Zdroj → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → cíl (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → cíl (lokální): {{throughput}}",
"metricsTransfer": "Konec od konce: {{throughput}} ({{duration}})",
"metricsExtract": "Extrahovat v cíli: {{duration}}",
"metricsVerify": "SHA-256 ověřeno: {{duration}}",
"metricsRouteBenchmark": "Sonda trasy — přímá: {{direct}}, relé: {{relay}}",
"metricsSourceDelete": "Odebrat ze zdroje: {{duration}}",
"metricsTotal": "Celkem: {{duration}}",
"progressCompressing": "Komprese na zdrojovém hostiteli…",
"progressExtracting": "Extrahování v cíli…",
"progressTransferring": "Přenos dat…",
"progressReconnecting": "Opětovné připojení…",
"parallelSegmentsLabel": "Paralelní přestupní pruhy",
"parallelSegmentsOption": "{{count}} jízdních pruhů",
"parallelSegmentsHint": "Velké soubory jsou rozděleny na bloky o velikosti 256 MB. Více linek používá samostatná připojení (například spuštění několika přenosů) pro vyšší celkovou propustnost.",
"progressTotalSpeed": "{{speed}} celkem ({{lanes}} pruhů)",
"progressTransferringItems": "Přenos souborů ({{current}} z {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} souborů",
"sourceNotDeletedPartial": "Zdrojové soubory zachovány (částečný přenos)",
"jumpHostLimitation": "Oba hostitelé musí být dosažitelné ze serveru Termix. Přímé směrování mezi hostiteli není podporováno.",
"cancel": "Zrušit",
"methodLabel": "Způsob přenosu",
"methodAuto": "Auto",
"methodTar": "Archiv Tar",
"methodItemSftp": "SFTP pro jednotlivé soubory",
"methodAutoHint": "Vybírá tar nebo SFTP pro jednotlivé soubory na základě počtu souborů, velikosti a komprimovatelnosti. Jednotlivé soubory vždy používají streamovaný SFTP.",
"methodTarHint": "Komprimace ve zdroji, přenos jednoho archivu, extrakce v cíli. Vyžaduje tar na obou unixových hostitelích.",
"methodItemSftpHint": "Přeneste každý soubor jednotlivě přes SFTP. Funguje na všech hostitelích včetně Windows.",
"methodPreviewLoading": "Výpočet metody převodu…",
"methodPreviewError": "Nepodařilo se zobrazit náhled metody přenosu. Server si metodu vybere i po spuštění.",
"methodPreviewWillUseTar": "Použiji: archiv Tar",
"methodPreviewWillUseItemSftp": "Použije se: SFTP pro jednotlivé soubory",
"methodPreviewScanSummary": "{{fileCount}} souborů, {{totalSize}} celkem (naskenováno na zdrojovém hostiteli).",
"methodItemSftpLimitation": "Každý soubor používá stejný SFTP stream jako kopie jednoho souboru, jeden po druhém. Průběh je sloučen napříč všemi soubory, takže se ukazatel u velkých souborů pohybuje pomalu.",
"methodReason": {
"user_item_sftp": "Zvolili jste SFTP pro jednotlivé soubory.",
"user_tar": "Zvolili jste archiv tar.",
"tar_unavailable": "Tar není k dispozici na jednom nebo obou hostitelích — místo toho bude použit protokol SFTP pro jednotlivé soubory.",
"windows_host": "Je zapojen hostitelský systém Windows – tar se nepoužívá.",
"auto_multi_large": "Automaticky: více souborů včetně velkého souboru ({{largestSize}}) s komprimovatelnými daty — tar se sbalí do jednoho přenosu.",
"auto_single_large_in_archive": "Automaticky: jeden velký soubor ({{largestSize}}) v této sadě – SFTP pro každý soubor.",
"auto_many_incompressible": "Auto: většinou nekomprimovatelná data – SFTP pro jednotlivé soubory.",
"auto_many_files": "Automaticky: mnoho souborů ({{fileCount}}) – tar snižuje režii pro každý soubor.",
"auto_default": "Automaticky: SFTP pro jednotlivé soubory pro tuto sadu."
},
"progressCancel": "Zrušit",
"progressCancelling": "Zrušení…",
"progressStalled": "Zastaveno",
"resumedHint": "Znovu připojeno k aktivnímu přenosu zahájenému v jiném okně.",
"transferCancelled": "Převod zrušen",
"transferCancelledCopyHint": "V cílovém úložišti mohou zůstat jen částečné soubory.",
"transferCancelledMoveHint": "V cílovém umístění mohou zůstat jen některé soubory. Zdrojové soubory nebyly odstraněny.",
"cleanupDestFiles": "Vyčistit cíl",
"cleanupDestFilesSuccess": "Z cílového umístění byly odstraněny částečné soubory.",
"cleanupDestFilesPartial": "Některé částečné soubory se nepodařilo odstranit.",
"cleanupDestFilesNothing": "Na cílové destinaci není co uklízet",
"cleanupDestFilesError": "Vyčištění se nezdařilo",
"retryTransfer": "Zkusit znovu",
"retryTransferError": "Opakovaný pokus se nezdařil",
"transferFailedRetryHint": "V cíli byla uložena částečná data. Po obnovení připojení bude pokus pokračovat."
"sourceNotDeletedPartial": "Zdrojové soubory zachovány (částečný přenos)"
},
"tunnels": {
"connect": "Připojit",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Klientský tunel",
"addClientTunnel": "Přidat klientský tunel",
"active": "Aktivní",
"start": "Start",
"stop": "Zastávka",
"typeServerLocalDesc": "Aktuální hostitel ke koncovému bodu.",
"typeServerRemoteDesc": "Koncový bod zpět k aktuálnímu hostiteli.",
"typeClientLocalDesc": "Místní počítač ke koncovému bodu.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Omezená rychlost: Příliš mnoho pokusů o ověření. Před dalším pokusem prosím počkejte {{time}} sekund.",
"authTokenSaveFailed": "Uložení ověřovacího tokenu se nezdařilo",
"authTokenMissing": "Server nevrátil nový ověřovací token. Přihlaste se prosím znovu.",
"failedToLoadServer": "Nepodařilo se načíst server",
"remoteServerRequired": "Je vyžadován vzdálený server. Pro použití tohoto typu připojení se připojte ke vzdálenému serveru v Nastavení."
"failedToLoadServer": "Nepodařilo se načíst server"
},
"messages": {
"registrationDisabled": "Registrace nového účtu je momentálně zakázána administrátorem. Přihlaste se prosím nebo kontaktujte administrátora.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokol",
"domainLabel": "Doména",
"domainPlaceholder": "volitelný",
"connectToTerminal": "Připojení k terminálu",
"connectToFiles": "Připojení k souborům"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Vælg et tema, en accentfarve og dit sprog. Alle tre kan ændres senere i Indstillinger.",
"featuresTitle": "Hvad Termix ellers gør",
"featuresIntro": "Hver server, du gemmer, kan åbnes i mere end én terminal. Her er, hvad der venter bag ikonerne til venstre.",
"feature_files": "Filhåndtering",
"feature_files_desc": "Gennemse, upload, download og rediger filer via SFTP uden at forlade appen.",
"feature_tunnels": "Tunneler",
"feature_tunnels_desc": "Videresend porte via en server for at nå tjenester, der ikke er eksponerede.",
"feature_snippets": "Uddrag",
"feature_snippets_desc": "Gem kommandoer, du kører ofte, og send dem til en terminal med et enkelt klik.",
"featuresRailHint": "Har du ikke brug for en af disse? Skjul et hvilket som helst ikon fra sidebjælken i Indstillinger under Navigation.",
@@ -449,7 +445,6 @@
"passwordSaved": "Adgangskode gemt, skriv for at ændre",
"key": "Nøgle",
"credential": "Legitimationsoplysninger",
"none": "Ingen",
"sshPrivateKey": "SSH privat nøgle",
"keyType": "Nøgletype",
"uploadFile": "Upload fil",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Keepalive-interval (sekunder)",
"maxKeepaliveMisses": "Max Keepalive misser",
"sameHost": "Denne vært (direkte tunnel)",
"bindHost": "Bind vært",
"connectionToolbar": "Forbindelsesværktøjslinje",
"showConnectionToolbar": "Vis forbindelsesværktøjslinjen",
"showConnectionToolbarDesc": "Vis værktøjslinjen i denne værts SSH-, RDP-, VNC- og Telnet-sessioner. Du kan også skjule den midlertidigt fra selve værktøjslinjen.",
"proxmoxLastSyncStatus": {
"success": "Succes"
},
"proxmoxGuestsSelected_one": "{{count}} gæst — {{selected}} valgt",
"proxmoxGuestsSelected_other": "{{count}} gæster — {{selected}} valgt",
"proxmoxImportButton_one": "Importér {{count}} vært",
"proxmoxImportButton_other": "Importér {{count}} værter",
"proxmoxResultSkippedNoIp": "{{count}} sprunget over (ingen IP fundet)",
"proxmoxStatsUrlCopied": "Proxmox Stats URL kopieret til udklipsholder",
"copyProxmoxStatsUrlAction": "Kopiér Proxmox Stats URL",
@@ -896,13 +886,11 @@
"updatedCount": "Opdaterede {{count}} værter",
"friendlyNameLabel": "Venligt navn",
"descriptionLabel": "Beskrivelse",
"loadingHost": "Indlæser vært...",
"loadingHosts": "Indlæser værter...",
"loadingCredentials": "Indlæser loginoplysninger...",
"noHostsYet": "Ingen værter endnu",
"noHostsYetHint": "Tilføj en server for at åbne terminaler, gennemse filer og se målinger.",
"noHostsMatchSearch": "Ingen værter matcher din søgning",
"hostNotFound": "Værten blev ikke fundet",
"searchHosts": "Søg efter værter...",
"sortHosts": "Sortér værter",
"sortDefault": "Standardordre",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-nøgle",
"filterAuthCredential": "Legitimationsoplysninger",
"filterAuthNone": "Ingen",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Trin CA",
"filterProtocolGroup": "Protokol",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Opret forbindelse til vært",
"clear": "Klar",
"paste": "Indsæt",
"connected": "Forbundet",
"clipboardWriteFailed": "Kunne ikke kopiere til udklipsholder. Sørg for, at siden serveres via HTTPS eller localhost.",
"clipboardReadFailed": "Kunne ikke læse fra udklipsholderen. Sørg for, at der er givet tilladelse til udklipsholderen.",
"tmuxDetach": "Afbryd forbindelsen til tmux-sessionen",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Kører {{command}} - {{host}}",
"totpRequired": "Tofaktorgodkendelse påkrævet",
"totpCodeLabel": "Bekræftelseskode",
"totpVerify": "Verificere",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Kopiér til vært…",
"moveToHost": "Flyt til vært…",
"copyItemsToHost": "Kopiér {{count}} elementer til at være vært for…",
"moveItemsToHost": "Flyt {{count}} elementer til at være vært for…",
"noHostsConnected": "Ingen andre filhåndteringsværter tilgængelige.",
"noHostsConnectedHint": "Tilføj en anden SSH-vært med Filhåndtering aktiveret i Værtshåndtering.",
"selectDestinationHost": "Vælg destinationsvært",
"destinationPath": "Destinationssti",
"recentDestinations": "Seneste destinationer",
"collapseRecentDestinations": "Skjul de seneste destinationer",
"expandRecentDestinations": "Udvid de seneste destinationer",
"browseFolders": "Gennemse destinationsmapper",
"browseDestination": "Gennemse eller indtast sti",
"confirmCopy": "Kopi",
"confirmMove": "Flytte",
"transferring": "Overfører…",
"progressVerifying": "Bekræfter filintegritet…",
"progressBenchmarking": "Valg af den hurtigste overførselsrute…",
"compressing": "Komprimering…",
"extracting": "Udtrækker…",
"transferringItems": "Overførsel af {{current}} af {{total}} elementer…",
"transferSuccess": "Overførsel fuldført",
"transferError": "Overførslen mislykkedes",
"transferPartial": "Overførsel fuldført med {{count}} fejl",
"transferPartialHint": "Kunne ikke overføre: {{paths}}",
"itemsSummary": "{{count}} elementer",
"destMustBeDirectory": "Destinationen skal være en mappe for overførsler af flere elementer",
"selectThisFolder": "Vælg denne mappe",
"browsePathWillBeCreated": "Denne mappe findes ikke endnu. Den vil blive oprettet, når overførslen starter.",
"browsePathError": "Kunne ikke åbne denne sti på destinationsværten.",
"goUp": "Gå op",
"copyFolderToHost": "Kopiér mappe til vært…",
"moveFolderToHost": "Flyt mappe til vært…",
"hostReady": "Parat",
"hostConnecting": "Forbinder…",
"hostDisconnected": "Ikke forbundet",
"hostAuthRequired": "Godkendelse kræves — åbn først Filhåndtering på denne vært",
"hostConnectionFailed": "Forbindelsen mislykkedes",
"metricsTitle": "Overførselstider",
"metricsPrepare": "Forbered destination: {{duration}}",
"metricsCompress": "Komprimer på kilde: {{duration}}",
"metricsHopSourceRead": "Kilde → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → destination (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → destination (lokal): {{throughput}}",
"metricsTransfer": "End-to-end: {{throughput}} ({{duration}})",
"metricsExtract": "Udtræk på destination: {{duration}}",
"metricsVerify": "SHA-256 verificeret: {{duration}}",
"metricsRouteBenchmark": "Rutesonde — direkte: {{direct}}, relæ: {{relay}}",
"metricsSourceDelete": "Fjern fra kilde: {{duration}}",
"metricsTotal": "I alt: {{duration}}",
"progressCompressing": "Komprimering på kildevært…",
"progressExtracting": "Udpakning på destination…",
"progressTransferring": "Overførsel af data…",
"progressReconnecting": "Genopretter forbindelse…",
"parallelSegmentsLabel": "Parallelle overførselsbaner",
"parallelSegmentsOption": "{{count}} baner",
"parallelSegmentsHint": "Store filer opdeles i bidder på 256 MB. Flere baner bruger separate forbindelser (f.eks. at starte flere overførsler) for at opnå en højere samlet gennemløbshastighed.",
"progressTotalSpeed": "{{speed}} i alt ({{lanes}} baner)",
"progressTransferringItems": "Overførsel af filer ({{current}} af {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} filer",
"sourceNotDeletedPartial": "Kildefiler gemt (delvis overførsel)",
"jumpHostLimitation": "Begge værter skal kunne nås fra Termix-serveren. Direkte vært-til-vært-routing understøttes ikke.",
"cancel": "Ophæve",
"methodLabel": "Overførselsmetode",
"methodAuto": "Bil",
"methodTar": "Tar-arkiv",
"methodItemSftp": "SFTP pr. fil",
"methodAutoHint": "Vælger tar eller SFTP pr. fil baseret på antal filer, størrelse og komprimerbarhed. Enkeltfiler bruger altid streaming SFTP.",
"methodTarHint": "Komprimer ved kildekode, overfør ét arkiv, udpak ved destination. Kræver tar på begge Unix-værter.",
"methodItemSftpHint": "Overfør hver fil individuelt via SFTP. Fungerer på alle værter, inklusive Windows.",
"methodPreviewLoading": "Beregning af overførselsmetode…",
"methodPreviewError": "Kunne ikke forhåndsvise overførselsmetoden. Serveren vil stadig vælge en metode, når du starter.",
"methodPreviewWillUseTar": "Vil bruge: Tar-arkiv",
"methodPreviewWillUseItemSftp": "Vil bruge: SFTP pr. fil",
"methodPreviewScanSummary": "{{fileCount}} filer, {{totalSize}} i alt (scannet på kildevært).",
"methodItemSftpLimitation": "Hver fil bruger den samme SFTP-strøm som en enkelt filkopi, én efter én. Status kombineres på tværs af alle filer, så bjælken bevæger sig langsomt under store filer.",
"methodReason": {
"user_item_sftp": "Du valgte SFTP pr. fil.",
"user_tar": "Du valgte tar-arkivet.",
"tar_unavailable": "Tar er ikke tilgængelig på en eller begge værter — SFTP pr. fil vil blive brugt i stedet.",
"windows_host": "En Windows-vært er involveret — tar bruges ikke.",
"auto_multi_large": "Auto: flere filer inklusive en stor fil ({{largestSize}}) med komprimerbare data — tar samler filer i én overførsel.",
"auto_single_large_in_archive": "Auto: én stor fil ({{largestSize}}) i dette sæt — SFTP pr. fil.",
"auto_many_incompressible": "Auto: for det meste inkomprimerbare data — SFTP pr. fil.",
"auto_many_files": "Auto: mange filer ({{fileCount}}) — tar reducerer overhead pr. fil.",
"auto_default": "Auto: SFTP pr. fil for dette sæt."
},
"progressCancel": "Ophæve",
"progressCancelling": "Annullerer…",
"progressStalled": "Standset",
"resumedHint": "Genoprettet forbindelse til en aktiv overførsel, der er startet i et andet vindue.",
"transferCancelled": "Overførsel annulleret",
"transferCancelledCopyHint": "Delvise filer kan forblive på destinationen.",
"transferCancelledMoveHint": "Delvise filer kan forblive på destinationen. Kildefilerne blev ikke fjernet.",
"cleanupDestFiles": "Oprydningsdestination",
"cleanupDestFilesSuccess": "Fjernede delvise filer fra destinationen",
"cleanupDestFilesPartial": "Nogle delvise filer kunne ikke fjernes",
"cleanupDestFilesNothing": "Intet at rydde op på destinationen",
"cleanupDestFilesError": "Oprydning mislykkedes",
"retryTransfer": "Prøv igen",
"retryTransferError": "Genforsøg mislykkedes",
"transferFailedRetryHint": "Delvise data blev gemt på destinationen. Forsøget genoptages, når forbindelsen er tilbage."
"sourceNotDeletedPartial": "Kildefiler gemt (delvis overførsel)"
},
"tunnels": {
"connect": "Forbinde",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Klienttunnel",
"addClientTunnel": "Tilføj klienttunnel",
"active": "Aktiv",
"start": "Starte",
"stop": "Stop",
"typeServerLocalDesc": "Nuværende vært til slutpunkt.",
"typeServerRemoteDesc": "Slutpunkt tilbage til nuværende vært.",
"typeClientLocalDesc": "Lokal computer til slutpunkt.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Begrænset hastighed: For mange bekræftelsesforsøg. Vent {{time}} sekunder, før du prøver igen.",
"authTokenSaveFailed": "Kunne ikke gemme godkendelsestoken",
"authTokenMissing": "Serveren returnerede ikke et nyt godkendelsestoken. Log venligst ind igen.",
"failedToLoadServer": "Kunne ikke indlæse serveren",
"remoteServerRequired": "Fjernserver kræves. Opret forbindelse til en fjernserver i Indstillinger for at bruge denne forbindelsestype."
"failedToLoadServer": "Kunne ikke indlæse serveren"
},
"messages": {
"registrationDisabled": "Registrering af nye kontoer er i øjeblikket deaktiveret af en administrator. Log venligst ind eller kontakt en administrator.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokol",
"domainLabel": "Domæne",
"domainPlaceholder": "valgfri",
"connectToTerminal": "Opret forbindelse til terminalen",
"connectToFiles": "Opret forbindelse til filer"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Wählen Sie ein Design, eine Akzentfarbe und Ihre Sprache. Alle drei können später in den Einstellungen geändert werden.",
"featuresTitle": "Was Termix sonst noch tut",
"featuresIntro": "Jeder gespeicherte Server kann in mehr als nur einem Terminal geöffnet werden. Hier ist, was sich hinter den Symbolen auf der linken Seite verbirgt.",
"feature_files": "Dateimanager",
"feature_files_desc": "Durchsuchen, hochladen, herunterladen und bearbeiten Sie Dateien über SFTP, ohne die App zu verlassen.",
"feature_tunnels": "Tunnel",
"feature_tunnels_desc": "Leiten Sie Ports über einen Server weiter, um Dienste zu erreichen, die nicht öffentlich zugänglich sind.",
"feature_snippets": "Ausschnitte",
"feature_snippets_desc": "Speichern Sie häufig ausgeführte Befehle und senden Sie sie mit einem Klick an ein Terminal.",
"featuresRailHint": "Sie benötigen keines dieser Symbole? Blenden Sie beliebige Symbole in der Seitenleiste unter Einstellungen > Navigation aus.",
@@ -449,7 +445,6 @@
"passwordSaved": "Passwort gespeichert, zum Ändern eingeben",
"key": "Schlüssel",
"credential": "Anmeldedaten",
"none": "Keine",
"sshPrivateKey": "Privater SSH-Schlüssel",
"keyType": "Schlüsseltyp",
"uploadFile": "Datei hochladen",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Keepalive-Intervall (Sekunden)",
"maxKeepaliveMisses": "Max. Keepalive-Fehlschläge",
"sameHost": "Dieser Host (direkter Tunnel)",
"bindHost": "Bind-Host",
"connectionToolbar": "Verbindungssymbolleiste",
"showConnectionToolbar": "Verbindungssymbolleiste anzeigen",
"showConnectionToolbarDesc": "Die Symbolleiste wird in den SSH-, RDP-, VNC- und Telnet-Sitzungen dieses Hosts angezeigt. Sie kann auch vorübergehend in der Symbolleiste selbst ausgeblendet werden.",
"proxmoxLastSyncStatus": {
"success": "Erfolg"
},
"proxmoxGuestsSelected_one": "{{count}} Gast — {{selected}} ausgewählt",
"proxmoxGuestsSelected_other": "{{count}} Gäste — {{selected}} ausgewählt",
"proxmoxImportButton_one": "{{count}} Host importieren",
"proxmoxImportButton_other": "{{count}} Hosts importieren",
"proxmoxResultSkippedNoIp": "{{count}} übersprungen (keine IP-Adresse gefunden)",
"proxmoxStatsUrlCopied": "Proxmox-Statistik-URL in die Zwischenablage kopiert",
"copyProxmoxStatsUrlAction": "Proxmox-Statistik-URL kopieren",
@@ -896,13 +886,11 @@
"updatedCount": "{{count}} Hosts aktualisiert",
"friendlyNameLabel": "Anzeigename",
"descriptionLabel": "Beschreibung",
"loadingHost": "Host wird geladen...",
"loadingHosts": "Hosts werden geladen...",
"loadingCredentials": "Anmeldedaten werden geladen...",
"noHostsYet": "Noch keine Hosts",
"noHostsYetHint": "Füge einen Server hinzu, um Terminals zu öffnen, Dateien zu durchsuchen und Metriken anzuzeigen.",
"noHostsMatchSearch": "Keine Hosts entsprechen Ihrer Suche",
"hostNotFound": "Host nicht gefunden",
"searchHosts": "Hosts suchen...",
"sortHosts": "Hosts sortieren",
"sortDefault": "Standardreihenfolge",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-Schlüssel",
"filterAuthCredential": "Anmeldeinformation",
"filterAuthNone": "Keine",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Schritt CA",
"filterProtocolGroup": "Protokoll",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Mit Host verbinden",
"clear": "Löschen",
"paste": "Einfügen",
"connected": "Verbunden",
"clipboardWriteFailed": "Kopieren in die Zwischenablage fehlgeschlagen. Stellen Sie sicher, dass die Seite über HTTPS oder localhost bereitgestellt wird.",
"clipboardReadFailed": "Lesen aus der Zwischenablage fehlgeschlagen. Stellen Sie sicher, dass die Zwischenablageberechtigungen erteilt wurden.",
"tmuxDetach": "Von tmux-Sitzung trennen",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Ausführung: {{command}} - {{host}}",
"totpRequired": "Zwei-Faktor-Authentifizierung erforderlich",
"totpCodeLabel": "Verifizierungscode",
"totpVerify": "Verifizieren",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Auf Host kopieren…",
"moveToHost": "Auf Host verschieben…",
"copyItemsToHost": "{{count}} Elemente auf Host kopieren…",
"moveItemsToHost": "{{count}} Elemente zum Host verschieben…",
"noHostsConnected": "Keine weiteren Dateimanager-Hosts verfügbar.",
"noHostsConnectedHint": "Fügen Sie einen weiteren SSH-Host mit aktiviertem Dateimanager im Host-Manager hinzu.",
"selectDestinationHost": "Zielhost auswählen",
"destinationPath": "Zielpfad",
"recentDestinations": "Letzte Ziele",
"collapseRecentDestinations": "Letzte Ziele einklappen",
"expandRecentDestinations": "Letzte Ziele ausklappen",
"browseFolders": "Zielordner durchsuchen",
"browseDestination": "Pfad durchsuchen oder eingeben",
"confirmCopy": "Kopieren",
"confirmMove": "Verschieben",
"transferring": "Übertragen …",
"progressVerifying": "Dateiintegrität wird überprüft…",
"progressBenchmarking": "Auswahl der schnellsten Transferroute…",
"compressing": "Komprimieren …",
"extracting": "Entpacken …",
"transferringItems": "{{current}} von {{total}} Elementen übertragen …",
"transferSuccess": "Übertragung abgeschlossen",
"transferError": "Übertragung fehlgeschlagen",
"transferPartial": "Übertragung mit {{count}} Fehlern abgeschlossen",
"transferPartialHint": "Konnte nicht übertragen werden: {{paths}}",
"itemsSummary": "{{count}} Elemente",
"destMustBeDirectory": "Bei Übertragung mehrerer Elemente muss das Ziel ein Verzeichnis sein.",
"selectThisFolder": "Diesen Ordner auswählen",
"browsePathWillBeCreated": "Dieser Ordner existiert noch nicht. Er wird beim Start der Übertragung erstellt.",
"browsePathError": "Dieser Pfad konnte auf dem Zielhost nicht geöffnet werden.",
"goUp": "Nach oben",
"copyFolderToHost": "Ordner zum Host kopieren …",
"moveFolderToHost": "Ordner zum Host verschieben …",
"hostReady": "Bereit",
"hostConnecting": "Verbinden …",
"hostDisconnected": "Nicht verbunden",
"hostAuthRequired": "Authentifizierung erforderlich — öffnen Sie zuerst den Dateimanager auf diesem Host",
"hostConnectionFailed": "Verbindung fehlgeschlagen",
"metricsTitle": "Übertragungszeiten",
"metricsPrepare": "Ziel vorbereiten: {{duration}}",
"metricsCompress": "Komprimieren auf der Quelle: {{duration}}",
"metricsHopSourceRead": "Quelle → Server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → Ziel (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → Ziel (lokal): {{throughput}}",
"metricsTransfer": "Ende-zu-Ende: {{throughput}} ({{duration}})",
"metricsExtract": "Entpacken auf dem Ziel: {{duration}}",
"metricsVerify": "SHA-256 verifiziert: {{duration}}",
"metricsRouteBenchmark": "Routenprüfung — direkt: {{direct}}, Relay: {{relay}}",
"metricsSourceDelete": "Löschen von der Quelle: {{duration}}",
"metricsTotal": "Gesamt: {{duration}}",
"progressCompressing": "Komprimieren auf dem Quellhost…",
"progressExtracting": "Entpacken auf dem Zielhost…",
"progressTransferring": "Daten übertragen…",
"progressReconnecting": "Neu verbinden…",
"parallelSegmentsLabel": "Parallele Übertragungskanäle",
"parallelSegmentsOption": "{{count}} Kanäle",
"parallelSegmentsHint": "Große Dateien werden in 256-MB-Blöcke aufgeteilt. Mehrere Kanäle verwenden eigene Verbindungen (ähnlich wie mehrere gleichzeitige Übertragungen) für einen höheren Gesamtdurchsatz.",
"progressTotalSpeed": "{{speed}} gesamt ({{lanes}} Kanäle)",
"progressTransferringItems": "Übertragen von Dateien ({{current}} von {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} Dateien",
"sourceNotDeletedPartial": "Quelldateien beibehalten (teilweise Übertragung)",
"jumpHostLimitation": "Beide Hosts müssen vom Termix-Server aus erreichbar sein. Direktes Host-zu-Host-Routing wird nicht unterstützt.",
"cancel": "Abbrechen",
"methodLabel": "Übertragungsmethode",
"methodAuto": "Automatisch",
"methodTar": "Tar-Archiv",
"methodItemSftp": "Dateiweise SFTP",
"methodAutoHint": "Wählt Tar-Archiv oder dateiweise SFTP basierend auf Dateianzahl, Größe und Komprimierbarkeit. Einzelne Dateien verwenden immer Streaming-SFTP.",
"methodTarHint": "Komprimieren auf der Quelle, ein Archiv übertragen, auf dem Ziel entpacken. Erfordert tar auf beiden Unix-Hosts.",
"methodItemSftpHint": "Jede Datei einzeln per SFTP übertragen. Funktioniert auf allen Hosts einschließlich Windows.",
"methodPreviewLoading": "Übertragungsmethode wird berechnet…",
"methodPreviewError": "Vorschau der Übertragungsmethode nicht möglich. Der Server wählt beim Start trotzdem eine Methode.",
"methodPreviewWillUseTar": "Verwendet: Tar-Archiv",
"methodPreviewWillUseItemSftp": "Verwendet: Dateiweise SFTP",
"methodPreviewScanSummary": "{{fileCount}} Dateien, {{totalSize}} gesamt (auf Quellhost gescannt).",
"methodItemSftpLimitation": "Jede Datei verwendet denselben SFTP-Stream wie bei einer Einzeldatei-Kopie, eine nach der anderen. Der Fortschritt wird über alle Dateien kombiniert, sodass der Balken bei großen Dateien nur langsam voranschreitet.",
"methodReason": {
"user_item_sftp": "Sie haben dateiweises SFTP ausgewählt.",
"user_tar": "Sie haben tar-Archiv ausgewählt.",
"tar_unavailable": "Tar ist auf einem oder beiden Hosts nicht verfügbar – stattdessen wird dateiweises SFTP verwendet.",
"windows_host": "Ein Windows-Host ist beteiligt – tar wird nicht verwendet.",
"auto_multi_large": "Automatisch: mehrere Dateien, darunter eine große Datei ({{largestSize}}) mit komprimierbaren Daten – tar bündelt sie in eine Übertragung.",
"auto_single_large_in_archive": "Automatisch: eine große Datei ({{largestSize}}) in diesem Satz – dateiweises SFTP.",
"auto_many_incompressible": "Automatisch: überwiegend nicht komprimierbare Daten – dateiweises SFTP.",
"auto_many_files": "Automatisch: viele Dateien ({{fileCount}}) – tar reduziert den Overhead pro Datei.",
"auto_default": "Automatisch: dateiweises SFTP für diesen Satz."
},
"progressCancel": "Abbrechen",
"progressCancelling": "Wird abgebrochen…",
"progressStalled": "Stockt",
"resumedHint": "Erneut mit einer aktiven Übertragung verbunden, die in einem anderen Fenster gestartet wurde.",
"transferCancelled": "Übertragung abgebrochen",
"transferCancelledCopyHint": "Unvollständige Dateien können am Zielort verbleiben.",
"transferCancelledMoveHint": "Unvollständige Dateien können am Zielort verbleiben. Quelldateien wurden nicht entfernt.",
"cleanupDestFiles": "Ziel bereinigen",
"cleanupDestFilesSuccess": "Unvollständige Dateien vom Ziel entfernt.",
"cleanupDestFilesPartial": "Einige unvollständige Dateien konnten nicht entfernt werden.",
"cleanupDestFilesNothing": "Nichts zum Bereinigen am Ziel.",
"cleanupDestFilesError": "Bereinigung fehlgeschlagen.",
"retryTransfer": "Wiederholen",
"retryTransferError": "Wiederholung fehlgeschlagen.",
"transferFailedRetryHint": "Unvollständige Daten wurden am Ziel beibehalten. Die Wiederholung wird fortgesetzt, sobald die Verbindung wiederhergestellt ist."
"sourceNotDeletedPartial": "Quelldateien beibehalten (teilweise Übertragung)"
},
"tunnels": {
"connect": "Verbinden",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Client-Tunnel",
"addClientTunnel": "Client-Tunnel hinzufügen",
"active": "Aktiv",
"start": "Start",
"stop": "Stop",
"typeServerLocalDesc": "Vom aktuellen Host zum Endpunkt.",
"typeServerRemoteDesc": "Vom Endpunkt zurück zum aktuellen Host.",
"typeClientLocalDesc": "Vom lokalen Computer zum Endpunkt.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Ratenbegrenzung: Zu viele Verifizierungsversuche. Bitte warten Sie {{time}} Sekunden, bevor Sie es erneut versuchen.",
"authTokenSaveFailed": "Fehler beim Speichern des Authentifizierungstokens",
"authTokenMissing": "Der Server hat kein neues Authentifizierungstoken zurückgegeben. Bitte melden Sie sich erneut an.",
"failedToLoadServer": "Server konnte nicht geladen werden",
"remoteServerRequired": "Remote-Server erforderlich. Um diesen Verbindungstyp zu verwenden, verbinden Sie einen Remote-Server in den Einstellungen."
"failedToLoadServer": "Server konnte nicht geladen werden"
},
"messages": {
"registrationDisabled": "Die Registrierung neuer Konten ist derzeit durch einen Administrator deaktiviert. Bitte melden Sie sich an oder wenden Sie sich an einen Administrator.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokoll",
"domainLabel": "Domain",
"domainPlaceholder": "optional",
"connectToTerminal": "Mit Terminal verbinden",
"connectToFiles": "Mit Dateien verbinden"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Επιλέξτε ένα θέμα, ένα χρώμα έμφασης και τη γλώσσα σας. Και τα τρία μπορούν να αλλάξουν αργότερα στις Ρυθμίσεις.",
"featuresTitle": "Τι άλλο κάνει το Termix;",
"featuresIntro": "Κάθε διακομιστής που αποθηκεύετε μπορεί να ανοιχτεί σε περισσότερα από ένα τερματικά. Δείτε τι σας περιμένει πίσω από τα εικονίδια στα αριστερά.",
"feature_files": "Διαχειριστής αρχείων",
"feature_files_desc": "Περιηγηθείτε, ανεβάστε, κατεβάστε και επεξεργαστείτε αρχεία μέσω SFTP χωρίς να φύγετε από την εφαρμογή.",
"feature_tunnels": "Σήραγγες",
"feature_tunnels_desc": "Προώθηση θυρών μέσω ενός διακομιστή για πρόσβαση σε υπηρεσίες που δεν είναι εκτεθειμένες.",
"feature_snippets": "Αποσπάσματα",
"feature_snippets_desc": "Αποθηκεύστε τις εντολές που εκτελείτε συχνά και στείλτε τις σε ένα τερματικό με ένα κλικ.",
"featuresRailHint": "Δεν χρειάζεστε κάποιο από αυτά; Αποκρύψτε οποιοδήποτε εικονίδιο από την πλαϊνή γραμμή στις Ρυθμίσεις, στην περιοχή Πλοήγηση.",
@@ -449,7 +445,6 @@
"passwordSaved": "Ο κωδικός πρόσβασης αποθηκεύτηκε, πληκτρολογήστε για να τον αλλάξετε",
"key": "Κλειδί",
"credential": "Πιστοποιητικό",
"none": "Κανένας",
"sshPrivateKey": "Ιδιωτικό κλειδί SSH",
"keyType": "Τύπος κλειδιού",
"uploadFile": "Μεταφόρτωση αρχείου",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Διάστημα διατήρησης ζωντανής λειτουργίας (δευτερόλεπτα)",
"maxKeepaliveMisses": "Ο Max Keepalive αστοχεί",
"sameHost": "Αυτός ο κεντρικός υπολογιστής (άμεση σήραγγα)",
"bindHost": "Bind Host",
"connectionToolbar": "Γραμμή εργαλείων σύνδεσης",
"showConnectionToolbar": "Εμφάνιση γραμμής εργαλείων σύνδεσης",
"showConnectionToolbarDesc": "Εμφάνιση της γραμμής εργαλείων στις συνεδρίες SSH, RDP, VNC και Telnet αυτού του κεντρικού υπολογιστή. Μπορείτε επίσης να την αποκρύψετε προσωρινά από την ίδια τη γραμμή εργαλείων.",
"proxmoxLastSyncStatus": {
"success": "Επιτυχία"
},
"proxmoxGuestsSelected_one": "{{count}} επισκέπτης — {{selected}} επιλεγμένος",
"proxmoxGuestsSelected_other": "{{count}} επισκέπτες — {{selected}} επιλεγμένοι",
"proxmoxImportButton_one": "Εισαγωγή κεντρικού υπολογιστή {{count}}",
"proxmoxImportButton_other": "Εισαγωγή {{count}} κεντρικών υπολογιστών",
"proxmoxResultSkippedNoIp": "{{count}} παραλείφθηκε (δεν βρέθηκε IP)",
"proxmoxStatsUrlCopied": "Η διεύθυνση URL των στατιστικών του Proxmox αντιγράφηκε στο πρόχειρο",
"copyProxmoxStatsUrlAction": "Αντιγραφή URL Στατιστικών Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Ενημερώθηκαν οι {{count}} κεντρικοί υπολογιστές",
"friendlyNameLabel": "Φιλικό όνομα",
"descriptionLabel": "Περιγραφή",
"loadingHost": "Φόρτωση κεντρικού υπολογιστή...",
"loadingHosts": "Φόρτωση κεντρικών υπολογιστών...",
"loadingCredentials": "Φόρτωση διαπιστευτηρίων...",
"noHostsYet": "Δεν υπάρχουν ακόμη οικοδεσπότες",
"noHostsYetHint": "Προσθέστε έναν διακομιστή για να ανοίγετε τερματικά, να περιηγείστε σε αρχεία και να βλέπετε μετρήσεις.",
"noHostsMatchSearch": "Δεν υπάρχουν κεντρικοί υπολογιστές που να ταιριάζουν με την αναζήτησή σας",
"hostNotFound": "Δεν βρέθηκε κεντρικός υπολογιστής",
"searchHosts": "Αναζήτηση κεντρικών υπολογιστών...",
"sortHosts": "Ταξινόμηση κεντρικών υπολογιστών",
"sortDefault": "Προεπιλεγμένη παραγγελία",
@@ -925,7 +913,6 @@
"filterAuthKey": "Κλειδί SSH",
"filterAuthCredential": "Πιστοποιητικό",
"filterAuthNone": "Κανένας",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Βήμα CA",
"filterProtocolGroup": "Πρωτόκολλο",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Σύνδεση με τον κεντρικό υπολογιστή",
"clear": "Σαφής",
"paste": "Πάστα",
"connected": "Συνδεδεμένος",
"clipboardWriteFailed": "Αποτυχία αντιγραφής στο πρόχειρο. Βεβαιωθείτε ότι η σελίδα προβάλλεται μέσω HTTPS ή localhost.",
"clipboardReadFailed": "Αποτυχία ανάγνωσης από το πρόχειρο. Βεβαιωθείτε ότι έχουν εκχωρηθεί δικαιώματα στο πρόχειρο.",
"tmuxDetach": "Αποσύνδεση από την περίοδο λειτουργίας tmux",
"terminalTitle": "Τερματικό - {{host}}",
"terminalWithPath": "Τερματικό - {{host}}:{{path}}",
"runTitle": "Εκτέλεση {{command}} - {{host}}",
"totpRequired": "Απαιτείται έλεγχος ταυτότητας δύο παραγόντων",
"totpCodeLabel": "Κωδικός επαλήθευσης",
"totpVerify": "Επαληθεύω",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Αντιγραφή στον κεντρικό υπολογιστή…",
"moveToHost": "Μετακίνηση στον κεντρικό υπολογιστή…",
"copyItemsToHost": "Αντιγραφή στοιχείων {{count}} για φιλοξενία…",
"moveItemsToHost": "Μετακίνηση στοιχείων {{count}} για να φιλοξενήσει το…",
"noHostsConnected": "Δεν υπάρχουν άλλοι διαθέσιμοι κεντρικοί υπολογιστές διαχείρισης αρχείων.",
"noHostsConnectedHint": "Προσθέστε έναν άλλο κεντρικό υπολογιστή SSH με ενεργοποιημένο το File Manager στο Host Manager.",
"selectDestinationHost": "Επιλέξτε κεντρικό υπολογιστή προορισμού",
"destinationPath": "Διαδρομή προορισμού",
"recentDestinations": "Πρόσφατοι προορισμοί",
"collapseRecentDestinations": "Σύμπτυξη πρόσφατων προορισμών",
"expandRecentDestinations": "Ανάπτυξη πρόσφατων προορισμών",
"browseFolders": "Αναζήτηση φακέλων προορισμού",
"browseDestination": "Περιήγηση ή εισαγωγή διαδρομής",
"confirmCopy": "Αντίγραφο",
"confirmMove": "Κίνηση",
"transferring": "Μεταφορά…",
"progressVerifying": "Επαλήθευση ακεραιότητας αρχείου…",
"progressBenchmarking": "Επιλογή της ταχύτερης διαδρομής μεταφοράς…",
"compressing": "Συμπίεση…",
"extracting": "Εξαγωγή…",
"transferringItems": "Μεταφορά {{current}} από {{total}} στοιχεία…",
"transferSuccess": "Η μεταφορά ολοκληρώθηκε",
"transferError": "Η μεταφορά απέτυχε",
"transferPartial": "Η μεταφορά ολοκληρώθηκε με σφάλματα {{count}}",
"transferPartialHint": "Δεν ήταν δυνατή η μεταφορά: {{paths}}",
"itemsSummary": "{{count}} στοιχεία",
"destMustBeDirectory": "Ο προορισμός πρέπει να είναι ένας κατάλογος για μεταφορές πολλαπλών στοιχείων",
"selectThisFolder": "Επιλέξτε αυτόν τον φάκελο",
"browsePathWillBeCreated": "Αυτός ο φάκελος δεν υπάρχει ακόμη. Θα δημιουργηθεί όταν ξεκινήσει η μεταφορά.",
"browsePathError": "Δεν ήταν δυνατό το άνοιγμα αυτής της διαδρομής στον κεντρικό υπολογιστή προορισμού.",
"goUp": "Ανεβαίνω",
"copyFolderToHost": "Αντιγραφή φακέλου στον κεντρικό υπολογιστή…",
"moveFolderToHost": "Μετακίνηση φακέλου στον κεντρικό υπολογιστή…",
"hostReady": "Ετοιμος",
"hostConnecting": "Σύνδεση…",
"hostDisconnected": "Δεν είναι συνδεδεμένο",
"hostAuthRequired": "Απαιτείται έλεγχος ταυτότητας — ανοίξτε πρώτα τη Διαχείριση αρχείων σε αυτόν τον κεντρικό υπολογιστή",
"hostConnectionFailed": "Η σύνδεση απέτυχε",
"metricsTitle": "Χρόνοι μεταφοράς",
"metricsPrepare": "Προετοιμασία προορισμού: {{duration}}",
"metricsCompress": "Συμπίεση στην πηγή: {{duration}}",
"metricsHopSourceRead": "Πηγή → διακομιστής: {{throughput}}",
"metricsHopDestSftpWrite": "Διακομιστής → προορισμός (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Διακομιστής → προορισμός (τοπικός): {{throughput}}",
"metricsTransfer": "Από άκρο σε άκρο: {{throughput}} ({{duration}})",
"metricsExtract": "Εξαγωγή στον προορισμό: {{duration}}",
"metricsVerify": "Επαληθεύτηκε το SHA-256: {{duration}}",
"metricsRouteBenchmark": "Δρομολόγηση ανιχνευτή — άμεση: {{direct}}, αναμετάδοση: {{relay}}",
"metricsSourceDelete": "Αφαίρεση από την πηγή: {{duration}}",
"metricsTotal": "Σύνολο: {{duration}}",
"progressCompressing": "Συμπίεση στον κεντρικό υπολογιστή προέλευσης…",
"progressExtracting": "Εξαγωγή στον προορισμό…",
"progressTransferring": "Μεταφορά δεδομένων…",
"progressReconnecting": "Επανασύνδεση…",
"parallelSegmentsLabel": "Παράλληλες λωρίδες μετεπιβίβασης",
"parallelSegmentsOption": "{{count}} λωρίδες",
"parallelSegmentsHint": "Τα μεγάλα αρχεία χωρίζονται σε κομμάτια των 256 MB. Πολλαπλές λωρίδες χρησιμοποιούν ξεχωριστές συνδέσεις (όπως η έναρξη αρκετών μεταφορών) για υψηλότερη συνολική απόδοση.",
"progressTotalSpeed": "{{speed}} σύνολο ({{lanes}} λωρίδες)",
"progressTransferringItems": "Μεταφορά αρχείων ({{current}} από {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} αρχεία",
"sourceNotDeletedPartial": "Τα αρχεία προέλευσης διατηρούνται (μερική μεταφορά)",
"jumpHostLimitation": "Και οι δύο κεντρικοί υπολογιστές πρέπει να είναι προσβάσιμοι από τον διακομιστή Termix. Δεν υποστηρίζεται η άμεση δρομολόγηση από κεντρικό υπολογιστή σε κεντρικό υπολογιστή.",
"cancel": "Ματαίωση",
"methodLabel": "Μέθοδος μεταφοράς",
"methodAuto": "Αυτο",
"methodTar": "Αρχείο Tar",
"methodItemSftp": "SFTP ανά αρχείο",
"methodAutoHint": "Επιλέγει SFTP tar ή ανά αρχείο με βάση τον αριθμό αρχείων, το μέγεθος και τη συμπιεστότητα. Τα μεμονωμένα αρχεία χρησιμοποιούν πάντα SFTP ροής.",
"methodTarHint": "Συμπίεση στην πηγή, μεταφορά ενός αρχείου, εξαγωγή στον προορισμό. Απαιτείται tar και στους δύο κεντρικούς υπολογιστές Unix.",
"methodItemSftpHint": "Μεταφέρετε κάθε αρχείο ξεχωριστά μέσω SFTP. Λειτουργεί σε όλους τους κεντρικούς υπολογιστές, συμπεριλαμβανομένων των Windows.",
"methodPreviewLoading": "Υπολογισμός μεθόδου μεταφοράς…",
"methodPreviewError": "Δεν ήταν δυνατή η προεπισκόπηση της μεθόδου μεταφοράς. Ο διακομιστής θα επιλέξει μια μέθοδο κατά την εκκίνηση.",
"methodPreviewWillUseTar": "Θα χρησιμοποιηθεί: Αρχείο Tar",
"methodPreviewWillUseItemSftp": "Θα χρησιμοποιηθεί: SFTP ανά αρχείο",
"methodPreviewScanSummary": "{{fileCount}} αρχεία, {{totalSize}} συνολικά (σαρωμένα στον κεντρικό υπολογιστή προέλευσης).",
"methodItemSftpLimitation": "Κάθε αρχείο χρησιμοποιεί την ίδια ροή SFTP ως αντίγραφο ενός μόνο αρχείου, το ένα μετά το άλλο. Η πρόοδος συνδυάζεται σε όλα τα αρχεία, επομένως η γραμμή κινείται αργά κατά τη διάρκεια μεγάλων αρχείων.",
"methodReason": {
"user_item_sftp": "Επιλέξατε SFTP ανά αρχείο.",
"user_tar": "Επιλέξατε το αρχείο tar.",
"tar_unavailable": "Το Tar δεν είναι διαθέσιμο σε έναν ή και στους δύο κεντρικούς υπολογιστές — θα χρησιμοποιηθεί αντ' αυτού το SFTP ανά αρχείο.",
"windows_host": "Εμπλέκεται ένας κεντρικός υπολογιστής των Windows — δεν χρησιμοποιείται το tar.",
"auto_multi_large": "Αυτόματα: πολλά αρχεία, συμπεριλαμβανομένου ενός μεγάλου αρχείου ({{largestSize}}) με συμπιέσιμα δεδομένα — tar ομαδοποιεί σε μία μεταφορά.",
"auto_single_large_in_archive": "Αυτόματα: ένα μεγάλο αρχείο ({{largestSize}}) σε αυτό το σύνολο — ανά αρχείο SFTP.",
"auto_many_incompressible": "Αυτόματα: ως επί το πλείστον ασυμπίεστα δεδομένα — SFTP ανά αρχείο.",
"auto_many_files": "Αυτόματα: πολλά αρχεία ({{fileCount}}) — το tar μειώνει την επιβάρυνση ανά αρχείο.",
"auto_default": "Αυτόματα: SFTP ανά αρχείο για αυτό το σύνολο."
},
"progressCancel": "Ματαίωση",
"progressCancelling": "Ακύρωση…",
"progressStalled": "Σταματημένο",
"resumedHint": "Επανασύνδεση με μια ενεργή μεταφορά που ξεκίνησε σε άλλο παράθυρο.",
"transferCancelled": "Η μεταφορά ακυρώθηκε.",
"transferCancelledCopyHint": "Ενδέχεται να παραμείνουν μερικά αρχεία στον προορισμό.",
"transferCancelledMoveHint": "Ενδέχεται να παραμείνουν μερικά αρχεία στον προορισμό. Τα αρχεία προέλευσης δεν καταργήθηκαν.",
"cleanupDestFiles": "Καθαρισμός προορισμού",
"cleanupDestFilesSuccess": "Αφαιρέθηκαν μερικά αρχεία από τον προορισμό",
"cleanupDestFilesPartial": "Δεν ήταν δυνατή η κατάργηση ορισμένων τμηματικών αρχείων",
"cleanupDestFilesNothing": "Δεν υπάρχει τίποτα προς διόρθωση στον προορισμό",
"cleanupDestFilesError": "Ο καθαρισμός απέτυχε",
"retryTransfer": "Δοκιμάζω πάλι",
"retryTransferError": "Η επανάληψη απέτυχε",
"transferFailedRetryHint": "Μερικά δεδομένα διατηρήθηκαν στον προορισμό. Η επανάληψη θα συνεχιστεί όταν αποκατασταθεί η σύνδεση."
"sourceNotDeletedPartial": "Τα αρχεία προέλευσης διατηρούνται (μερική μεταφορά)"
},
"tunnels": {
"connect": "Συνδέω",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Σήραγγα Πελάτη",
"addClientTunnel": "Προσθήκη σήραγγας πελάτη",
"active": "Ενεργός",
"start": "Αρχή",
"stop": "Στάση",
"typeServerLocalDesc": "Τρέχων κεντρικός υπολογιστής προς τελικό σημείο.",
"typeServerRemoteDesc": "Επιστροφή στο τελικό σημείο στον τρέχοντα κεντρικό υπολογιστή.",
"typeClientLocalDesc": "Τοπικός υπολογιστής προς τελικό σημείο.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Περιορισμένος ρυθμός: Πάρα πολλές προσπάθειες επαλήθευσης. Παρακαλώ περιμένετε {{time}} δευτερόλεπτα πριν προσπαθήσετε ξανά.",
"authTokenSaveFailed": "Αποτυχία αποθήκευσης διακριτικού ελέγχου ταυτότητας",
"authTokenMissing": "Ο διακομιστής δεν επέστρεψε νέο διακριτικό ελέγχου ταυτότητας. Συνδεθείτε ξανά.",
"failedToLoadServer": "Αποτυχία φόρτωσης διακομιστή",
"remoteServerRequired": "Απαιτείται απομακρυσμένος διακομιστής. Συνδέστε έναν απομακρυσμένο διακομιστή στις Ρυθμίσεις για να χρησιμοποιήσετε αυτόν τον τύπο σύνδεσης."
"failedToLoadServer": "Αποτυχία φόρτωσης διακομιστή"
},
"messages": {
"registrationDisabled": "Η εγγραφή νέου λογαριασμού έχει απενεργοποιηθεί αυτήν τη στιγμή από έναν διαχειριστή. Συνδεθείτε ή επικοινωνήστε με έναν διαχειριστή.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Πρωτόκολλο",
"domainLabel": "Πεδίο ορισμού",
"domainPlaceholder": "προαιρετικός",
"connectToTerminal": "Σύνδεση με τερματικό",
"connectToFiles": "Σύνδεση με αρχεία"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Elige un tema, un color de acento y tu idioma. Puedes cambiar los tres posteriormente en Ajustes.",
"featuresTitle": "¿Qué más hace Termix?",
"featuresIntro": "Cada servidor que guardes se puede abrir en más de una terminal. Esto es lo que te espera tras los iconos de la izquierda.",
"feature_files": "Gestor de archivos",
"feature_files_desc": "Navega, sube, descarga y edita archivos a través de SFTP sin salir de la aplicación.",
"feature_tunnels": "Túneles",
"feature_tunnels_desc": "Reenvía puertos a través de un servidor para acceder a servicios que no están expuestos.",
"feature_snippets": "Fragmentos",
"feature_snippets_desc": "Guarda los comandos que ejecutas con frecuencia y envíalos a una terminal con un solo clic.",
"featuresRailHint": "¿No necesitas ninguno de estos? Oculta cualquier icono de la barra lateral en Ajustes, en Navegación.",
@@ -449,7 +445,6 @@
"passwordSaved": "Contraseña guardada, escriba para cambiarla",
"key": "Clave",
"credential": "Credencial",
"none": "Ninguno",
"sshPrivateKey": "Clave privada SSH",
"keyType": "Tipo de clave",
"uploadFile": "Subir archivo",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Intervalo de keepalive (segundos)",
"maxKeepaliveMisses": "Máximo de fallos de keepalive",
"sameHost": "Este host (túnel directo)",
"bindHost": "Host de enlace",
"connectionToolbar": "Barra de herramientas de conexión",
"showConnectionToolbar": "Mostrar barra de herramientas de conexión",
"showConnectionToolbarDesc": "Muestra la barra de herramientas en las sesiones SSH, RDP, VNC y Telnet de este host. También puedes ocultarla temporalmente desde la propia barra de herramientas.",
"proxmoxLastSyncStatus": {
"success": "Correcto"
},
"proxmoxGuestsSelected_one": "{{count}} invitado — {{selected}} seleccionado",
"proxmoxGuestsSelected_other": "{{count}} invitados — {{selected}} seleccionados",
"proxmoxImportButton_one": "Importar {{count}} host",
"proxmoxImportButton_other": "Importar {{count}} hosts",
"proxmoxResultSkippedNoIp": "{{count}} omitido (no se encontró ninguna IP)",
"proxmoxStatsUrlCopied": "Se copió al portapapeles la URL de estadísticas de Proxmox.",
"copyProxmoxStatsUrlAction": "Copiar la URL de estadísticas de Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "{{count}} hosts actualizados",
"friendlyNameLabel": "Nombre descriptivo",
"descriptionLabel": "Descripción",
"loadingHost": "Cargando host...",
"loadingHosts": "Cargando hosts...",
"loadingCredentials": "Cargando credenciales...",
"noHostsYet": "Aún no hay hosts",
"noHostsYetHint": "Agregue un servidor para abrir terminales, explorar archivos y ver métricas.",
"noHostsMatchSearch": "Ningún host coincide con tu búsqueda",
"hostNotFound": "Host no encontrado",
"searchHosts": "Buscar hosts...",
"sortHosts": "Ordenar hosts",
"sortDefault": "Orden predeterminado",
@@ -925,7 +913,6 @@
"filterAuthKey": "Clave SSH",
"filterAuthCredential": "Credencial",
"filterAuthNone": "Ninguno",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Paso CA",
"filterProtocolGroup": "Protocolo",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Conectar al host",
"clear": "Limpiar",
"paste": "Pegar",
"connected": "Conectado",
"clipboardWriteFailed": "Error al copiar al portapapeles. Asegúrese de que la página se sirva a través de HTTPS o en localhost.",
"clipboardReadFailed": "No se pudo leer del portapapeles. Asegúrese de que los permisos del portapapeles estén concedidos.",
"tmuxDetach": "Desconectar de la sesión tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Ejecutando {{command}} - {{host}}",
"totpRequired": "Autenticación de dos factores requerida",
"totpCodeLabel": "Código de verificación",
"totpVerify": "Verificar",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Copiar al host…",
"moveToHost": "Mover al host…",
"copyItemsToHost": "Copiar {{count}} elementos al host…",
"moveItemsToHost": "Mover {{count}} elementos al host…",
"noHostsConnected": "No hay otros hosts de gestor de archivos disponibles.",
"noHostsConnectedHint": "Añade otro host SSH con el Gestor de Archivos habilitado en el Administrador de Hosts.",
"selectDestinationHost": "Seleccionar host de destino",
"destinationPath": "Ruta de destino",
"recentDestinations": "Destinos recientes",
"collapseRecentDestinations": "Contraer destinos recientes",
"expandRecentDestinations": "Expandir destinos recientes",
"browseFolders": "Examinar carpetas de destino",
"browseDestination": "Examinar o introducir ruta",
"confirmCopy": "Copiar",
"confirmMove": "Mover",
"transferring": "Transfiriendo…",
"progressVerifying": "Verificando la integridad del archivo…",
"progressBenchmarking": "Seleccionar la ruta de transferencia más rápida…",
"compressing": "Comprimiendo…",
"extracting": "Extrayendo…",
"transferringItems": "Transfiriendo {{current}} de {{total}} elementos…",
"transferSuccess": "Transferencia completada",
"transferError": "Transferencia fallida",
"transferPartial": "Transferencia completada con {{count}} errores",
"transferPartialHint": "No se pudo transferir: {{paths}}",
"itemsSummary": "{{count}} elementos",
"destMustBeDirectory": "El destino debe ser un directorio para transferencias de múltiples elementos",
"selectThisFolder": "Seleccionar esta carpeta",
"browsePathWillBeCreated": "Esta carpeta no existe aún. Se creará al iniciar la transferencia.",
"browsePathError": "No se pudo abrir esta ruta en el host de destino.",
"goUp": "Subir",
"copyFolderToHost": "Copiar carpeta al host…",
"moveFolderToHost": "Mover carpeta al host…",
"hostReady": "Listo",
"hostConnecting": "Conectando…",
"hostDisconnected": "No conectado",
"hostAuthRequired": "Se requiere autenticación — abre primero el Gestor de Archivos en este host",
"hostConnectionFailed": "Conexión fallida",
"metricsTitle": "Tiempos de transferencia",
"metricsPrepare": "Preparar destino: {{duration}}",
"metricsCompress": "Compresión en origen: {{duration}}",
"metricsHopSourceRead": "Origen → servidor: {{throughput}}",
"metricsHopDestSftpWrite": "Servidor → destino (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Servidor → destino (local): {{throughput}}",
"metricsTransfer": "Extremo a extremo: {{throughput}} ({{duration}})",
"metricsExtract": "Extracción en destino: {{duration}}",
"metricsVerify": "SHA-256 verificado: {{duration}}",
"metricsRouteBenchmark": "Sondeo de ruta: directo: {{direct}}, retransmisión: {{relay}}",
"metricsSourceDelete": "Eliminación del origen: {{duration}}",
"metricsTotal": "Total: {{duration}}",
"progressCompressing": "Comprimiendo en el equipo de origen…",
"progressExtracting": "Extrayendo en el destino…",
"progressTransferring": "Transfiriendo datos…",
"progressReconnecting": "Reconectando…",
"parallelSegmentsLabel": "Vías de transferencia en paralelo",
"parallelSegmentsOption": "{{count}} vías",
"parallelSegmentsHint": "Los archivos grandes se dividen en fragmentos de 256 MB. Varias vías utilizan conexiones separadas (como iniciar varias transferencias) para un mayor rendimiento total.",
"progressTotalSpeed": "{{speed}} total ({{lanes}} vías)",
"progressTransferringItems": "Transfiriendo archivos ({{current}} de {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} archivos",
"sourceNotDeletedPartial": "Archivos de origen conservados (transferencia parcial)",
"jumpHostLimitation": "Ambos equipos deben ser accesibles desde el servidor de Termix. No se admite el enrutamiento directo entre equipos.",
"cancel": "Cancelar",
"methodLabel": "Método de transferencia",
"methodAuto": "Automático",
"methodTar": "Archivo Tar",
"methodItemSftp": "SFTP por archivo",
"methodAutoHint": "Elige tar o SFTP por archivo según el número de archivos, tamaño y compresibilidad. Los archivos individuales siempre usan SFTP por transmisión continua.",
"methodTarHint": "Comprime en origen, transfiere un archivo, extrae en destino. Necesita tar en ambos equipos Unix.",
"methodItemSftpHint": "Transfiere cada archivo individualmente por SFTP. Funciona en todos los equipos, incluido Windows.",
"methodPreviewLoading": "Calculando el método de transferencia…",
"methodPreviewError": "No se pudo previsualizar el método de transferencia. El servidor seleccionará un método al iniciar.",
"methodPreviewWillUseTar": "Se usará: Archivo Tar",
"methodPreviewWillUseItemSftp": "Se usará: SFTP por archivo",
"methodPreviewScanSummary": "{{fileCount}} archivos, {{totalSize}} total (analizado en el equipo de origen).",
"methodItemSftpLimitation": "Cada archivo usa el mismo flujo SFTP que una copia de un solo archivo, uno tras otro. El progreso se combina en todos los archivos, por lo que la barra se mueve lentamente durante archivos grandes.",
"methodReason": {
"user_item_sftp": "Has elegido SFTP por archivo.",
"user_tar": "Has elegido archivo tar.",
"tar_unavailable": "Tar no está disponible en uno o ambos hosts; se usará SFTP por archivo.",
"windows_host": "Hay un host Windows implicado; no se usa tar.",
"auto_multi_large": "Auto: múltiples archivos incluido uno grande ({{largestSize}}) con datos comprimibles; tar los agrupa en una sola transferencia.",
"auto_single_large_in_archive": "Auto: un archivo grande ({{largestSize}}) en este conjunto; SFTP por archivo.",
"auto_many_incompressible": "Auto: datos mayoritariamente incompresibles; SFTP por archivo.",
"auto_many_files": "Auto: muchos archivos ({{fileCount}}); tar reduce la sobrecarga por archivo.",
"auto_default": "Auto: SFTP por archivo para este conjunto."
},
"progressCancel": "Cancelar",
"progressCancelling": "Cancelando…",
"progressStalled": "Estancado",
"resumedHint": "Reconectado a una transferencia activa iniciada en otra ventana.",
"transferCancelled": "Transferencia cancelada",
"transferCancelledCopyHint": "Pueden quedar archivos parciales en el destino.",
"transferCancelledMoveHint": "Pueden quedar archivos parciales en el destino. Los archivos de origen no se eliminaron.",
"cleanupDestFiles": "Limpiar destino",
"cleanupDestFilesSuccess": "Se eliminaron los archivos parciales del destino",
"cleanupDestFilesPartial": "Algunos archivos parciales no se pudieron eliminar",
"cleanupDestFilesNothing": "Nada que limpiar en el destino",
"cleanupDestFilesError": "Error al limpiar",
"retryTransfer": "Reintentar",
"retryTransferError": "Error al reintentar",
"transferFailedRetryHint": "Se conservaron datos parciales en el destino. El reintento se reanudará cuando se restablezca la conexión."
"sourceNotDeletedPartial": "Archivos de origen conservados (transferencia parcial)"
},
"tunnels": {
"connect": "Conectar",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Túnel de cliente",
"addClientTunnel": "Añadir túnel de cliente",
"active": "Activo",
"start": "Iniciar",
"stop": "Detener",
"typeServerLocalDesc": "Del host actual al endpoint.",
"typeServerRemoteDesc": "Del endpoint al host actual.",
"typeClientLocalDesc": "Del equipo local al endpoint.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Límite de intentos: Demasiados intentos de verificación. Espere {{time}} segundos antes de volver a intentarlo.",
"authTokenSaveFailed": "Error al guardar el token de autenticación",
"authTokenMissing": "El servidor no devolvió un nuevo token de autenticación. Inicie sesión de nuevo.",
"failedToLoadServer": "Error al cargar el servidor",
"remoteServerRequired": "Se requiere un servidor remoto. Conecte un servidor remoto en Configuración para usar este tipo de conexión."
"failedToLoadServer": "Error al cargar el servidor"
},
"messages": {
"registrationDisabled": "El registro de nuevas cuentas está deshabilitado por un administrador. Inicie sesión o contacte con un administrador.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protocolo",
"domainLabel": "Dominio",
"domainPlaceholder": "opcional",
"connectToTerminal": "Conectar a Terminal",
"connectToFiles": "Conectar a Archivos"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Valitse teema, korostusväri ja kielesi. Voit muuttaa kaikkia kolmea myöhemmin asetuksissa.",
"featuresTitle": "Mitä muuta Termix tekee",
"featuresIntro": "Jokainen tallentamasi palvelin voidaan avata useammassakin kuin vain terminaalissa. Tässä on vasemmalla olevien kuvakkeiden takana olevat tiedot.",
"feature_files": "Tiedostonhallinta",
"feature_files_desc": "Selaa, lähetä, lataa ja muokkaa tiedostoja SFTP:n kautta poistumatta sovelluksesta.",
"feature_tunnels": "Tunnelit",
"feature_tunnels_desc": "Lähetä portteja palvelimen kautta tavoittaaksesi palvelut, jotka eivät ole alttiina.",
"feature_snippets": "Katkelmat",
"feature_snippets_desc": "Tallenna usein käyttämäsi komennot ja lähetä ne terminaaliin yhdellä napsautuksella.",
"featuresRailHint": "Etkö tarvitse jotakin näistä? Piilota kaikki kuvakkeet sivupalkista asetuksissa, kohdassa Navigointi.",
@@ -449,7 +445,6 @@
"passwordSaved": "Salasana tallennettu, kirjoita muuttaaksesi",
"key": "Avain",
"credential": "Valtakirja",
"none": "Ei mitään",
"sshPrivateKey": "SSH-yksityinen avain",
"keyType": "Avaimen tyyppi",
"uploadFile": "Lähetä tiedosto",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Säilytysaika (sekuntia)",
"maxKeepaliveMisses": "Max Keepalive -heitot",
"sameHost": "Tämä isäntä (suora tunneli)",
"bindHost": "Sido isäntä",
"connectionToolbar": "Yhteystyökalurivi",
"showConnectionToolbar": "Näytä yhteystyökalurivi",
"showConnectionToolbarDesc": "Näytä työkalupalkki tämän isännän SSH-, RDP-, VNC- ja Telnet-istunnoissa. Voit myös piilottaa sen tilapäisesti itse työkalupalkista.",
"proxmoxLastSyncStatus": {
"success": "Menestys"
},
"proxmoxGuestsSelected_one": "{{count}} vieras — {{selected}} valittu",
"proxmoxGuestsSelected_other": "{{count}} vieraat — {{selected}} valittu",
"proxmoxImportButton_one": "Tuo {{count}} isäntä",
"proxmoxImportButton_other": "Tuo {{count}} isäntiä",
"proxmoxResultSkippedNoIp": "{{count}} ohitettu (IP-osoitetta ei löytynyt)",
"proxmoxStatsUrlCopied": "Proxmox-tilastojen URL-osoite kopioitu leikepöydälle",
"copyProxmoxStatsUrlAction": "Kopioi Proxmox-tilastojen URL-osoite",
@@ -896,13 +886,11 @@
"updatedCount": "Päivitetyt {{count}} isännät",
"friendlyNameLabel": "Ystävällinen nimi",
"descriptionLabel": "Kuvaus",
"loadingHost": "Ladataan isäntää...",
"loadingHosts": "Ladataan isäntiä...",
"loadingCredentials": "Tunnistetietoja ladataan...",
"noHostsYet": "Ei vielä isäntiä",
"noHostsYetHint": "Lisää palvelin avataksesi päätteitä, selataksesi tiedostoja ja nähdäksesi mittareita.",
"noHostsMatchSearch": "Hakuasi vastaavia isäntiä ei löytynyt",
"hostNotFound": "Isäntää ei löydy",
"searchHosts": "Hae isäntiä...",
"sortHosts": "Lajittele isännät",
"sortDefault": "Oletusjärjestys",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-avain",
"filterAuthCredential": "Valtakirja",
"filterAuthNone": "Ei mitään",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Vaihe CA",
"filterProtocolGroup": "Protokolla",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Yhdistä isäntään",
"clear": "Tyhjennä",
"paste": "Liitä",
"connected": "Yhdistetty",
"clipboardWriteFailed": "Kopiointi leikepöydälle epäonnistui. Varmista, että sivua käytetään HTTPS:n tai paikallisen isännän kautta.",
"clipboardReadFailed": "Leikepöydän lukeminen epäonnistui. Varmista, että leikepöydän käyttöoikeudet on myönnetty.",
"tmuxDetach": "Irrota tmux-istunnosta",
"terminalTitle": "Pääte - {{host}}",
"terminalWithPath": "Pääte - {{host}}:{{path}}",
"runTitle": "Juoksemassa {{command}} - {{host}}",
"totpRequired": "Kaksivaiheinen todennus vaaditaan",
"totpCodeLabel": "Vahvistuskoodi",
"totpVerify": "Vahvista",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Kopioi isäntäkoneeseen…",
"moveToHost": "Siirrä isäntäkoneeseen…",
"copyItemsToHost": "Kopioi {{count}} kohdetta isäntään…",
"moveItemsToHost": "Siirrä {{count}} kohdetta isäntään…",
"noHostsConnected": "Muita tiedostonhallintaohjelmia ei ole saatavilla.",
"noHostsConnectedHint": "Lisää toinen SSH-isäntä, jonka tiedostonhallinta on käytössä isäntähallinnassa.",
"selectDestinationHost": "Valitse kohdeisäntä",
"destinationPath": "Kohdepolku",
"recentDestinations": "Viimeaikaiset kohteet",
"collapseRecentDestinations": "Pienennä viimeisimmät kohteet",
"expandRecentDestinations": "Laajenna viimeisimmät kohteet",
"browseFolders": "Selaa kohdekansioita",
"browseDestination": "Selaa tai anna polku",
"confirmCopy": "Kopioida",
"confirmMove": "Liikkua",
"transferring": "Siirretään…",
"progressVerifying": "Tiedoston eheyden tarkistaminen…",
"progressBenchmarking": "Nopeimman vaihtoreitin valitseminen…",
"compressing": "Pakkaamalla…",
"extracting": "Poimitaan…",
"transferringItems": "Siirretään {{current}} / {{total}} kohdetta…",
"transferSuccess": "Siirto valmis",
"transferError": "Siirto epäonnistui",
"transferPartial": "Siirto suoritettu, mutta virheitä on {{count}}",
"transferPartialHint": "Siirto epäonnistui: {{paths}}",
"itemsSummary": "{{count}} kohdetta",
"destMustBeDirectory": "Määränpään on oltava hakemisto useiden kohteiden siirtoja varten",
"selectThisFolder": "Valitse tämä kansio",
"browsePathWillBeCreated": "Tätä kansiota ei ole vielä olemassa. Se luodaan, kun siirto alkaa.",
"browsePathError": "Tätä polkua ei voitu avata kohdepalvelimella.",
"goUp": "Mene ylös",
"copyFolderToHost": "Kopioi kansio isäntään…",
"moveFolderToHost": "Siirrä kansio isäntään…",
"hostReady": "Valmis",
"hostConnecting": "Yhdistetään…",
"hostDisconnected": "Ei yhdistetty",
"hostAuthRequired": "Todennus vaaditaan — avaa ensin tiedostonhallinta tällä isännöintikoneella",
"hostConnectionFailed": "Yhteys epäonnistui",
"metricsTitle": "Siirtoajat",
"metricsPrepare": "Valmistele kohde: {{duration}}",
"metricsCompress": "Pakkaa lähdekoodissa: {{duration}}",
"metricsHopSourceRead": "Lähde → palvelin: {{throughput}}",
"metricsHopDestSftpWrite": "Palvelin → kohde (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Palvelin → kohde (paikallinen): {{throughput}}",
"metricsTransfer": "Päästä päähän: {{throughput}} ({{duration}})",
"metricsExtract": "Ote määränpäässä: {{duration}}",
"metricsVerify": "SHA-256 vahvistettu: {{duration}}",
"metricsRouteBenchmark": "Reitityskoetin — suora: {{direct}}, välitys: {{relay}}",
"metricsSourceDelete": "Poista lähteestä: {{duration}}",
"metricsTotal": "Yhteensä: {{duration}}",
"progressCompressing": "Pakkaus lähdepalvelimella…",
"progressExtracting": "Puretaan kohteessa…",
"progressTransferring": "Tiedon siirtäminen…",
"progressReconnecting": "Yhdistetään uudelleen…",
"parallelSegmentsLabel": "Rinnakkaiset siirtokaistat",
"parallelSegmentsOption": "{{count}} kaistaa",
"parallelSegmentsHint": "Suuret tiedostot jaetaan 256 Mt:n osiin. Useat kaistat käyttävät erillisiä yhteyksiä (kuten useiden siirtojen aloittaminen) suuremman kokonaisläpivirtauksen saavuttamiseksi.",
"progressTotalSpeed": "{{speed}} yhteensä ({{lanes}} kaistaa)",
"progressTransferringItems": "Tiedostojen siirtäminen ({{current}} / {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} tiedostoa",
"sourceNotDeletedPartial": "Lähdetiedostot säilytetään (osittainen siirto)",
"jumpHostLimitation": "Molempien isäntien on oltava tavoitettavissa Termix-palvelimelta. Suoraa isäntien välistä reititystä ei tueta.",
"cancel": "Peruuttaa",
"methodLabel": "Siirtotapa",
"methodAuto": "Auto",
"methodTar": "Tar-arkisto",
"methodItemSftp": "Tiedostokohtainen SFTP",
"methodAutoHint": "Valitsee tar- tai tiedostokohtaisen SFTP:n tiedostomäärän, koon ja pakkautuvuuden perusteella. Yksittäiset tiedostot käyttävät aina suoratoistettavaa SFTP:tä.",
"methodTarHint": "Pakkaa lähdekoodissa, siirrä yksi arkisto, pura kohdetiedostossa. Vaatii tar-tiedoston molemmissa Unix-koneissa.",
"methodItemSftpHint": "Siirrä jokainen tiedosto erikseen SFTP:n kautta. Toimii kaikilla isännöintijärjestelmillä, mukaan lukien Windows.",
"methodPreviewLoading": "Siirtomenetelmän laskeminen…",
"methodPreviewError": "Siirtomenetelmän esikatselu ei onnistunut. Palvelin valitsee silti menetelmän käynnistyksen yhteydessä.",
"methodPreviewWillUseTar": "Käytetään: Tar-arkistoa",
"methodPreviewWillUseItemSftp": "Käytetään: Tiedostokohtaista SFTP:tä",
"methodPreviewScanSummary": "{{fileCount}} tiedostoa, {{totalSize}} yhteensä (skannattu lähdepalvelimella).",
"methodItemSftpLimitation": "Jokainen tiedosto käyttää samaa SFTP-tietovirtaa kuin yksittäiset tiedostokopiot, yksi kerrallaan. Edistyminen yhdistetään kaikkien tiedostojen välillä, joten palkki liikkuu hitaasti suurten tiedostojen käsittelyssä.",
"methodReason": {
"user_item_sftp": "Valitsit tiedostokohtaisen SFTP:n.",
"user_tar": "Valitsit tar-arkiston.",
"tar_unavailable": "Tar ei ole käytettävissä yhdellä tai molemmilla isännillä — sen sijaan käytetään tiedostokohtaista SFTP:tä.",
"windows_host": "Windows-isäntä on mukana – tar-tiedostoa ei käytetä.",
"auto_multi_large": "Automaattinen: useita tiedostoja, mukaan lukien suuri tiedosto ({{largestSize}}), jossa on pakattavaa dataa — tar niputtaa yhdeksi siirroksi.",
"auto_single_large_in_archive": "Automaattinen: yksi suuri tiedosto ({{largestSize}}) tässä joukossa — tiedostokohtainen SFTP.",
"auto_many_incompressible": "Automaattinen: enimmäkseen pakkaamatonta dataa — tiedostokohtainen SFTP.",
"auto_many_files": "Automaattinen: monta tiedostoa ({{fileCount}}) — tar vähentää tiedostokohtaista laskentatehoa.",
"auto_default": "Automaattinen: tiedostokohtainen SFTP tälle joukolle."
},
"progressCancel": "Peruuttaa",
"progressCancelling": "Peruutetaan…",
"progressStalled": "Pysähtynyt",
"resumedHint": "Yhdistetty uudelleen toisessa ikkunassa aloitettuun aktiiviseen siirtoon.",
"transferCancelled": "Siirto peruttu",
"transferCancelledCopyHint": "Osittaisia tiedostoja voi jäädä kohteeseen.",
"transferCancelledMoveHint": "Kohdekansioon saattaa jäädä osittaisia tiedostoja. Lähdetiedostoja ei poistettu.",
"cleanupDestFiles": "Siivouskohde",
"cleanupDestFilesSuccess": "Osittainen tiedosto poistettu kohteesta",
"cleanupDestFilesPartial": "Joitakin osittaisia tiedostoja ei voitu poistaa",
"cleanupDestFilesNothing": "Ei mitään siivottavaa määränpäässä",
"cleanupDestFilesError": "Siivous epäonnistui",
"retryTransfer": "Yritä uudelleen",
"retryTransferError": "Uudelleenyritys epäonnistui",
"transferFailedRetryHint": "Kohteessa säilytettiin vain osa tiedoista. Uudelleenyritys jatkuu, kun yhteys on palannut."
"sourceNotDeletedPartial": "Lähdetiedostot säilytetään (osittainen siirto)"
},
"tunnels": {
"connect": "Yhdistä",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Asiakastunneli",
"addClientTunnel": "Lisää asiakastunneli",
"active": "Aktiivinen",
"start": "Aloita",
"stop": "Stop",
"typeServerLocalDesc": "Nykyisestä isännästä päätepisteeseen.",
"typeServerRemoteDesc": "Päätepiste takaisin nykyiseen isäntään.",
"typeClientLocalDesc": "Paikallinen tietokone päätepisteeseen.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Nopeus rajoitettu: Liian monta vahvistusyritystä. Odota {{time}} sekuntia ennen kuin yrität uudelleen.",
"authTokenSaveFailed": "Todennustunnuksen tallennus epäonnistui",
"authTokenMissing": "Palvelin ei palauttanut uutta todennustunnusta. Kirjaudu uudelleen sisään.",
"failedToLoadServer": "Palvelimen lataus epäonnistui",
"remoteServerRequired": "Etäpalvelin vaaditaan. Yhdistä etäpalvelin asetuksissa käyttääksesi tätä yhteystyyppiä."
"failedToLoadServer": "Palvelimen lataus epäonnistui"
},
"messages": {
"registrationDisabled": "Ylläpitäjä on tällä hetkellä poistanut käytöstä uuden tilin rekisteröinnin. Kirjaudu sisään tai ota yhteyttä ylläpitäjään.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokolla",
"domainLabel": "Verkkotunnus",
"domainPlaceholder": "valinnainen",
"connectToTerminal": "Yhdistä terminaaliin",
"connectToFiles": "Yhdistä tiedostoihin"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Choisissez un thème, une couleur d'accentuation et votre langue. Vous pourrez modifier ces trois éléments ultérieurement dans les paramètres.",
"featuresTitle": "Quelles sont les autres activités de Termix ?",
"featuresIntro": "Chaque serveur que vous sauvegardez peut être ouvert dans plusieurs navigateurs, et pas seulement dans un terminal. Voici ce qui se cache derrière les icônes à gauche.",
"feature_files": "Gestionnaire de fichiers",
"feature_files_desc": "Parcourez, téléchargez, chargez et modifiez des fichiers via SFTP sans quitter l'application.",
"feature_tunnels": "Tunnels",
"feature_tunnels_desc": "Redirigez les ports via un serveur pour accéder aux services non exposés.",
"feature_snippets": "Extraits",
"feature_snippets_desc": "Enregistrez les commandes que vous exécutez fréquemment et envoyez-les à un terminal en un seul clic.",
"featuresRailHint": "Vous n'en avez pas besoin ? Masquez n'importe quelle icône de la barre latérale dans les Paramètres, sous Navigation.",
@@ -449,7 +445,6 @@
"passwordSaved": "Mot de passe enregistré, saisissez-le pour le modifier",
"key": "Clé",
"credential": "Identifiant",
"none": "Aucun",
"sshPrivateKey": "Clé privée SSH",
"keyType": "Type de clé",
"uploadFile": "Téléverser un fichier",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Intervalle de keepalive (secondes)",
"maxKeepaliveMisses": "Nombre maximal d'échecs de keepalive",
"sameHost": "Cet hôte (tunnel direct)",
"bindHost": "Hôte de liaison",
"connectionToolbar": "Barre d'outils de connexion",
"showConnectionToolbar": "Afficher la barre d'outils de connexion",
"showConnectionToolbarDesc": "Afficher la barre d'outils dans les sessions SSH, RDP, VNC et Telnet de cet hôte. Vous pouvez également la masquer temporairement depuis la barre d'outils elle-même.",
"proxmoxLastSyncStatus": {
"success": "Succès"
},
"proxmoxGuestsSelected_one": "{{count}} invité — {{selected}} sélectionné",
"proxmoxGuestsSelected_other": "{{count}} invités — {{selected}} sélectionnés",
"proxmoxImportButton_one": "Importer {{count}} hôte",
"proxmoxImportButton_other": "Importer {{count}} hôtes",
"proxmoxResultSkippedNoIp": "{{count}} ignoré (aucune adresse IP trouvée)",
"proxmoxStatsUrlCopied": "URL des statistiques Proxmox copiée dans le presse-papiers",
"copyProxmoxStatsUrlAction": "Copier l'URL des statistiques Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "{{count}} hôtes mis à jour",
"friendlyNameLabel": "Nom convivial",
"descriptionLabel": "Description",
"loadingHost": "Chargement de l'hôte...",
"loadingHosts": "Chargement des hôtes...",
"loadingCredentials": "Chargement des identifiants...",
"noHostsYet": "Aucun hôte pour le moment",
"noHostsYetHint": "Ajoutez un serveur pour ouvrir des terminaux, parcourir des fichiers et consulter des statistiques.",
"noHostsMatchSearch": "Aucun hôte ne correspond à votre recherche",
"hostNotFound": "Hôte introuvable",
"searchHosts": "Rechercher des hôtes...",
"sortHosts": "Trier les hôtes",
"sortDefault": "Ordre par défaut",
@@ -925,7 +913,6 @@
"filterAuthKey": "Clé SSH",
"filterAuthCredential": "Identifiant",
"filterAuthNone": "Aucun",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Étape CA",
"filterProtocolGroup": "Protocole",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Se connecter à l'hôte",
"clear": "Effacer",
"paste": "Coller",
"connected": "Connecté",
"clipboardWriteFailed": "Échec de la copie dans le presse-papiers. Assurez-vous que la page est servie en HTTPS ou localhost.",
"clipboardReadFailed": "Échec de la lecture du presse-papiers. Assurez-vous que les autorisations du presse-papiers sont accordées.",
"tmuxDetach": "Se détacher de la session tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Exécution de {{command}} - {{host}}",
"totpRequired": "Authentification à deux facteurs requise",
"totpCodeLabel": "Code de vérification",
"totpVerify": "Vérifier",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Copier vers l’hôte…",
"moveToHost": "Déplacer vers l’hôte…",
"copyItemsToHost": "Copier {{count}} éléments vers l’hôte…",
"moveItemsToHost": "Déplacer {{count}} éléments vers l’hôte…",
"noHostsConnected": "Aucun autre hôte de gestionnaire de fichiers disponible.",
"noHostsConnectedHint": "Ajoutez un autre hôte SSH avec le gestionnaire de fichiers activé dans le gestionnaire d’hôtes.",
"selectDestinationHost": "Sélectionner l’hôte de destination",
"destinationPath": "Chemin de destination",
"recentDestinations": "Destinations récentes",
"collapseRecentDestinations": "Réduire les destinations récentes",
"expandRecentDestinations": "Développer les destinations récentes",
"browseFolders": "Parcourir les dossiers de destination",
"browseDestination": "Parcourir ou saisir un chemin",
"confirmCopy": "Copier",
"confirmMove": "Déplacer",
"transferring": "Transfert en cours…",
"progressVerifying": "Vérification de l'intégrité du fichier…",
"progressBenchmarking": "Sélection de l'itinéraire de transfert le plus rapide…",
"compressing": "Compression en cours…",
"extracting": "Extraction en cours…",
"transferringItems": "Transfert de {{current}} sur {{total}} éléments…",
"transferSuccess": "Transfert terminé",
"transferError": "Échec du transfert",
"transferPartial": "Transfert terminé avec {{count}} erreurs",
"transferPartialHint": "Impossible de transférer : {{paths}}",
"itemsSummary": "{{count}} éléments",
"destMustBeDirectory": "La destination doit être un dossier pour les transferts de plusieurs éléments",
"selectThisFolder": "Sélectionner ce dossier",
"browsePathWillBeCreated": "Ce dossier n’existe pas encore. Il sera créé au début du transfert.",
"browsePathError": "Impossible d’ouvrir ce chemin sur l’hôte de destination.",
"goUp": "Remonter",
"copyFolderToHost": "Copier le dossier vers l’hôte…",
"moveFolderToHost": "Déplacer le dossier vers l’hôte…",
"hostReady": "Prêt",
"hostConnecting": "Connexion en cours…",
"hostDisconnected": "Non connecté",
"hostAuthRequired": "Authentification requise — ouvrez d’abord le gestionnaire de fichiers sur cet hôte",
"hostConnectionFailed": "Échec de la connexion",
"metricsTitle": "Durées de transfert",
"metricsPrepare": "Préparation de la destination : {{duration}}",
"metricsCompress": "Compression sur la source : {{duration}}",
"metricsHopSourceRead": "Source → serveur : {{throughput}}",
"metricsHopDestSftpWrite": "Serveur → dest (SFTP) : {{throughput}}",
"metricsHopDestLocalWrite": "Serveur → dest (local) : {{throughput}}",
"metricsTransfer": "De bout en bout : {{throughput}} ({{duration}})",
"metricsExtract": "Extraction sur la destination : {{duration}}",
"metricsVerify": "Vérification SHA-256 : {{duration}}",
"metricsRouteBenchmark": "Sonde d'itinéraire — direct : {{direct}}, relais : {{relay}}",
"metricsSourceDelete": "Suppression depuis la source : {{duration}}",
"metricsTotal": "Total : {{duration}}",
"progressCompressing": "Compression sur l’hôte source…",
"progressExtracting": "Extraction sur la destination…",
"progressTransferring": "Transfert des données…",
"progressReconnecting": "Reconnexion…",
"parallelSegmentsLabel": "Voies de transfert parallèles",
"parallelSegmentsOption": "{{count}} voies",
"parallelSegmentsHint": "Les fichiers volumineux sont divisés en segments de 256 Mo. Les voies multiples utilisent des connexions distinctes (comme lancer plusieurs transferts) pour un débit total plus élevé.",
"progressTotalSpeed": "{{speed}} au total ({{lanes}} voies)",
"progressTransferringItems": "Transfert des fichiers ({{current}} sur {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} fichiers",
"sourceNotDeletedPartial": "Fichiers sources conservés (transfert partiel)",
"jumpHostLimitation": "Les deux hôtes doivent être accessibles depuis le serveur Termix. Le routage direct d’hôte à hôte n’est pas pris en charge.",
"cancel": "Annuler",
"methodLabel": "Méthode de transfert",
"methodAuto": "Auto",
"methodTar": "Archive tar",
"methodItemSftp": "SFTP par fichier",
"methodAutoHint": "Choisit l’archive tar ou le SFTP par fichier selon le nombre de fichiers, leur taille et leur compressibilité. Les fichiers uniques utilisent toujours le SFTP en continu (streaming).",
"methodTarHint": "Compresse sur la source, transfère une archive, extrait sur la destination. Nécessite tar sur les deux hôtes Unix.",
"methodItemSftpHint": "Transfère chaque fichier individuellement via SFTP. Fonctionne sur tous les hôtes, y compris Windows.",
"methodPreviewLoading": "Calcul de la méthode de transfert…",
"methodPreviewError": "Impossible de prévisualiser la méthode de transfert. Le serveur choisira tout de même une méthode au lancement.",
"methodPreviewWillUseTar": "Utilisera : Archive tar",
"methodPreviewWillUseItemSftp": "Utilisera : SFTP par fichier",
"methodPreviewScanSummary": "{{fileCount}} fichiers, {{totalSize}} au total (analysés sur l’hôte source).",
"methodItemSftpLimitation": "Chaque fichier utilise le même flux SFTP qu’une copie de fichier unique, l’un après l’autre. La progression est combinée pour tous les fichiers, donc la barre avance lentement lors de gros fichiers.",
"methodReason": {
"user_item_sftp": "Vous avez choisi SFTP par fichier.",
"user_tar": "Vous avez choisi l'archive tar.",
"tar_unavailable": "Tar n'est pas disponible sur l'un ou les deux hôtes — SFTP par fichier sera utilisé à la place.",
"windows_host": "Un hôte Windows est impliqué — tar n'est pas utilisé.",
"auto_multi_large": "Auto : plusieurs fichiers dont un fichier volumineux ({{largestSize}}) avec des données compressibles — tar regroupe en un seul transfert.",
"auto_single_large_in_archive": "Auto : un fichier volumineux ({{largestSize}}) dans cet ensemble — SFTP par fichier.",
"auto_many_incompressible": "Auto : données principalement incompressibles — SFTP par fichier.",
"auto_many_files": "Auto : nombreux fichiers ({{fileCount}}) — tar réduit la surcharge par fichier.",
"auto_default": "Auto : SFTP par fichier pour cet ensemble."
},
"progressCancel": "Annuler",
"progressCancelling": "Annulation en cours…",
"progressStalled": "Bloqué",
"resumedHint": "Reconnecté à un transfert actif démarré dans une autre fenêtre.",
"transferCancelled": "Transfert annulé",
"transferCancelledCopyHint": "Des fichiers partiels peuvent subsister sur la destination.",
"transferCancelledMoveHint": "Des fichiers partiels peuvent subsister sur la destination. Les fichiers sources n'ont pas été supprimés.",
"cleanupDestFiles": "Nettoyer la destination",
"cleanupDestFilesSuccess": "Fichiers partiels supprimés de la destination",
"cleanupDestFilesPartial": "Certains fichiers partiels n'ont pas pu être supprimés",
"cleanupDestFilesNothing": "Rien à nettoyer sur la destination",
"cleanupDestFilesError": "Échec du nettoyage",
"retryTransfer": "Réessayer",
"retryTransferError": "Échec de la nouvelle tentative",
"transferFailedRetryHint": "Des données partielles ont été conservées sur la destination. La nouvelle tentative reprendra lorsque la connexion sera rétablie."
"sourceNotDeletedPartial": "Fichiers sources conservés (transfert partiel)"
},
"tunnels": {
"connect": "Connecter",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Tunnel client",
"addClientTunnel": "Ajouter un tunnel client",
"active": "Actif",
"start": "Démarrer",
"stop": "Arrêter",
"typeServerLocalDesc": "De l’hôte actuel vers le point de terminaison.",
"typeServerRemoteDesc": "Du point de terminaison vers l’hôte actuel.",
"typeClientLocalDesc": "De l’ordinateur local vers le point de terminaison.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Limitation de débit : trop de tentatives de vérification. Veuillez patienter {{time}} secondes avant de réessayer.",
"authTokenSaveFailed": "Échec de l'enregistrement du jeton d'authentification",
"authTokenMissing": "Le serveur n'a pas renvoyé de nouveau jeton d'authentification. Veuillez vous reconnecter.",
"failedToLoadServer": "Échec du chargement du serveur",
"remoteServerRequired": "Serveur distant requis. Connectez un serveur distant dans les paramètres pour utiliser ce type de connexion."
"failedToLoadServer": "Échec du chargement du serveur"
},
"messages": {
"registrationDisabled": "L'inscription de nouveaux comptes est actuellement désactivée par un administrateur. Veuillez vous connecter ou contacter un administrateur.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protocole",
"domainLabel": "Domaine",
"domainPlaceholder": "facultatif",
"connectToTerminal": "Se connecter au terminal",
"connectToFiles": "Se connecter aux fichiers"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "בחרו ערכת נושא, צבע הדגשה ושפה. ניתן לשנות את שלושתם מאוחר יותר בהגדרות.",
"featuresTitle": "מה עוד עושה טרמיקס",
"featuresIntro": "כל שרת שתשמרו ניתן לפתוח ביותר מטרמינל אחד. הנה מה שמחכה מאחורי הסמלים משמאל.",
"feature_files": "מנהל הקבצים",
"feature_files_desc": "דפדף, העלה, הורד וערוך קבצים דרך SFTP מבלי לצאת מהאפליקציה.",
"feature_tunnels": "מנהרות",
"feature_tunnels_desc": "העברת פורטים דרך שרת כדי להגיע לשירותים שאינם חשופים.",
"feature_snippets": "קטעי טקסט",
"feature_snippets_desc": "שמור פקודות שאתה מפעיל לעתים קרובות ושלח אותן למסוף בלחיצה אחת.",
"featuresRailHint": "לא צריך אחד מאלה? הסתר כל סמל בסרגל הצד בהגדרות, תחת ניווט.",
@@ -449,7 +445,6 @@
"passwordSaved": "הסיסמה נשמרה, הקלד כדי לשנות",
"key": "מַפְתֵחַ",
"credential": "תְעוּדָה",
"none": "אַף לֹא אֶחָד",
"sshPrivateKey": "מפתח פרטי SSH",
"keyType": "סוג מפתח",
"uploadFile": "העלאת קובץ",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "מרווח זמן שמירה (שניות)",
"maxKeepaliveMisses": "מקס קיפלייב מחמיץ",
"sameHost": "מארח זה (מנהרה ישירה)",
"bindHost": "מארח קשירה",
"connectionToolbar": "סרגל הכלים לחיבור",
"showConnectionToolbar": "הצג סרגל הכלים של החיבור",
"showConnectionToolbarDesc": "הצג את סרגל הכלים בהפעלות SSH, RDP, VNC ו-Telnet של מחשב מארח זה. ניתן גם להסתיר אותו באופן זמני מסרגל הכלים עצמו.",
"proxmoxLastSyncStatus": {
"success": "הַצלָחָה"
},
"proxmoxGuestsSelected_one": "{{count}} אורח — {{selected}} נבחר",
"proxmoxGuestsSelected_other": "{{count}} אורחים — {{selected}} נבחרו",
"proxmoxImportButton_one": "ייבוא מארח {{count}}",
"proxmoxImportButton_other": "ייבוא מארחים {{count}}",
"proxmoxResultSkippedNoIp": "{{count}} דילג (לא נמצאה כתובת IP)",
"proxmoxStatsUrlCopied": "כתובת האתר של סטטיסטיקות Proxmox הועתקה ללוח",
"copyProxmoxStatsUrlAction": "העתק כתובת URL של סטטיסטיקות Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "מארחים מעודכנים {{count}}",
"friendlyNameLabel": "שם ידידותי",
"descriptionLabel": "תֵאוּר",
"loadingHost": "טוען מארח...",
"loadingHosts": "טוען מארחים...",
"loadingCredentials": "טוען אישורים...",
"noHostsYet": "עדיין אין מארחים",
"noHostsYetHint": "הוסף שרת כדי לפתוח טרמינלים, לעיין בקבצים ולראות מדדים.",
"noHostsMatchSearch": "אין מארחים התואמים את החיפוש שלך",
"hostNotFound": "המארח לא נמצא",
"searchHosts": "חיפוש מארחים...",
"sortHosts": "מיין מארחים",
"sortDefault": "סדר ברירת מחדל",
@@ -925,7 +913,6 @@
"filterAuthKey": "מפתח SSH",
"filterAuthCredential": "תְעוּדָה",
"filterAuthNone": "אַף לֹא אֶחָד",
"filterAuthOpkssh": "אופקש",
"filterAuthStepca": "שלב CA",
"filterProtocolGroup": "פּרוֹטוֹקוֹל",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "התחברות למארח",
"clear": "בָּרוּר",
"paste": "לְהַדבִּיק",
"connected": "מְחוּבָּר",
"clipboardWriteFailed": "ההעתקה ללוח נכשלה. ודא שהדף מוגש דרך HTTPS או localhost.",
"clipboardReadFailed": "הקריאה מהלוח נכשלה. ודא שהרשאות הלוח ניתנות.",
"tmuxDetach": "ניתוק מסשן tmux",
"terminalTitle": "טרמינל - {{host}}",
"terminalWithPath": "טרמינל - {{host}}:{{path}}",
"runTitle": "ריצה {{command}} - {{host}}",
"totpRequired": "נדרש אימות דו-שלבי",
"totpCodeLabel": "קוד אימות",
"totpVerify": "לְאַמֵת",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "העתק למארח…",
"moveToHost": "מעבר למארח…",
"copyItemsToHost": "העתק את הפריטים {{count}} לאירוח…",
"moveItemsToHost": "העבר {{count}} פריטים לאירוח…",
"noHostsConnected": "אין מארחי מנהל קבצים אחרים זמינים.",
"noHostsConnectedHint": "הוסף מארח SSH נוסף כאשר מנהל הקבצים מופעל במנהל המארחים.",
"selectDestinationHost": "בחר מארח יעד",
"destinationPath": "נתיב היעד",
"recentDestinations": "יעדים אחרונים",
"collapseRecentDestinations": "כיווץ יעדים אחרונים",
"expandRecentDestinations": "הרחב יעדים אחרונים",
"browseFolders": "עיון בתיקיות יעד",
"browseDestination": "עיון או הזנת נתיב",
"confirmCopy": "לְהַעְתִיק",
"confirmMove": "מַהֲלָך",
"transferring": "מעביר…",
"progressVerifying": "אימות שלמות הקובץ…",
"progressBenchmarking": "בחירת נתיב ההעברה המהיר ביותר…",
"compressing": "דחיסת…",
"extracting": "מחלץ…",
"transferringItems": "העברת {{current}} מתוך {{total}} פריטים…",
"transferSuccess": "ההעברה הושלמה",
"transferError": "ההעברה נכשלה",
"transferPartial": "ההעברה הושלמה עם שגיאות {{count}}",
"transferPartialHint": "לא ניתן היה להעביר: {{paths}}",
"itemsSummary": "פריטים {{count}}",
"destMustBeDirectory": "היעד חייב להיות ספרייה עבור העברות מרובות פריטים",
"selectThisFolder": "בחר תיקייה זו",
"browsePathWillBeCreated": "תיקייה זו עדיין לא קיימת. היא תיווצר כאשר ההעברה תתחיל.",
"browsePathError": "לא ניתן היה לפתוח נתיב זה במארח היעד.",
"goUp": "לַעֲלוֹת",
"copyFolderToHost": "העתקת תיקייה למארח…",
"moveFolderToHost": "העברת תיקייה למארח…",
"hostReady": "מוּכָן",
"hostConnecting": "חיבור…",
"hostDisconnected": "לא מחובר",
"hostAuthRequired": "נדרש אימות - פתח תחילה את מנהל הקבצים במארח זה",
"hostConnectionFailed": "החיבור נכשל",
"metricsTitle": "זמני העברה",
"metricsPrepare": "הכנת יעד: {{duration}}",
"metricsCompress": "דחיסה במקור: {{duration}}",
"metricsHopSourceRead": "מקור → שרת: {{throughput}}",
"metricsHopDestSftpWrite": "שרת → יעד (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "שרת → יעד (מקומי): {{throughput}}",
"metricsTransfer": "מקצה לקצה: {{throughput}} ({{duration}})",
"metricsExtract": "חילוץ ביעד: {{duration}}",
"metricsVerify": "SHA-256 אומת: {{duration}}",
"metricsRouteBenchmark": "גשש מסלול — ישיר: {{direct}}, ממסר: {{relay}}",
"metricsSourceDelete": "הסר מהמקור: {{duration}}",
"metricsTotal": "סה\"כ: {{duration}}",
"progressCompressing": "דחיסה במארח המקור…",
"progressExtracting": "מחלץ ביעד…",
"progressTransferring": "העברת נתונים…",
"progressReconnecting": "מתחבר מחדש…",
"parallelSegmentsLabel": "נתיבי מעבר מקבילים",
"parallelSegmentsOption": "נתיבים {{count}}",
"parallelSegmentsHint": "קבצים גדולים מחולקים לחתיכות של 256 מגה-בייט. מספר נתיבים משתמשים בחיבורים נפרדים (כמו התחלת מספר העברות) לקבלת תפוקה כוללת גבוהה יותר.",
"progressTotalSpeed": "סה\"כ {{speed}} (נתיבים{{lanes}})",
"progressTransferringItems": "העברת קבצים ({{current}} מתוך {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "קבצים {{current}} / {{total}}",
"sourceNotDeletedPartial": "קבצי המקור נשמרו (העברה חלקית)",
"jumpHostLimitation": "שני המארחים חייבים להיות נגישים משרת Termix. ניתוב ישיר ממארח למארח אינו נתמך.",
"cancel": "לְבַטֵל",
"methodLabel": "שיטת העברה",
"methodAuto": "אוטומטי",
"methodTar": "ארכיון טאר",
"methodItemSftp": "SFTP לפי קובץ",
"methodAutoHint": "בוחר SFTP לפי קובץ או tar בהתבסס על ספירת הקבצים, גודלם ויכולת הדחיסה. קבצים בודדים תמיד משתמשים ב-SFTP בסטרימינג.",
"methodTarHint": "דחיסה במקור, העברת ארכיון אחד, חילוץ ביעד. דורש tar בשני מארחי יוניקס.",
"methodItemSftpHint": "העבר כל קובץ בנפרד דרך SFTP. עובד על כל המארחים כולל Windows.",
"methodPreviewLoading": "חישוב שיטת ההעברה…",
"methodPreviewError": "לא ניתן היה להציג תצוגה מקדימה של שיטת ההעברה. השרת עדיין יבחר שיטה כשתתחיל.",
"methodPreviewWillUseTar": "אשתמש ב: ארכיון Tar",
"methodPreviewWillUseItemSftp": "ישתמש ב: SFTP לפי קובץ",
"methodPreviewScanSummary": "{{fileCount}} קבצים, {{totalSize}} סה\"כ (נסרק במארח המקור).",
"methodItemSftpLimitation": "כל קובץ משתמש באותו זרם SFTP כעותק של קובץ בודד, אחד אחרי השני. ההתקדמות משולבת על פני כל הקבצים, כך שהסרגל נע לאט במהלך קבצים גדולים.",
"methodReason": {
"user_item_sftp": "בחרת SFTP לפי קובץ.",
"user_tar": "בחרת בארכיון tar.",
"tar_unavailable": "Tar אינו זמין באחד המארחים או בשניהם - במקום זאת ייעשה שימוש ב-SFTP לפי קובץ.",
"windows_host": "מחשב מארח של Windows מעורב - tar אינו בשימוש.",
"auto_multi_large": "אוטומטי: קבצים מרובים כולל קובץ גדול ({{largestSize}}) עם נתונים דחוסים - tar מאחד את הנתונים להעברה אחת.",
"auto_single_large_in_archive": "אוטומטי: קובץ גדול אחד ({{largestSize}}) בקבוצה זו - SFTP לכל קובץ.",
"auto_many_incompressible": "אוטומטי: נתונים לרוב בלתי ניתנים לדחיסה - SFTP לכל קובץ.",
"auto_many_files": "אוטומטי: קבצים רבים ({{fileCount}}) — tar מפחית את התקורה של כל קובץ.",
"auto_default": "אוטומטי: SFTP לכל קובץ עבור קבוצה זו."
},
"progressCancel": "לְבַטֵל",
"progressCancelling": "מבטל…",
"progressStalled": "אָבוּס",
"resumedHint": "התחבר מחדש להעברה פעילה שהתחילה בחלון אחר.",
"transferCancelled": "ההעברה בוטלה",
"transferCancelledCopyHint": "ייתכן שיישארו קבצים חלקיים ביעד.",
"transferCancelledMoveHint": "ייתכן שיישארו קבצים חלקיים ביעד. קבצי המקור לא הוסרו.",
"cleanupDestFiles": "יעד ניקוי",
"cleanupDestFilesSuccess": "הוסרו קבצים חלקיים מהיעד",
"cleanupDestFilesPartial": "לא ניתן היה להסיר חלק מהקבצים",
"cleanupDestFilesNothing": "אין מה לנקות ביעד",
"cleanupDestFilesError": "הניקוי נכשל",
"retryTransfer": "נסה שוב",
"retryTransferError": "ניסיון חוזר נכשל",
"transferFailedRetryHint": "נתונים חלקיים נשמרו ביעד. ניסיון חוזר יחודש כאשר החיבור יחזור."
"sourceNotDeletedPartial": "קבצי המקור נשמרו (העברה חלקית)"
},
"tunnels": {
"connect": "לְחַבֵּר",
@@ -1261,8 +1153,6 @@
"clientTunnel": "מנהרת לקוח",
"addClientTunnel": "הוסף מנהרת לקוח",
"active": "פָּעִיל",
"start": "הַתחָלָה",
"stop": "לְהַפְסִיק",
"typeServerLocalDesc": "מהמארח הנוכחי לנקודת הקצה.",
"typeServerRemoteDesc": "נקודת הקצה חזרה למארח הנוכחי.",
"typeClientLocalDesc": "מחשב מקומי לנקודת קצה.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "קצב מוגבל: יותר מדי ניסיונות אימות. אנא המתן {{time}} שניות לפני שתנסה שוב.",
"authTokenSaveFailed": "נכשלה שמירת אסימון האימות",
"authTokenMissing": "השרת לא החזיר אסימון אימות חדש. אנא היכנס שוב.",
"failedToLoadServer": "טעינת השרת נכשלה",
"remoteServerRequired": "נדרש שרת מרוחק. יש להתחבר לשרת מרוחק בהגדרות כדי להשתמש בסוג חיבור זה."
"failedToLoadServer": "טעינת השרת נכשלה"
},
"messages": {
"registrationDisabled": "רישום חשבון חדש מושבת כעת על ידי מנהל. אנא התחבר או צור קשר עם מנהל.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "פּרוֹטוֹקוֹל",
"domainLabel": "תְחוּם",
"domainPlaceholder": "אופציונלי",
"connectToTerminal": "התחברות לטרמינל",
"connectToFiles": "התחברות לקבצים"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "एक थीम, एक एक्सेंट कलर और अपनी भाषा चुनें। इन तीनों को बाद में सेटिंग्स में बदला जा सकता है।",
"featuresTitle": "टर्मिक्स और क्या करता है?",
"featuresIntro": "आपके द्वारा सहेजे गए प्रत्येक सर्वर को टर्मिनल के अलावा अन्य माध्यमों में भी खोला जा सकता है। बाईं ओर के आइकनों के पीछे क्या है, यह नीचे दिया गया है।",
"feature_files": "फ़ाइल मैनेजर",
"feature_files_desc": "ऐप छोड़े बिना SFTP के माध्यम से फाइलों को ब्राउज़ करें, अपलोड करें, डाउनलोड करें और संपादित करें।",
"feature_tunnels": "सुरंगों",
"feature_tunnels_desc": "सर्वर के माध्यम से पोर्ट को फॉरवर्ड करके उन सेवाओं तक पहुंचें जो उपलब्ध नहीं हैं।",
"feature_snippets": "स्निपेट्स",
"feature_snippets_desc": "आप जिन कमांड्स को अक्सर चलाते हैं उन्हें सेव करें और एक क्लिक में उन्हें टर्मिनल पर भेजें।",
"featuresRailHint": "इनमें से किसी आइकन की आवश्यकता नहीं है? सेटिंग में जाकर नेविगेशन के अंतर्गत साइडबार से किसी भी आइकन को छिपा दें।",
@@ -449,7 +445,6 @@
"passwordSaved": "पासवर्ड सहेज लिया गया है, बदलने के लिए टाइप करें",
"key": "कुंजी",
"credential": "क्रेडेंशियल",
"none": "कोई नहीं",
"sshPrivateKey": "SSH निजी कुंजी",
"keyType": "कुंजी प्रकार",
"uploadFile": "फ़ाइल अपलोड करें",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "कीपअलाइव अंतराल (सेकंड)",
"maxKeepaliveMisses": "अधिकतम कीपअलाइव मिस",
"sameHost": "यह होस्ट (डायरेक्ट टनल)",
"bindHost": "बाइंड होस्ट",
"connectionToolbar": "कनेक्शन टूलबार",
"showConnectionToolbar": "कनेक्शन टूलबार दिखाएँ",
"showConnectionToolbarDesc": "इस होस्ट के SSH, RDP, VNC और Telnet सेशन में टूलबार दिखाएँ। आप इसे टूलबार से अस्थायी रूप से छिपा भी सकते हैं।",
"proxmoxLastSyncStatus": {
"success": "सफलता"
},
"proxmoxGuestsSelected_one": "{{count}} अतिथि — {{selected}} चयनित",
"proxmoxGuestsSelected_other": "{{count}} अतिथि — {{selected}} चयनित",
"proxmoxImportButton_one": "{{count}} होस्ट आयात करें",
"proxmoxImportButton_other": "{{count}} होस्ट आयात करें",
"proxmoxResultSkippedNoIp": "{{count}} को छोड़ दिया गया (कोई आईपी नहीं मिला)",
"proxmoxStatsUrlCopied": "Proxmox Stats URL क्लिपबोर्ड पर कॉपी हो गया है",
"copyProxmoxStatsUrlAction": "Proxmox Stats URL कॉपी करें",
@@ -896,13 +886,11 @@
"updatedCount": "{{count}} होस्ट अपडेट किए गए",
"friendlyNameLabel": "अनुकूल नाम",
"descriptionLabel": "विवरण",
"loadingHost": "होस्ट लोड हो रहा है...",
"loadingHosts": "होस्ट लोड हो रहे हैं...",
"loadingCredentials": "क्रेडेंशियल लोड हो रहे हैं...",
"noHostsYet": "अभी तक कोई होस्ट नहीं है",
"noHostsYetHint": "टर्मिनल खोलने, फाइलों को ब्राउज़ करने और मेट्रिक्स देखने के लिए एक सर्वर जोड़ें।",
"noHostsMatchSearch": "आपकी खोज से मेल खाने वाले कोई होस्ट नहीं हैं",
"hostNotFound": "होस्ट नहीं मिला",
"searchHosts": "होस्ट खोजें...",
"sortHosts": "होस्ट क्रमबद्ध करें",
"sortDefault": "डिफ़ॉल्ट क्रम",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH कुंजी",
"filterAuthCredential": "क्रेडेंशियल",
"filterAuthNone": "कोई नहीं",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "स्टेप सीए",
"filterProtocolGroup": "प्रोटोकॉल",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "होस्ट से कनेक्ट करें",
"clear": "साफ़ करें",
"paste": "चिपकाएँ",
"connected": "कनेक्टेड",
"clipboardWriteFailed": "क्लिपबोर्ड पर कॉपी करने में विफल। सुनिश्चित करें कि पेज HTTPS या लोकलहोस्ट पर सर्व किया गया है।",
"clipboardReadFailed": "क्लिपबोर्ड से पढ़ने में विफल। सुनिश्चित करें कि क्लिपबोर्ड अनुमतियाँ दी गई हैं।",
"tmuxDetach": "tmux सत्र से डिटैच करें",
"terminalTitle": "टर्मिनल - {{host}}",
"terminalWithPath": "टर्मिनल - {{host}}:{{path}}",
"runTitle": "{{command}} चल रहा है - {{host}}",
"totpRequired": "दो-कारक प्रमाणीकरण आवश्यक है",
"totpCodeLabel": "सत्यापन कोड",
"totpVerify": "सत्यापित करें",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "होस्ट पर कॉपी करें…",
"moveToHost": "होस्ट पर ले जाएँ…",
"copyItemsToHost": "{{count}} आइटम होस्ट पर कॉपी करें…",
"moveItemsToHost": "{{count}} आइटम होस्ट पर स्थानांतरित करें…",
"noHostsConnected": "कोई अन्य फ़ाइल प्रबंधक होस्ट उपलब्ध नहीं है।",
"noHostsConnectedHint": "होस्ट प्रबंधक में फ़ाइल प्रबंधक सक्षम किए हुए एक और SSH होस्ट जोड़ें।",
"selectDestinationHost": "गंतव्य होस्ट चुनें",
"destinationPath": "गंतव्य पथ",
"recentDestinations": "हाल के गंतव्य",
"collapseRecentDestinations": "हाल के गंतव्य संकुचित करें",
"expandRecentDestinations": "हाल के गंतव्य विस्तारित करें",
"browseFolders": "गंतव्य फ़ोल्डर ब्राउज़ करें",
"browseDestination": "पथ ब्राउज़ करें या दर्ज करें",
"confirmCopy": "कॉपी करें",
"confirmMove": "स्थानांतरित करें",
"transferring": "स्थानांतरित हो रहा है…",
"progressVerifying": "फ़ाइल की अखंडता का सत्यापन…",
"progressBenchmarking": "सबसे तेज़ स्थानांतरण मार्ग का चयन करना…",
"compressing": "संपीड़ित किया जा रहा है…",
"extracting": "निकाला जा रहा है…",
"transferringItems": "{{total}} में से {{current}} आइटम स्थानांतरित हो रहे हैं…",
"transferSuccess": "स्थानांतरण पूर्ण",
"transferError": "स्थानांतरण विफल",
"transferPartial": "स्थानांतरण {{count}} त्रुटियों के साथ पूर्ण हुआ",
"transferPartialHint": "स्थानांतरित नहीं किया जा सका: {{paths}}",
"itemsSummary": "{{count}} आइटम",
"destMustBeDirectory": "कई आइटम स्थानांतरण के लिए गंतव्य एक निर्देशिका होना चाहिए",
"selectThisFolder": "यह फ़ोल्डर चुनें",
"browsePathWillBeCreated": "यह फ़ोल्डर अभी मौजूद नहीं है। स्थानांतरण शुरू होने पर इसे बनाया जाएगा।",
"browsePathError": "गंतव्य होस्ट पर यह पथ नहीं खोला जा सका।",
"goUp": "ऊपर जाएं",
"copyFolderToHost": "फ़ोल्डर होस्ट पर कॉपी करें…",
"moveFolderToHost": "फ़ोल्डर होस्ट पर स्थानांतरित करें…",
"hostReady": "तैयार",
"hostConnecting": "कनेक्ट हो रहा है…",
"hostDisconnected": "कनेक्ट नहीं है",
"hostAuthRequired": "प्रमाणीकरण आवश्यक है — पहले इस होस्ट पर फ़ाइल प्रबंधक खोलें",
"hostConnectionFailed": "कनेक्शन विफल",
"metricsTitle": "स्थानांतरण समय",
"metricsPrepare": "गंतव्य तैयारी: {{duration}}",
"metricsCompress": "स्रोत पर संपीड़न: {{duration}}",
"metricsHopSourceRead": "स्रोत → सर्वर: {{throughput}}",
"metricsHopDestSftpWrite": "सर्वर → गंतव्य (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "सर्वर → गंतव्य (स्थानीय): {{throughput}}",
"metricsTransfer": "एंड-टू-एंड: {{throughput}} ({{duration}})",
"metricsExtract": "गंतव्य पर निष्कर्षण: {{duration}}",
"metricsVerify": "SHA-256 सत्यापित: {{duration}}",
"metricsRouteBenchmark": "रूट प्रोब — डायरेक्ट: {{direct}}, रिले: {{relay}}",
"metricsSourceDelete": "स्रोत से हटाना: {{duration}}",
"metricsTotal": "कुल: {{duration}}",
"progressCompressing": "स्रोत होस्ट पर संपीड़ित कर रहा है…",
"progressExtracting": "गंतव्य पर निष्कर्षण कर रहा है…",
"progressTransferring": "डेटा स्थानांतरित कर रहा है…",
"progressReconnecting": "पुनः कनेक्ट हो रहा है…",
"parallelSegmentsLabel": "समानांतर स्थानांतरण लेन",
"parallelSegmentsOption": "{{count}} लेन",
"parallelSegmentsHint": "बड़ी फ़ाइलें 256 MB टुकड़ों में विभाजित होती हैं। एकाधिक लेन उच्च कुल थ्रूपुट के लिए अलग-अलग कनेक्शन का उपयोग करती हैं (जैसे कई स्थानांतरण प्रारंभ करना)।",
"progressTotalSpeed": "{{speed}} कुल ({{lanes}} लेन)",
"progressTransferringItems": "फ़ाइलें स्थानांतरित कर रहा है ({{current}} / {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} फ़ाइलें",
"sourceNotDeletedPartial": "स्रोत फ़ाइलें रखी गईं (आंशिक स्थानांतरण)",
"jumpHostLimitation": "दोनों होस्ट Termix सर्वर से पहुँच योग्य होने चाहिए। सीधा होस्ट-से-होस्ट रूटिंग समर्थित नहीं है।",
"cancel": "रद्द करें",
"methodLabel": "स्थानांतरण विधि",
"methodAuto": "स्वचालित",
"methodTar": "Tar संग्रह",
"methodItemSftp": "प्रति-फ़ाइल SFTP",
"methodAutoHint": "फ़ाइलों की संख्या, आकार और संपीड़न क्षमता के आधार पर tar या प्रति-फ़ाइल SFTP चुनता है। एकल फ़ाइलें हमेशा स्ट्रीमिंग SFTP का उपयोग करती हैं।",
"methodTarHint": "स्रोत पर संपीड़ित करें, एक संग्रह स्थानांतरित करें, गंतव्य पर निष्कर्षण करें। दोनों यूनिक्स होस्ट पर tar आवश्यक है।",
"methodItemSftpHint": "प्रत्येक फ़ाइल को SFTP पर अलग-अलग स्थानांतरित करें। विंडोज़ सहित सभी होस्ट पर काम करता है।",
"methodPreviewLoading": "स्थानांतरण विधि की गणना कर रहा है…",
"methodPreviewError": "स्थानांतरण विधि का पूर्वावलोकन नहीं किया जा सका। प्रारंभ करने पर सर्वर फिर भी एक विधि चुनेगा।",
"methodPreviewWillUseTar": "उपयोग करेगा: Tar संग्रह",
"methodPreviewWillUseItemSftp": "उपयोग करेगा: प्रति-फ़ाइल SFTP",
"methodPreviewScanSummary": "{{fileCount}} फ़ाइलें, कुल {{totalSize}} (स्रोत होस्ट पर स्कैन किया गया)।",
"methodItemSftpLimitation": "प्रत्येक फ़ाइल एक-एक करके एकल-फ़ाइल प्रतिलिपि के रूप में समान SFTP स्ट्रीम का उपयोग करती है। सभी फ़ाइलों में प्रगति संयुक्त होती है, इसलिए बड़ी फ़ाइलों के दौरान बार धीरे-धीरे चलता है।",
"methodReason": {
"user_item_sftp": "आपने प्रति-फ़ाइल SFTP चुना।",
"user_tar": "आपने tar संग्रह चुना।",
"tar_unavailable": "Tar एक या दोनों होस्ट पर उपलब्ध नहीं है — इसके बजाय प्रति-फ़ाइल SFTP का उपयोग किया जाएगा।",
"windows_host": "कोई Windows होस्ट शामिल है — tar का उपयोग नहीं होता।",
"auto_multi_large": "ऑटो: संपीड़न योग्य डेटा वाली एक बड़ी फ़ाइल ({{largestSize}}) सहित अनेक फ़ाइलें — tar एकल स्थानांतरण में बंडल करता है।",
"auto_single_large_in_archive": "ऑटो: इस सेट में एक बड़ी फ़ाइल ({{largestSize}}) — प्रति-फ़ाइल SFTP।",
"auto_many_incompressible": "ऑटो: अधिकतर असंपीड़नीय डेटा — प्रति-फ़ाइल SFTP।",
"auto_many_files": "ऑटो: बहुत सारी फ़ाइलें ({{fileCount}}) — tar प्रति-फ़ाइल ओवरहेड कम करता है।",
"auto_default": "ऑटो: इस सेट के लिए प्रति-फ़ाइल SFTP।"
},
"progressCancel": "रद्द करें",
"progressCancelling": "रद्द कर रहा है…",
"progressStalled": "रुका हुआ",
"resumedHint": "किसी अन्य विंडो में शुरू हुए सक्रिय स्थानांतरण से पुनः जुड़ा।",
"transferCancelled": "स्थानांतरण रद्द किया गया।",
"transferCancelledCopyHint": "आंशिक फ़ाइलें गंतव्य पर रह सकती हैं।",
"transferCancelledMoveHint": "आंशिक फ़ाइलें गंतव्य पर रह सकती हैं। स्रोत फ़ाइलें नहीं हटाई गईं।",
"cleanupDestFiles": "गंतव्य साफ करें",
"cleanupDestFilesSuccess": "गंतव्य से आंशिक फ़ाइलें हटा दी गईं।",
"cleanupDestFilesPartial": "कुछ आंशिक फ़ाइलें नहीं हटाई जा सकीं।",
"cleanupDestFilesNothing": "गंतव्य पर साफ करने के लिए कुछ नहीं।",
"cleanupDestFilesError": "सफाई विफल रही।",
"retryTransfer": "पुनः प्रयास करें",
"retryTransferError": "पुनः प्रयास विफल रहा।",
"transferFailedRetryHint": "आंशिक डेटा गंतव्य पर रखा गया था। कनेक्शन वापस आने पर पुनः प्रयास फिर से शुरू होगा।"
"sourceNotDeletedPartial": "स्रोत फ़ाइलें रखी गईं (आंशिक स्थानांतरण)"
},
"tunnels": {
"connect": "कनेक्ट करें",
@@ -1261,8 +1153,6 @@
"clientTunnel": "क्लाइंट टनल",
"addClientTunnel": "क्लाइंट टनल जोड़ें",
"active": "सक्रिय",
"start": "शुरू करें",
"stop": "बंद करें",
"typeServerLocalDesc": "वर्तमान होस्ट से एंडपॉइंट तक।",
"typeServerRemoteDesc": "एंडपॉइंट से वर्तमान होस्ट तक वापस।",
"typeClientLocalDesc": "स्थानीय कंप्यूटर से एंडपॉइंट तक।",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "दर सीमित: बहुत अधिक सत्यापन प्रयास। कृपया पुनः प्रयास करने से पहले {{time}} सेकंड प्रतीक्षा करें।",
"authTokenSaveFailed": "प्रमाणीकरण टोकन सहेजने में विफल",
"authTokenMissing": "सर्वर ने नया प्रमाणीकरण टोकन नहीं भेजा। कृपया दोबारा साइन इन करें।",
"failedToLoadServer": "सर्वर लोड करने में विफल",
"remoteServerRequired": "रिमोट सर्वर आवश्यक है। इस कनेक्शन प्रकार का उपयोग करने के लिए सेटिंग्स में जाकर रिमोट सर्वर कनेक्ट करें।"
"failedToLoadServer": "सर्वर लोड करने में विफल"
},
"messages": {
"registrationDisabled": "नया खाता पंजीकरण वर्तमान में व्यवस्थापक द्वारा अक्षम है। कृपया लॉग इन करें या व्यवस्थापक से संपर्क करें।",
@@ -1831,7 +1720,6 @@
"protocolLabel": "शिष्टाचार",
"domainLabel": "कार्यक्षेत्र",
"domainPlaceholder": "वैकल्पिक",
"connectToTerminal": "टर्मिनल से कनेक्ट करें",
"connectToFiles": "फ़ाइलों से कनेक्ट करें"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Válassz egy témát, egy kiemelőszínt és a nyelvet. Mindhármat később módosíthatod a Beállításokban.",
"featuresTitle": "Mit csinál még a Termix?",
"featuresIntro": "Minden mentett szerver megnyitható nem csak terminálban. Íme, mi vár a bal oldali ikonok mögött.",
"feature_files": "Fájlkezelő",
"feature_files_desc": "Böngésszen, töltsön fel, töltsön le és szerkeszthessen fájlokat SFTP-n keresztül az alkalmazás elhagyása nélkül.",
"feature_tunnels": "Alagutak",
"feature_tunnels_desc": "Portok továbbítása egy szerveren keresztül a nem elérhető szolgáltatások eléréséhez.",
"feature_snippets": "Kódrészletek",
"feature_snippets_desc": "Mentsd el a gyakran futtatott parancsokat, és küldd el őket egy terminálba egyetlen kattintással.",
"featuresRailHint": "Nincs szükséged ezekre? Rejtsd el az ikonokat az oldalsávon a Beállításokban, a Navigáció alatt.",
@@ -449,7 +445,6 @@
"passwordSaved": "Jelszó mentve, gépelje be a módosításhoz",
"key": "Kulcsfontosságú",
"credential": "Hitelesítő adat",
"none": "Egyik sem",
"sshPrivateKey": "SSH privát kulcs",
"keyType": "Kulcstípus",
"uploadFile": "Fájl feltöltése",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Életben tartási időköz (másodperc)",
"maxKeepaliveMisses": "Max Keepalive kihagyások",
"sameHost": "Ez a gazdagép (közvetlen alagút)",
"bindHost": "Kötőállomás",
"connectionToolbar": "Kapcsolat eszköztár",
"showConnectionToolbar": "Kapcsolat eszköztár megjelenítése",
"showConnectionToolbarDesc": "Eszköztár megjelenítése a gazdagép SSH, RDP, VNC és Telnet munkameneteiben. Ideiglenesen el is rejtheti magáról az eszköztárról.",
"proxmoxLastSyncStatus": {
"success": "Siker"
},
"proxmoxGuestsSelected_one": "{{count}} vendég — {{selected}} kiválasztva",
"proxmoxGuestsSelected_other": "{{count}} vendégek — {{selected}} kiválasztva",
"proxmoxImportButton_one": "Importálja a {{count}} gazdagépet",
"proxmoxImportButton_other": "{{count}} hosztok importálása",
"proxmoxResultSkippedNoIp": "{{count}} kihagyva (nem található IP cím)",
"proxmoxStatsUrlCopied": "Proxmox Statisztikai URL a vágólapra másolva",
"copyProxmoxStatsUrlAction": "Proxmox Statisztika URL másolása",
@@ -896,13 +886,11 @@
"updatedCount": "Frissített {{count}} gazdagépek",
"friendlyNameLabel": "Barátságos név",
"descriptionLabel": "Leírás",
"loadingHost": "Gazdagép betöltése...",
"loadingHosts": "Gazdagépek betöltése...",
"loadingCredentials": "Hitelesítő adatok betöltése...",
"noHostsYet": "Még nincsenek házigazdák",
"noHostsYetHint": "Adjon hozzá egy szervert terminálok megnyitásához, fájlok böngészéséhez és metrikák megtekintéséhez.",
"noHostsMatchSearch": "Nincsenek a keresésnek megfelelő házigazdák",
"hostNotFound": "Nem található gazdagép",
"searchHosts": "Gazdagépek keresése...",
"sortHosts": "Gazdagépek rendezése",
"sortDefault": "Alapértelmezett sorrend",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-kulcs",
"filterAuthCredential": "Hitelesítő adat",
"filterAuthNone": "Egyik sem",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "CA lépés",
"filterProtocolGroup": "Jegyzőkönyv",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Csatlakozás a gazdagéphez",
"clear": "Világos",
"paste": "Paszta",
"connected": "Csatlakoztatva",
"clipboardWriteFailed": "Nem sikerült a vágólapra másolni. Győződjön meg arról, hogy az oldal HTTPS vagy localhost protokollon keresztül jelenik meg.",
"clipboardReadFailed": "Nem sikerült beolvasni a vágólapról. Győződjön meg arról, hogy a vágólapra vonatkozó engedélyek meg vannak adva.",
"tmuxDetach": "Leválasztás a tmux munkamenetről",
"terminalTitle": "Terminál - {{host}}",
"terminalWithPath": "Terminál - {{host}}:{{path}}",
"runTitle": "Futás {{command}} - {{host}}",
"totpRequired": "Kétfaktoros hitelesítés szükséges",
"totpCodeLabel": "Ellenőrző kód",
"totpVerify": "Ellenőrzés",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Másolás a… gazdagépre",
"moveToHost": "Áthelyezés a… gazdagépre",
"copyItemsToHost": "Másolja a {{count}} elemet a… hosztba",
"moveItemsToHost": "Áthelyez {{count}} elemet a… tárhelyre",
"noHostsConnected": "Nincsenek más elérhető fájlkezelő gazdagépek.",
"noHostsConnectedHint": "Adjon hozzá egy másik SSH-hosztot, amelynél a Fájlkezelő engedélyezve van a Host Managerben.",
"selectDestinationHost": "Célállomás kiválasztása",
"destinationPath": "Célútvonal",
"recentDestinations": "Legutóbbi úti célok",
"collapseRecentDestinations": "Legutóbbi úti célok összecsukása",
"expandRecentDestinations": "Legutóbbi úti célok kibontása",
"browseFolders": "Célmappák böngészése",
"browseDestination": "Böngészés vagy elérési út megadása",
"confirmCopy": "Másolat",
"confirmMove": "Mozog",
"transferring": "… átvitele",
"progressVerifying": "Fájl integritásának ellenőrzése…",
"progressBenchmarking": "A leggyorsabb átszállási útvonal kiválasztása…",
"compressing": "Tömörítés…",
"extracting": "… kinyerése",
"transferringItems": "{{current}} {{total}} elem… átvitele",
"transferSuccess": "Átvitel befejezve",
"transferError": "Átvitel sikertelen",
"transferPartial": "Az átvitel {{count}} hibával fejeződött be.",
"transferPartialHint": "Nem sikerült átvinni: {{paths}}",
"itemsSummary": "{{count}} elem",
"destMustBeDirectory": "Több elem átviteléhez a célnak egy könyvtárnak kell lennie",
"selectThisFolder": "Jelölje ki ezt a mappát",
"browsePathWillBeCreated": "Ez a mappa még nem létezik. Létrejön, amikor az átvitel megkezdődik.",
"browsePathError": "Nem sikerült megnyitni ezt az elérési utat a célgépen.",
"goUp": "Felmegy",
"copyFolderToHost": "Mappa másolása a… gazdagépre",
"moveFolderToHost": "Mappa áthelyezése a… gazdagépre",
"hostReady": "Kész",
"hostConnecting": "… csatlakoztatása",
"hostDisconnected": "Nincs csatlakoztatva",
"hostAuthRequired": "Hitelesítés szükséges — először nyissa meg a Fájlkezelőt ezen a gépen",
"hostConnectionFailed": "Kapcsolódás sikertelen",
"metricsTitle": "Átszállási idők",
"metricsPrepare": "Célhely előkészítése: {{duration}}",
"metricsCompress": "Tömörítés forráskód szerint: {{duration}}",
"metricsHopSourceRead": "Forrás → szerver: {{throughput}}",
"metricsHopDestSftpWrite": "Szerver → cél (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Szerver → cél (helyi): {{throughput}}",
"metricsTransfer": "Végtől végig: {{throughput}} ({{duration}})",
"metricsExtract": "Kivonat a rendeltetési helyen: {{duration}}",
"metricsVerify": "SHA-256 ellenőrizve: {{duration}}",
"metricsRouteBenchmark": "Útvonalszonda — közvetlen: {{direct}}, relé: {{relay}}",
"metricsSourceDelete": "Eltávolítás a forrásból: {{duration}}",
"metricsTotal": "Összesen: {{duration}}",
"progressCompressing": "Tömörítés a forrásgépen…",
"progressExtracting": "Kibontás a célállomáson…",
"progressTransferring": "Adatátvitel…",
"progressReconnecting": "Újracsatlakozás…",
"parallelSegmentsLabel": "Párhuzamos átszállósávok",
"parallelSegmentsOption": "{{count}} sávok",
"parallelSegmentsHint": "A nagy fájlokat 256 MB-os darabokra osztja a rendszer. Több sáv külön kapcsolatokat használ (például több átvitel indítása) a nagyobb összátviteli sebesség érdekében.",
"progressTotalSpeed": "{{speed}} összesen ({{lanes}} sávok)",
"progressTransferringItems": "Fájlok átvitele ({{current}} / {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} fájlok",
"sourceNotDeletedPartial": "Forrásfájlok megtartása (részleges átvitel)",
"jumpHostLimitation": "Mindkét gépnek elérhetőnek kell lennie a Termix szerverről. A közvetlen gépközi útvonalválasztás nem támogatott.",
"cancel": "Mégsem",
"methodLabel": "Átviteli módszer",
"methodAuto": "Autó",
"methodTar": "Tar archívum",
"methodItemSftp": "Fájlonkénti SFTP",
"methodAutoHint": "A fájlok száma, mérete és tömöríthetősége alapján választja ki a tar vagy a fájlonkénti SFTP protokollt. Az egyes fájlok mindig folyamatos SFTP-t használnak.",
"methodTarHint": "Tömörítés a forráskódban, egy archívum átvitele, kibontás a célkódban. Tar fájlt igényel mindkét Unix gépen.",
"methodItemSftpHint": "Minden fájlt külön-külön átvihet SFTP-n keresztül. Minden gazdagépen működik, beleértve a Windowst is.",
"methodPreviewLoading": "Átviteli módszer kiszámítása…",
"methodPreviewError": "Nem sikerült megtekinteni az átviteli módot. A szerver továbbra is kiválaszt egy módszert az indításkor.",
"methodPreviewWillUseTar": "Felhasználás: Tar archívum",
"methodPreviewWillUseItemSftp": "Használat: Fájlonkénti SFTP",
"methodPreviewScanSummary": "{{fileCount}} fájl, {{totalSize}} összesen (a forrásgépen beolvasva).",
"methodItemSftpLimitation": "Minden fájl ugyanazt az SFTP-folyamot használja, mint egyetlen fájl másolata, egymás után. A folyamat az összes fájlban összevonódik, így a sáv lassan mozog nagy fájlok esetén.",
"methodReason": {
"user_item_sftp": "Fájlonkénti SFTP-t választottál.",
"user_tar": "A tar archívumot választottad.",
"tar_unavailable": "A Tar nem érhető el az egyik vagy mindkét hoszton – helyette fájlonkénti SFTP-t fog használni.",
"windows_host": "Egy Windows gazdagép érintett – tar-t nem használunk.",
"auto_multi_large": "Automatikus: több fájl, beleértve egy nagy fájlt ({{largestSize}}) tömöríthető adatokkal — a tar egyetlen átvitelbe csomagolja.",
"auto_single_large_in_archive": "Automatikus: egy nagy fájl ({{largestSize}}) ebben a készletben — fájlonként SFTP.",
"auto_many_incompressible": "Automatikus: többnyire tömöríthetetlen adatok — fájlonkénti SFTP.",
"auto_many_files": "Auto: sok fájl ({{fileCount}}) — a tar csökkenti a fájlonkénti terhelést.",
"auto_default": "Automatikus: fájlonkénti SFTP ehhez a készlethez."
},
"progressCancel": "Mégsem",
"progressCancelling": "Törlés…",
"progressStalled": "Elakadt",
"resumedHint": "Újracsatlakozva egy másik ablakban indított aktív átvitelhez.",
"transferCancelled": "Átutalás törölve",
"transferCancelledCopyHint": "Részleges fájlok maradhatnak a célhelyen.",
"transferCancelledMoveHint": "Részleges fájlok maradhatnak a célhelyen. A forrásfájlok nem lettek eltávolítva.",
"cleanupDestFiles": "Takarítási célpont",
"cleanupDestFilesSuccess": "Részleges fájlok eltávolítva a célhelyről",
"cleanupDestFilesPartial": "Néhány részleges fájlt nem sikerült eltávolítani",
"cleanupDestFilesNothing": "Nincs mit takarítani a célállomáson",
"cleanupDestFilesError": "A tisztítás sikertelen",
"retryTransfer": "Újrapróbálkozás",
"retryTransferError": "Újrapróbálkozás sikertelen",
"transferFailedRetryHint": "Részleges adatok maradtak a célállomáson. Az újrapróbálkozás a kapcsolat helyreállásakor folytatódik."
"sourceNotDeletedPartial": "Forrásfájlok megtartása (részleges átvitel)"
},
"tunnels": {
"connect": "Csatlakozás",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Ügyfél alagút",
"addClientTunnel": "Ügyfélalagút hozzáadása",
"active": "Aktív",
"start": "Indul",
"stop": "Stop",
"typeServerLocalDesc": "Aktuális gazdagéptől a végpontig.",
"typeServerRemoteDesc": "Végpont vissza az aktuális gazdagépre.",
"typeClientLocalDesc": "Helyi számítógépről a végpontra.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Korlátozott sebesség: Túl sok ellenőrzési kísérlet. Kérjük, várjon {{time}} másodpercet, mielőtt újra próbálkozik.",
"authTokenSaveFailed": "Nem sikerült menteni a hitelesítési tokent",
"authTokenMissing": "A szerver nem adott vissza új hitelesítési tokent. Kérjük, jelentkezzen be újra.",
"failedToLoadServer": "Nem sikerült betölteni a szervert",
"remoteServerRequired": "Távoli szerver szükséges. Csatlakoztasson egy távoli szervert a Beállításokban a kapcsolattípus használatához."
"failedToLoadServer": "Nem sikerült betölteni a szervert"
},
"messages": {
"registrationDisabled": "Az új fiók regisztrációját jelenleg egy adminisztrátor letiltotta. Kérjük, jelentkezzen be, vagy vegye fel a kapcsolatot egy adminisztrátorral.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Jegyzőkönyv",
"domainLabel": "Domain",
"domainPlaceholder": "választható",
"connectToTerminal": "Csatlakozás a terminálhoz",
"connectToFiles": "Kapcsolódás fájlokhoz"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Pilih tema, warna aksen, dan bahasa Anda. Ketiganya dapat diubah nanti di Pengaturan.",
"featuresTitle": "Apa lagi yang dilakukan Termix?",
"featuresIntro": "Setiap server yang Anda simpan dapat dibuka di lebih dari satu terminal. Berikut adalah apa yang ada di balik ikon di sebelah kiri.",
"feature_files": "Pengelola berkas",
"feature_files_desc": "Jelajahi, unggah, unduh, dan edit file melalui SFTP tanpa meninggalkan aplikasi.",
"feature_tunnels": "Terowongan",
"feature_tunnels_desc": "Meneruskan port melalui server untuk mengakses layanan yang tidak terekspos.",
"feature_snippets": "Cuplikan",
"feature_snippets_desc": "Simpan perintah yang sering Anda jalankan dan kirimkan ke terminal hanya dengan satu klik.",
"featuresRailHint": "Tidak membutuhkan salah satu dari ini? Sembunyikan ikon apa pun dari bilah sisi di Pengaturan, di bawah Navigasi.",
@@ -449,7 +445,6 @@
"passwordSaved": "Kata sandi tersimpan, ketik untuk mengubahnya",
"key": "Kunci",
"credential": "Mandat",
"none": "Tidak ada",
"sshPrivateKey": "Kunci Pribadi SSH",
"keyType": "Jenis Kunci",
"uploadFile": "Unggah File",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Interval Keepalive (detik)",
"maxKeepaliveMisses": "Max Keepalive Gagal",
"sameHost": "Host ini (terowongan langsung)",
"bindHost": "Host Terikat",
"connectionToolbar": "Toolbar Koneksi",
"showConnectionToolbar": "Tampilkan bilah alat koneksi",
"showConnectionToolbarDesc": "Tampilkan toolbar di sesi SSH, RDP, VNC, dan Telnet host ini. Anda juga dapat menyembunyikannya sementara dari toolbar itu sendiri.",
"proxmoxLastSyncStatus": {
"success": "Kesuksesan"
},
"proxmoxGuestsSelected_one": "{{count}} tamu — {{selected}} terpilih",
"proxmoxGuestsSelected_other": "{{count}} tamu — {{selected}} terpilih",
"proxmoxImportButton_one": "Impor {{count}} host",
"proxmoxImportButton_other": "Impor {{count}} host",
"proxmoxResultSkippedNoIp": "{{count}} dilewati (tidak ditemukan IP)",
"proxmoxStatsUrlCopied": "URL Statistik Proxmox disalin ke papan klip",
"copyProxmoxStatsUrlAction": "Salin URL Statistik Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Host {{count}} yang diperbarui",
"friendlyNameLabel": "Nama yang Ramah",
"descriptionLabel": "Keterangan",
"loadingHost": "Memuat host...",
"loadingHosts": "Memuat host...",
"loadingCredentials": "Sedang memuat kredensial...",
"noHostsYet": "Belum ada host",
"noHostsYetHint": "Tambahkan server untuk membuka terminal, menelusuri file, dan melihat metrik.",
"noHostsMatchSearch": "Tidak ada host yang sesuai dengan pencarian Anda.",
"hostNotFound": "Host tidak ditemukan",
"searchHosts": "Cari host...",
"sortHosts": "Urutkan Host",
"sortDefault": "Urutan Default",
@@ -925,7 +913,6 @@
"filterAuthKey": "Kunci SSH",
"filterAuthCredential": "Mandat",
"filterAuthNone": "Tidak ada",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Langkah CA",
"filterProtocolGroup": "Protokol",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Terhubung ke Host",
"clear": "Jernih",
"paste": "Pasta",
"connected": "Terhubung",
"clipboardWriteFailed": "Gagal menyalin ke papan klip. Pastikan halaman disajikan melalui HTTPS atau localhost.",
"clipboardReadFailed": "Gagal membaca dari clipboard. Pastikan izin clipboard telah diberikan.",
"tmuxDetach": "Lepaskan diri dari sesi tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Menjalankan {{command}} - {{host}}",
"totpRequired": "Diperlukan Otentikasi Dua Faktor",
"totpCodeLabel": "Kode Verifikasi",
"totpVerify": "Memeriksa",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Salin ke host…",
"moveToHost": "Pindah ke host…",
"copyItemsToHost": "Salin {{count}} item ke host…",
"moveItemsToHost": "Pindahkan {{count}} item ke host…",
"noHostsConnected": "Tidak ada penyedia pengelola file lain yang tersedia.",
"noHostsConnectedHint": "Tambahkan host SSH lain dengan File Manager diaktifkan di Host Manager.",
"selectDestinationHost": "Pilih host tujuan",
"destinationPath": "Jalur tujuan",
"recentDestinations": "Destinasi terkini",
"collapseRecentDestinations": "Ciutkan destinasi terbaru",
"expandRecentDestinations": "Perluas destinasi terbaru",
"browseFolders": "Telusuri folder tujuan",
"browseDestination": "Telusuri atau masukkan jalur",
"confirmCopy": "Menyalin",
"confirmMove": "Bergerak",
"transferring": "Mentransfer…",
"progressVerifying": "Memverifikasi integritas file…",
"progressBenchmarking": "Memilih rute transfer tercepat…",
"compressing": "Mengompresi…",
"extracting": "Mengekstrak…",
"transferringItems": "Memindahkan {{current}} dari {{total}} item…",
"transferSuccess": "Transfer selesai",
"transferError": "Transfer gagal",
"transferPartial": "Transfer selesai dengan {{count}} kesalahan",
"transferPartialHint": "Tidak dapat mentransfer: {{paths}}",
"itemsSummary": "{{count}} item",
"destMustBeDirectory": "Tujuan harus berupa direktori untuk transfer multi-item.",
"selectThisFolder": "Pilih folder ini",
"browsePathWillBeCreated": "Folder ini belum ada. Folder ini akan dibuat saat transfer dimulai.",
"browsePathError": "Tidak dapat membuka jalur ini pada host tujuan.",
"goUp": "Naik",
"copyFolderToHost": "Salin folder ke host…",
"moveFolderToHost": "Pindahkan folder ke host…",
"hostReady": "Siap",
"hostConnecting": "Menghubungkan…",
"hostDisconnected": "Tidak terhubung",
"hostAuthRequired": "Diperlukan autentikasi — buka File Manager di host ini terlebih dahulu.",
"hostConnectionFailed": "Koneksi gagal",
"metricsTitle": "Waktu transfer",
"metricsPrepare": "Siapkan tujuan: {{duration}}",
"metricsCompress": "Kompres pada sumber: {{duration}}",
"metricsHopSourceRead": "Sumber → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → tujuan (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → tujuan (lokal): {{throughput}}",
"metricsTransfer": "Ujung ke ujung: {{throughput}} ({{duration}})",
"metricsExtract": "Ekstrak pada tujuan: {{duration}}",
"metricsVerify": "SHA-256 terverifikasi: {{duration}}",
"metricsRouteBenchmark": "Pemeriksaan rute — langsung: {{direct}}, relai: {{relay}}",
"metricsSourceDelete": "Hapus dari sumber: {{duration}}",
"metricsTotal": "Total: {{duration}}",
"progressCompressing": "Kompresi pada host sumber…",
"progressExtracting": "Mengekstraksi pada tujuan…",
"progressTransferring": "Mentransfer data…",
"progressReconnecting": "Menghubungkan kembali…",
"parallelSegmentsLabel": "Jalur transfer paralel",
"parallelSegmentsOption": "{{count}} jalur",
"parallelSegmentsHint": "File berukuran besar dibagi menjadi bagian-bagian berukuran 256 MB. Beberapa jalur menggunakan koneksi terpisah (seperti memulai beberapa transfer) untuk throughput total yang lebih tinggi.",
"progressTotalSpeed": "{{speed}} total ({{lanes}} lajur)",
"progressTransferringItems": "Mentransfer berkas ({{current}} dari {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "berkas {{current}} / {{total}}",
"sourceNotDeletedPartial": "Berkas sumber tetap disimpan (transfer sebagian)",
"jumpHostLimitation": "Kedua host harus dapat dijangkau dari server Termix. Perutean langsung antar host tidak didukung.",
"cancel": "Membatalkan",
"methodLabel": "Metode transfer",
"methodAuto": "Mobil",
"methodTar": "Arsip Tar",
"methodItemSftp": "SFTP per file",
"methodAutoHint": "Memilih antara tar atau SFTP per-file berdasarkan jumlah file, ukuran, dan kemampuan kompresi. File tunggal selalu menggunakan SFTP streaming.",
"methodTarHint": "Kompres di sumber, transfer satu arsip, ekstrak di tujuan. Membutuhkan tar di kedua host Unix.",
"methodItemSftpHint": "Transfer setiap file secara individual melalui SFTP. Berfungsi di semua host termasuk Windows.",
"methodPreviewLoading": "Metode perhitungan transfer…",
"methodPreviewError": "Metode transfer tidak dapat dipratinjau. Server akan tetap memilih metode saat Anda memulai.",
"methodPreviewWillUseTar": "Akan menggunakan: Arsip Tar",
"methodPreviewWillUseItemSftp": "Akan menggunakan: SFTP per file",
"methodPreviewScanSummary": "{{fileCount}} berkas, {{totalSize}} total (dipindai pada host sumber).",
"methodItemSftpLimitation": "Setiap berkas menggunakan aliran SFTP yang sama sebagai salinan berkas tunggal, satu demi satu. Kemajuan digabungkan di semua berkas, sehingga bilah kemajuan bergerak lambat selama pemrosesan berkas berukuran besar.",
"methodReason": {
"user_item_sftp": "Anda memilih SFTP per-file.",
"user_tar": "Anda memilih arsip tar.",
"tar_unavailable": "Tar tidak tersedia di salah satu atau kedua host — SFTP per-file akan digunakan sebagai gantinya.",
"windows_host": "Sistem operasi yang digunakan adalah Windows — tar tidak digunakan.",
"auto_multi_large": "Otomatis: beberapa file termasuk file besar ({{largestSize}}) dengan data yang dapat dikompresi — tar menggabungkan menjadi satu transfer.",
"auto_single_large_in_archive": "Otomatis: satu file besar ({{largestSize}}) dalam set ini — SFTP per file.",
"auto_many_incompressible": "Otomatis: sebagian besar data tidak dapat dikompresi — SFTP per file.",
"auto_many_files": "Otomatis: banyak file ({{fileCount}}) — tar mengurangi overhead per file.",
"auto_default": "Otomatis: SFTP per-file untuk set ini."
},
"progressCancel": "Membatalkan",
"progressCancelling": "Membatalkan…",
"progressStalled": "Terhenti",
"resumedHint": "Terhubung kembali ke transfer aktif yang dimulai di jendela lain.",
"transferCancelled": "Transfer dibatalkan",
"transferCancelledCopyHint": "File yang tidak lengkap mungkin masih tersisa di tujuan.",
"transferCancelledMoveHint": "Sebagian berkas mungkin masih tersisa di tujuan. Berkas sumber tidak dihapus.",
"cleanupDestFiles": "Tujuan pembersihan",
"cleanupDestFilesSuccess": "File parsial telah dihapus dari tujuan.",
"cleanupDestFilesPartial": "Beberapa file parsial tidak dapat dihapus.",
"cleanupDestFilesNothing": "Tidak ada yang perlu dibersihkan di tempat tujuan.",
"cleanupDestFilesError": "Pembersihan gagal",
"retryTransfer": "Mencoba kembali",
"retryTransferError": "Percobaan ulang gagal.",
"transferFailedRetryHint": "Sebagian data tersimpan di tujuan. Upaya pengulangan akan dilanjutkan saat koneksi kembali pulih."
"sourceNotDeletedPartial": "Berkas sumber tetap disimpan (transfer sebagian)"
},
"tunnels": {
"connect": "Menghubungkan",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Terowongan Klien",
"addClientTunnel": "Tambahkan Terowongan Klien",
"active": "Aktif",
"start": "Awal",
"stop": "Berhenti",
"typeServerLocalDesc": "Host saat ini ke titik akhir.",
"typeServerRemoteDesc": "Endpoint kembali ke host saat ini.",
"typeClientLocalDesc": "Komputer lokal ke titik akhir.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Pembatasan laju: Terlalu banyak upaya verifikasi. Harap tunggu {{time}} detik sebelum mencoba lagi.",
"authTokenSaveFailed": "Gagal menyimpan token otentikasi.",
"authTokenMissing": "Server tidak mengembalikan token otentikasi baru. Silakan masuk kembali.",
"failedToLoadServer": "Server gagal dimuat.",
"remoteServerRequired": "Diperlukan server jarak jauh. Hubungkan server jarak jauh di Pengaturan untuk menggunakan jenis koneksi ini."
"failedToLoadServer": "Server gagal dimuat."
},
"messages": {
"registrationDisabled": "Pendaftaran akun baru saat ini dinonaktifkan oleh administrator. Silakan masuk atau hubungi administrator.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokol",
"domainLabel": "Domain",
"domainPlaceholder": "opsional",
"connectToTerminal": "Hubungkan ke Terminal",
"connectToFiles": "Menghubungkan ke File"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Scegli un tema, un colore principale e la lingua. Tutti e tre possono essere modificati in seguito nelle Impostazioni.",
"featuresTitle": "Cos'altro fa Termix?",
"featuresIntro": "Ogni server salvato può essere aperto in più di un terminale. Ecco cosa si nasconde dietro le icone a sinistra.",
"feature_files": "Gestore file",
"feature_files_desc": "Esplora, carica, scarica e modifica file tramite SFTP senza uscire dall'applicazione.",
"feature_tunnels": "Gallerie",
"feature_tunnels_desc": "Inoltrare le porte attraverso un server per raggiungere servizi non esposti.",
"feature_snippets": "Frammenti",
"feature_snippets_desc": "Salva i comandi che esegui più spesso e inviali a un terminale con un solo clic.",
"featuresRailHint": "Non ti serve una di queste icone? Nascondi qualsiasi icona dalla barra laterale in Impostazioni, alla voce Navigazione.",
@@ -449,7 +445,6 @@
"passwordSaved": "Password salvata, digita per modificarla",
"key": "Chiave",
"credential": "Credenziale",
"none": "Nessuna",
"sshPrivateKey": "Chiave privata SSH",
"keyType": "Tipo di chiave",
"uploadFile": "Carica file",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Intervallo keepalive (secondi)",
"maxKeepaliveMisses": "Numero massimo di mancate keepalive",
"sameHost": "Questo host (tunnel diretto)",
"bindHost": "Host di bind",
"connectionToolbar": "Barra degli strumenti di connessione",
"showConnectionToolbar": "Mostra la barra degli strumenti di connessione",
"showConnectionToolbarDesc": "Mostra la barra degli strumenti nelle sessioni SSH, RDP, VNC e Telnet di questo host. Puoi anche nasconderla temporaneamente dalla barra degli strumenti stessa.",
"proxmoxLastSyncStatus": {
"success": "Riuscita"
},
"proxmoxGuestsSelected_one": "{{count}} guest — {{selected}} selezionato",
"proxmoxGuestsSelected_other": "{{count}} guest — {{selected}} selezionati",
"proxmoxImportButton_one": "Importa {{count}} host",
"proxmoxImportButton_other": "Importa {{count}} host",
"proxmoxResultSkippedNoIp": "{{count}} saltato (nessun IP trovato)",
"proxmoxStatsUrlCopied": "URL delle statistiche di Proxmox copiato negli appunti",
"copyProxmoxStatsUrlAction": "Copia l'URL delle statistiche di Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Aggiornati {{count}} host",
"friendlyNameLabel": "Nome descrittivo",
"descriptionLabel": "Descrizione",
"loadingHost": "Caricamento host...",
"loadingHosts": "Caricamento host...",
"loadingCredentials": "Caricamento credenziali...",
"noHostsYet": "Nessun host ancora",
"noHostsYetHint": "Aggiungi un server per aprire terminali, sfogliare file e visualizzare metriche.",
"noHostsMatchSearch": "Nessun host corrisponde alla ricerca",
"hostNotFound": "Host non trovato",
"searchHosts": "Cerca host...",
"sortHosts": "Ordina host",
"sortDefault": "Ordine predefinito",
@@ -925,7 +913,6 @@
"filterAuthKey": "Chiave SSH",
"filterAuthCredential": "Credenziale",
"filterAuthNone": "Nessuna",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Passo CA",
"filterProtocolGroup": "Protocollo",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Connetti all'host",
"clear": "Cancella",
"paste": "Incolla",
"connected": "Connesso",
"clipboardWriteFailed": "Copia negli appunti non riuscita. Assicurati che la pagina sia servita via HTTPS o localhost.",
"clipboardReadFailed": "Lettura dagli appunti non riuscita. Assicurati che i permessi degli appunti siano stati concessi.",
"tmuxDetach": "Scollegati dalla sessione tmux",
"terminalTitle": "Terminale - {{host}}",
"terminalWithPath": "Terminale - {{host}}:{{path}}",
"runTitle": "Esecuzione {{command}} - {{host}}",
"totpRequired": "Autenticazione a due fattori richiesta",
"totpCodeLabel": "Codice di verifica",
"totpVerify": "Verifica",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Copia su host…",
"moveToHost": "Sposta su host…",
"copyItemsToHost": "Copia {{count}} elementi su host…",
"moveItemsToHost": "Sposta {{count}} elementi sull'host…",
"noHostsConnected": "Nessun altro host con File Manager disponibile.",
"noHostsConnectedHint": "Aggiungi un altro host SSH con File Manager abilitato nella Gestione Host.",
"selectDestinationHost": "Seleziona host di destinazione",
"destinationPath": "Percorso di destinazione",
"recentDestinations": "Destinazioni recenti",
"collapseRecentDestinations": "Comprimi destinazioni recenti",
"expandRecentDestinations": "Espandi destinazioni recenti",
"browseFolders": "Sfoglia cartelle di destinazione",
"browseDestination": "Sfoglia o inserisci percorso",
"confirmCopy": "Copia",
"confirmMove": "Sposta",
"transferring": "Trasferimento in corso…",
"progressVerifying": "Verifica dell'integrità del file…",
"progressBenchmarking": "Selezione del percorso di trasferimento più veloce…",
"compressing": "Compressione in corso…",
"extracting": "Estrazione in corso…",
"transferringItems": "Trasferimento {{current}} su {{total}} elementi…",
"transferSuccess": "Trasferimento completato",
"transferError": "Trasferimento non riuscito",
"transferPartial": "Trasferimento completato con {{count}} errori",
"transferPartialHint": "Impossibile trasferire: {{paths}}",
"itemsSummary": "{{count}} elementi",
"destMustBeDirectory": "La destinazione deve essere una directory per il trasferimento di più elementi",
"selectThisFolder": "Seleziona questa cartella",
"browsePathWillBeCreated": "Questa cartella non esiste ancora. Verrà creata all'avvio del trasferimento.",
"browsePathError": "Impossibile aprire questo percorso sull'host di destinazione.",
"goUp": "Salire",
"copyFolderToHost": "Copia cartella sull'host…",
"moveFolderToHost": "Sposta cartella sull'host…",
"hostReady": "Pronto",
"hostConnecting": "Connessione in corso…",
"hostDisconnected": "Non connesso",
"hostAuthRequired": "Autenticazione richiesta — aprire prima File Manager su questo host",
"hostConnectionFailed": "Connessione non riuscita",
"metricsTitle": "Tempi di trasferimento",
"metricsPrepare": "Prepara destinazione: {{duration}}",
"metricsCompress": "Compressione sul sorgente: {{duration}}",
"metricsHopSourceRead": "Sorgente → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → dest (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → dest (locale): {{throughput}}",
"metricsTransfer": "End-to-end: {{throughput}} ({{duration}})",
"metricsExtract": "Estrazione sulla destinazione: {{duration}}",
"metricsVerify": "SHA-256 verificato: {{duration}}",
"metricsRouteBenchmark": "Sondaggio di percorso — diretto: {{direct}}, relè: {{relay}}",
"metricsSourceDelete": "Rimozione dal sorgente: {{duration}}",
"metricsTotal": "Totale: {{duration}}",
"progressCompressing": "Compressione sull'host sorgente…",
"progressExtracting": "Estrazione sulla destinazione…",
"progressTransferring": "Trasferimento dati…",
"progressReconnecting": "Riconnessione…",
"parallelSegmentsLabel": "Corsie di trasferimento parallele",
"parallelSegmentsOption": "{{count}} corsie",
"parallelSegmentsHint": "I file di grandi dimensioni vengono suddivisi in blocchi da 256 MB. Più corsie utilizzano connessioni separate (come avviare più trasferimenti) per una maggiore velocità complessiva.",
"progressTotalSpeed": "{{speed}} totale ({{lanes}} corsie)",
"progressTransferringItems": "Trasferimento file ({{current}} di {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} file",
"sourceNotDeletedPartial": "File sorgente mantenuti (trasferimento parziale)",
"jumpHostLimitation": "Entrambi gli host devono essere raggiungibili dal server Termix. Il routing diretto host-to-host non è supportato.",
"cancel": "Annulla",
"methodLabel": "Metodo di trasferimento",
"methodAuto": "Auto",
"methodTar": "Archivio Tar",
"methodItemSftp": "SFTP per file",
"methodAutoHint": "Sceglie tar o SFTP per file in base al numero, dimensione e comprimibilità dei file. I file singoli usano sempre SFTP in streaming.",
"methodTarHint": "Comprime sul sorgente, trasferisce un archivio, estrae sulla destinazione. Richiede tar su entrambi gli host Unix.",
"methodItemSftpHint": "Trasferisce ogni file singolarmente tramite SFTP. Funziona su tutti gli host, incluso Windows.",
"methodPreviewLoading": "Calcolo del metodo di trasferimento…",
"methodPreviewError": "Impossibile visualizzare l'anteprima del metodo di trasferimento. Il server sceglierà comunque un metodo all'avvio.",
"methodPreviewWillUseTar": "Userà: Archivio Tar",
"methodPreviewWillUseItemSftp": "Userà: SFTP per file",
"methodPreviewScanSummary": "{{fileCount}} file, {{totalSize}} in totale (scansionati sull'host sorgente).",
"methodItemSftpLimitation": "Ogni file utilizza lo stesso flusso SFTP come una copia di file singolo, uno dopo l'altro. L'avanzamento è combinato su tutti i file, quindi la barra si muove lentamente durante i file di grandi dimensioni.",
"methodReason": {
"user_item_sftp": "Hai scelto SFTP per-file.",
"user_tar": "Hai scelto archivio tar.",
"tar_unavailable": "Tar non è disponibile su uno o entrambi gli host — verrà utilizzato SFTP per-file.",
"windows_host": "È coinvolto un host Windows — tar non viene utilizzato.",
"auto_multi_large": "Auto: più file, incluso un file grande ({{largestSize}}) con dati comprimibili — tar li raggruppa in un unico trasferimento.",
"auto_single_large_in_archive": "Auto: un file grande ({{largestSize}}) in questo set — SFTP per-file.",
"auto_many_incompressible": "Auto: dati per lo più incomprimibili — SFTP per-file.",
"auto_many_files": "Auto: molti file ({{fileCount}}) — tar riduce il sovraccarico per-file.",
"auto_default": "Auto: SFTP per-file per questo set."
},
"progressCancel": "Annulla",
"progressCancelling": "Annullamento in corso…",
"progressStalled": "Bloccato",
"resumedHint": "Riconnesso a un trasferimento attivo avviato in un'altra finestra.",
"transferCancelled": "Trasferimento annullato",
"transferCancelledCopyHint": "Potrebbero rimanere file parziali sulla destinazione.",
"transferCancelledMoveHint": "Potrebbero rimanere file parziali sulla destinazione. I file sorgente non sono stati rimossi.",
"cleanupDestFiles": "Pulisci destinazione",
"cleanupDestFilesSuccess": "File parziali rimossi dalla destinazione",
"cleanupDestFilesPartial": "Alcuni file parziali non sono stati rimossi",
"cleanupDestFilesNothing": "Niente da pulire sulla destinazione",
"cleanupDestFilesError": "Pulizia fallita",
"retryTransfer": "Riprova",
"retryTransferError": "Riprova fallita",
"transferFailedRetryHint": "I dati parziali sono stati conservati sulla destinazione. Il nuovo tentativo riprenderà quando la connessione sarà ripristinata."
"sourceNotDeletedPartial": "File sorgente mantenuti (trasferimento parziale)"
},
"tunnels": {
"connect": "Connetti",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Tunnel client",
"addClientTunnel": "Aggiungi tunnel client",
"active": "Attivo",
"start": "Avvia",
"stop": "Ferma",
"typeServerLocalDesc": "Dall'host attuale all'endpoint.",
"typeServerRemoteDesc": "Dall'endpoint all'host attuale.",
"typeClientLocalDesc": "Dal computer locale all'endpoint.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Limite di tentativi raggiunto: troppi tentativi di verifica. Attendere {{time}} secondi prima di riprovare.",
"authTokenSaveFailed": "Salvataggio del token di autenticazione non riuscito",
"authTokenMissing": "Il server non ha restituito un nuovo token di autenticazione. Effettua nuovamente l'accesso.",
"failedToLoadServer": "Caricamento del server non riuscito",
"remoteServerRequired": "È necessario un server remoto. Per utilizzare questo tipo di connessione, collega un server remoto nelle Impostazioni."
"failedToLoadServer": "Caricamento del server non riuscito"
},
"messages": {
"registrationDisabled": "La registrazione di nuovi account è attualmente disabilitata da un amministratore. Effettua il login o contatta un amministratore.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protocollo",
"domainLabel": "Dominio",
"domainPlaceholder": "opzionale",
"connectToTerminal": "Connetti al terminale",
"connectToFiles": "Connetti ai file"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "テーマ、アクセントカラー、言語を選択してください。これら3つは後から設定画面で変更できます。",
"featuresTitle": "Termixは他にどんなことをしているのでしょうか?",
"featuresIntro": "保存したサーバーは、ターミナル以外のアプリケーションでも開くことができます。左側のアイコンをクリックすると、以下の機能が利用できます。",
"feature_files": "ファイルマネージャー",
"feature_files_desc": "アプリを離れることなく、SFTP経由でファイルの閲覧、アップロード、ダウンロード、編集が可能です。",
"feature_tunnels": "トンネル",
"feature_tunnels_desc": "公開されていないサービスにアクセスできるように、サーバー経由でポートを転送します。",
"feature_snippets": "断片",
"feature_snippets_desc": "よく使うコマンドを保存して、ワンクリックでターミナルに送信できます。",
"featuresRailHint": "これらのアイコンが不要な場合は、設定の「ナビゲーション」からサイドバーのアイコンを非表示にできます。",
@@ -449,7 +445,6 @@
"passwordSaved": "パスワードが保存されました。変更するには入力してください。",
"key": "鍵",
"credential": "認証情報",
"none": "なし",
"sshPrivateKey": "SSH秘密鍵",
"keyType": "鍵の種類",
"uploadFile": "ファイルをアップロード",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "キープアライブ間隔(秒)",
"maxKeepaliveMisses": "最大キープアライブミス回数",
"sameHost": "このホスト(直接トンネル)",
"bindHost": "バインドホスト",
"connectionToolbar": "接続ツールバー",
"showConnectionToolbar": "接続ツールバーを表示する",
"showConnectionToolbarDesc": "このホストのSSH、RDP、VNC、およびTelnetセッションでツールバーを表示します。ツールバー自体から一時的に非表示にすることもできます。",
"proxmoxLastSyncStatus": {
"success": "成功"
},
"proxmoxGuestsSelected_one": "{{count}} ゲスト — {{selected}} 選択中",
"proxmoxGuestsSelected_other": "{{count}} ゲスト — {{selected}} 選択中",
"proxmoxImportButton_one": "{{count}} ホストをインポート",
"proxmoxImportButton_other": "{{count}} 台のホストをインポート",
"proxmoxResultSkippedNoIp": "{{count}} スキップしました(IPアドレスが見つかりませんでした)",
"proxmoxStatsUrlCopied": "Proxmox Stats URL がクリップボードにコピーされました",
"copyProxmoxStatsUrlAction": "Proxmox統計情報のURLをコピーする",
@@ -896,13 +886,11 @@
"updatedCount": "{{count}} ホストを更新しました",
"friendlyNameLabel": "表示名",
"descriptionLabel": "説明",
"loadingHost": "ホストを読み込み中...",
"loadingHosts": "ホストを読み込み中...",
"loadingCredentials": "資格情報を読み込み中...",
"noHostsYet": "ホストがまだありません",
"noHostsYetHint": "サーバーを追加して、ターミナルを開いたり、ファイルを参照したり、メトリクスを確認したりできるようにします。",
"noHostsMatchSearch": "検索に一致するホストはありません",
"hostNotFound": "ホストが見つかりません",
"searchHosts": "ホストを検索...",
"sortHosts": "ホストの並べ替え",
"sortDefault": "デフォルトの順序",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSHキー",
"filterAuthCredential": "資格情報",
"filterAuthNone": "なし",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "ステップCA",
"filterProtocolGroup": "プロトコル",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "ホストに接続",
"clear": "クリア",
"paste": "貼り付け",
"connected": "接続中",
"clipboardWriteFailed": "クリップボードへのコピーに失敗しました。ページがHTTPSまたはlocalhostで提供されていることを確認してください。",
"clipboardReadFailed": "クリップボードからの読み取りに失敗しました。クリップボードのアクセス許可が付与されていることを確認してください。",
"tmuxDetach": "tmuxセッションからデタッチ",
"terminalTitle": "ターミナル - {{host}}",
"terminalWithPath": "ターミナル - {{host}}:{{path}}",
"runTitle": "{{command}} 実行中 - {{host}}",
"totpRequired": "二要素認証が必要です",
"totpCodeLabel": "確認コード",
"totpVerify": "確認",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "ホストにコピー...",
"moveToHost": "ホストに移動...",
"copyItemsToHost": "{{count}}個のアイテムをホストにコピー...",
"moveItemsToHost": "{{count}} アイテムをホストへ移動…",
"noHostsConnected": "利用可能な他のファイルマネージャホストがありません。",
"noHostsConnectedHint": "ホストマネージャでファイルマネージャが有効なSSHホストを追加してください。",
"selectDestinationHost": "転送先ホストを選択",
"destinationPath": "転送先パス",
"recentDestinations": "最近の転送先",
"collapseRecentDestinations": "最近の転送先を折りたたむ",
"expandRecentDestinations": "最近の転送先を展開する",
"browseFolders": "転送先フォルダを参照",
"browseDestination": "パスを参照または入力",
"confirmCopy": "コピー",
"confirmMove": "移動",
"transferring": "転送中…",
"progressVerifying": "ファイルの整合性を検証中…",
"progressBenchmarking": "最速の転送ルートを選択…",
"compressing": "圧縮中…",
"extracting": "展開中…",
"transferringItems": "{{total}} 個中 {{current}} 個のアイテムを転送中…",
"transferSuccess": "転送が完了しました",
"transferError": "転送に失敗しました",
"transferPartial": "{{count}} 件のエラーで転送が完了しました",
"transferPartialHint": "転送できませんでした: {{paths}}",
"itemsSummary": "{{count}} アイテム",
"destMustBeDirectory": "複数アイテムの転送では転送先はディレクトリである必要があります",
"selectThisFolder": "このフォルダを選択",
"browsePathWillBeCreated": "このフォルダはまだ存在しません。転送開始時に作成されます。",
"browsePathError": "転送先ホストでこのパスを開けませんでした。",
"goUp": "上へ",
"copyFolderToHost": "フォルダをホストにコピー…",
"moveFolderToHost": "フォルダをホストに移動…",
"hostReady": "準備完了",
"hostConnecting": "接続中…",
"hostDisconnected": "未接続",
"hostAuthRequired": "認証が必要です — まずこのホストでファイルマネージャを開いてください",
"hostConnectionFailed": "接続に失敗しました",
"metricsTitle": "転送タイミング",
"metricsPrepare": "転送先の準備: {{duration}}",
"metricsCompress": "送信元での圧縮: {{duration}}",
"metricsHopSourceRead": "送信元 → サーバー: {{throughput}}",
"metricsHopDestSftpWrite": "サーバー → 送信先 (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "サーバー → 送信先 (ローカル): {{throughput}}",
"metricsTransfer": "エンドツーエンド: {{throughput}} ({{duration}})",
"metricsExtract": "送信先で展開: {{duration}}",
"metricsVerify": "SHA-256検証済み: {{duration}}",
"metricsRouteBenchmark": "ルートプローブ — 直接: {{direct}}、リレー: {{relay}}",
"metricsSourceDelete": "送信元から削除: {{duration}}",
"metricsTotal": "合計: {{duration}}",
"progressCompressing": "ソースホストで圧縮中…",
"progressExtracting": "送信先で展開中…",
"progressTransferring": "データ転送中…",
"progressReconnecting": "再接続中…",
"parallelSegmentsLabel": "並列転送レーン",
"parallelSegmentsOption": "{{count}} レーン",
"parallelSegmentsHint": "大きなファイルは 256 MB のチャンクに分割されます。複数レーンでは個別の接続を使用し (複数の転送を開始するように)、合計スループットが向上します。",
"progressTotalSpeed": "合計 {{speed}} ({{lanes}} レーン)",
"progressTransferringItems": "ファイル転送中 ({{current}} / {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} ファイル",
"sourceNotDeletedPartial": "ソースファイルを保持 (部分転送)",
"jumpHostLimitation": "両方のホストが Termix サーバーから到達可能である必要があります。ホスト間直接ルーティングはサポートされていません。",
"cancel": "キャンセル",
"methodLabel": "転送方式",
"methodAuto": "自動",
"methodTar": "Tar アーカイブ",
"methodItemSftp": "ファイル単位 SFTP",
"methodAutoHint": "ファイル数、サイズ、圧縮可能性に基づいて tar またはファイル単位 SFTP を選択します。単一ファイルは常にストリーミング SFTP を使用します。",
"methodTarHint": "ソースで圧縮し、1つのアーカイブを転送し、送信先で展開します。両方の Unix ホストに tar が必要です。",
"methodItemSftpHint": "各ファイルを個別に SFTP で転送します。Windows を含むすべてのホストで動作します。",
"methodPreviewLoading": "転送方式を計算中…",
"methodPreviewError": "転送方式をプレビューできませんでした。開始時にサーバーが方式を選択します。",
"methodPreviewWillUseTar": "使用方式: Tar アーカイブ",
"methodPreviewWillUseItemSftp": "使用方式: ファイル単位 SFTP",
"methodPreviewScanSummary": "{{fileCount}} ファイル、合計 {{totalSize}} (ソースホストでスキャン)。",
"methodItemSftpLimitation": "各ファイルは単一ファイルコピーと同じ SFTP ストリームを順次使用します。進捗は全ファイルで統合されるため、大きなファイルではバーの動きが遅くなります。",
"methodReason": {
"user_item_sftp": "ファイルごとのSFTPを選択しました。",
"user_tar": "tarアーカイブを選択しました。",
"tar_unavailable": "一方または両方のホストでtarが利用できないため、代わりにファイルごとのSFTPが使用されます。",
"windows_host": "Windows ホストが含まれているため、tar は使用されません。",
"auto_multi_large": "自動: 複数ファイルに大きな圧縮可能なファイル ({{largestSize}}) が含まれるため、tarで1回の転送にまとめます。",
"auto_single_large_in_archive": "自動: このセットに1つの大きなファイル ({{largestSize}}) があるため、ファイルごとのSFTPです。",
"auto_many_incompressible": "自動: ほとんど圧縮不可能なデータのため、ファイルごとのSFTPです。",
"auto_many_files": "自動: 多数のファイル ({{fileCount}}) があるため、tarでファイルごとのオーバーヘッドを削減します。",
"auto_default": "自動: このセットではファイルごとのSFTPです。"
},
"progressCancel": "キャンセル",
"progressCancelling": "キャンセル中…",
"progressStalled": "停滞中",
"resumedHint": "別のウィンドウで開始されたアクティブな転送に再接続しました。",
"transferCancelled": "転送がキャンセルされました",
"transferCancelledCopyHint": "部分的なファイルが宛先に残る可能性があります。",
"transferCancelledMoveHint": "部分的なファイルが宛先に残る可能性があります。ソースファイルは削除されていません。",
"cleanupDestFiles": "宛先をクリーンアップ",
"cleanupDestFilesSuccess": "宛先から部分的なファイルを削除しました",
"cleanupDestFilesPartial": "一部の部分的なファイルを削除できませんでした",
"cleanupDestFilesNothing": "宛先にクリーンアップするものはありません",
"cleanupDestFilesError": "クリーンアップに失敗しました",
"retryTransfer": "再試行",
"retryTransferError": "再試行に失敗しました",
"transferFailedRetryHint": "部分的なデータが宛先に保持されました。接続が復旧したら再試行が再開されます。"
"sourceNotDeletedPartial": "ソースファイルを保持 (部分転送)"
},
"tunnels": {
"connect": "接続",
@@ -1261,8 +1153,6 @@
"clientTunnel": "クライアントトンネル",
"addClientTunnel": "クライアントトンネルを追加",
"active": "アクティブ",
"start": "開始",
"stop": "停止",
"typeServerLocalDesc": "現在のホストからエンドポイントへ。",
"typeServerRemoteDesc": "エンドポイントから現在のホストへ。",
"typeClientLocalDesc": "ローカルコンピューターからエンドポイントへ。",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "レート制限: 認証試行が多すぎます。{{time}}秒待ってから再試行してください。",
"authTokenSaveFailed": "認証トークンの保存に失敗しました",
"authTokenMissing": "サーバーから新しい認証トークンが返されませんでした。再度ログインしてください。",
"failedToLoadServer": "サーバーの読み込みに失敗しました",
"remoteServerRequired": "リモートサーバーが必要です。この接続タイプを使用するには、設定でリモートサーバーを接続してください。"
"failedToLoadServer": "サーバーの読み込みに失敗しました"
},
"messages": {
"registrationDisabled": "現在、管理者が新規アカウント登録を無効にしています。ログインするか、管理者にお問い合わせください。",
@@ -1831,7 +1720,6 @@
"protocolLabel": "プロトコル",
"domainLabel": "ドメイン",
"domainPlaceholder": "オプション",
"connectToTerminal": "ターミナルに接続",
"connectToFiles": "ファイルに接続"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "테마, 강조 색상 및 언어를 선택하세요. 이 세 가지 모두 나중에 설정에서 변경할 수 있습니다.",
"featuresTitle": "Termix는 그 외에도 무엇을 할까요?",
"featuresIntro": "저장한 모든 서버는 터미널 외에도 다양한 방법으로 열 수 있습니다. 왼쪽에 있는 아이콘들을 클릭하면 더 자세한 내용을 확인할 수 있습니다.",
"feature_files": "파일 관리자",
"feature_files_desc": "앱을 종료하지 않고 SFTP를 통해 파일을 검색, 업로드, 다운로드 및 편집할 수 있습니다.",
"feature_tunnels": "터널",
"feature_tunnels_desc": "서버를 통해 포트를 포워딩하여 외부에 노출되지 않은 서비스에 접근할 수 있습니다.",
"feature_snippets": "짧은 발췌",
"feature_snippets_desc": "자주 실행하는 명령어를 저장하고 한 번의 클릭으로 터미널에 전송하세요.",
"featuresRailHint": "이 중 어느 것도 필요하지 않으신가요? 설정 > 탐색에서 사이드바의 아이콘을 숨길 수 있습니다.",
@@ -449,7 +445,6 @@
"passwordSaved": "비밀번호가 저장되었습니다. 변경하려면 입력하세요.",
"key": "키",
"credential": "자격 증명",
"none": "없음",
"sshPrivateKey": "SSH 개인 키",
"keyType": "키 유형",
"uploadFile": "파일 업로드",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "연결 유지 간격(초)",
"maxKeepaliveMisses": "최대 연결 유지 미스",
"sameHost": "이 호스트 (직접 터널)",
"bindHost": "바인드 호스트",
"connectionToolbar": "연결 도구 모음",
"showConnectionToolbar": "연결 도구 모음 표시",
"showConnectionToolbarDesc": "이 호스트의 SSH, RDP, VNC 및 Telnet 세션에 툴바를 표시합니다. 툴바 자체에서 툴바를 일시적으로 숨길 수도 있습니다.",
"proxmoxLastSyncStatus": {
"success": "성공"
},
"proxmoxGuestsSelected_one": "게스트 {{count}}개 — {{selected}}개 선택됨",
"proxmoxGuestsSelected_other": "게스트 {{count}}개 — {{selected}}개 선택됨",
"proxmoxImportButton_one": "호스트 {{count}}개 가져오기",
"proxmoxImportButton_other": "{{count}}개 호스트 가져오기",
"proxmoxResultSkippedNoIp": "{{count}} 건너뛰었습니다(IP 주소를 찾을 수 없음)",
"proxmoxStatsUrlCopied": "Proxmox 통계 URL이 클립보드에 복사되었습니다.",
"copyProxmoxStatsUrlAction": "Proxmox 통계 URL 복사",
@@ -896,13 +886,11 @@
"updatedCount": "{{count}}개의 호스트를 업데이트했습니다",
"friendlyNameLabel": "별칭",
"descriptionLabel": "설명",
"loadingHost": "호스트 로드 중...",
"loadingHosts": "호스트 로드 중...",
"loadingCredentials": "인증 정보 로드 중...",
"noHostsYet": "아직 호스트가 없습니다",
"noHostsYetHint": "터미널을 열고, 파일을 탐색하고, 지표를 확인하려면 서버를 추가하세요.",
"noHostsMatchSearch": "검색과 일치하는 호스트가 없습니다",
"hostNotFound": "호스트를 찾을 수 없습니다",
"searchHosts": "호스트 검색...",
"sortHosts": "호스트 정렬",
"sortDefault": "기본 순서",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH 키",
"filterAuthCredential": "인증 정보",
"filterAuthNone": "없음",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "스텝 CA",
"filterProtocolGroup": "프로토콜",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "호스트에 연결",
"clear": "지우기",
"paste": "붙여넣기",
"connected": "연결됨",
"clipboardWriteFailed": "클립보드에 복사하지 못했습니다. 페이지가 HTTPS 또는 localhost에서 제공되는지 확인하세요.",
"clipboardReadFailed": "클립보드에서 읽지 못했습니다. 클립보드 권한이 허용되었는지 확인하세요.",
"tmuxDetach": "tmux 세션에서 분리",
"terminalTitle": "터미널 - {{host}}",
"terminalWithPath": "터미널 - {{host}}:{{path}}",
"runTitle": "{{command}} 실행 중 - {{host}}",
"totpRequired": "2단계 인증 필요",
"totpCodeLabel": "인증 코드",
"totpVerify": "인증",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "호스트로 복사…",
"moveToHost": "호스트로 이동…",
"copyItemsToHost": "{{count}}개 항목을 호스트로 복사…",
"moveItemsToHost": "{{count}}개 항목을 호스트로 이동…",
"noHostsConnected": "사용 가능한 다른 파일 관리자 호스트가 없습니다.",
"noHostsConnectedHint": "호스트 관리자에서 파일 관리자가 활성화된 다른 SSH 호스트를 추가하세요.",
"selectDestinationHost": "대상 호스트 선택",
"destinationPath": "대상 경로",
"recentDestinations": "최근 대상",
"collapseRecentDestinations": "최근 대상 접기",
"expandRecentDestinations": "최근 대상 펼치기",
"browseFolders": "대상 폴더 찾아보기",
"browseDestination": "경로 찾아보기 또는 입력",
"confirmCopy": "복사",
"confirmMove": "이동",
"transferring": "전송 중…",
"progressVerifying": "파일 무결성 확인 중…",
"progressBenchmarking": "가장 빠른 이동 경로 선택…",
"compressing": "압축 중…",
"extracting": "압축 해제 중…",
"transferringItems": "{{total}}개 중 {{current}}개 항목 전송 중…",
"transferSuccess": "전송 완료",
"transferError": "전송 실패",
"transferPartial": "{{count}}개의 오류와 함께 전송 완료",
"transferPartialHint": "전송할 수 없습니다: {{paths}}",
"itemsSummary": "{{count}}개 항목",
"destMustBeDirectory": "여러 항목 전송 시 대상은 디렉터리여야 합니다.",
"selectThisFolder": "이 폴더 선택",
"browsePathWillBeCreated": "이 폴더가 아직 존재하지 않습니다. 전송 시작 시 생성됩니다.",
"browsePathError": "대상 호스트에서 이 경로를 열 수 없습니다.",
"goUp": "위로",
"copyFolderToHost": "폴더를 호스트로 복사…",
"moveFolderToHost": "폴더를 호스트로 이동…",
"hostReady": "준비됨",
"hostConnecting": "연결 중…",
"hostDisconnected": "연결되지 않음",
"hostAuthRequired": "인증 필요 — 먼저 이 호스트에서 파일 관리자를 여십시오.",
"hostConnectionFailed": "연결 실패",
"metricsTitle": "전송 시간",
"metricsPrepare": "대상 준비: {{duration}}",
"metricsCompress": "소스에서 압축: {{duration}}",
"metricsHopSourceRead": "소스 → 서버: {{throughput}}",
"metricsHopDestSftpWrite": "서버 → 목적지 (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "서버 → 목적지 (로컬): {{throughput}}",
"metricsTransfer": "엔드 투 엔드: {{throughput}} ({{duration}})",
"metricsExtract": "목적지에서 추출: {{duration}}",
"metricsVerify": "SHA-256 검증 완료: {{duration}}",
"metricsRouteBenchmark": "경로 탐색 — 직접: {{direct}}, 중계: {{relay}}",
"metricsSourceDelete": "소스에서 제거: {{duration}}",
"metricsTotal": "총 시간: {{duration}}",
"progressCompressing": "소스 호스트에서 압축 중…",
"progressExtracting": "목적지에서 추출 중…",
"progressTransferring": "데이터 전송 중…",
"progressReconnecting": "재연결 중…",
"parallelSegmentsLabel": "병렬 전송 레인",
"parallelSegmentsOption": "{{count}}개 레인",
"parallelSegmentsHint": "대용량 파일은 256 MB 청크로 분할됩니다. 여러 레인은 별도 연결을 사용하여 (여러 전송을 시작하는 것처럼) 총 처리량을 높입니다.",
"progressTotalSpeed": "총 {{speed}} ({{lanes}}개 레인)",
"progressTransferringItems": "파일 전송 중 ({{current}}/{{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} 파일",
"sourceNotDeletedPartial": "소스 파일 유지 (부분 전송)",
"jumpHostLimitation": "두 호스트 모두 Termix 서버에서 접근 가능해야 합니다. 호스트 간 직접 라우팅은 지원되지 않습니다.",
"cancel": "취소",
"methodLabel": "전송 방법",
"methodAuto": "자동",
"methodTar": "Tar 아카이브",
"methodItemSftp": "파일별 SFTP",
"methodAutoHint": "파일 수, 크기 및 압축 가능성을 기준으로 tar 또는 파일별 SFTP를 선택합니다. 단일 파일은 항상 스트리밍 SFTP를 사용합니다.",
"methodTarHint": "소스에서 압축, 하나의 아카이브 전송, 목적지에서 추출. 두 Unix 호스트에 tar가 필요합니다.",
"methodItemSftpHint": "SFTP를 통해 각 파일을 개별적으로 전송합니다. Windows를 포함한 모든 호스트에서 작동합니다.",
"methodPreviewLoading": "전송 방법 계산 중…",
"methodPreviewError": "전송 방법을 미리 볼 수 없습니다. 시작 시 서버가 방법을 선택합니다.",
"methodPreviewWillUseTar": "사용 예정: Tar 아카이브",
"methodPreviewWillUseItemSftp": "사용 예정: 파일별 SFTP",
"methodPreviewScanSummary": "{{fileCount}}개 파일, 총 {{totalSize}} (소스 호스트에서 스캔됨).",
"methodItemSftpLimitation": "각 파일은 단일 파일 복사와 동일한 SFTP 스트림을 순차적으로 사용합니다. 진행률이 모든 파일에 걸쳐 결합되므로 대용량 파일에서는 진행 막대가 느리게 움직입니다.",
"methodReason": {
"user_item_sftp": "파일별 SFTP를 선택하셨습니다.",
"user_tar": "tar 아카이브를 선택하셨습니다.",
"tar_unavailable": "한쪽 또는 양쪽 호스트에서 tar를 사용할 수 없어 대신 파일별 SFTP를 사용합니다.",
"windows_host": "Windows 호스트가 포함되어 tar를 사용하지 않습니다.",
"auto_multi_large": "자동: 압축 가능한 대용량 파일({{largestSize}})을 포함한 여러 파일 — tar로 하나의 전송으로 묶습니다.",
"auto_single_large_in_archive": "자동: 이 세트에 대용량 파일({{largestSize}}) 하나 — 파일별 SFTP.",
"auto_many_incompressible": "자동: 대부분 압축 불가능한 데이터 — 파일별 SFTP.",
"auto_many_files": "자동: 다수의 파일({{fileCount}}) — tar로 파일별 오버헤드를 줄입니다.",
"auto_default": "자동: 이 세트에 대해 파일별 SFTP."
},
"progressCancel": "취소",
"progressCancelling": "취소 중…",
"progressStalled": "지연됨",
"resumedHint": "다른 창에서 시작된 활성 전송에 다시 연결되었습니다.",
"transferCancelled": "전송 취소됨",
"transferCancelledCopyHint": "대상에 부분 파일이 남아 있을 수 있습니다.",
"transferCancelledMoveHint": "대상에 부분 파일이 남아 있을 수 있습니다. 원본 파일은 제거되지 않았습니다.",
"cleanupDestFiles": "대상 정리",
"cleanupDestFilesSuccess": "대상에서 부분 파일을 제거했습니다.",
"cleanupDestFilesPartial": "일부 부분 파일을 제거할 수 없었습니다.",
"cleanupDestFilesNothing": "대상에 정리할 항목이 없습니다.",
"cleanupDestFilesError": "정리 실패",
"retryTransfer": "재시도",
"retryTransferError": "재시도 실패",
"transferFailedRetryHint": "대상에 부분 데이터가 유지되었습니다. 연결이 복구되면 다시 시도하면 이어서 전송됩니다."
"sourceNotDeletedPartial": "소스 파일 유지 (부분 전송)"
},
"tunnels": {
"connect": "연결",
@@ -1261,8 +1153,6 @@
"clientTunnel": "클라이언트 터널",
"addClientTunnel": "클라이언트 터널 추가",
"active": "활성",
"start": "시작",
"stop": "중지",
"typeServerLocalDesc": "현재 호스트에서 엔드포인트로.",
"typeServerRemoteDesc": "엔드포인트에서 현재 호스트로 역방향 연결.",
"typeClientLocalDesc": "로컬 컴퓨터에서 엔드포인트로.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "속도 제한: 너무 많은 인증 시도가 있었습니다. 다시 시도하기 전에 {{time}}초 동안 기다려 주세요.",
"authTokenSaveFailed": "인증 토큰 저장에 실패했습니다.",
"authTokenMissing": "서버에서 새 인증 토큰을 반환하지 않았습니다. 다시 로그인해 주세요.",
"failedToLoadServer": "서버를 불러오지 못했습니다.",
"remoteServerRequired": "원격 서버가 필요합니다. 이 연결 유형을 사용하려면 설정에서 원격 서버를 연결하세요."
"failedToLoadServer": "서버를 불러오지 못했습니다."
},
"messages": {
"registrationDisabled": "현재 관리자가 신규 계정 등록을 비활성화했습니다. 로그인하거나 관리자에게 문의하세요.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "규약",
"domainLabel": "도메인",
"domainPlaceholder": "선택 과목",
"connectToTerminal": "터미널에 연결",
"connectToFiles": "파일에 연결"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Kies een thema, een accentkleur en je taal. Je kunt deze drie later allemaal wijzigen in de instellingen.",
"featuresTitle": "Wat doet Termix nog meer?",
"featuresIntro": "Elke server die je opslaat, kan op meer manieren dan alleen via een terminal worden geopend. Dit is wat er achter de pictogrammen aan de linkerkant te zien is.",
"feature_files": "Bestandsbeheerder",
"feature_files_desc": "Blader door bestanden, upload ze, download ze en bewerk ze via SFTP zonder de app te verlaten.",
"feature_tunnels": "Tunnels",
"feature_tunnels_desc": "Poorten doorsturen via een server om toegang te krijgen tot services die niet openbaar toegankelijk zijn.",
"feature_snippets": "Fragmenten",
"feature_snippets_desc": "Sla de commando's die je vaak gebruikt op en verstuur ze met één klik naar een terminal.",
"featuresRailHint": "Heb je er geen nodig? Verberg dan elk pictogram in de zijbalk via Instellingen, onder Navigatie.",
@@ -449,7 +445,6 @@
"passwordSaved": "Wachtwoord opgeslagen, typ om te wijzigen",
"key": "Sleutel",
"credential": "Referentie",
"none": "Geen",
"sshPrivateKey": "SSH-privésleutel",
"keyType": "Sleuteltype",
"uploadFile": "Bestand uploaden",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Keepalive-interval (seconden)",
"maxKeepaliveMisses": "Max Keepalive mist",
"sameHost": "Deze host (directe tunnel)",
"bindHost": "Bind Host",
"connectionToolbar": "Verbindingswerkbalk",
"showConnectionToolbar": "Verbindingswerkbalk weergeven",
"showConnectionToolbarDesc": "Toon de werkbalk in de SSH-, RDP-, VNC- en Telnet-sessies van deze host. Je kunt de werkbalk ook tijdelijk verbergen via de werkbalk zelf.",
"proxmoxLastSyncStatus": {
"success": "Succes"
},
"proxmoxGuestsSelected_one": "{{count}} gast — {{selected}} geselecteerd",
"proxmoxGuestsSelected_other": "{{count}} gasten — {{selected}} geselecteerd",
"proxmoxImportButton_one": "Importeer {{count}} host",
"proxmoxImportButton_other": "Importeer {{count}} hosts",
"proxmoxResultSkippedNoIp": "{{count}} overgeslagen (geen IP-adres gevonden)",
"proxmoxStatsUrlCopied": "De URL van Proxmox Stats is naar het klembord gekopieerd.",
"copyProxmoxStatsUrlAction": "Kopieer de URL van Proxmox-statistieken",
@@ -896,13 +886,11 @@
"updatedCount": "Bijgewerkte {{count}} hosts",
"friendlyNameLabel": "Vriendelijke naam",
"descriptionLabel": "Beschrijving",
"loadingHost": "Host wordt geladen...",
"loadingHosts": "Hosts worden geladen...",
"loadingCredentials": "Inloggegevens worden geladen...",
"noHostsYet": "Nog geen hosts beschikbaar",
"noHostsYetHint": "Voeg een server toe om terminals te openen, bestanden te bekijken en statistieken in te zien.",
"noHostsMatchSearch": "Er zijn geen hosts gevonden die aan uw zoekopdracht voldoen.",
"hostNotFound": "Host niet gevonden",
"searchHosts": "Zoek hosts...",
"sortHosts": "Sorteer hosts",
"sortDefault": "Standaardbestelling",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-sleutel",
"filterAuthCredential": "Referentie",
"filterAuthNone": "Geen",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Stap CA",
"filterProtocolGroup": "Protocol",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Verbinden met de host",
"clear": "Duidelijk",
"paste": "Plakken",
"connected": "Aangesloten",
"clipboardWriteFailed": "Kopiëren naar klembord mislukt. Zorg ervoor dat de pagina via HTTPS of localhost wordt aangeboden.",
"clipboardReadFailed": "Het lezen van het klembord is mislukt. Zorg ervoor dat de juiste klembordrechten zijn verleend.",
"tmuxDetach": "Ontkoppel van de tmux-sessie",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Bezig met uitvoeren van {{command}} - {{host}}",
"totpRequired": "Tweefactorauthenticatie vereist",
"totpCodeLabel": "Verificatiecode",
"totpVerify": "Verifiëren",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Kopiëren naar host…",
"moveToHost": "Verplaats naar host…",
"copyItemsToHost": "Kopieer {{count}} items naar host…",
"moveItemsToHost": "Verplaats {{count}} items naar host…",
"noHostsConnected": "Er zijn geen andere bestandsbeheerhosts beschikbaar.",
"noHostsConnectedHint": "Voeg een andere SSH-host toe met Bestandsbeheer ingeschakeld in Hostbeheer.",
"selectDestinationHost": "Selecteer de bestemmingshost",
"destinationPath": "Bestemmingspad",
"recentDestinations": "Recente bestemmingen",
"collapseRecentDestinations": "Recente bestemmingen inklappen",
"expandRecentDestinations": "Recente bestemmingen uitbreiden",
"browseFolders": "Blader door bestemmingsmappen",
"browseDestination": "Bladeren of pad invoeren",
"confirmCopy": "Kopiëren",
"confirmMove": "Beweging",
"transferring": "Overdracht…",
"progressVerifying": "Bestandsintegriteit controleren…",
"progressBenchmarking": "De snelste overstaproute selecteren…",
"compressing": "Comprimeren…",
"extracting": "Extractie van…",
"transferringItems": "Overdracht van {{current}} van {{total}} items…",
"transferSuccess": "Overdracht voltooid",
"transferError": "Overdracht mislukt",
"transferPartial": "Overdracht voltooid met {{count}} fouten",
"transferPartialHint": "Overdracht mislukt: {{paths}}",
"itemsSummary": "{{count}} items",
"destMustBeDirectory": "De bestemming moet een adresboek zijn voor overdrachten van meerdere items.",
"selectThisFolder": "Selecteer deze map",
"browsePathWillBeCreated": "Deze map bestaat nog niet. Hij wordt aangemaakt zodra de overdracht start.",
"browsePathError": "Dit pad kon niet worden geopend op de doelhost.",
"goUp": "Ga omhoog",
"copyFolderToHost": "Kopieer de map naar de host…",
"moveFolderToHost": "Map verplaatsen naar host…",
"hostReady": "Klaar",
"hostConnecting": "Verbinding maken…",
"hostDisconnected": "Niet verbonden",
"hostAuthRequired": "Authenticatie vereist — open eerst Bestandsbeheer op deze host.",
"hostConnectionFailed": "Verbinding mislukt",
"metricsTitle": "Transfertijden",
"metricsPrepare": "Bestemming voorbereiden: {{duration}}",
"metricsCompress": "Comprimeren op bron: {{duration}}",
"metricsHopSourceRead": "Bron → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → bestemming (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → bestemming (lokaal): {{throughput}}",
"metricsTransfer": "Einde tot einde: {{throughput}} ({{duration}})",
"metricsExtract": "Uitpakken op bestemming: {{duration}}",
"metricsVerify": "SHA-256 geverifieerd: {{duration}}",
"metricsRouteBenchmark": "Route probe — direct: {{direct}}, relay: {{relay}}",
"metricsSourceDelete": "Verwijderen uit de bron: {{duration}}",
"metricsTotal": "Totaal: {{duration}}",
"progressCompressing": "Comprimeren op de bronhost…",
"progressExtracting": "Uitpakken op bestemming…",
"progressTransferring": "Gegevens overdragen…",
"progressReconnecting": "Opnieuw verbinding maken…",
"parallelSegmentsLabel": "Parallelle transferstroken",
"parallelSegmentsOption": "{{count}} rijstroken",
"parallelSegmentsHint": "Grote bestanden worden opgesplitst in blokken van 256 MB. Meerdere lanes gebruiken aparte verbindingen (alsof er meerdere overdrachten worden gestart) voor een hogere totale doorvoer.",
"progressTotalSpeed": "{{speed}} totaal ({{lanes}} rijstroken)",
"progressTransferringItems": "Bestanden overdragen ({{current}} van {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} bestanden",
"sourceNotDeletedPartial": "Bronbestanden behouden (gedeeltelijke overdracht)",
"jumpHostLimitation": "Beide hosts moeten bereikbaar zijn vanaf de Termix-server. Directe routering tussen hosts wordt niet ondersteund.",
"cancel": "Annuleren",
"methodLabel": "Overdrachtsmethode",
"methodAuto": "Auto",
"methodTar": "Tar-archief",
"methodItemSftp": "SFTP per bestand",
"methodAutoHint": "Selecteert tar of SFTP per bestand op basis van het aantal bestanden, de grootte en de comprimeerbaarheid. Voor afzonderlijke bestanden wordt altijd streaming SFTP gebruikt.",
"methodTarHint": "Comprimeer op de bron, verstuur één archiefbestand en pak het uit op de bestemming. Vereist tar op beide Unix-hosts.",
"methodItemSftpHint": "Verstuur elk bestand afzonderlijk via SFTP. Werkt op alle besturingssystemen, inclusief Windows.",
"methodPreviewLoading": "Berekeningsmethode voor overdracht…",
"methodPreviewError": "De overdrachtsmethode kon niet worden bekeken. De server kiest nog steeds een methode wanneer u start.",
"methodPreviewWillUseTar": "Zal gebruiken: Tar-archief",
"methodPreviewWillUseItemSftp": "Zal gebruikmaken van: SFTP per bestand",
"methodPreviewScanSummary": "{{fileCount}} bestanden, {{totalSize}} totaal (gescand op de bronhost).",
"methodItemSftpLimitation": "Elk bestand gebruikt dezelfde SFTP-stream als een kopie van een enkel bestand, de een na de ander. De voortgang wordt gecombineerd voor alle bestanden, waardoor de voortgangsbalk langzaam beweegt bij grote bestanden.",
"methodReason": {
"user_item_sftp": "Je hebt gekozen voor SFTP per bestand.",
"user_tar": "Je hebt gekozen voor een tar-archief.",
"tar_unavailable": "Tar is niet beschikbaar op een of beide hosts; in plaats daarvan wordt SFTP per bestand gebruikt.",
"windows_host": "Er wordt gebruikgemaakt van een Windows-host; tar wordt niet gebruikt.",
"auto_multi_large": "Automatisch: meerdere bestanden, waaronder een groot bestand ({{largestSize}}) met comprimeerbare gegevens — tar bundelt deze tot één overdracht.",
"auto_single_large_in_archive": "Auto: één groot bestand ({{largestSize}}) in deze set — SFTP per bestand.",
"auto_many_incompressible": "Automatisch: voornamelijk niet-comprimeerbare gegevens — SFTP per bestand.",
"auto_many_files": "Auto: veel bestanden ({{fileCount}}) — tar vermindert de overhead per bestand.",
"auto_default": "Automatisch: SFTP per bestand voor deze set."
},
"progressCancel": "Annuleren",
"progressCancelling": "Annuleren…",
"progressStalled": "Vastgelopen",
"resumedHint": "De verbinding met een actieve overdracht die in een ander venster is gestart, is hersteld.",
"transferCancelled": "Overdracht geannuleerd",
"transferCancelledCopyHint": "Er kunnen gedeeltelijke bestanden op de bestemming achterblijven.",
"transferCancelledMoveHint": "Er kunnen gedeeltelijke bestanden op de bestemming achterblijven. De bronbestanden zijn niet verwijderd.",
"cleanupDestFiles": "Opruimbestemming",
"cleanupDestFilesSuccess": "Gedeeltelijke bestanden verwijderd van de bestemming.",
"cleanupDestFilesPartial": "Sommige gedeeltelijke bestanden konden niet worden verwijderd.",
"cleanupDestFilesNothing": "Niets op te ruimen op de bestemming.",
"cleanupDestFilesError": "Opruimen mislukt",
"retryTransfer": "Opnieuw proberen",
"retryTransferError": "Opnieuw proberen mislukt",
"transferFailedRetryHint": "Er zijn gedeeltelijke gegevens op de bestemming bewaard gebleven. De herhaalpoging wordt hervat zodra de verbinding hersteld is."
"sourceNotDeletedPartial": "Bronbestanden behouden (gedeeltelijke overdracht)"
},
"tunnels": {
"connect": "Verbinden",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Clienttunnel",
"addClientTunnel": "Clienttunnel toevoegen",
"active": "Actief",
"start": "Begin",
"stop": "Stop",
"typeServerLocalDesc": "Huidige host naar eindpunt.",
"typeServerRemoteDesc": "Eindpunt terug naar de huidige host.",
"typeClientLocalDesc": "Lokale computer naar eindpunt.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Snelheid beperkt: Te veel verificatiepogingen. Wacht {{time}} seconden voordat u het opnieuw probeert.",
"authTokenSaveFailed": "Het opslaan van het authenticatietoken is mislukt.",
"authTokenMissing": "De server heeft geen nieuw authenticatietoken teruggestuurd. Meld u alstublieft opnieuw aan.",
"failedToLoadServer": "Server laden mislukt",
"remoteServerRequired": "Externe server vereist. Verbind een externe server in de instellingen om dit verbindingstype te gebruiken."
"failedToLoadServer": "Server laden mislukt"
},
"messages": {
"registrationDisabled": "Het registreren van nieuwe accounts is momenteel uitgeschakeld door een beheerder. Log in of neem contact op met een beheerder.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protocol",
"domainLabel": "Domein",
"domainPlaceholder": "optioneel",
"connectToTerminal": "Verbinden met de terminal",
"connectToFiles": "Verbinding maken met bestanden"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Velg et tema, en aksentfarge og språk. Alle tre kan endres senere i Innstillinger.",
"featuresTitle": "Hva annet gjør Termix",
"featuresIntro": "Hver server du lagrer kan åpnes i mer enn én terminal. Her er hva som venter bak ikonene til venstre.",
"feature_files": "Filbehandler",
"feature_files_desc": "Bla gjennom, last opp, last ned og rediger filer via SFTP uten å forlate appen.",
"feature_tunnels": "Tunneler",
"feature_tunnels_desc": "Videresend porter gjennom en server for å nå tjenester som ikke er eksponert.",
"feature_snippets": "Utdrag",
"feature_snippets_desc": "Lagre kommandoer du kjører ofte og send dem til en terminal med ett klikk.",
"featuresRailHint": "Trenger du ikke en av disse? Skjul et hvilket som helst ikon fra sidefeltet i Innstillinger, under Navigasjon.",
@@ -449,7 +445,6 @@
"passwordSaved": "Passord lagret, skriv inn for å endre",
"key": "Nøkkel",
"credential": "Legitimasjon",
"none": "Ingen",
"sshPrivateKey": "SSH privat nøkkel",
"keyType": "Nøkkeltype",
"uploadFile": "Last opp fil",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Keepalive-intervall (sekunder)",
"maxKeepaliveMisses": "Max Keepalive bommer",
"sameHost": "Denne verten (direkte tunnel)",
"bindHost": "Bind vert",
"connectionToolbar": "Tilkoblingsverktøylinje",
"showConnectionToolbar": "Vis tilkoblingsverktøylinjen",
"showConnectionToolbarDesc": "Vis verktøylinjen i denne vertens SSH-, RDP-, VNC- og Telnet-økter. Du kan også skjule den midlertidig fra selve verktøylinjen.",
"proxmoxLastSyncStatus": {
"success": "Suksess"
},
"proxmoxGuestsSelected_one": "{{count}} gjest — {{selected}} valgt",
"proxmoxGuestsSelected_other": "{{count}} gjester — {{selected}} valgt",
"proxmoxImportButton_one": "Importer {{count}} vert",
"proxmoxImportButton_other": "Importer {{count}} verter",
"proxmoxResultSkippedNoIp": "{{count}} hoppet over (ingen IP-adresse funnet)",
"proxmoxStatsUrlCopied": "Proxmox-statistikk-URL kopiert til utklippstavlen",
"copyProxmoxStatsUrlAction": "Kopier URL-adressen til Proxmox-statistikken",
@@ -896,13 +886,11 @@
"updatedCount": "Oppdaterte {{count}} verter",
"friendlyNameLabel": "Vennlig navn",
"descriptionLabel": "Beskrivelse",
"loadingHost": "Laster inn vert ...",
"loadingHosts": "Laster inn verter ...",
"loadingCredentials": "Laster inn legitimasjon ...",
"noHostsYet": "Ingen verter ennå",
"noHostsYetHint": "Legg til en server for å åpne terminaler, bla gjennom filer og se målinger.",
"noHostsMatchSearch": "Ingen verter samsvarer med søket ditt",
"hostNotFound": "Verten ble ikke funnet",
"searchHosts": "Søk etter verter...",
"sortHosts": "Sorter verter",
"sortDefault": "Standardordre",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-nøkkel",
"filterAuthCredential": "Legitimasjon",
"filterAuthNone": "Ingen",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Trinn CA",
"filterProtocolGroup": "Protokoll",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Koble til vert",
"clear": "Klar",
"paste": "Lim inn",
"connected": "Tilkoblet",
"clipboardWriteFailed": "Kunne ikke kopiere til utklippstavlen. Sørg for at siden serveres via HTTPS eller localhost.",
"clipboardReadFailed": "Kunne ikke lese fra utklippstavlen. Sørg for at utklippstavlen har tillatelser.",
"tmuxDetach": "Koble fra tmux-økten",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Kjører {{command}} - {{host}}",
"totpRequired": "Tofaktorautentisering kreves",
"totpCodeLabel": "Verifiseringskode",
"totpVerify": "Verifisere",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Kopier til vert…",
"moveToHost": "Flytt til vert…",
"copyItemsToHost": "Kopier {{count}} elementer til å være vert for…",
"moveItemsToHost": "Flytt {{count}} elementer til vert for…",
"noHostsConnected": "Ingen andre filbehandlerverter tilgjengelig.",
"noHostsConnectedHint": "Legg til en annen SSH-vert med Filbehandling aktivert i Vertsbehandling.",
"selectDestinationHost": "Velg destinasjonsvert",
"destinationPath": "Destinasjonssti",
"recentDestinations": "Nylige destinasjoner",
"collapseRecentDestinations": "Skjul nylige destinasjoner",
"expandRecentDestinations": "Utvid nylige destinasjoner",
"browseFolders": "Bla gjennom målmapper",
"browseDestination": "Bla gjennom eller skriv inn bane",
"confirmCopy": "Kopiere",
"confirmMove": "Flytte",
"transferring": "Overfører…",
"progressVerifying": "Verifiserer filintegritet…",
"progressBenchmarking": "Velge den raskeste overgangsruten…",
"compressing": "Komprimering…",
"extracting": "Uttrekker…",
"transferringItems": "Overføring av {{current}} av {{total}} elementer…",
"transferSuccess": "Overføringen er fullført",
"transferError": "Overføringen mislyktes",
"transferPartial": "Overføringen er fullført med {{count}} feil",
"transferPartialHint": "Kunne ikke overføre: {{paths}}",
"itemsSummary": "{{count}} elementer",
"destMustBeDirectory": "Destinasjonen må være en katalog for overføringer av flere elementer",
"selectThisFolder": "Velg denne mappen",
"browsePathWillBeCreated": "Denne mappen finnes ikke ennå. Den vil bli opprettet når overføringen starter.",
"browsePathError": "Kunne ikke åpne denne banen på målverten.",
"goUp": "Gå opp",
"copyFolderToHost": "Kopier mappe til vert…",
"moveFolderToHost": "Flytt mappen til verten…",
"hostReady": "Ferdig",
"hostConnecting": "Kobler til…",
"hostDisconnected": "Ikke tilkoblet",
"hostAuthRequired": "Autentisering kreves – åpne Filbehandler på denne verten først",
"hostConnectionFailed": "Tilkoblingen mislyktes",
"metricsTitle": "Overføringstider",
"metricsPrepare": "Forbered destinasjon: {{duration}}",
"metricsCompress": "Komprimer på kilde: {{duration}}",
"metricsHopSourceRead": "Kilde → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → destinasjon (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → dest (lokal): {{throughput}}",
"metricsTransfer": "Ende-til-ende: {{throughput}} ({{duration}})",
"metricsExtract": "Uttrekk på destinasjon: {{duration}}",
"metricsVerify": "SHA-256 bekreftet: {{duration}}",
"metricsRouteBenchmark": "Rutesonde — direkte: {{direct}}, relé: {{relay}}",
"metricsSourceDelete": "Fjern fra kilden: {{duration}}",
"metricsTotal": "Totalt: {{duration}}",
"progressCompressing": "Komprimering på kildevert…",
"progressExtracting": "Uttrekker på destinasjon…",
"progressTransferring": "Overføring av data…",
"progressReconnecting": "Kobler til igjen…",
"parallelSegmentsLabel": "Parallelle overføringsfelt",
"parallelSegmentsOption": "{{count}} baner",
"parallelSegmentsHint": "Store filer deles inn i deler på 256 MB. Flere baner bruker separate tilkoblinger (som å starte flere overføringer) for høyere total gjennomstrømning.",
"progressTotalSpeed": "{{speed}} totalt ({{lanes}} baner)",
"progressTransferringItems": "Overføring av filer ({{current}} av {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} filer",
"sourceNotDeletedPartial": "Kildefiler beholdt (delvis overføring)",
"jumpHostLimitation": "Begge vertene må være tilgjengelige fra Termix-serveren. Direkte vert-til-vert-ruting støttes ikke.",
"cancel": "Kansellere",
"methodLabel": "Overføringsmetode",
"methodAuto": "Bil",
"methodTar": "Tar-arkiv",
"methodItemSftp": "SFTP per fil",
"methodAutoHint": "Velger tar eller SFTP per fil basert på antall filer, størrelse og komprimerbarhet. Enkeltfiler bruker alltid strømme-SFTP.",
"methodTarHint": "Komprimer på kildekode, overfør ett arkiv, pakk ut på destinasjon. Krever tar på begge Unix-vertene.",
"methodItemSftpHint": "Overfør hver fil individuelt via SFTP. Fungerer på alle verter, inkludert Windows.",
"methodPreviewLoading": "Beregning av overføringsmetode…",
"methodPreviewError": "Kunne ikke forhåndsvise overføringsmetoden. Serveren vil fortsatt velge en metode når du starter.",
"methodPreviewWillUseTar": "Vil bruke: Tar-arkiv",
"methodPreviewWillUseItemSftp": "Vil bruke: SFTP per fil",
"methodPreviewScanSummary": "{{fileCount}} filer, {{totalSize}} totalt (skannet på kildeverten).",
"methodItemSftpLimitation": "Hver fil bruker den samme SFTP-strømmen som en enkeltfilskopi, én etter én. Fremdriften kombineres på tvers av alle filene, så linjen beveger seg sakte under store filer.",
"methodReason": {
"user_item_sftp": "Du valgte SFTP per fil.",
"user_tar": "Du valgte tar-arkiv.",
"tar_unavailable": "Tar er ikke tilgjengelig på én eller begge vertene – SFTP per fil vil bli brukt i stedet.",
"windows_host": "En Windows-vert er involvert – tar brukes ikke.",
"auto_multi_large": "Auto: flere filer, inkludert en stor fil ({{largestSize}}) med komprimerbare data — tar-pakker i én overføring.",
"auto_single_large_in_archive": "Auto: én stor fil ({{largestSize}}) i dette settet — SFTP per fil.",
"auto_many_incompressible": "Auto: stort sett inkomprimerbare data — SFTP per fil.",
"auto_many_files": "Auto: mange filer ({{fileCount}}) — tar reduserer overhead per fil.",
"auto_default": "Auto: SFTP per fil for dette settet."
},
"progressCancel": "Kansellere",
"progressCancelling": "Avbryter…",
"progressStalled": "Fastlåst",
"resumedHint": "Koblet til igjen en aktiv overføring som startet i et annet vindu.",
"transferCancelled": "Overføringen er avbrutt",
"transferCancelledCopyHint": "Delvise filer kan bli liggende igjen på destinasjonen.",
"transferCancelledMoveHint": "Delvise filer kan bli liggende igjen på destinasjonen. Kildefilene ble ikke fjernet.",
"cleanupDestFiles": "Rydd opp destinasjonen",
"cleanupDestFilesSuccess": "Fjernet delvise filer fra destinasjonen",
"cleanupDestFilesPartial": "Kunne ikke fjerne noen delvise filer",
"cleanupDestFilesNothing": "Ingenting å rydde opp i på destinasjonen",
"cleanupDestFilesError": "Opprydding mislyktes",
"retryTransfer": "Prøv på nytt",
"retryTransferError": "Forsøk på nytt mislyktes",
"transferFailedRetryHint": "Delvise data ble lagret på destinasjonen. Forsøket gjenopptas når forbindelsen er tilbake."
"sourceNotDeletedPartial": "Kildefiler beholdt (delvis overføring)"
},
"tunnels": {
"connect": "Koble til",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Klienttunnel",
"addClientTunnel": "Legg til klienttunnel",
"active": "Aktiv",
"start": "Start",
"stop": "Stoppe",
"typeServerLocalDesc": "Gjeldende vert til endepunkt.",
"typeServerRemoteDesc": "Endepunkt tilbake til nåværende vert.",
"typeClientLocalDesc": "Lokal datamaskin til endepunkt.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Frekvens begrenset: For mange bekreftelsesforsøk. Vent {{time}} sekunder før du prøver på nytt.",
"authTokenSaveFailed": "Kunne ikke lagre autentiseringstokenet",
"authTokenMissing": "Serveren returnerte ikke et nytt autentiseringstoken. Vennligst logg inn på nytt.",
"failedToLoadServer": "Kunne ikke laste inn serveren",
"remoteServerRequired": "Ekstern server kreves. Koble til en ekstern server i Innstillinger for å bruke denne tilkoblingstypen."
"failedToLoadServer": "Kunne ikke laste inn serveren"
},
"messages": {
"registrationDisabled": "Registrering av ny konto er for øyeblikket deaktivert av en administrator. Vennligst logg inn eller kontakt en administrator.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokoll",
"domainLabel": "Domene",
"domainPlaceholder": "valgfri",
"connectToTerminal": "Koble til terminalen",
"connectToFiles": "Koble til filer"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Wybierz motyw, kolor akcentu i język. Wszystkie trzy można później zmienić w Ustawieniach.",
"featuresTitle": "Co jeszcze robi Termix",
"featuresIntro": "Każdy zapisany serwer można otworzyć nie tylko jako terminal. 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_tunnels": "Tunele",
"feature_tunnels_desc": "Przekierowuj porty przez serwer, aby dotrzeć do usług niewystawionych na zewnątrz.",
"feature_snippets": "Snippety",
"feature_snippets_desc": "Zapisuj często uruchamiane polecenia i wysyłaj je do terminala jednym kliknięciem.",
"featuresRailHint": "Któraś z nich niepotrzebna? Ukryj dowolną ikonę na pasku bocznym w Ustawieniach, w sekcji Nawigacja.",
@@ -449,7 +445,6 @@
"passwordSaved": "Hasło zapisane, wpisz, aby zmienić",
"key": "Klucz",
"credential": "Poświadczenie",
"none": "Brak",
"sshPrivateKey": "Klucz prywatny SSH",
"keyType": "Typ klucza",
"uploadFile": "Prześlij plik",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Interwał utrzymywania połączenia (sekundy)",
"maxKeepaliveMisses": "Maks. pominiętych keepalive",
"sameHost": "Ten host (tunel bezpośredni)",
"bindHost": "Host nasłuchu",
"connectionToolbar": "Pasek narzędzi połączenia",
"showConnectionToolbar": "Pokaż pasek narzędzi połączenia",
"showConnectionToolbarDesc": "Pokaż pasek narzędzi w sesjach SSH, RDP, VNC i Telnet tego hosta. Możesz go również tymczasowo ukryć na samym pasku narzędzi.",
"proxmoxLastSyncStatus": {
"success": "Powodzenie"
},
"proxmoxGuestsSelected_one": "{{count}} gość, wybrano {{selected}}",
"proxmoxGuestsSelected_other": "{{count}} gości, wybrano {{selected}}",
"proxmoxImportButton_one": "Importuj {{count}} host",
"proxmoxImportButton_other": "Importuj {{count}} hostów",
"proxmoxResultSkippedNoIp": "{{count}} pominięto (nie znaleziono adresu IP)",
"proxmoxStatsUrlCopied": "Skopiowano adres URL statystyk Proxmox",
"copyProxmoxStatsUrlAction": "Kopiuj adres URL statystyk Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Zaktualizowano {{count}} hostów",
"friendlyNameLabel": "Przyjazna nazwa",
"descriptionLabel": "Opis",
"loadingHost": "Ładowanie hosta...",
"loadingHosts": "Ładowanie hostów...",
"loadingCredentials": "Ładowanie poświadczeń...",
"noHostsYet": "Brak hostów",
"noHostsYetHint": "Dodaj serwer, aby otwierać terminale, przeglądać pliki i sprawdzać metryki.",
"noHostsMatchSearch": "Brak hostów pasujących do wyszukiwania",
"hostNotFound": "Nie znaleziono hosta",
"searchHosts": "Wyszukaj hosty...",
"sortHosts": "Sortuj hosty",
"sortDefault": "Domyślna kolejność",
@@ -925,7 +913,6 @@
"filterAuthKey": "Klucz SSH",
"filterAuthCredential": "Poświadczenie",
"filterAuthNone": "Brak",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Krok CA",
"filterProtocolGroup": "Protokół",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Połącz z hostem",
"clear": "Wyczyść",
"paste": "Wklej",
"connected": "Połączono",
"clipboardWriteFailed": "Nie udało się skopiować do schowka. Upewnij się, że strona jest serwowana przez HTTPS lub localhost.",
"clipboardReadFailed": "Nie udało się odczytać danych ze schowka. Upewnij się, że uprawnienia do schowka zostały przyznane.",
"tmuxDetach": "Odłącz od sesji tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Wykonywanie {{command}} - {{host}}",
"totpRequired": "Wymagane uwierzytelnianie dwuskładnikowe",
"totpCodeLabel": "Kod weryfikacyjny",
"totpVerify": "Zweryfikuj",
@@ -1148,109 +1129,20 @@
}
},
"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 hostów z menedżerem plików.",
"noHostsConnectedHint": "Dodaj kolejny host SSH z włączonym Menedżerem plików w Menedżerze hostów.",
"selectDestinationHost": "Wybierz hosta docelowego",
"destinationPath": "Ścieżka docelowa",
"recentDestinations": "Ostatnie miejsca docelowe",
"collapseRecentDestinations": "Zwiń ostatnie miejsca docelowe",
"expandRecentDestinations": "Rozwiń ostatnie miejsca docelowe",
"browseFolders": "Przeglądaj foldery docelowe",
"browseDestination": "Przeglądaj lub wprowadź ścieżkę",
"confirmCopy": "Kopiuj",
"confirmMove": "Przenieś",
"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 {{count}} błędami",
"transferPartialHint": "Nie można przesłać: {{paths}}",
"itemsSummary": "{{count}} elementów",
"destMustBeDirectory": "Miejsce docelowe musi być katalogiem przy transferze wielu elementów",
"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": "W górę",
"copyFolderToHost": "Kopiuj folder do hosta…",
"moveFolderToHost": "Przenieś folder do hosta…",
"hostReady": "Gotowy",
"hostConnecting": "Łączenie…",
"hostDisconnected": "Nie połączono",
"hostAuthRequired": "Wymagane uwierzytelnienie: najpierw otwórz menedżer plików na tym hoście",
"hostConnectionFailed": "Połączenie nieudane",
"metricsTitle": "Czasy transferu",
"metricsPrepare": "Przygotowanie miejsca docelowego: {{duration}}",
"metricsCompress": "Kompresja w źródle: {{duration}}",
"metricsHopSourceRead": "Źródło → serwer: {{throughput}}",
"metricsHopDestSftpWrite": "Serwer → cel (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Serwer → cel (lokalny): {{throughput}}",
"metricsTransfer": "Całościowo: {{throughput}} ({{duration}})",
"metricsExtract": "Rozpakowanie w miejscu docelowym: {{duration}}",
"metricsVerify": "Zweryfikowano SHA-256: {{duration}}",
"metricsRouteBenchmark": "Sonda trasy. Bezpośrednia: {{direct}}, przez przekaźnik: {{relay}}",
"metricsSourceDelete": "Usunięcie 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 po 256 MB. Wiele pasów korzysta z osobnych połączeń (jak uruchomienie kilku transferów naraz), co daje większą łączną przepustowość.",
"progressTotalSpeed": "{{speed}} łącznie ({{lanes}} pasów)",
"progressTransferringItems": "Przesyłanie plików ({{current}} z {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} plików",
"sourceNotDeletedPartial": "Zachowano pliki źródłowe (częściowy transfer)",
"jumpHostLimitation": "Oba hosty muszą być osiągalne z serwera Termix. Bezpośrednie trasowanie między hostami nie jest obsługiwane.",
"cancel": "Anuluj",
"methodLabel": "Metoda transferu",
"methodAuto": "Auto",
"methodTar": "Archiwum tar",
"methodItemSftp": "SFTP dla każdego pliku",
"methodAutoHint": "Wybiera tar albo SFTP dla każdego pliku na podstawie liczby plików, ich rozmiaru i podatności na kompresję. Pojedyncze pliki zawsze używają strumieniowego SFTP.",
"methodTarHint": "Kompresja w źródle, transfer jednego archiwum, rozpakowanie w miejscu docelowym. Wymaga 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": "Zostanie użyte: archiwum tar",
"methodPreviewWillUseItemSftp": "Zostanie użyte: 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 co kopiowanie pojedynczego pliku, jeden po drugim. Postęp jest sumowany dla wszystkich plików, więc przy dużych plikach pasek przesuwa się powoli.",
"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 niego zostanie użyty SFTP dla każdego pliku.",
"windows_host": "W transferze bierze udział host Windows, więc tar nie jest używany.",
"auto_multi_large": "Auto: wiele plików, w tym duży plik ({{largestSize}}) z kompresowalnymi danymi, tar pakuje je w jeden transfer.",
"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 redukuje narzut na plik.",
"auto_default": "Auto: SFTP dla każdego pliku w tym zestawie."
},
"progressCancel": "Anuluj",
"progressCancelling": "Anulowanie…",
"progressStalled": "Utknął",
"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": "Wyczyść miejsce docelowe",
"cleanupDestFilesSuccess": "Usunięto częściowe pliki z miejsca docelowego",
"cleanupDestFilesPartial": "Niektórych częściowych plików nie można było usunąć",
"cleanupDestFilesNothing": "Nie ma czego czyścić w miejscu docelowym",
"cleanupDestFilesError": "Czyszczenie nie powiodło się",
"retryTransfer": "Ponów",
"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."
"sourceNotDeletedPartial": "Zachowano pliki źródłowe (częściowy transfer)"
},
"tunnels": {
"connect": "Połącz",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Tunel klienta",
"addClientTunnel": "Dodaj tunel klienta",
"active": "Aktywny",
"start": "Start",
"stop": "Zatrzymaj",
"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.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Przekroczono limit prób: zbyt wiele weryfikacji. Odczekaj {{time}} sekund przed kolejną próbą.",
"authTokenSaveFailed": "Nie udało się zapisać tokenu uwierzytelniającego",
"authTokenMissing": "Serwer nie zwrócił nowego tokenu uwierzytelniającego. 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."
"failedToLoadServer": "Nie udało się załadować serwera"
},
"messages": {
"registrationDisabled": "Rejestracja nowych kont jest obecnie wyłączona przez administratora. Zaloguj się lub skontaktuj się z administratorem.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokół",
"domainLabel": "Domena",
"domainPlaceholder": "fakultatywny",
"connectToTerminal": "Połącz z terminalem",
"connectToFiles": "Połącz z plikami"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Escolha um tema, uma cor de destaque e o seu idioma. Todos os três podem ser alterados posteriormente nas Configurações.",
"featuresTitle": "O que mais a Termix faz?",
"featuresIntro": "Cada servidor que você salva pode ser aberto em mais de um terminal. Veja o que está esperando por você por trás dos ícones à esquerda.",
"feature_files": "Gerenciador de arquivos",
"feature_files_desc": "Navegue, carregue, baixe e edite arquivos via SFTP sem sair do aplicativo.",
"feature_tunnels": "Túneis",
"feature_tunnels_desc": "Encaminhar portas através de um servidor para alcançar serviços que não estão expostos.",
"feature_snippets": "Trechos",
"feature_snippets_desc": "Salve os comandos que você executa com frequência e envie-os para um terminal com um único clique.",
"featuresRailHint": "Não precisa de nenhum desses ícones? Oculte qualquer ícone da barra lateral em Configurações, na seção Navegação.",
@@ -449,7 +445,6 @@
"passwordSaved": "Senha salva, digite para alterar",
"key": "Chave",
"credential": "Credencial",
"none": "Nenhum",
"sshPrivateKey": "Chave privada SSH",
"keyType": "Tipo de chave",
"uploadFile": "Carregar arquivo",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Intervalo de Keepalive (segundos)",
"maxKeepaliveMisses": "Max Keepalive falha",
"sameHost": "Este host (túnel direto)",
"bindHost": "Vincular host",
"connectionToolbar": "Barra de ferramentas de conexão",
"showConnectionToolbar": "Mostrar barra de ferramentas de conexão",
"showConnectionToolbarDesc": "Exiba a barra de ferramentas nas sessões SSH, RDP, VNC e Telnet deste host. Você também pode ocultá-la temporariamente na própria barra de ferramentas.",
"proxmoxLastSyncStatus": {
"success": "Sucesso"
},
"proxmoxGuestsSelected_one": "{{count}} convidado — {{selected}} selecionado",
"proxmoxGuestsSelected_other": "{{count}} convidados — {{selected}} selecionados",
"proxmoxImportButton_one": "Importar {{count}} host",
"proxmoxImportButton_other": "Importar {{count}} hosts",
"proxmoxResultSkippedNoIp": "{{count}} ignorado (nenhum IP encontrado)",
"proxmoxStatsUrlCopied": "URL das estatísticas do Proxmox copiada para a área de transferência",
"copyProxmoxStatsUrlAction": "Copiar URL de estatísticas do Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Hosts atualizados {{count}}",
"friendlyNameLabel": "Nome amigável",
"descriptionLabel": "Descrição",
"loadingHost": "Carregando host...",
"loadingHosts": "Carregando hosts...",
"loadingCredentials": "Carregando credenciais...",
"noHostsYet": "Ainda não há anfitriões.",
"noHostsYetHint": "Adicione um servidor para abrir terminais, navegar por arquivos e visualizar métricas.",
"noHostsMatchSearch": "Nenhum host corresponde à sua pesquisa.",
"hostNotFound": "Host não encontrado",
"searchHosts": "Pesquisar hosts...",
"sortHosts": "Classificar hosts",
"sortDefault": "Ordem padrão",
@@ -925,7 +913,6 @@
"filterAuthKey": "Chave SSH",
"filterAuthCredential": "Credencial",
"filterAuthNone": "Nenhum",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Etapa CA",
"filterProtocolGroup": "Protocolo",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Conectar ao host",
"clear": "Claro",
"paste": "Colar",
"connected": "Conectado",
"clipboardWriteFailed": "Falha ao copiar para a área de transferência. Certifique-se de que a página esteja sendo servida via HTTPS ou localhost.",
"clipboardReadFailed": "Não foi possível ler o conteúdo da área de transferência. Certifique-se de que as permissões de acesso à área de transferência estejam concedidas.",
"tmuxDetach": "Desconectar da sessão tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Executando {{command}} - {{host}}",
"totpRequired": "Autenticação de dois fatores obrigatória",
"totpCodeLabel": "Código de verificação",
"totpVerify": "Verificar",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Copiar para o host…",
"moveToHost": "Mover para o host…",
"copyItemsToHost": "Copiar {{count}} itens para o host…",
"moveItemsToHost": "Mova {{count}} itens para o host…",
"noHostsConnected": "Não há outros servidores de gerenciamento de arquivos disponíveis.",
"noHostsConnectedHint": "Adicione outro host SSH com o Gerenciador de Arquivos habilitado no Gerenciador de Hosts.",
"selectDestinationHost": "Selecione o host de destino",
"destinationPath": "Caminho de destino",
"recentDestinations": "Destinos recentes",
"collapseRecentDestinations": "Recolher destinos recentes",
"expandRecentDestinations": "Expandir destinos recentes",
"browseFolders": "Procurar pastas de destino",
"browseDestination": "Navegue ou insira o caminho",
"confirmCopy": "Cópia",
"confirmMove": "Mover",
"transferring": "Transferindo…",
"progressVerifying": "Verificando a integridade do arquivo…",
"progressBenchmarking": "Selecionando a rota de transferência mais rápida…",
"compressing": "Comprimindo…",
"extracting": "Extraindo…",
"transferringItems": "Transferindo {{current}} de {{total}} itens…",
"transferSuccess": "Transferência concluída",
"transferError": "A transferência falhou",
"transferPartial": "Transferência concluída com {{count}} erros",
"transferPartialHint": "Não foi possível transferir: {{paths}}",
"itemsSummary": "{{count}} itens",
"destMustBeDirectory": "O destino deve ser um diretório para transferências de múltiplos itens.",
"selectThisFolder": "Selecione esta pasta",
"browsePathWillBeCreated": "Esta pasta ainda não existe. Ela será criada quando a transferência começar.",
"browsePathError": "Não foi possível abrir este caminho no host de destino.",
"goUp": "Subir",
"copyFolderToHost": "Copiar pasta para o host…",
"moveFolderToHost": "Mover pasta para o host…",
"hostReady": "Preparar",
"hostConnecting": "Conectando…",
"hostDisconnected": "Não conectado",
"hostAuthRequired": "Autenticação necessária — abra o Gerenciador de Arquivos neste host primeiro.",
"hostConnectionFailed": "Falha na conexão",
"metricsTitle": "Horários de transferência",
"metricsPrepare": "Preparar destino: {{duration}}",
"metricsCompress": "Comprimir na origem: {{duration}}",
"metricsHopSourceRead": "Origem → servidor: {{throughput}}",
"metricsHopDestSftpWrite": "Servidor → destino (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Servidor → destino (local): {{throughput}}",
"metricsTransfer": "De ponta a ponta: {{throughput}} ({{duration}})",
"metricsExtract": "Extrair no destino: {{duration}}",
"metricsVerify": "Verificado por SHA-256: {{duration}}",
"metricsRouteBenchmark": "Sondagem de rota — direta: {{direct}}, retransmissão: {{relay}}",
"metricsSourceDelete": "Remover da fonte: {{duration}}",
"metricsTotal": "Total: {{duration}}",
"progressCompressing": "Comprimindo no host de origem…",
"progressExtracting": "Extraindo no destino…",
"progressTransferring": "Transferindo dados…",
"progressReconnecting": "Reconectando…",
"parallelSegmentsLabel": "Faixas de transferência paralelas",
"parallelSegmentsOption": "{{count}} faixas",
"parallelSegmentsHint": "Arquivos grandes são divididos em partes de 256 MB. Várias vias utilizam conexões separadas (como iniciar várias transferências) para obter uma taxa de transferência total maior.",
"progressTotalSpeed": "{{speed}} total ({{lanes}} faixas)",
"progressTransferringItems": "Transferindo arquivos ({{current}} de {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} arquivos",
"sourceNotDeletedPartial": "Arquivos de origem mantidos (transferência parcial)",
"jumpHostLimitation": "Ambos os hosts devem ser acessíveis a partir do servidor Termix. O roteamento direto de host para host não é suportado.",
"cancel": "Cancelar",
"methodLabel": "Método de transferência",
"methodAuto": "Auto",
"methodTar": "Arquivo Tar",
"methodItemSftp": "SFTP por arquivo",
"methodAutoHint": "Seleciona o método de compactação (tar) ou SFTP por arquivo com base na quantidade de arquivos, tamanho e compressibilidade. Arquivos individuais sempre utilizam SFTP de streaming.",
"methodTarHint": "Comprima na origem, transfira um único arquivo compactado e extraia no destino. Requer o uso do tar em ambos os hosts Unix.",
"methodItemSftpHint": "Transfira cada arquivo individualmente via SFTP. Funciona em todos os hosts, incluindo Windows.",
"methodPreviewLoading": "Calculando o método de transferência…",
"methodPreviewError": "Não foi possível visualizar o método de transferência. O servidor ainda escolherá um método quando você iniciar o servidor.",
"methodPreviewWillUseTar": "Será utilizado: Arquivo tar",
"methodPreviewWillUseItemSftp": "Será utilizado: SFTP por arquivo",
"methodPreviewScanSummary": "{{fileCount}} arquivos, {{totalSize}} total (verificado no host de origem).",
"methodItemSftpLimitation": "Cada arquivo utiliza o mesmo fluxo SFTP como uma cópia de arquivo único, um após o outro. O progresso é combinado em todos os arquivos, portanto a barra se move lentamente durante a transferência de arquivos grandes.",
"methodReason": {
"user_item_sftp": "Você escolheu SFTP por arquivo.",
"user_tar": "Você escolheu o arquivo tar.",
"tar_unavailable": "O arquivo tar não está disponível em um ou ambos os hosts — em vez disso, será usado o SFTP por arquivo.",
"windows_host": "O sistema operacional host é Windows — o arquivo tar não é utilizado.",
"auto_multi_large": "Automático: vários arquivos, incluindo um arquivo grande ({{largestSize}}) com dados compressíveis — pacotes tar em uma única transferência.",
"auto_single_large_in_archive": "Automático: um arquivo grande ({{largestSize}}) neste conjunto — SFTP por arquivo.",
"auto_many_incompressible": "Automático: dados em sua maioria não compressíveis — SFTP por arquivo.",
"auto_many_files": "Automático: muitos arquivos ({{fileCount}}) — tar reduz a sobrecarga por arquivo.",
"auto_default": "Automático: SFTP por arquivo para este conjunto."
},
"progressCancel": "Cancelar",
"progressCancelling": "Cancelando…",
"progressStalled": "Paralisado",
"resumedHint": "Reconectado a uma transferência ativa iniciada em outra janela.",
"transferCancelled": "Transferência cancelada",
"transferCancelledCopyHint": "Alguns arquivos podem permanecer no destino.",
"transferCancelledMoveHint": "É possível que alguns arquivos permaneçam no destino. Os arquivos de origem não foram removidos.",
"cleanupDestFiles": "destino de limpeza",
"cleanupDestFilesSuccess": "Arquivos parciais removidos do destino.",
"cleanupDestFilesPartial": "Alguns arquivos parciais não puderam ser removidos.",
"cleanupDestFilesNothing": "Nada para limpar no destino.",
"cleanupDestFilesError": "A limpeza falhou",
"retryTransfer": "Tentar novamente",
"retryTransferError": "A nova tentativa falhou.",
"transferFailedRetryHint": "Dados parciais foram mantidos no destino. A tentativa será retomada quando a conexão for restabelecida."
"sourceNotDeletedPartial": "Arquivos de origem mantidos (transferência parcial)"
},
"tunnels": {
"connect": "Conectar",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Túnel do Cliente",
"addClientTunnel": "Adicionar túnel de cliente",
"active": "Ativo",
"start": "Começar",
"stop": "Parar",
"typeServerLocalDesc": "Host atual para endpoint.",
"typeServerRemoteDesc": "Retorno do ponto final para o host atual.",
"typeClientLocalDesc": "Computador local para ponto final.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Taxa de tentativas limitada: Muitas tentativas de verificação. Aguarde {{time}} segundos antes de tentar novamente.",
"authTokenSaveFailed": "Falha ao salvar o token de autenticação",
"authTokenMissing": "O servidor não retornou um novo token de autenticação. Por favor, faça login novamente.",
"failedToLoadServer": "Falha ao carregar o servidor",
"remoteServerRequired": "É necessário um servidor remoto. Conecte um servidor remoto nas Configurações para usar este tipo de conexão."
"failedToLoadServer": "Falha ao carregar o servidor"
},
"messages": {
"registrationDisabled": "O cadastro de novas contas está temporariamente desativado por um administrador. Faça login ou entre em contato com um administrador.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protocolo",
"domainLabel": "Domínio",
"domainPlaceholder": "opcional",
"connectToTerminal": "Conectar ao terminal",
"connectToFiles": "Conectar aos arquivos"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Escolha um tema, uma cor de destaque e o seu idioma. Todos os três podem ser alterados posteriormente nas Definições.",
"featuresTitle": "O que mais faz a Termix?",
"featuresIntro": "Cada servidor que guarda pode ser aberto em mais do que um terminal. Veja o que o espera por trás dos ícones à esquerda.",
"feature_files": "Gestor de arquivos",
"feature_files_desc": "Navegue, carregue, descarregue e edite ficheiros via SFTP sem sair da aplicação.",
"feature_tunnels": "Túneis",
"feature_tunnels_desc": "Encaminhar portas através de um servidor para chegar a serviços que não estão expostos.",
"feature_snippets": "Trechos",
"feature_snippets_desc": "Guarde os comandos que executa com frequência e envie-os para um terminal com um único clique.",
"featuresRailHint": "Não precisa de nenhum destes ícones? Oculte qualquer ícone da barra lateral em Definições, na secção Navegação.",
@@ -449,7 +445,6 @@
"passwordSaved": "Palavra-passe guardada, digite para alterar",
"key": "Chave",
"credential": "Credencial",
"none": "Nenhum",
"sshPrivateKey": "Chave Privada SSH",
"keyType": "Tipo de Chave",
"uploadFile": "Carregar Ficheiro",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Intervalo de Keepalive (segundos)",
"maxKeepaliveMisses": "Máximo de falhas de Keepalive",
"sameHost": "Este host (túnel direto)",
"bindHost": "Host de Ligação",
"connectionToolbar": "Barra de ferramentas de ligação",
"showConnectionToolbar": "Mostrar barra de ferramentas de ligação",
"showConnectionToolbarDesc": "Apresente a barra de ferramentas nas sessões SSH, RDP, VNC e Telnet deste host. Também pode ocultá-la temporariamente na própria barra de ferramentas.",
"proxmoxLastSyncStatus": {
"success": "Sucesso"
},
"proxmoxGuestsSelected_one": "{{count}} convidado — {{selected}} selecionado",
"proxmoxGuestsSelected_other": "{{count}} convidados — {{selected}} selecionados",
"proxmoxImportButton_one": "Importar {{count}} host",
"proxmoxImportButton_other": "Importar {{count}} hosts",
"proxmoxResultSkippedNoIp": "{{count}} ignorado (nenhum IP encontrado)",
"proxmoxStatsUrlCopied": "URL das estatísticas do Proxmox copiado para a área de transferência",
"copyProxmoxStatsUrlAction": "Copiar URL das estatísticas do Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Atualizados {{count}} hosts",
"friendlyNameLabel": "Nome Amigável",
"descriptionLabel": "Descrição",
"loadingHost": "A carregar o host...",
"loadingHosts": "A carregar hosts...",
"loadingCredentials": "A carregar credenciais...",
"noHostsYet": "Ainda sem hosts",
"noHostsYetHint": "Adicione um servidor para abrir terminais, navegar por ficheiros e visualizar métricas.",
"noHostsMatchSearch": "Nenhum host corresponde à sua pesquisa",
"hostNotFound": "Host não encontrado",
"searchHosts": "Pesquisar hosts...",
"sortHosts": "Ordenar Hosts",
"sortDefault": "Ordem Padrão",
@@ -925,7 +913,6 @@
"filterAuthKey": "Chave SSH",
"filterAuthCredential": "Credencial",
"filterAuthNone": "Nenhuma",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Etapa CA",
"filterProtocolGroup": "Protocolo",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Ligar ao Host",
"clear": "Limpar",
"paste": "Colar",
"connected": "Ligado",
"clipboardWriteFailed": "Erro ao copiar para a área de transferência. Certifique-se de que a página é servida via HTTPS ou localhost.",
"clipboardReadFailed": "Erro ao ler da área de transferência. Certifique-se de que as permissões da área de transferência foram concedidas.",
"tmuxDetach": "Desanexar da sessão tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "A executar {{command}} - {{host}}",
"totpRequired": "Autenticação de dois fatores necessária",
"totpCodeLabel": "Código de verificação",
"totpVerify": "Verificar",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Copiar para o host…",
"moveToHost": "Mover para o host…",
"copyItemsToHost": "Copiar {{count}} itens para o host…",
"moveItemsToHost": "Mover {{count}} itens para o host…",
"noHostsConnected": "Não há outros hosts do gestor de ficheiros disponíveis.",
"noHostsConnectedHint": "Adicione outro host SSH com o Gestor de Ficheiros ativado no Gestor de Hosts.",
"selectDestinationHost": "Selecionar host de destino",
"destinationPath": "Caminho de destino",
"recentDestinations": "Destinos recentes",
"collapseRecentDestinations": "Recolher destinos recentes",
"expandRecentDestinations": "Expandir destinos recentes",
"browseFolders": "Navegar pelas pastas de destino",
"browseDestination": "Navegar ou introduzir o caminho",
"confirmCopy": "Copiar",
"confirmMove": "Mover",
"transferring": "A transferir…",
"progressVerifying": "Verificação da integridade do ficheiro…",
"progressBenchmarking": "Selecionando a rota de transferência mais rápida…",
"compressing": "A comprimir…",
"extracting": "A extrair…",
"transferringItems": "A transferir {{current}} de {{total}} itens…",
"transferSuccess": "Transferência concluída",
"transferError": "Transferência falhou",
"transferPartial": "Transferência concluída com {{count}} erros",
"transferPartialHint": "Não foi possível transferir: {{paths}}",
"itemsSummary": "{{count}} itens",
"destMustBeDirectory": "O destino deve ser uma pasta para transferências de vários itens.",
"selectThisFolder": "Selecionar esta pasta",
"browsePathWillBeCreated": "Esta pasta ainda não existe. Será criada quando a transferência for iniciada.",
"browsePathError": "Não foi possível abrir este caminho no host de destino.",
"goUp": "Subir",
"copyFolderToHost": "Copiar pasta para o host…",
"moveFolderToHost": "Mover pasta para o host…",
"hostReady": "Pronto",
"hostConnecting": "A ligar…",
"hostDisconnected": "Desligado",
"hostAuthRequired": "Autenticação necessária — abra o Gestor de Ficheiros neste host primeiro",
"hostConnectionFailed": "Falha na ligação",
"metricsTitle": "Tempos de transferência",
"metricsPrepare": "Preparar destino: {{duration}}",
"metricsCompress": "Compressão na origem: {{duration}}",
"metricsHopSourceRead": "Origem → servidor: {{throughput}}",
"metricsHopDestSftpWrite": "Servidor → destino (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Servidor → destino (local): {{throughput}}",
"metricsTransfer": "Ponta a ponta: {{throughput}} ({{duration}})",
"metricsExtract": "Extração no destino: {{duration}}",
"metricsVerify": "Verificado por SHA-256: {{duration}}",
"metricsRouteBenchmark": "Sondagem de percurso — direta: {{direct}}, retransmissão: {{relay}}",
"metricsSourceDelete": "Remoção da origem: {{duration}}",
"metricsTotal": "Total: {{duration}}",
"progressCompressing": "A comprimir no host de origem…",
"progressExtracting": "A extrair no destino…",
"progressTransferring": "A transferir dados…",
"progressReconnecting": "A reconectar…",
"parallelSegmentsLabel": "Vias de transferência paralelas",
"parallelSegmentsOption": "{{count}} vias",
"parallelSegmentsHint": "Os ficheiros grandes são divididos em partes de 256 MB. Múltiplas vias utilizam ligações separadas (como iniciar várias transferências) para um maior débito total.",
"progressTotalSpeed": "{{speed}} total ({{lanes}} vias)",
"progressTransferringItems": "A transferir ficheiros ({{current}} de {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} ficheiros",
"sourceNotDeletedPartial": "Ficheiros de origem mantidos (transferência parcial)",
"jumpHostLimitation": "Ambos os hosts têm de ser acessíveis a partir do servidor Termix. O encaminhamento direto entre hosts não é suportado.",
"cancel": "Cancelar",
"methodLabel": "Método de transferência",
"methodAuto": "Automático",
"methodTar": "Arquivo Tar",
"methodItemSftp": "SFTP por ficheiro",
"methodAutoHint": "Escolhe tar ou SFTP por ficheiro com base no número de ficheiros, tamanho e compressibilidade. Os ficheiros únicos usam sempre SFTP por streaming.",
"methodTarHint": "Comprime na origem, transfere um arquivo, extrai no destino. Requer tar em ambos os hosts Unix.",
"methodItemSftpHint": "Transfere cada ficheiro individualmente por SFTP. Funciona em todos os hosts, incluindo Windows.",
"methodPreviewLoading": "A calcular o método de transferência…",
"methodPreviewError": "Não foi possível pré-visualizar o método de transferência. O servidor ainda escolherá um método quando iniciar.",
"methodPreviewWillUseTar": "Utilizará: Arquivo Tar",
"methodPreviewWillUseItemSftp": "Utilizará: SFTP por ficheiro",
"methodPreviewScanSummary": "{{fileCount}} ficheiros, {{totalSize}} no total (analisados no host de origem).",
"methodItemSftpLimitation": "Cada ficheiro utiliza o mesmo stream SFTP como uma cópia de um único ficheiro, um após o outro. O progresso é combinado para todos os ficheiros, pelo que a barra se move lentamente durante ficheiros grandes.",
"methodReason": {
"user_item_sftp": "Optou por SFTP ficheiro a ficheiro.",
"user_tar": "Optou por ficheiro tar.",
"tar_unavailable": "O tar não está disponível num ou em ambos os anfitriões — será usado SFTP ficheiro a ficheiro.",
"windows_host": "Está envolvido um anfitrião Windows — o tar não é utilizado.",
"auto_multi_large": "Automático: vários ficheiros, incluindo um grande ({{largestSize}}) com dados compressíveis — o tar agrupa numa transferência única.",
"auto_single_large_in_archive": "Automático: um ficheiro grande ({{largestSize}}) neste conjunto — SFTP ficheiro a ficheiro.",
"auto_many_incompressible": "Automático: dados maioritariamente incompressíveis — SFTP ficheiro a ficheiro.",
"auto_many_files": "Automático: muitos ficheiros ({{fileCount}}) — o tar reduz a sobrecarga por ficheiro.",
"auto_default": "Automático: SFTP ficheiro a ficheiro para este conjunto."
},
"progressCancel": "Cancelar",
"progressCancelling": "A cancelar…",
"progressStalled": "Parado",
"resumedHint": "Reconectado a uma transferência ativa iniciada noutra janela.",
"transferCancelled": "Transferência cancelada",
"transferCancelledCopyHint": "Poderão permanecer ficheiros parciais no destino.",
"transferCancelledMoveHint": "Poderão permanecer ficheiros parciais no destino. Os ficheiros de origem não foram removidos.",
"cleanupDestFiles": "Limpar destino",
"cleanupDestFilesSuccess": "Ficheiros parciais removidos do destino.",
"cleanupDestFilesPartial": "Não foi possível remover alguns ficheiros parciais.",
"cleanupDestFilesNothing": "Nada a limpar no destino.",
"cleanupDestFilesError": "A limpeza falhou.",
"retryTransfer": "Repetir",
"retryTransferError": "A repetição falhou.",
"transferFailedRetryHint": "Foram mantidos dados parciais no destino. A repetição será retomada quando a ligação for restabelecida."
"sourceNotDeletedPartial": "Ficheiros de origem mantidos (transferência parcial)"
},
"tunnels": {
"connect": "Ligar",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Túnel de cliente",
"addClientTunnel": "Adicionar túnel de cliente",
"active": "Ativo",
"start": "Iniciar",
"stop": "Parar",
"typeServerLocalDesc": "Do host atual para o endpoint.",
"typeServerRemoteDesc": "Do endpoint de volta para o host atual.",
"typeClientLocalDesc": "Do computador local para o endpoint.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Limite de tentativas: demasiadas tentativas de verificação. Por favor, aguarde {{time}} segundos antes de tentar novamente.",
"authTokenSaveFailed": "Falha ao guardar o token de autenticação",
"authTokenMissing": "O servidor não devolveu um novo token de autenticação. Por favor, inicie sessão novamente.",
"failedToLoadServer": "Falha ao carregar o servidor",
"remoteServerRequired": "É necessário um servidor remoto. Ligue um servidor remoto nas Definições para utilizar este tipo de ligação."
"failedToLoadServer": "Falha ao carregar o servidor"
},
"messages": {
"registrationDisabled": "O registo de novas contas está atualmente desativado por um administrador. Por favor, inicie sessão ou contacte um administrador.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protocolo",
"domainLabel": "Domínio",
"domainPlaceholder": "opcional",
"connectToTerminal": "Ligar ao Terminal",
"connectToFiles": "Ligar aos Ficheiros"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Alege o temă, o culoare de accent și limba. Toate trei pot fi modificate ulterior în Setări.",
"featuresTitle": "Ce altceva face Termix",
"featuresIntro": "Fiecare server pe care îl salvezi poate fi deschis în mai multe terminale. Iată ce se află în spatele pictogramelor din stânga.",
"feature_files": "Manager de fișiere",
"feature_files_desc": "Răsfoiți, încărcați, descărcați și editați fișiere prin SFTP fără a părăsi aplicația.",
"feature_tunnels": "Tuneluri",
"feature_tunnels_desc": "Redirecționează porturile printr-un server pentru a accesa servicii care nu sunt expuse.",
"feature_snippets": "Fragmente",
"feature_snippets_desc": "Salvează comenzile pe care le execuți des și trimite-le către un terminal cu un singur clic.",
"featuresRailHint": "Nu ai nevoie de una dintre acestea? Ascunde orice pictogramă din bara laterală din Setări, la Navigare.",
@@ -449,7 +445,6 @@
"passwordSaved": "Parolă salvată, tastați pentru a o modifica",
"key": "Cheie",
"credential": "Acreditare",
"none": "Nici unul",
"sshPrivateKey": "Cheie privată SSH",
"keyType": "Tipul cheii",
"uploadFile": "Încărcați fișierul",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Interval Keepalive (secunde)",
"maxKeepaliveMisses": "Ratări maxime de menținere în viață",
"sameHost": "Această gazdă (tunel direct)",
"bindHost": "Legați gazda",
"connectionToolbar": "Bara de instrumente Conexiune",
"showConnectionToolbar": "Afișează bara de instrumente pentru conexiuni",
"showConnectionToolbarDesc": "Afișează bara de instrumente în sesiunile SSH, RDP, VNC și Telnet ale acestei gazde. De asemenea, o poți ascunde temporar din bara de instrumente.",
"proxmoxLastSyncStatus": {
"success": "Succes"
},
"proxmoxGuestsSelected_one": "{{count}} invitat — {{selected}} selectat",
"proxmoxGuestsSelected_other": "{{count}} invitați — {{selected}} selectați",
"proxmoxImportButton_one": "Importați gazda {{count}}",
"proxmoxImportButton_other": "Importați gazde {{count}}",
"proxmoxResultSkippedNoIp": "{{count}} omis (nu a fost găsită nicio adresă IP)",
"proxmoxStatsUrlCopied": "URL-ul statisticilor Proxmox a fost copiat în clipboard",
"copyProxmoxStatsUrlAction": "Copiați URL-ul statisticilor Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Gazdele {{count}} actualizate",
"friendlyNameLabel": "Nume prietenos",
"descriptionLabel": "Descriere",
"loadingHost": "Se încarcă gazda...",
"loadingHosts": "Se încarcă gazdele...",
"loadingCredentials": "Se încarcă acreditările...",
"noHostsYet": "Nicio gazdă încă",
"noHostsYetHint": "Adăugați un server pentru a deschide terminale, a răsfoi fișiere și a vedea valori.",
"noHostsMatchSearch": "Nicio gazdă nu corespunde căutării dvs.",
"hostNotFound": "Gazdă negăsită",
"searchHosts": "Căutați gazde...",
"sortHosts": "Sortează gazdele",
"sortDefault": "Ordine implicită",
@@ -925,7 +913,6 @@
"filterAuthKey": "Cheie SSH",
"filterAuthCredential": "Acreditare",
"filterAuthNone": "Nici unul",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Pasul CA",
"filterProtocolGroup": "Protocol",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Conectare la gazdă",
"clear": "Clar",
"paste": "Pastă",
"connected": "Conectat",
"clipboardWriteFailed": "Copierea în clipboard nu a reușit. Asigurați-vă că pagina este servită prin HTTPS sau localhost.",
"clipboardReadFailed": "Citirea din clipboard nu a reușit. Asigurați-vă că permisiunile de acces la clipboard sunt acordate.",
"tmuxDetach": "Detașare de la sesiunea tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Rulează {{command}} - {{host}}",
"totpRequired": "Autentificare cu doi factori necesară",
"totpCodeLabel": "Cod de verificare",
"totpVerify": "Verifica",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Copiați către gazdă…",
"moveToHost": "Mutare la gazdă…",
"copyItemsToHost": "Copiați elementele {{count}} pe gazda…",
"moveItemsToHost": "Mută elementele {{count}} către gazda…",
"noHostsConnected": "Nu sunt disponibile alte gazde de gestionare a fișierelor.",
"noHostsConnectedHint": "Adăugați o altă gazdă SSH cu File Manager activat în Host Manager.",
"selectDestinationHost": "Selectați gazda de destinație",
"destinationPath": "Calea de destinație",
"recentDestinations": "Destinații recente",
"collapseRecentDestinations": "Restrângeți destinațiile recente",
"expandRecentDestinations": "Extindeți destinațiile recente",
"browseFolders": "Răsfoiți folderele de destinație",
"browseDestination": "Răsfoiți sau introduceți calea",
"confirmCopy": "Copie",
"confirmMove": "Mişcare",
"transferring": "Transferarea…",
"progressVerifying": "Verificarea integrității fișierului…",
"progressBenchmarking": "Selectarea celei mai rapide rute de transfer…",
"compressing": "Comprimarea…",
"extracting": "Extragerea…",
"transferringItems": "Se transferă {{current}} din {{total}} articole…",
"transferSuccess": "Transfer finalizat",
"transferError": "Transferul a eșuat",
"transferPartial": "Transfer finalizat cu erori {{count}}",
"transferPartialHint": "Nu s-a putut transfera: {{paths}}",
"itemsSummary": "{{count}} articole",
"destMustBeDirectory": "Destinația trebuie să fie un director pentru transferurile cu mai multe elemente",
"selectThisFolder": "Selectați acest folder",
"browsePathWillBeCreated": "Acest folder nu există încă. Va fi creat când va începe transferul.",
"browsePathError": "Nu s-a putut deschide această cale pe gazda destinație.",
"goUp": "Mergi sus",
"copyFolderToHost": "Copiați folderul pe gazdă…",
"moveFolderToHost": "Mută folderul pe gazdă…",
"hostReady": "Gata",
"hostConnecting": "Conectare…",
"hostDisconnected": "Neconectat",
"hostAuthRequired": "Autentificare necesară — deschideți mai întâi File Manager pe această gazdă",
"hostConnectionFailed": "Conexiunea a eșuat",
"metricsTitle": "Orele de transfer",
"metricsPrepare": "Pregătiți destinația: {{duration}}",
"metricsCompress": "Comprimare pe sursă: {{duration}}",
"metricsHopSourceRead": "Sursă → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → destinație (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → destinație (locală): {{throughput}}",
"metricsTransfer": "De la un capăt la altul: {{throughput}} ({{duration}})",
"metricsExtract": "Extras la destinație: {{duration}}",
"metricsVerify": "SHA-256 verificat: {{duration}}",
"metricsRouteBenchmark": "Sondă de rută — directă: {{direct}}, releu: {{relay}}",
"metricsSourceDelete": "Eliminare din sursă: {{duration}}",
"metricsTotal": "Total: {{duration}}",
"progressCompressing": "Comprimare pe gazda sursă…",
"progressExtracting": "Extragerea la destinație…",
"progressTransferring": "Transferul datelor…",
"progressReconnecting": "Reconectare…",
"parallelSegmentsLabel": "Benzi de transfer paralele",
"parallelSegmentsOption": "{{count}} benzi",
"parallelSegmentsHint": "Fișierele mari sunt împărțite în blocuri de 256 MB. Mai multe benzi utilizează conexiuni separate (cum ar fi pornirea mai multor transferuri) pentru un debit total mai mare.",
"progressTotalSpeed": "{{speed}} total ({{lanes}} benzi)",
"progressTransferringItems": "Transferarea fișierelor ({{current}} din {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} fișiere",
"sourceNotDeletedPartial": "Fișiere sursă păstrate (transfer parțial)",
"jumpHostLimitation": "Ambele gazde trebuie să fie accesibile de pe serverul Termix. Rutarea directă de la gazdă la gazdă nu este acceptată.",
"cancel": "Anula",
"methodLabel": "Metoda de transfer",
"methodAuto": "Auto",
"methodTar": "Arhivă Tar",
"methodItemSftp": "SFTP per fișier",
"methodAutoHint": "Alege SFTP tar sau per fișier în funcție de numărul de fișiere, dimensiune și compresibilitate. Fișierele individuale utilizează întotdeauna SFTP în flux continuu.",
"methodTarHint": "Comprimare la sursă, transfer o arhivă, extragere la destinație. Necesită tar pe ambele gazde Unix.",
"methodItemSftpHint": "Transferă fiecare fișier individual prin SFTP. Funcționează pe toate gazdele, inclusiv Windows.",
"methodPreviewLoading": "Metoda de calcul a transferului…",
"methodPreviewError": "Nu s-a putut previzualiza metoda de transfer. Serverul va alege în continuare o metodă când porniți.",
"methodPreviewWillUseTar": "Se va folosi: arhiva Tar",
"methodPreviewWillUseItemSftp": "Se va utiliza: SFTP per fișier",
"methodPreviewScanSummary": "{{fileCount}} fișiere, {{totalSize}} în total (scanate pe gazda sursă).",
"methodItemSftpLimitation": "Fiecare fișier folosește același flux SFTP ca o copie a unui singur fișier, una după alta. Progresul este combinat în toate fișierele, astfel încât bara se mișcă lent în timpul fișierelor mari.",
"methodReason": {
"user_item_sftp": "Ai ales SFTP per fișier.",
"user_tar": "Ai ales arhiva tar.",
"tar_unavailable": "Tar nu este disponibil pe una sau ambele gazde — se va folosi în schimb SFTP per fișier.",
"windows_host": "Este implicată o gazdă Windows — nu se folosește fișierul tar.",
"auto_multi_large": "Automat: fișiere multiple, inclusiv un fișier mare ({{largestSize}}) cu date compresibile — pachete tar într-un singur transfer.",
"auto_single_large_in_archive": "Automat: un fișier mare ({{largestSize}}) în acest set — SFTP per fișier.",
"auto_many_incompressible": "Automat: date în mare parte incompresibile — SFTP per fișier.",
"auto_many_files": "Auto: multe fișiere ({{fileCount}}) — tar reduce costul per fișier.",
"auto_default": "Automat: SFTP per fișier pentru acest set."
},
"progressCancel": "Anula",
"progressCancelling": "Anulare…",
"progressStalled": "Blocat",
"resumedHint": "Reconectare la un transfer activ început într-o altă fereastră.",
"transferCancelled": "Transfer anulat",
"transferCancelledCopyHint": "Fișiere parțiale pot rămâne în destinație.",
"transferCancelledMoveHint": "Fișiere parțiale pot rămâne în destinație. Fișierele sursă nu au fost eliminate.",
"cleanupDestFiles": "Destinația de curățare",
"cleanupDestFilesSuccess": "Fișiere parțiale eliminate din destinație",
"cleanupDestFilesPartial": "Unele fișiere parțiale nu au putut fi eliminate",
"cleanupDestFilesNothing": "Nimic de curățat la destinație",
"cleanupDestFilesError": "Curățarea a eșuat",
"retryTransfer": "Reîncercați",
"retryTransferError": "Reîncercare eșuată",
"transferFailedRetryHint": "Date parțiale au fost păstrate la destinație. Reîncercarea va fi reluată după restabilirea conexiunii."
"sourceNotDeletedPartial": "Fișiere sursă păstrate (transfer parțial)"
},
"tunnels": {
"connect": "Conectează-te",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Tunelul clientului",
"addClientTunnel": "Adăugați un tunel client",
"active": "Activ",
"start": "Început",
"stop": "Stop",
"typeServerLocalDesc": "Gazdă curentă către endpoint.",
"typeServerRemoteDesc": "Revenire la gazda curentă în punctul final.",
"typeClientLocalDesc": "Calculator local către endpoint.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Rată limitată: Prea multe încercări de verificare. Vă rugăm să așteptați {{time}} secunde înainte de a încerca din nou.",
"authTokenSaveFailed": "Nu s-a putut salva jetonul de autentificare",
"authTokenMissing": "Serverul nu a returnat un nou token de autentificare. Vă rugăm să vă conectați din nou.",
"failedToLoadServer": "Nu s-a putut încărca serverul",
"remoteServerRequired": "Este necesar un server la distanță. Conectați un server la distanță în Setări pentru a utiliza acest tip de conexiune."
"failedToLoadServer": "Nu s-a putut încărca serverul"
},
"messages": {
"registrationDisabled": "Înregistrarea unui cont nou este dezactivată în prezent de un administrator. Vă rugăm să vă conectați sau să contactați un administrator.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protocol",
"domainLabel": "Domeniu",
"domainPlaceholder": "opțional",
"connectToTerminal": "Conectați-vă la terminal",
"connectToFiles": "Conectare la fișiere"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Выберите тему оформления, акцентный цвет и язык. Все три параметра можно изменить позже в настройках.",
"featuresTitle": "Чем еще занимается Termix?",
"featuresIntro": "Каждый сохраненный вами сервер можно открыть не только в терминале. Вот что скрывается за значками слева.",
"feature_files": "Файловый менеджер",
"feature_files_desc": "Просматривайте, загружайте, скачивайте и редактируйте файлы по протоколу SFTP, не выходя из приложения.",
"feature_tunnels": "Туннели",
"feature_tunnels_desc": "Перенаправляйте порты через сервер для доступа к службам, которые не доступны извне.",
"feature_snippets": "Фрагменты",
"feature_snippets_desc": "Сохраняйте часто выполняемые команды и отправляйте их на терминал одним щелчком мыши.",
"featuresRailHint": "Не нуждаетесь ни в одном из этих значков? Скройте любой значок на боковой панели в настройках, в разделе «Навигация».",
@@ -449,7 +445,6 @@
"passwordSaved": "Пароль сохранен, введите для изменения.",
"key": "Ключ",
"credential": "Учётные данные",
"none": "Нет",
"sshPrivateKey": "Приватный ключ SSH",
"keyType": "Тип ключа",
"uploadFile": "Загрузить файл",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Интервал keepalive (секунд)",
"maxKeepaliveMisses": "Макс. пропусков keepalive",
"sameHost": "Этот хост (прямой туннель)",
"bindHost": "Хост для привязки",
"connectionToolbar": "Панель инструментов подключения",
"showConnectionToolbar": "Показать панель инструментов подключения",
"showConnectionToolbarDesc": "Отображать панель инструментов в сеансах SSH, RDP, VNC и Telnet этого хоста. Также можно временно скрыть её с самой панели инструментов.",
"proxmoxLastSyncStatus": {
"success": "Успешно"
},
"proxmoxGuestsSelected_one": "{{count}} гость — {{selected}} выбрано",
"proxmoxGuestsSelected_other": "{{count}} гостей — {{selected}} выбрано",
"proxmoxImportButton_one": "Импортировать {{count}} хост",
"proxmoxImportButton_other": "Импортировать {{count}} хостов",
"proxmoxResultSkippedNoIp": "{{count}} пропущено (IP-адрес не найден)",
"proxmoxStatsUrlCopied": "URL-адрес статистики Proxmox скопирован в буфер обмена.",
"copyProxmoxStatsUrlAction": "Скопируйте URL-адрес статистики Proxmox.",
@@ -896,13 +886,11 @@
"updatedCount": "Обновлено хостов: {{count}}",
"friendlyNameLabel": "Дружественное имя",
"descriptionLabel": "Описание",
"loadingHost": "Загрузка хоста...",
"loadingHosts": "Загрузка хостов...",
"loadingCredentials": "Загрузка учётных данных...",
"noHostsYet": "Пока нет хостов",
"noHostsYetHint": "Добавьте сервер, чтобы открывать терминалы, просматривать файлы и отслеживать метрики.",
"noHostsMatchSearch": "Нет хостов по вашему запросу",
"hostNotFound": "Хост не найден",
"searchHosts": "Поиск хостов...",
"sortHosts": "Сортировка хостов",
"sortDefault": "По умолчанию",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-ключ",
"filterAuthCredential": "Учётные данные",
"filterAuthNone": "Нет",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Шаг CA",
"filterProtocolGroup": "Протокол",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Подключиться к хосту",
"clear": "Очистить",
"paste": "Вставить",
"connected": "Подключено",
"clipboardWriteFailed": "Не удалось скопировать в буфер обмена. Убедитесь, что страница загружена по HTTPS или с localhost.",
"clipboardReadFailed": "Не удалось прочитать из буфера обмена. Убедитесь, что предоставлены разрешения на доступ к буферу обмена.",
"tmuxDetach": "Отключиться от сессии tmux",
"terminalTitle": "Терминал - {{host}}",
"terminalWithPath": "Терминал - {{host}}:{{path}}",
"runTitle": "Выполнение {{command}} - {{host}}",
"totpRequired": "Требуется двухфакторная аутентификация",
"totpCodeLabel": "Код подтверждения",
"totpVerify": "Подтвердить",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Копировать на хост…",
"moveToHost": "Переместить на хост…",
"copyItemsToHost": "Копировать {{count}} элементов на хост…",
"moveItemsToHost": "Переместить {{count}} элементов на хост…",
"noHostsConnected": "Нет других доступных хостов с файловым менеджером.",
"noHostsConnectedHint": "Добавьте другой SSH-хост с включенным Файловым Менеджером в Менеджере Хостов.",
"selectDestinationHost": "Выберите целевой хост",
"destinationPath": "Путь назначения",
"recentDestinations": "Недавние назначения",
"collapseRecentDestinations": "Свернуть недавние назначения",
"expandRecentDestinations": "Развернуть недавние назначения",
"browseFolders": "Обзор папок назначения",
"browseDestination": "Обзор или ввод пути",
"confirmCopy": "Копировать",
"confirmMove": "Переместить",
"transferring": "Передача…",
"progressVerifying": "Проверка целостности файла…",
"progressBenchmarking": "Выбор самого быстрого маршрута пересадки…",
"compressing": "Сжатие…",
"extracting": "Извлечение…",
"transferringItems": "Передача {{current}} из {{total}} элементов…",
"transferSuccess": "Передача завершена",
"transferError": "Ошибка передачи",
"transferPartial": "Передача завершена с {{count}} ошибками",
"transferPartialHint": "Не удалось передать: {{paths}}",
"itemsSummary": "{{count}} элементов",
"destMustBeDirectory": "Для передачи нескольких элементов путь назначения должен быть папкой",
"selectThisFolder": "Выбрать эту папку",
"browsePathWillBeCreated": "Эта папка ещё не существует. Она будет создана при запуске передачи.",
"browsePathError": "Не удалось открыть этот путь на целевом хосте.",
"goUp": "Вверх",
"copyFolderToHost": "Копировать папку на хост…",
"moveFolderToHost": "Переместить папку на хост…",
"hostReady": "Готов",
"hostConnecting": "Подключение…",
"hostDisconnected": "Не подключен",
"hostAuthRequired": "Требуется аутентификация — сначала откройте Файловый Менеджер на этом хосте",
"hostConnectionFailed": "Ошибка подключения",
"metricsTitle": "Время передачи",
"metricsPrepare": "Подготовка назначения: {{duration}}",
"metricsCompress": "Сжатие на источнике: {{duration}}",
"metricsHopSourceRead": "Источник → сервер: {{throughput}}",
"metricsHopDestSftpWrite": "Сервер → назначение (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Сервер → назначение (локально): {{throughput}}",
"metricsTransfer": "Сквозной: {{throughput}} ({{duration}})",
"metricsExtract": "Распаковка на назначении: {{duration}}",
"metricsVerify": "SHA-256 проверен: {{duration}}",
"metricsRouteBenchmark": "Маршрутный зонд — прямой: {{direct}}, ретранслятор: {{relay}}",
"metricsSourceDelete": "Удаление с источника: {{duration}}",
"metricsTotal": "Всего: {{duration}}",
"progressCompressing": "Сжатие на исходном хосте…",
"progressExtracting": "Распаковка на назначении…",
"progressTransferring": "Передача данных…",
"progressReconnecting": "Переподключение…",
"parallelSegmentsLabel": "Параллельные каналы передачи",
"parallelSegmentsOption": "{{count}} каналов",
"parallelSegmentsHint": "Большие файлы разбиваются на фрагменты по 256 МБ. Несколько каналов используют отдельные соединения (как при запуске нескольких передач) для повышения общей пропускной способности.",
"progressTotalSpeed": "{{speed}} всего ({{lanes}} каналов)",
"progressTransferringItems": "Передача файлов ({{current}} из {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} файлов",
"sourceNotDeletedPartial": "Файлы источника сохранены (частичная передача)",
"jumpHostLimitation": "Оба хоста должны быть доступны с сервера Termix. Прямая маршрутизация между хостами не поддерживается.",
"cancel": "Отмена",
"methodLabel": "Метод передачи",
"methodAuto": "Авто",
"methodTar": "Архив Tar",
"methodItemSftp": "Пофайловый SFTP",
"methodAutoHint": "Выбирает tar или пофайловый SFTP в зависимости от количества файлов, размера и сжимаемости. Одиночные файлы всегда передаются потоковым SFTP.",
"methodTarHint": "Сжатие на источнике, передача одного архива, распаковка на назначении. Требует tar на обоих Unix-хостах.",
"methodItemSftpHint": "Передача каждого файла отдельно по SFTP. Работает на всех хостах, включая Windows.",
"methodPreviewLoading": "Расчёт метода передачи…",
"methodPreviewError": "Не удалось предварительно определить метод передачи. Сервер выберет метод при запуске.",
"methodPreviewWillUseTar": "Будет использован: Архив Tar",
"methodPreviewWillUseItemSftp": "Будет использован: Пофайловый SFTP",
"methodPreviewScanSummary": "{{fileCount}} файлов, {{totalSize}} всего (просканировано на исходном хосте).",
"methodItemSftpLimitation": "Каждый файл использует один и тот же поток SFTP, как при копировании одного файла, один за другим. Прогресс объединяется по всем файлам, поэтому индикатор движется медленно при больших файлах.",
"methodReason": {
"user_item_sftp": "Вы выбрали пофайловый SFTP.",
"user_tar": "Вы выбрали tar-архив.",
"tar_unavailable": "Tar недоступен на одном или обоих хостах — вместо этого будет использоваться пофайловый SFTP.",
"windows_host": "Участвует хост под Windows — tar не используется.",
"auto_multi_large": "Авто: несколько файлов, включая большой файл ({{largestSize}}) со сжимаемыми данными — tar объединяет в одну передачу.",
"auto_single_large_in_archive": "Авто: один большой файл ({{largestSize}}) в этом наборе — пофайловый SFTP.",
"auto_many_incompressible": "Авто: в основном несжимаемые данные — пофайловый SFTP.",
"auto_many_files": "Авто: много файлов ({{fileCount}}) — tar сокращает накладные расходы на каждый файл.",
"auto_default": "Авто: пофайловый SFTP для этого набора."
},
"progressCancel": "Отмена",
"progressCancelling": "Отмена…",
"progressStalled": "Зависло",
"resumedHint": "Переподключено к активной передаче, запущенной в другом окне.",
"transferCancelled": "Передача отменена",
"transferCancelledCopyHint": "Частично переданные файлы могут остаться в месте назначения.",
"transferCancelledMoveHint": "Частично переданные файлы могут остаться в месте назначения. Исходные файлы не были удалены.",
"cleanupDestFiles": "Очистить место назначения",
"cleanupDestFilesSuccess": "Частично переданные файлы удалены из места назначения",
"cleanupDestFilesPartial": "Некоторые частично переданные файлы не удалось удалить",
"cleanupDestFilesNothing": "В месте назначения нечего очищать",
"cleanupDestFilesError": "Очистка не удалась",
"retryTransfer": "Повторить",
"retryTransferError": "Повтор не удался",
"transferFailedRetryHint": "Частичные данные сохранены в месте назначения. Повтор возобновится, когда соединение восстановится."
"sourceNotDeletedPartial": "Файлы источника сохранены (частичная передача)"
},
"tunnels": {
"connect": "Подключить",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Клиентский туннель",
"addClientTunnel": "Добавить клиентский туннель",
"active": "Активные",
"start": "Запустить",
"stop": "Остановить",
"typeServerLocalDesc": "С текущего хоста на конечную точку.",
"typeServerRemoteDesc": "С конечной точки обратно на текущий хост.",
"typeClientLocalDesc": "С локального компьютера на конечную точку.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Превышена частота запросов: слишком много попыток подтверждения. Подождите {{time}} секунд, прежде чем повторить попытку.",
"authTokenSaveFailed": "Не удалось сохранить токен аутентификации",
"authTokenMissing": "Сервер не вернул новый токен аутентификации. Пожалуйста, войдите в систему снова.",
"failedToLoadServer": "Не удалось загрузить сервер",
"remoteServerRequired": "Требуется удаленный сервер. Для использования этого типа подключения подключите удаленный сервер в настройках."
"failedToLoadServer": "Не удалось загрузить сервер"
},
"messages": {
"registrationDisabled": "Регистрация новых учетных записей отключена администратором. Войдите в систему или обратитесь к администратору.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Протокол",
"domainLabel": "Домен",
"domainPlaceholder": "необязательный",
"connectToTerminal": "Подключиться к терминалу",
"connectToFiles": "Подключиться к файлам"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Изаберите тему, боју акцента и језик. Сва три можете касније променити у Подешавањима.",
"featuresTitle": "Шта још Термикс ради",
"featuresIntro": "Сваки сервер који сачувате може се отворити у више од терминала. Ево шта вас чека иза икона са леве стране.",
"feature_files": "Менаџер датотека",
"feature_files_desc": "Прегледајте, отпремајте, преузимајте и уређујте датотеке преко SFTP-а без напуштања апликације.",
"feature_tunnels": "Тунели",
"feature_tunnels_desc": "Прослеђујте портове кроз сервер да бисте дошли до сервиса који нису изложени.",
"feature_snippets": "Исечци",
"feature_snippets_desc": "Сачувајте команде које често покрећете и пошаљите их у терминал једним кликом.",
"featuresRailHint": "Не треба вам један од ових? Сакријте било коју икону са бочне траке у Подешавањима, под Навигацијом.",
@@ -449,7 +445,6 @@
"passwordSaved": "Лозинка сачувана, унесите текст да бисте је променили",
"key": "Кључ",
"credential": "Акредитив",
"none": "Ниједан",
"sshPrivateKey": "SSH приватни кључ",
"keyType": "Тип кључа",
"uploadFile": "Отпреми датотеку",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Интервал одржавања активности (секунде)",
"maxKeepaliveMisses": "Максимални промашаји у Keepalive-у",
"sameHost": "Овај хост (директни тунел)",
"bindHost": "Повежи хост",
"connectionToolbar": "Трака са алаткама за повезивање",
"showConnectionToolbar": "Прикажи траку са алаткама за повезивање",
"showConnectionToolbarDesc": "Прикажи траку са алаткама у SSH, RDP, VNC и Telnet сесијама овог хоста. Такође је можете привремено сакрити са саме траке са алаткама.",
"proxmoxLastSyncStatus": {
"success": "Успех"
},
"proxmoxGuestsSelected_one": "{{count}} гост — {{selected}} изабрано",
"proxmoxGuestsSelected_other": "{{count}} гости — {{selected}} изабрано",
"proxmoxImportButton_one": "Увоз {{count}} хоста",
"proxmoxImportButton_other": "Увези {{count}} хостова",
"proxmoxResultSkippedNoIp": "{{count}} прескочено (није пронађена IP адреса)",
"proxmoxStatsUrlCopied": "URL Proxmox статистике је копиран у међуспремник",
"copyProxmoxStatsUrlAction": "Копирај URL статистике Proxmox-а",
@@ -896,13 +886,11 @@
"updatedCount": "Ажурирани {{count}} хостови",
"friendlyNameLabel": "Пријатељско име",
"descriptionLabel": "Опис",
"loadingHost": "Учитавање хоста...",
"loadingHosts": "Учитавање хостова...",
"loadingCredentials": "Учитавање акредитива...",
"noHostsYet": "Још нема домаћина",
"noHostsYetHint": "Додајте сервер да бисте отворили терминале, прегледали датотеке и видели метрике.",
"noHostsMatchSearch": "Ниједан хост не одговара вашој претрази",
"hostNotFound": "Хост није пронађен",
"searchHosts": "Претражи хостове...",
"sortHosts": "Сортирај хостове",
"sortDefault": "Подразумевани редослед",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH кључ",
"filterAuthCredential": "Акредитив",
"filterAuthNone": "Ниједан",
"filterAuthOpkssh": "ОПКШ",
"filterAuthStepca": "Корак CA",
"filterProtocolGroup": "Протокол",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Повежи се са хостом",
"clear": "Јасно",
"paste": "Залепи",
"connected": "Повезано",
"clipboardWriteFailed": "Копирање у међуспремник није успело. Уверите се да се страница приказује преко HTTPS-а или localhost-а.",
"clipboardReadFailed": "Читање из међуспремника није успело. Уверите се да су дозволе за међуспремник одобрене.",
"tmuxDetach": "Одвоји се од tmux сесије",
"terminalTitle": "Терминал - {{host}}",
"terminalWithPath": "Терминал - {{host}}:{{path}}",
"runTitle": "Покреће се {{command}} - {{host}}",
"totpRequired": "Потребна је двофакторска аутентификација",
"totpCodeLabel": "Верификациони код",
"totpVerify": "Верификуј",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Копирај на хост…",
"moveToHost": "Премести на хост…",
"copyItemsToHost": "Копирај {{count}} ставке за хостовање…",
"moveItemsToHost": "Премести {{count}} ставке на хост…",
"noHostsConnected": "Нема других доступних хостова за управљање датотекама.",
"noHostsConnectedHint": "Додајте још један SSH хост са омогућеним File Manager-ом у Host Manager-у.",
"selectDestinationHost": "Изаберите одредишни хост",
"destinationPath": "Путања одредишта",
"recentDestinations": "Недавне дестинације",
"collapseRecentDestinations": "Скупи недавна одредишта",
"expandRecentDestinations": "Прошири недавна одредишта",
"browseFolders": "Прегледајте одредишне фасцикле",
"browseDestination": "Прегледајте или унесите путању",
"confirmCopy": "Копија",
"confirmMove": "Помери",
"transferring": "Пренос…",
"progressVerifying": "Провера интегритета датотеке…",
"progressBenchmarking": "Избор најбрже руте за трансфер…",
"compressing": "Компресија…",
"extracting": "Издвајање…",
"transferringItems": "Пренос {{current}} од {{total}} ставки…",
"transferSuccess": "Пренос завршен",
"transferError": "Пренос није успео",
"transferPartial": "Пренос завршен са {{count}} грешака",
"transferPartialHint": "Није могуће пренети: {{paths}}",
"itemsSummary": "{{count}} ставке",
"destMustBeDirectory": "Одредиште мора бити директоријум за преносе више ставки",
"selectThisFolder": "Изаберите ову фасциклу",
"browsePathWillBeCreated": "Ова фасцикла још увек не постоји. Биће креирана када пренос почне.",
"browsePathError": "Није могуће отворити ову путању на одредишном хосту.",
"goUp": "Иди горе",
"copyFolderToHost": "Копирај фасциклу на хост…",
"moveFolderToHost": "Премести фасциклу на хост…",
"hostReady": "Спреман",
"hostConnecting": "Повезивање…",
"hostDisconnected": "Није повезано",
"hostAuthRequired": "Потребна је аутентификација — прво отворите File Manager на овом хосту",
"hostConnectionFailed": "Повезивање није успело",
"metricsTitle": "Времена трансфера",
"metricsPrepare": "Припреми одредиште: {{duration}}",
"metricsCompress": "Компресуј на изворном коду: {{duration}}",
"metricsHopSourceRead": "Извор → сервер: {{throughput}}",
"metricsHopDestSftpWrite": "Сервер → одредиште (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Сервер → одредиште (локално): {{throughput}}",
"metricsTransfer": "Од краја до краја: {{throughput}} ({{duration}})",
"metricsExtract": "Издвајање на одредишту: {{duration}}",
"metricsVerify": "SHA-256 верификован: {{duration}}",
"metricsRouteBenchmark": "Сонда руте — директна: {{direct}}, релеј: {{relay}}",
"metricsSourceDelete": "Уклони из извора: {{duration}}",
"metricsTotal": "Укупно: {{duration}}",
"progressCompressing": "Компресија на изворном хосту…",
"progressExtracting": "Распакује се на одредишту…",
"progressTransferring": "Пренос података…",
"progressReconnecting": "Поновно повезивање…",
"parallelSegmentsLabel": "Паралелне траке за прелазак",
"parallelSegmentsOption": "{{count}} траке",
"parallelSegmentsHint": "Велике датотеке су подељене на делове од 256 MB. Вишеструке траке користе одвојене везе (као што је покретање неколико преноса) за већи укупни проток.",
"progressTotalSpeed": "{{speed}} укупно ({{lanes}} трака)",
"progressTransferringItems": "Пренос датотека ({{current}} од {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} датотеке",
"sourceNotDeletedPartial": "Изворне датотеке сачуване (делимични пренос)",
"jumpHostLimitation": "Оба хоста морају бити доступна са Termix сервера. Директно рутирање од хоста до хоста није подржано.",
"cancel": "Откажи",
"methodLabel": "Метод преноса",
"methodAuto": "Аутоматски",
"methodTar": "Тар архива",
"methodItemSftp": "SFTP по датотеци",
"methodAutoHint": "Бира tar или SFTP за сваку датотеку на основу броја датотека, величине и компресибилности. Појединачне датотеке увек користе SFTP за стримовање.",
"methodTarHint": "Компресуј на изворном нивоу, пренеси једну архиву, распакуј на одредишту. Потребан је tar на оба Unix хоста.",
"methodItemSftpHint": "Пренесите сваку датотеку појединачно преко SFTP-а. Ради на свим хостовима, укључујући Windows.",
"methodPreviewLoading": "Израчунавање методе преноса…",
"methodPreviewError": "Није могуће прегледати метод преноса. Сервер ће ипак изабрати метод када покренете.",
"methodPreviewWillUseTar": "Користиће се: Тар архива",
"methodPreviewWillUseItemSftp": "Користиће се: SFTP за сваку датотеку",
"methodPreviewScanSummary": "{{fileCount}} датотека, {{totalSize}} укупно (скенирано на изворном хосту).",
"methodItemSftpLimitation": "Свака датотека користи исти SFTP ток као и копија појединачних датотека, једна за другом. Напредак се комбинује за све датотеке, тако да се трака помера споро током великих датотека.",
"methodReason": {
"user_item_sftp": "Изабрали сте SFTP за сваку датотеку.",
"user_tar": "Изабрали сте tar архиву.",
"tar_unavailable": "Тар није доступан на једном или оба хоста — уместо тога ће се користити SFTP протокол за сваку датотеку.",
"windows_host": "Укључен је Windows хост — tar се не користи.",
"auto_multi_large": "Аутоматски: више датотека укључујући велику датотеку ({{largestSize}}) са компресибилним подацима — tar пакети у један пренос.",
"auto_single_large_in_archive": "Аутоматски: једна велика датотека ({{largestSize}}) у овом скупу — SFTP за сваку датотеку.",
"auto_many_incompressible": "Аутоматски: углавном несемпљиви подаци — SFTP по датотеци.",
"auto_many_files": "Аутоматски: много датотека ({{fileCount}}) — tar смањује оптерећење по датотеци.",
"auto_default": "Аутоматски: SFTP за сваку датотеку за овај скуп."
},
"progressCancel": "Откажи",
"progressCancelling": "Отказивање…",
"progressStalled": "Заустављено",
"resumedHint": "Поново повезано са активним преносом започетим у другом прозору.",
"transferCancelled": "Трансфер отказан",
"transferCancelledCopyHint": "Делимични фајлови могу остати на одредишту.",
"transferCancelledMoveHint": "Делимични фајлови могу остати на одредишту. Изворни фајлови нису уклоњени.",
"cleanupDestFiles": "Очистите одредиште",
"cleanupDestFilesSuccess": "Уклоњене су делимичне датотеке са одредишта",
"cleanupDestFilesPartial": "Неке делимичне датотеке нису могле бити уклоњене",
"cleanupDestFilesNothing": "Нема ништа за чишћење на одредишту",
"cleanupDestFilesError": "Чишћење није успело",
"retryTransfer": "Покушај поново",
"retryTransferError": "Поновни покушај није успео",
"transferFailedRetryHint": "Делимични подаци су сачувани на одредишту. Покушај ће бити настављен када се веза поново успостави."
"sourceNotDeletedPartial": "Изворне датотеке сачуване (делимични пренос)"
},
"tunnels": {
"connect": "Повежи се",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Тунел клијента",
"addClientTunnel": "Додај клијентски тунел",
"active": "Активно",
"start": "Почетак",
"stop": "Заустави",
"typeServerLocalDesc": "Тренутни хост до крајње тачке.",
"typeServerRemoteDesc": "Крајња тачка назад на тренутни хост.",
"typeClientLocalDesc": "Локални рачунар до крајње тачке.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Ограничена брзина: Превише покушаја верификације. Молимо сачекајте {{time}} секунди пре него што покушате поново.",
"authTokenSaveFailed": "Чување токена за аутентификацију није успело",
"authTokenMissing": "Сервер није вратио нови токен за аутентификацију. Молимо вас да се поново пријавите.",
"failedToLoadServer": "Учитавање сервера није успело",
"remoteServerRequired": "Потребан је удаљени сервер. Повежите се са удаљеним сервером у Подешавањима да бисте користили овај тип везе."
"failedToLoadServer": "Учитавање сервера није успело"
},
"messages": {
"registrationDisabled": "Регистрација новог налога је тренутно онемогућена од стране администратора. Молимо вас да се пријавите или контактирате администратора.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Протокол",
"domainLabel": "Домен",
"domainPlaceholder": "опционо",
"connectToTerminal": "Повежи се са терминалом",
"connectToFiles": "Повежи се са датотекама"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Välj ett tema, en accentfärg och ditt språk. Alla tre kan ändras senare i Inställningar.",
"featuresTitle": "Vad mer gör Termix",
"featuresIntro": "Varje server du sparar kan öppnas i mer än en terminal. Här är vad som väntar bakom ikonerna till vänster.",
"feature_files": "Filhanteraren",
"feature_files_desc": "Bläddra, ladda upp, ladda ner och redigera filer via SFTP utan att lämna appen.",
"feature_tunnels": "Tunnlar",
"feature_tunnels_desc": "Vidarebefordra portar via en server för att nå tjänster som inte är exponerade.",
"feature_snippets": "Snuttar",
"feature_snippets_desc": "Spara kommandon du kör ofta och skicka dem till en terminal med ett enda klick.",
"featuresRailHint": "Behöver du inte någon av dessa? Dölj valfri ikon från sidofältet i Inställningar, under Navigering.",
@@ -449,7 +445,6 @@
"passwordSaved": "Lösenordet sparats, skriv för att ändra",
"key": "Nyckel",
"credential": "Referenser",
"none": "Ingen",
"sshPrivateKey": "SSH privat nyckel",
"keyType": "Nyckeltyp",
"uploadFile": "Ladda upp fil",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Keepalive-intervall (sekunder)",
"maxKeepaliveMisses": "Max Keepalive missar",
"sameHost": "Denna värd (direkt tunnel)",
"bindHost": "Bind värd",
"connectionToolbar": "Anslutningsverktygsfält",
"showConnectionToolbar": "Visa anslutningsverktygsfältet",
"showConnectionToolbarDesc": "Visa verktygsfältet i den här värdens SSH-, RDP-, VNC- och Telnet-sessioner. Du kan också dölja det tillfälligt från själva verktygsfältet.",
"proxmoxLastSyncStatus": {
"success": "Framgång"
},
"proxmoxGuestsSelected_one": "{{count}} gäst — {{selected}} vald",
"proxmoxGuestsSelected_other": "{{count}} gäster — {{selected}} vald",
"proxmoxImportButton_one": "Importera {{count}} värd",
"proxmoxImportButton_other": "Importera {{count}} värdar",
"proxmoxResultSkippedNoIp": "{{count}} hoppades över (ingen IP-adress hittades)",
"proxmoxStatsUrlCopied": "Proxmox Stats URL kopierad till urklipp",
"copyProxmoxStatsUrlAction": "Kopiera Proxmox Stats-URL",
@@ -896,13 +886,11 @@
"updatedCount": "Uppdaterade {{count}} värdar",
"friendlyNameLabel": "Vänligt namn",
"descriptionLabel": "Beskrivning",
"loadingHost": "Laddar värd...",
"loadingHosts": "Laddar värdar...",
"loadingCredentials": "Laddar inloggningsuppgifter...",
"noHostsYet": "Inga värdar ännu",
"noHostsYetHint": "Lägg till en server för att öppna terminaler, bläddra bland filer och se mätvärden.",
"noHostsMatchSearch": "Inga värdar matchar din sökning",
"hostNotFound": "Värden hittades inte",
"searchHosts": "Sök värdar...",
"sortHosts": "Sortera värdar",
"sortDefault": "Standardbeställning",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-nyckel",
"filterAuthCredential": "Referenser",
"filterAuthNone": "Ingen",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Steg CA",
"filterProtocolGroup": "Protokoll",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Anslut till värd",
"clear": "Rensa",
"paste": "Klistra",
"connected": "Ansluten",
"clipboardWriteFailed": "Kunde inte kopiera till urklipp. Kontrollera att sidan serveras via HTTPS eller localhost.",
"clipboardReadFailed": "Kunde inte läsa från urklipp. Kontrollera att behörigheter för urklipp är beviljade.",
"tmuxDetach": "Koppla bort från tmux-sessionen",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Kör {{command}} - {{host}}",
"totpRequired": "Tvåfaktorsautentisering krävs",
"totpCodeLabel": "Verifieringskod",
"totpVerify": "Kontrollera",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Kopiera till värd…",
"moveToHost": "Flytta till värd…",
"copyItemsToHost": "Kopiera {{count}} objekt till…",
"moveItemsToHost": "Flytta {{count}} objekt till…",
"noHostsConnected": "Inga andra filhanterarvärdar tillgängliga.",
"noHostsConnectedHint": "Lägg till en annan SSH-värd med Filhanteraren aktiverad i Värdhanteraren.",
"selectDestinationHost": "Välj destinationsvärd",
"destinationPath": "Destinationsväg",
"recentDestinations": "Senaste destinationerna",
"collapseRecentDestinations": "Komprimera senaste destinationer",
"expandRecentDestinations": "Expandera senaste destinationer",
"browseFolders": "Bläddra bland målmappar",
"browseDestination": "Bläddra eller ange sökväg",
"confirmCopy": "Kopiera",
"confirmMove": "Flytta",
"transferring": "Överför…",
"progressVerifying": "Verifierar filintegritet…",
"progressBenchmarking": "Välja den snabbaste bytesvägen…",
"compressing": "Komprimering…",
"extracting": "Extraherar…",
"transferringItems": "Överför {{current}} av {{total}} objekt…",
"transferSuccess": "Överföringen är klar",
"transferError": "Överföringen misslyckades",
"transferPartial": "Överföringen slutförd med {{count}} fel",
"transferPartialHint": "Kunde inte överföra: {{paths}}",
"itemsSummary": "{{count}} objekt",
"destMustBeDirectory": "Destinationen måste vara en katalog för överföringar av flera objekt",
"selectThisFolder": "Välj den här mappen",
"browsePathWillBeCreated": "Den här mappen finns inte ännu. Den kommer att skapas när överföringen startar.",
"browsePathError": "Kunde inte öppna den här sökvägen på målvärden.",
"goUp": "Gå upp",
"copyFolderToHost": "Kopiera mapp till värden…",
"moveFolderToHost": "Flytta mappen till värden…",
"hostReady": "Redo",
"hostConnecting": "Ansluter…",
"hostDisconnected": "Inte ansluten",
"hostAuthRequired": "Autentisering krävs — öppna filhanteraren på den här värden först",
"hostConnectionFailed": "Anslutningen misslyckades",
"metricsTitle": "Överföringstider",
"metricsPrepare": "Förbered destination: {{duration}}",
"metricsCompress": "Komprimera på källan: {{duration}}",
"metricsHopSourceRead": "Källa → server: {{throughput}}",
"metricsHopDestSftpWrite": "Server → destination (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Server → destination (lokal): {{throughput}}",
"metricsTransfer": "Från slut till slut: {{throughput}} ({{duration}})",
"metricsExtract": "Extrahera på destination: {{duration}}",
"metricsVerify": "SHA-256 verifierad: {{duration}}",
"metricsRouteBenchmark": "Ruttsond — direkt: {{direct}}, relä: {{relay}}",
"metricsSourceDelete": "Ta bort från källan: {{duration}}",
"metricsTotal": "Totalt: {{duration}}",
"progressCompressing": "Komprimering på källvärd…",
"progressExtracting": "Extraherar på destination…",
"progressTransferring": "Överför data…",
"progressReconnecting": "Återansluter…",
"parallelSegmentsLabel": "Parallella överföringsfält",
"parallelSegmentsOption": "{{count}} körfält",
"parallelSegmentsHint": "Stora filer delas upp i bitar på 256 MB. Flera filer använder separata anslutningar (som att starta flera överföringar) för högre total dataflöde.",
"progressTotalSpeed": "{{speed}} totalt ({{lanes}} körfält)",
"progressTransferringItems": "Överföra filer ({{current}} av {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} filer",
"sourceNotDeletedPartial": "Källfiler behållna (delvis överföring)",
"jumpHostLimitation": "Båda värdarna måste vara nåbara från Termix-servern. Direkt routing mellan värdar stöds inte.",
"cancel": "Avboka",
"methodLabel": "Överföringsmetod",
"methodAuto": "Bil",
"methodTar": "Tar-arkiv",
"methodItemSftp": "SFTP per fil",
"methodAutoHint": "Väljer tar eller SFTP per fil baserat på filantal, storlek och komprimerbarhet. Enstaka filer använder alltid strömmande SFTP.",
"methodTarHint": "Komprimera vid källan, överför ett arkiv, extrahera vid destinationen. Kräver tar på båda Unix-värdarna.",
"methodItemSftpHint": "Överför varje fil individuellt via SFTP. Fungerar på alla värdar inklusive Windows.",
"methodPreviewLoading": "Beräkning av överföringsmetod…",
"methodPreviewError": "Kunde inte förhandsgranska överföringsmetoden. Servern kommer fortfarande att välja en metod när du startar.",
"methodPreviewWillUseTar": "Kommer att använda: Tar-arkiv",
"methodPreviewWillUseItemSftp": "Kommer att använda: SFTP per fil",
"methodPreviewScanSummary": "{{fileCount}} filer, {{totalSize}} totalt (skannat på källvärd).",
"methodItemSftpLimitation": "Varje fil använder samma SFTP-ström som en kopia av en enda fil, en efter en. Förloppet kombineras över alla filer, så stapeln rör sig långsamt vid stora filer.",
"methodReason": {
"user_item_sftp": "Du valde SFTP per fil.",
"user_tar": "Du valde tar-arkivet.",
"tar_unavailable": "Tar är inte tillgängligt på en eller båda värdarna — SFTP per fil kommer att användas istället.",
"windows_host": "En Windows-värd är inblandad — tar används inte.",
"auto_multi_large": "Auto: flera filer inklusive en stor fil ({{largestSize}}) med komprimerbar data — tar-paket samlas i en överföring.",
"auto_single_large_in_archive": "Auto: en stor fil ({{largestSize}}) i denna uppsättning — SFTP per fil.",
"auto_many_incompressible": "Auto: mestadels inkomprimerbar data — SFTP per fil.",
"auto_many_files": "Auto: många filer ({{fileCount}}) — tar minskar overhead per fil.",
"auto_default": "Auto: SFTP per fil för den här uppsättningen."
},
"progressCancel": "Avboka",
"progressCancelling": "Avbryter…",
"progressStalled": "Stannade",
"resumedHint": "Återansluten till en aktiv överföring som startade i ett annat fönster.",
"transferCancelled": "Överföringen avbruten",
"transferCancelledCopyHint": "Delvisa filer kan finnas kvar på destinationen.",
"transferCancelledMoveHint": "Delvisa filer kan finnas kvar på destinationen. Källfilerna togs inte bort.",
"cleanupDestFiles": "Städa upp destinationen",
"cleanupDestFilesSuccess": "Tog bort delvisa filer från destinationen",
"cleanupDestFilesPartial": "Vissa delfiler kunde inte tas bort",
"cleanupDestFilesNothing": "Inget att städa upp på destinationen",
"cleanupDestFilesError": "Rensningen misslyckades",
"retryTransfer": "Försöka igen",
"retryTransferError": "Återförsök misslyckades",
"transferFailedRetryHint": "Delvis data sparades på destinationen. Försöket återupptas när anslutningen är tillbaka."
"sourceNotDeletedPartial": "Källfiler behållna (delvis överföring)"
},
"tunnels": {
"connect": "Ansluta",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Klienttunnel",
"addClientTunnel": "Lägg till klienttunnel",
"active": "Aktiv",
"start": "Start",
"stop": "Stopp",
"typeServerLocalDesc": "Nuvarande värd till slutpunkt.",
"typeServerRemoteDesc": "Slutpunkt tillbaka till nuvarande värd.",
"typeClientLocalDesc": "Lokal dator till slutpunkt.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Begränsad hastighet: För många verifieringsförsök. Vänta {{time}} sekunder innan du försöker igen.",
"authTokenSaveFailed": "Misslyckades med att spara autentiseringstoken",
"authTokenMissing": "Servern returnerade inte en ny autentiseringstoken. Vänligen logga in igen.",
"failedToLoadServer": "Misslyckades med att ladda servern",
"remoteServerRequired": "Fjärrserver krävs. Anslut en fjärrserver i Inställningar för att använda den här anslutningstypen."
"failedToLoadServer": "Misslyckades med att ladda servern"
},
"messages": {
"registrationDisabled": "Registrering av nytt konto är för närvarande inaktiverat av en administratör. Vänligen logga in eller kontakta en administratör.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokoll",
"domainLabel": "Domän",
"domainPlaceholder": "frivillig",
"connectToTerminal": "Anslut till terminalen",
"connectToFiles": "Anslut till filer"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "เลือกธีม สีเน้น และภาษาของคุณ ทั้งสามอย่างนี้สามารถเปลี่ยนแปลงได้ในภายหลังในเมนูการตั้งค่า",
"featuresTitle": "Termix ทำอะไรได้อีกบ้าง",
"featuresIntro": "เซิร์ฟเวอร์ทุกเครื่องที่คุณบันทึกไว้สามารถเปิดได้ไม่เพียงแค่ในเทอร์มินัลเท่านั้น นี่คือสิ่งที่รออยู่เบื้องหลังไอคอนทางด้านซ้าย",
"feature_files": "ตัวจัดการไฟล์",
"feature_files_desc": "เรียกดู อัปโหลด ดาวน์โหลด และแก้ไขไฟล์ผ่าน SFTP โดยไม่ต้องออกจากแอปพลิเคชัน",
"feature_tunnels": "อุโมงค์",
"feature_tunnels_desc": "ส่งต่อพอร์ตผ่านเซิร์ฟเวอร์เพื่อเข้าถึงบริการที่ไม่เปิดเผยต่อสาธารณะ",
"feature_snippets": "เศษเสี้ยว",
"feature_snippets_desc": "บันทึกคำสั่งที่คุณใช้งานบ่อยและส่งไปยังเทอร์มินัลได้ด้วยการคลิกเพียงครั้งเดียว",
"featuresRailHint": "ไม่ต้องการใช้ไอคอนเหล่านี้ใช่ไหม? ซ่อนไอคอนใดๆ ก็ได้จากแถบด้านข้างในเมนูการตั้งค่า ภายใต้การนำทาง",
@@ -449,7 +445,6 @@
"passwordSaved": "บันทึกรหัสผ่านแล้ว กรุณาพิมพ์เพื่อเปลี่ยนรหัสผ่าน",
"key": "สำคัญ",
"credential": "ใบรับรอง",
"none": "ไม่มี",
"sshPrivateKey": "คีย์ส่วนตัว SSH",
"keyType": "ประเภทกุญแจ",
"uploadFile": "อัปโหลดไฟล์",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "ช่วงเวลาการเชื่อมต่อ (วินาที)",
"maxKeepaliveMisses": "แม็กซ์ คีทอะไลฟ์ พลาด",
"sameHost": "โฮสต์นี้ (อุโมงค์ตรง)",
"bindHost": "โฮสต์ผูก",
"connectionToolbar": "แถบเครื่องมือการเชื่อมต่อ",
"showConnectionToolbar": "แสดงแถบเครื่องมือการเชื่อมต่อ",
"showConnectionToolbarDesc": "แสดงแถบเครื่องมือในเซสชัน SSH, RDP, VNC และ Telnet ของโฮสต์นี้ คุณยังสามารถซ่อนแถบเครื่องมือชั่วคราวได้จากแถบเครื่องมือโดยตรง",
"proxmoxLastSyncStatus": {
"success": "ความสำเร็จ"
},
"proxmoxGuestsSelected_one": "{{count}} แขก — {{selected}} เลือกแล้ว",
"proxmoxGuestsSelected_other": "แขก {{count}} คน — แขก {{selected}} คน ที่เลือก",
"proxmoxImportButton_one": "นำเข้าโฮสต์ {{count}}",
"proxmoxImportButton_other": "นำเข้าโฮสต์ {{count}}",
"proxmoxResultSkippedNoIp": "{{count}} ข้ามไป (ไม่พบ IP)",
"proxmoxStatsUrlCopied": "คัดลอก URL สถิติ Proxmox ไปยังคลิปบอร์ดแล้ว",
"copyProxmoxStatsUrlAction": "คัดลอก URL สถิติของ Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "อัปเดตโฮสต์ {{count}} แล้ว",
"friendlyNameLabel": "ชื่อที่เป็นมิตร",
"descriptionLabel": "คำอธิบาย",
"loadingHost": "กำลังโหลดโฮสต์...",
"loadingHosts": "กำลังโหลดโฮสต์...",
"loadingCredentials": "กำลังโหลดข้อมูลประจำตัว...",
"noHostsYet": "ยังไม่มีโฮสต์",
"noHostsYetHint": "เพิ่มเซิร์ฟเวอร์เพื่อเปิดเทอร์มินัล เรียกดูไฟล์ และดูข้อมูลสถิติ",
"noHostsMatchSearch": "ไม่พบโฮสต์ใดตรงกับผลการค้นหาของคุณ",
"hostNotFound": "ไม่พบโฮสต์",
"searchHosts": "ค้นหาโฮสต์...",
"sortHosts": "เรียงลำดับโฮสต์",
"sortDefault": "ลำดับเริ่มต้น",
@@ -925,7 +913,6 @@
"filterAuthKey": "คีย์ SSH",
"filterAuthCredential": "ใบรับรอง",
"filterAuthNone": "ไม่มี",
"filterAuthOpkssh": "โอพีเคเอสเอช",
"filterAuthStepca": "ขั้นตอน CA",
"filterProtocolGroup": "โปรโตคอล",
"filterProtocolSsh": "เอสเอช",
@@ -1114,13 +1101,7 @@
"connect": "เชื่อมต่อกับโฮสต์",
"clear": "ชัดเจน",
"paste": "แปะ",
"connected": "เชื่อมต่อแล้ว",
"clipboardWriteFailed": "ไม่สามารถคัดลอกไปยังคลิปบอร์ดได้ โปรดตรวจสอบให้แน่ใจว่าหน้าเว็บนั้นให้บริการผ่าน HTTPS หรือ localhost",
"clipboardReadFailed": "ไม่สามารถอ่านข้อมูลจากคลิปบอร์ดได้ โปรดตรวจสอบให้แน่ใจว่าได้ให้สิทธิ์การเข้าถึงคลิปบอร์ดแล้ว",
"tmuxDetach": "ยกเลิกการเชื่อมต่อจากเซสชัน tmux",
"terminalTitle": "เทอร์มินัล - {{host}}",
"terminalWithPath": "เทอร์มินัล - {{host}}:{{path}}",
"runTitle": "กำลังวิ่ง {{command}} - {{host}}",
"totpRequired": "ต้องใช้การยืนยันตัวตนสองขั้นตอน",
"totpCodeLabel": "รหัสยืนยัน",
"totpVerify": "ตรวจสอบ",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "คัดลอกไปยังโฮสต์…",
"moveToHost": "ย้ายไปยังโฮสต์…",
"copyItemsToHost": "คัดลอกรายการ {{count}} รายการไปยังโฮสต์…",
"moveItemsToHost": "ย้ายรายการ {{count}} รายการไปยังโฮสต์…",
"noHostsConnected": "ไม่มีโฮสต์ตัวจัดการไฟล์อื่นให้บริการ",
"noHostsConnectedHint": "เพิ่มโฮสต์ SSH อีกตัวโดยเปิดใช้งานตัวจัดการไฟล์ในตัวจัดการโฮสต์",
"selectDestinationHost": "เลือกโฮสต์ปลายทาง",
"destinationPath": "เส้นทางปลายทาง",
"recentDestinations": "จุดหมายปลายทางล่าสุด",
"collapseRecentDestinations": "ยุบจุดหมายปลายทางล่าสุด",
"expandRecentDestinations": "ขยายข้อมูลจุดหมายปลายทางล่าสุด",
"browseFolders": "เรียกดูโฟลเดอร์ปลายทาง",
"browseDestination": "เรียกดูหรือป้อนเส้นทาง",
"confirmCopy": "สำเนา",
"confirmMove": "เคลื่อนไหว",
"transferring": "กำลังโอน…",
"progressVerifying": "กำลังตรวจสอบความสมบูรณ์ของไฟล์…",
"progressBenchmarking": "เลือกเส้นทางการโอนย้ายที่เร็วที่สุด…",
"compressing": "กำลังบีบอัด…",
"extracting": "กำลังแยก…",
"transferringItems": "กำลังโอนย้ายรายการ {{current}} จำนวน {{total}} รายการ…",
"transferSuccess": "การโอนเสร็จสมบูรณ์",
"transferError": "การโอนล้มเหลว",
"transferPartial": "การโอนเสร็จสมบูรณ์โดยมีข้อผิดพลาด {{count}}",
"transferPartialHint": "ไม่สามารถโอนเงินได้: {{paths}}",
"itemsSummary": "{{count}} รายการ",
"destMustBeDirectory": "สำหรับการโอนย้ายหลายรายการ ปลายทางต้องเป็นไดเร็กทอรี",
"selectThisFolder": "เลือกโฟลเดอร์นี้",
"browsePathWillBeCreated": "โฟลเดอร์นี้ยังไม่มีอยู่ จะถูกสร้างขึ้นเมื่อการถ่ายโอนเริ่มต้นขึ้น",
"browsePathError": "ไม่สามารถเปิดเส้นทางนี้บนโฮสต์ปลายทางได้",
"goUp": "ขึ้นไป",
"copyFolderToHost": "คัดลอกโฟลเดอร์ไปยังโฮสต์…",
"moveFolderToHost": "ย้ายโฟลเดอร์ไปยังโฮสต์…",
"hostReady": "พร้อม",
"hostConnecting": "กำลังเชื่อมต่อ…",
"hostDisconnected": "ไม่ได้เชื่อมต่อ",
"hostAuthRequired": "ต้องมีการยืนยันตัวตน — โปรดเปิดตัวจัดการไฟล์บนโฮสต์นี้ก่อน",
"hostConnectionFailed": "การเชื่อมต่อล้มเหลว",
"metricsTitle": "เวลาในการโอนย้าย",
"metricsPrepare": "เตรียมปลายทาง: {{duration}}",
"metricsCompress": "บีบอัดจากแหล่งที่มา: {{duration}}",
"metricsHopSourceRead": "แหล่งที่มา → เซิร์ฟเวอร์: {{throughput}}",
"metricsHopDestSftpWrite": "เซิร์ฟเวอร์ → ปลายทาง (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "เซิร์ฟเวอร์ → ปลายทาง (ภายในเครื่อง): {{throughput}}",
"metricsTransfer": "จากต้นทางถึงปลายทาง: {{throughput}} ({{duration}})",
"metricsExtract": "แตกไฟล์ที่ปลายทาง: {{duration}}",
"metricsVerify": "ตรวจสอบด้วย SHA-256 แล้ว: {{duration}}",
"metricsRouteBenchmark": "การตรวจสอบเส้นทาง — โดยตรง: {{direct}}, ส่งต่อ: {{relay}}",
"metricsSourceDelete": "ลบออกจากแหล่งที่มา: {{duration}}",
"metricsTotal": "รวม: {{duration}}",
"progressCompressing": "กำลังบีบอัดบนโฮสต์ต้นทาง…",
"progressExtracting": "กำลังแตกไฟล์ที่ปลายทาง…",
"progressTransferring": "กำลังถ่ายโอนข้อมูล…",
"progressReconnecting": "กำลังเชื่อมต่อใหม่…",
"parallelSegmentsLabel": "ช่องทางเปลี่ยนถ่ายแบบขนาน",
"parallelSegmentsOption": "{{count}} เลน",
"parallelSegmentsHint": "ไฟล์ขนาดใหญ่จะถูกแบ่งออกเป็นส่วนย่อยขนาด 256 MB การใช้หลายเลนจะใช้การเชื่อมต่อแยกกัน (เช่น การเริ่มการถ่ายโอนหลายรายการพร้อมกัน) เพื่อให้ได้ปริมาณงานโดยรวมที่สูงขึ้น",
"progressTotalSpeed": "{{speed}} รวม ({{lanes}} เลน)",
"progressTransferringItems": "กำลังถ่ายโอนไฟล์ ({{current}} จาก {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "ไฟล์ {{current}} / {{total}}",
"sourceNotDeletedPartial": "ไฟล์ต้นฉบับถูกเก็บไว้ (ถ่ายโอนบางส่วน)",
"jumpHostLimitation": "โฮสต์ทั้งสองต้องสามารถเข้าถึงได้จากเซิร์ฟเวอร์ Termix การกำหนดเส้นทางโดยตรงระหว่างโฮสต์ไม่ได้รับการสนับสนุน",
"cancel": "ยกเลิก",
"methodLabel": "วิธีการถ่ายโอน",
"methodAuto": "อัตโนมัติ",
"methodTar": "คลังข้อมูลทาร์",
"methodItemSftp": "SFTP ต่อไฟล์",
"methodAutoHint": "เลือกใช้ไฟล์บีบอัดแบบ tar หรือ SFTP แบบต่อไฟล์ โดยพิจารณาจากจำนวนไฟล์ ขนาดไฟล์ และความสามารถในการบีบอัด ไฟล์เดี่ยวจะใช้ SFTP แบบสตรีมมิ่งเสมอ",
"methodTarHint": "บีบอัดไฟล์ที่ต้นทาง ถ่ายโอนไฟล์เก็บถาวรหนึ่งไฟล์ และแตกไฟล์ที่ปลายทาง ต้องใช้ tar บนเครื่อง Unix ทั้งสองเครื่อง",
"methodItemSftpHint": "โอนไฟล์แต่ละไฟล์ทีละไฟล์ผ่าน SFTP ใช้งานได้กับทุกระบบปฏิบัติการ รวมถึง Windows",
"methodPreviewLoading": "กำลังคำนวณวิธีการโอน…",
"methodPreviewError": "ไม่สามารถดูตัวอย่างวิธีการถ่ายโอนได้ เซิร์ฟเวอร์จะเลือกวิธีการเมื่อคุณเริ่มต้นใช้งาน",
"methodPreviewWillUseTar": "จะใช้: ไฟล์เก็บถาวร Tar",
"methodPreviewWillUseItemSftp": "จะใช้: SFTP แบบแยกไฟล์",
"methodPreviewScanSummary": "ไฟล์ {{fileCount}} ไฟล์, รวม {{totalSize}} ไฟล์ (สแกนจากโฮสต์ต้นทาง)",
"methodItemSftpLimitation": "แต่ละไฟล์จะใช้สตรีม SFTP เดียวกันในการคัดลอกไฟล์ทีละไฟล์ ความคืบหน้าจะถูกรวมเข้าด้วยกัน ทำให้แถบแสดงความคืบหน้าเคลื่อนที่ช้าลงเมื่อคัดลอกไฟล์ขนาดใหญ่",
"methodReason": {
"user_item_sftp": "คุณเลือกใช้ SFTP แบบต่อไฟล์",
"user_tar": "คุณเลือกไฟล์เก็บถาวรแบบ tar",
"tar_unavailable": "Tar ไม่สามารถใช้งานได้บนโฮสต์หนึ่งหรือทั้งสองโฮสต์ จึงจะใช้ SFTP แบบแยกไฟล์แทน",
"windows_host": "ระบบปฏิบัติการที่ใช้คือ Windows — ไม่ได้ใช้โปรแกรม tar",
"auto_multi_large": "อัตโนมัติ: ไฟล์หลายไฟล์ รวมถึงไฟล์ขนาดใหญ่ ({{largestSize}}) ที่มีข้อมูลที่สามารถบีบอัดได้ — tar จะรวมไฟล์เหล่านั้นไว้ในการถ่ายโอนครั้งเดียว",
"auto_single_large_in_archive": "อัตโนมัติ: ไฟล์ขนาดใหญ่หนึ่งไฟล์ ({{largestSize}}) ในชุดนี้ — SFTP ต่อไฟล์",
"auto_many_incompressible": "อัตโนมัติ: ข้อมูลส่วนใหญ่ไม่สามารถบีบอัดได้ — SFTP แบบแยกไฟล์",
"auto_many_files": "อัตโนมัติ: หลายไฟล์ ({{fileCount}}) — tar ช่วยลดภาระต่อไฟล์",
"auto_default": "อัตโนมัติ: ตั้งค่า SFTP สำหรับแต่ละไฟล์ในชุดนี้"
},
"progressCancel": "ยกเลิก",
"progressCancelling": "การยกเลิก…",
"progressStalled": "หยุดชะงัก",
"resumedHint": "เชื่อมต่อใหม่กับการถ่ายโอนที่เริ่มทำงานในหน้าต่างอื่นแล้ว",
"transferCancelled": "การโอนเงินถูกยกเลิก",
"transferCancelledCopyHint": "ไฟล์บางส่วนอาจยังคงอยู่ในปลายทาง",
"transferCancelledMoveHint": "ไฟล์บางส่วนอาจยังคงอยู่ในปลายทาง ไฟล์ต้นฉบับไม่ได้ถูกลบออก",
"cleanupDestFiles": "สถานที่ทำความสะอาด",
"cleanupDestFilesSuccess": "ลบไฟล์บางส่วนออกจากปลายทางแล้ว",
"cleanupDestFilesPartial": "ไม่สามารถลบไฟล์บางส่วนได้",
"cleanupDestFilesNothing": "ไม่มีอะไรต้องทำความสะอาดที่ปลายทาง",
"cleanupDestFilesError": "การทำความสะอาดล้มเหลว",
"retryTransfer": "ลองใหม่อีกครั้ง",
"retryTransferError": "การลองใหม่ล้มเหลว",
"transferFailedRetryHint": "ข้อมูลบางส่วนถูกเก็บไว้ในปลายทาง การลองใหม่จะดำเนินการต่อเมื่อการเชื่อมต่อกลับมาใช้งานได้"
"sourceNotDeletedPartial": "ไฟล์ต้นฉบับถูกเก็บไว้ (ถ่ายโอนบางส่วน)"
},
"tunnels": {
"connect": "เชื่อมต่อ",
@@ -1261,8 +1153,6 @@
"clientTunnel": "อุโมงค์ลูกค้า",
"addClientTunnel": "เพิ่มอุโมงค์ไคลเอ็นต์",
"active": "คล่องแคล่ว",
"start": "เริ่ม",
"stop": "หยุด",
"typeServerLocalDesc": "ปัจจุบันโฮสต์ไปยังเอนด์พอยต์",
"typeServerRemoteDesc": "ปลายทางกลับไปยังโฮสต์ปัจจุบัน",
"typeClientLocalDesc": "คอมพิวเตอร์ในพื้นที่เชื่อมต่อกับอุปกรณ์ปลายทาง",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "จำกัดจำนวนครั้ง: มีการพยายามยืนยันมากเกินไป โปรดรอ {{time}} วินาทีก่อนลองอีกครั้ง",
"authTokenSaveFailed": "ไม่สามารถบันทึกโทเค็นการตรวจสอบสิทธิ์ได้",
"authTokenMissing": "เซิร์ฟเวอร์ไม่ได้ส่งโทเค็นการตรวจสอบสิทธิ์ใหม่กลับมา โปรดเข้าสู่ระบบอีกครั้ง",
"failedToLoadServer": "ไม่สามารถโหลดเซิร์ฟเวอร์ได้",
"remoteServerRequired": "จำเป็นต้องใช้เซิร์ฟเวอร์ระยะไกล เชื่อมต่อเซิร์ฟเวอร์ระยะไกลในการตั้งค่าเพื่อใช้ประเภทการเชื่อมต่อนี้"
"failedToLoadServer": "ไม่สามารถโหลดเซิร์ฟเวอร์ได้"
},
"messages": {
"registrationDisabled": "ขณะนี้ผู้ดูแลระบบได้ปิดใช้งานการลงทะเบียนบัญชีใหม่แล้ว โปรดเข้าสู่ระบบหรือติดต่อผู้ดูแลระบบ",
@@ -1831,7 +1720,6 @@
"protocolLabel": "โปรโตคอล",
"domainLabel": "โดเมน",
"domainPlaceholder": "ไม่จำเป็น",
"connectToTerminal": "เชื่อมต่อกับเทอร์มินัล",
"connectToFiles": "เชื่อมต่อกับไฟล์"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Bir tema, bir vurgu rengi ve dil seçin. Bu üçü de daha sonra Ayarlar'dan değiştirilebilir.",
"featuresTitle": "Termix başka neler yapıyor?",
"featuresIntro": "Kaydettiğiniz her sunucu, terminalden daha fazlasında açılabilir. Soldaki simgelerin arkasında sizi bekleyenler şunlardır.",
"feature_files": "Dosya yöneticisi",
"feature_files_desc": "Uygulamadan çıkmadan SFTP üzerinden dosyalara göz atın, yükleyin, indirin ve düzenleyin.",
"feature_tunnels": "Tüneller",
"feature_tunnels_desc": "Sunucu üzerinden port yönlendirmesi yaparak, erişime açık olmayan hizmetlere ulaşabilirsiniz.",
"feature_snippets": "Kısa bölümler",
"feature_snippets_desc": "Sık kullandığınız komutları kaydedin ve tek tıklamayla terminale gönderin.",
"featuresRailHint": "Bunlardan birine ihtiyacınız yok mu? Ayarlar'da, Gezinme altında bulunan kenar çubuğundaki herhangi bir simgeyi gizleyebilirsiniz.",
@@ -449,7 +445,6 @@
"passwordSaved": "Parola kaydedildi, değiştirmek için tuşlayın.",
"key": "Anahtar",
"credential": "Kimlik Bilgisi",
"none": "Hiçbiri",
"sshPrivateKey": "SSH Özel Anahtarı",
"keyType": "Anahtar Türü",
"uploadFile": "Dosya Yükle",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Canlı Tutma Aralığı (saniye)",
"maxKeepaliveMisses": "Maksimum Keepalive Kaçırma",
"sameHost": "Bu ana bilgisayar (doğrudan tünel)",
"bindHost": "Bağlanma Ana Bilgisayarı",
"connectionToolbar": "Bağlantı Araç Çubuğu",
"showConnectionToolbar": "Bağlantı araç çubuğunu göster",
"showConnectionToolbarDesc": "Bu sunucunun SSH, RDP, VNC ve Telnet oturumlarında araç çubuğunu gösterin. Ayrıca, araç çubuğundan geçici olarak gizleyebilirsiniz.",
"proxmoxLastSyncStatus": {
"success": "Başarılı"
},
"proxmoxGuestsSelected_one": "{{count}} misafir — {{selected}} seçili",
"proxmoxGuestsSelected_other": "{{count}} misafir — {{selected}} seçili",
"proxmoxImportButton_one": "{{count}} ana makineyi içe aktar",
"proxmoxImportButton_other": "{{count}} sunucuyu içe aktar",
"proxmoxResultSkippedNoIp": "{{count}} atlandı (IP adresi bulunamadı)",
"proxmoxStatsUrlCopied": "Proxmox İstatistikleri URL'si panoya kopyalandı",
"copyProxmoxStatsUrlAction": "Proxmox İstatistikleri URL'sini Kopyala",
@@ -896,13 +886,11 @@
"updatedCount": "{{count}} host güncellendi",
"friendlyNameLabel": "Gösterim Adı",
"descriptionLabel": "Açıklama",
"loadingHost": "Host yükleniyor...",
"loadingHosts": "Hostlar yükleniyor...",
"loadingCredentials": "Kimlik bilgileri yükleniyor...",
"noHostsYet": "Henüz host yok",
"noHostsYetHint": "Terminalleri açmak, dosyalara göz atmak ve ölçümleri görmek için bir sunucu ekleyin.",
"noHostsMatchSearch": "Aramanızla eşleşen host yok",
"hostNotFound": "Host bulunamadı",
"searchHosts": "Host ara...",
"sortHosts": "Hostları Sırala",
"sortDefault": "Varsayılan Sıralama",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH Anahtarı",
"filterAuthCredential": "Kimlik Bilgisi",
"filterAuthNone": "Yok",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Adım CA",
"filterProtocolGroup": "Protokol",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Sunucuya Bağlan",
"clear": "Temizle",
"paste": "Yapıştır",
"connected": "Bağlandı",
"clipboardWriteFailed": "Panoya kopyalama başarısız oldu. Sayfanın HTTPS veya localhost üzerinden sunulduğundan emin olun.",
"clipboardReadFailed": "Panodan okuma başarısız oldu. Pano izinlerinin verildiğinden emin olun.",
"tmuxDetach": "tmux oturumundan ayrıl",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Çalıştırılıyor: {{command}} - {{host}}",
"totpRequired": "İki Faktörlü Kimlik Doğrulama Gerekli",
"totpCodeLabel": "Doğrulama Kodu",
"totpVerify": "Doğrula",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Sunucuya kopyala…",
"moveToHost": "Sunucuya taşı…",
"copyItemsToHost": "{{count}} öğeyi sunucuya kopyala…",
"moveItemsToHost": "{{count}} öğeyi ana bilgisayara taşı…",
"noHostsConnected": "Kullanılabilir başka dosya yöneticisi ana bilgisayarı yok.",
"noHostsConnectedHint": "Ana Bilgisayar Yöneticisi'nde Dosya Yöneticisi etkinleştirilmiş başka bir SSH ana bilgisayarı ekleyin.",
"selectDestinationHost": "Hedef ana bilgisayarı seçin",
"destinationPath": "Hedef yol",
"recentDestinations": "Son hedefler",
"collapseRecentDestinations": "Son hedefleri daralt",
"expandRecentDestinations": "Son hedefleri genişlet",
"browseFolders": "Hedef klasörlere göz at",
"browseDestination": "Göz at veya yol gir",
"confirmCopy": "Kopyala",
"confirmMove": "Taşı",
"transferring": "Aktarılıyor…",
"progressVerifying": "Dosya bütünlüğünün doğrulanması…",
"progressBenchmarking": "En hızlı aktarma rotasını seçme…",
"compressing": "Sıkıştırılıyor…",
"extracting": "Çıkartılıyor…",
"transferringItems": "{{current}} / {{total}} öğe aktarılıyor…",
"transferSuccess": "Aktarım tamamlandı",
"transferError": "Aktarım başarısız",
"transferPartial": "Aktarım {{count}} hatayla tamamlandı",
"transferPartialHint": "Aktarılamadı: {{paths}}",
"itemsSummary": "{{count}} öğe",
"destMustBeDirectory": "Çoklu öğe aktarımları için hedef bir dizin olmalıdır",
"selectThisFolder": "Bu klasörü seç",
"browsePathWillBeCreated": "Bu klasör henüz mevcut değil. Aktarım başladığında oluşturulacak.",
"browsePathError": "Hedef ana bilgisayarda bu yol açılamadı.",
"goUp": "Yukarı",
"copyFolderToHost": "Klasörü ana bilgisayara kopyala…",
"moveFolderToHost": "Klasörü ana bilgisayara taşı…",
"hostReady": "Hazır",
"hostConnecting": "Bağlanıyor…",
"hostDisconnected": "Bağlı değil",
"hostAuthRequired": "Kimlik doğrulama gerekli — önce bu ana bilgisayarda Dosya Yöneticisi'ni açın",
"hostConnectionFailed": "Bağlantı başarısız",
"metricsTitle": "Aktarım zamanlamaları",
"metricsPrepare": "Hedefi hazırla: {{duration}}",
"metricsCompress": "Kaynakta sıkıştırma: {{duration}}",
"metricsHopSourceRead": "Kaynak → sunucu: {{throughput}}",
"metricsHopDestSftpWrite": "Sunucu → hedef (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Sunucu → hedef (yerel): {{throughput}}",
"metricsTransfer": "Uçtan uca: {{throughput}} ({{duration}})",
"metricsExtract": "Hedefte çıkarma: {{duration}}",
"metricsVerify": "SHA-256 ile doğrulandı: {{duration}}",
"metricsRouteBenchmark": "Rota sondası — doğrudan: {{direct}}, röle: {{relay}}",
"metricsSourceDelete": "Kaynaktan silme: {{duration}}",
"metricsTotal": "Toplam: {{duration}}",
"progressCompressing": "Kaynak sunucuda sıkıştırılıyor…",
"progressExtracting": "Hedefte çıkarılıyor…",
"progressTransferring": "Veri aktarılıyor…",
"progressReconnecting": "Yeniden bağlanılıyor…",
"parallelSegmentsLabel": "Paralel aktarım yolları",
"parallelSegmentsOption": "{{count}} yol",
"parallelSegmentsHint": "Büyük dosyalar 256 MB'lık parçalara bölünür. Çoklu yollar, daha yüksek toplam aktarım hızı için ayrı bağlantılar kullanır (birden fazla aktarım başlatmak gibi).",
"progressTotalSpeed": "{{speed}} toplam ({{lanes}} yol)",
"progressTransferringItems": "Dosyalar aktarılıyor ({{current}} / {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} dosya",
"sourceNotDeletedPartial": "Kaynak dosyalar korundu (kısmi aktarım)",
"jumpHostLimitation": "Her iki sunucuya da Termix sunucusundan erişilebilir olmalıdır. Sunucular arası doğrudan yönlendirme desteklenmez.",
"cancel": "İptal",
"methodLabel": "Aktarım yöntemi",
"methodAuto": "Otomatik",
"methodTar": "Tar arşivi",
"methodItemSftp": "Dosya başına SFTP",
"methodAutoHint": "Dosya sayısı, boyutu ve sıkıştırılabilirliğe bağlı olarak tar veya dosya başına SFTP seçer. Tek dosyalar her zaman akış SFTP'si kullanır.",
"methodTarHint": "Kaynakta sıkıştır, tek arşiv aktar, hedefte çıkar. Her iki Unix sunucuda tar gerektirir.",
"methodItemSftpHint": "Her dosyayı SFTP üzerinden tek tek aktarır. Windows dahil tüm sunucularda çalışır.",
"methodPreviewLoading": "Aktarım yöntemi hesaplanıyor…",
"methodPreviewError": "Aktarım yöntemi önizlenemedi. Başlattığınızda sunucu yine de bir yöntem seçecektir.",
"methodPreviewWillUseTar": "Kullanılacak: Tar arşivi",
"methodPreviewWillUseItemSftp": "Kullanılacak: Dosya başına SFTP",
"methodPreviewScanSummary": "{{fileCount}} dosya, toplam {{totalSize}} (kaynak sunucuda tarandı).",
"methodItemSftpLimitation": "Her dosya, tek bir dosya kopyasıyla aynı SFTP akışını sırayla kullanır. İlerleme tüm dosyalar için birleştirilmiştir, bu nedenle büyük dosyalar sırasında çubuk yavaş hareket eder.",
"methodReason": {
"user_item_sftp": "Dosya bazında SFTP seçtiniz.",
"user_tar": "Tar arşivi seçtiniz.",
"tar_unavailable": "Bir veya her iki ana bilgisayarda Tar kullanılamıyor — bunun yerine dosya bazında SFTP kullanılacak.",
"windows_host": "Windows ana bilgisayarı söz konusu — tar kullanılmaz.",
"auto_multi_large": "Otomatik: sıkıştırılabilir veriye sahip büyük bir dosya ({{largestSize}}) dahil birden çok dosya — tar tek bir aktarımda birleştirir.",
"auto_single_large_in_archive": "Otomatik: bu kümede bir büyük dosya ({{largestSize}}) — dosya bazında SFTP.",
"auto_many_incompressible": "Otomatik: çoğunlukla sıkıştırılamayan veri — dosya bazında SFTP.",
"auto_many_files": "Otomatik: çok sayıda dosya ({{fileCount}}) — tar dosya başına ek yükü azaltır.",
"auto_default": "Otomatik: bu küme için dosya bazında SFTP."
},
"progressCancel": "İptal",
"progressCancelling": "İptal ediliyor…",
"progressStalled": "Askıda",
"resumedHint": "Başka bir pencerede başlatılan aktif bir aktarıma yeniden bağlanıldı.",
"transferCancelled": "Aktarım iptal edildi",
"transferCancelledCopyHint": "Hedefte kısmi dosyalar kalabilir.",
"transferCancelledMoveHint": "Hedefte kısmi dosyalar kalabilir. Kaynak dosyalar silinmedi.",
"cleanupDestFiles": "Hedefi temizle",
"cleanupDestFilesSuccess": "Hedefteki kısmi dosyalar kaldırıldı",
"cleanupDestFilesPartial": "Bazı kısmi dosyalar kaldırılamadı",
"cleanupDestFilesNothing": "Hedefte temizlenecek bir şey yok",
"cleanupDestFilesError": "Temizleme başarısız oldu",
"retryTransfer": "Yeniden dene",
"retryTransferError": "Yeniden deneme başarısız oldu",
"transferFailedRetryHint": "Hedefte kısmi veri tutuldu. Bağlantı geri geldiğinde yeniden deneme devam edecek."
"sourceNotDeletedPartial": "Kaynak dosyalar korundu (kısmi aktarım)"
},
"tunnels": {
"connect": "Bağlan",
@@ -1261,8 +1153,6 @@
"clientTunnel": "İstemci Tüneli",
"addClientTunnel": "İstemci Tüneli Ekle",
"active": "Aktif",
"start": "Başlat",
"stop": "Durdur",
"typeServerLocalDesc": "Geçerli sunucudan uç noktaya.",
"typeServerRemoteDesc": "Uç noktadan geçerli sunucuya.",
"typeClientLocalDesc": "Yerel bilgisayardan uç noktaya.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Hız sınırlaması: Çok fazla doğrulama denemesi. Lütfen tekrar denemeden önce {{time}} saniye bekleyin.",
"authTokenSaveFailed": "Kimlik doğrulama belirteci kaydedilemedi",
"authTokenMissing": "Sunucu yeni bir kimlik doğrulama belirteci döndürmedi. Lütfen tekrar giriş yapın.",
"failedToLoadServer": "Sunucu yüklenemedi",
"remoteServerRequired": "Uzak sunucu gereklidir. Bu bağlantı türünü kullanmak için Ayarlar'dan bir uzak sunucu bağlayın."
"failedToLoadServer": "Sunucu yüklenemedi"
},
"messages": {
"registrationDisabled": "Yeni hesap kaydı şu anda bir yönetici tarafından devre dışı bırakıldı. Lütfen giriş yapın veya bir yöneticiyle iletişime geçin.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Protokol",
"domainLabel": "İhtisas",
"domainPlaceholder": "isteğe bağlı",
"connectToTerminal": "Terminale Bağlan",
"connectToFiles": "Dosyalara Bağlan"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Виберіть тему, акцентний колір і мову. Усі три параметри можна змінити пізніше в налаштуваннях.",
"featuresTitle": "Що ще робить Termix",
"featuresIntro": "Кожен збережений вами сервер можна відкрити не лише в терміналі. Ось що чекає за значками ліворуч.",
"feature_files": "Файловий менеджер",
"feature_files_desc": "Переглядайте, завантажуйте, вивантажуйте та редагуйте файли через SFTP, не виходячи з програми.",
"feature_tunnels": "Тунелі",
"feature_tunnels_desc": "Переадресовувати порти через сервер для доступу до служб, які не піддаються впливу.",
"feature_snippets": "Фрагменти",
"feature_snippets_desc": "Зберігайте команди, які ви часто виконуєте, та надсилайте їх у термінал одним клацанням миші.",
"featuresRailHint": "Не потрібен один із них? Приховайте будь-який значок на бічній панелі в налаштуваннях, у розділі \"Навігація\".",
@@ -449,7 +445,6 @@
"passwordSaved": "Пароль збережено, введіть, щоб змінити",
"key": "Ключ",
"credential": "Посвідчення",
"none": "Жоден",
"sshPrivateKey": "Закритий ключ SSH",
"keyType": "Тип ключа",
"uploadFile": "Завантажити файл",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Інтервал підтримки активності (секунди)",
"maxKeepaliveMisses": "Макс. промахи Keepalive",
"sameHost": "Цей хост (прямий тунель)",
"bindHost": "Прив’язати хост",
"connectionToolbar": "Панель інструментів з’єднання",
"showConnectionToolbar": "Показати панель інструментів з’єднань",
"showConnectionToolbarDesc": "Показувати панель інструментів у сеансах SSH, RDP, VNC та Telnet цього хоста. Ви також можете тимчасово приховати її з самої панелі інструментів.",
"proxmoxLastSyncStatus": {
"success": "Успіх"
},
"proxmoxGuestsSelected_one": "{{count}} гість — {{selected}} вибрано",
"proxmoxGuestsSelected_other": "{{count}} гостей — {{selected}} вибрано",
"proxmoxImportButton_one": "Імпортувати хост {{count}}",
"proxmoxImportButton_other": "Імпортувати {{count}} хостів",
"proxmoxResultSkippedNoIp": "{{count}} пропущено (IP-адресу не знайдено)",
"proxmoxStatsUrlCopied": "URL-адресу статистики Proxmox скопійовано в буфер обміну",
"copyProxmoxStatsUrlAction": "Копіювати URL-адресу статистики Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Оновлено хостів {{count}}",
"friendlyNameLabel": "Зрозуміле ім'я",
"descriptionLabel": "Опис",
"loadingHost": "Завантаження хоста...",
"loadingHosts": "Завантаження хостів...",
"loadingCredentials": "Завантаження облікових даних...",
"noHostsYet": "Поки що немає хостів",
"noHostsYetHint": "Додайте сервер для відкриття терміналів, перегляду файлів та перегляду метрик.",
"noHostsMatchSearch": "Немає хостів, що відповідають вашому пошуковому запиту",
"hostNotFound": "Хост не знайдено",
"searchHosts": "Пошук хостів...",
"sortHosts": "Сортувати хости",
"sortDefault": "Порядок за замовчуванням",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH-ключ",
"filterAuthCredential": "Посвідчення",
"filterAuthNone": "Жоден",
"filterAuthOpkssh": "ОПКШ",
"filterAuthStepca": "Крок CA",
"filterProtocolGroup": "Протокол",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Підключення до хоста",
"clear": "Очистити",
"paste": "Вставити",
"connected": "Підключено",
"clipboardWriteFailed": "Не вдалося скопіювати в буфер обміну. Переконайтеся, що сторінка обслуговується через HTTPS або localhost.",
"clipboardReadFailed": "Не вдалося прочитати з буфера обміну. Переконайтеся, що надано дозволи на доступ до буфера обміну.",
"tmuxDetach": "Від’єднатися від сеансу tmux",
"terminalTitle": "Термінал - {{host}}",
"terminalWithPath": "Термінал - {{host}}:{{path}}",
"runTitle": "Запуск {{command}} - {{host}}",
"totpRequired": "Потрібна двофакторна автентифікація",
"totpCodeLabel": "Код підтвердження",
"totpVerify": "Перевірити",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Копіювати на хост…",
"moveToHost": "Перемістити на хост…",
"copyItemsToHost": "Копіювати елементи {{count}} для розміщення…",
"moveItemsToHost": "Перемістити {{count}} елементів на хост…",
"noHostsConnected": "Інших хостів файлових менеджерів немає.",
"noHostsConnectedHint": "Додайте ще один SSH-хост з увімкненим файловим менеджером у Host Manager.",
"selectDestinationHost": "Виберіть хост призначення",
"destinationPath": "Шлях призначення",
"recentDestinations": "Нещодавні напрямки",
"collapseRecentDestinations": "Згорнути останні пункти призначення",
"expandRecentDestinations": "Розгорнути нещодавні пункти призначення",
"browseFolders": "Перегляд папок призначення",
"browseDestination": "Переглянути або ввести шлях",
"confirmCopy": "Копіювати",
"confirmMove": "Перемістити",
"transferring": "Перенесення…",
"progressVerifying": "Перевірка цілісності файлу…",
"progressBenchmarking": "Вибір найшвидшого маршруту пересадки…",
"compressing": "Стиснення…",
"extracting": "Видобування…",
"transferringItems": "Перенесення {{current}} з {{total}} елементів…",
"transferSuccess": "Перенесення завершено",
"transferError": "Передача не вдалася",
"transferPartial": "Перенесення завершено з {{count}} помилками",
"transferPartialHint": "Не вдалося перенести: {{paths}}",
"itemsSummary": "{{count}} елементів",
"destMustBeDirectory": "Для перенесення кількох елементів місцем призначення має бути каталог",
"selectThisFolder": "Виберіть цю папку",
"browsePathWillBeCreated": "Цієї папки ще не існує. Вона буде створена, коли розпочнеться передача.",
"browsePathError": "Не вдалося відкрити цей шлях на хості призначення.",
"goUp": "Піднімися",
"copyFolderToHost": "Копіювати папку на хост…",
"moveFolderToHost": "Перемістити папку на хост…",
"hostReady": "Готовий",
"hostConnecting": "Підключення…",
"hostDisconnected": "Не підключено",
"hostAuthRequired": "Потрібна автентифікація — спочатку відкрийте Файловий менеджер на цьому хості",
"hostConnectionFailed": "Помилка підключення",
"metricsTitle": "Час пересадки",
"metricsPrepare": "Підготувати пункт призначення: {{duration}}",
"metricsCompress": "Стиснути у вихідному коді: {{duration}}",
"metricsHopSourceRead": "Джерело → сервер: {{throughput}}",
"metricsHopDestSftpWrite": "Сервер → призначення (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Сервер → призначення (локальний): {{throughput}}",
"metricsTransfer": "Від кінця до кінця: {{throughput}} ({{duration}})",
"metricsExtract": "Вилучити в місці призначення: {{duration}}",
"metricsVerify": "SHA-256 перевірено: {{duration}}",
"metricsRouteBenchmark": "Зонд маршруту — прямий: {{direct}}, ретрансляція: {{relay}}",
"metricsSourceDelete": "Видалити з джерела: {{duration}}",
"metricsTotal": "Всього: {{duration}}",
"progressCompressing": "Стиснення на вихідному хості…",
"progressExtracting": "Видобування в місці призначення…",
"progressTransferring": "Передача даних…",
"progressReconnecting": "Повторне підключення…",
"parallelSegmentsLabel": "Паралельні пересадочні смуги",
"parallelSegmentsOption": "{{count}} смуги",
"parallelSegmentsHint": "Великі файли розділяються на фрагменти по 256 МБ. Кілька ліній використовують окремі з’єднання (наприклад, запуск кількох передач) для підвищення загальної пропускної здатності.",
"progressTotalSpeed": "{{speed}} всього ({{lanes}} смуг)",
"progressTransferringItems": "Передача файлів ({{current}} з {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} файли",
"sourceNotDeletedPartial": "Вихідні файли збережено (часткове перенесення)",
"jumpHostLimitation": "Обидва хости мають бути доступні з сервера Termix. Пряма маршрутизація між хостами не підтримується.",
"cancel": "Скасувати",
"methodLabel": "Спосіб переказу",
"methodAuto": "Авто",
"methodTar": "Архів Tar",
"methodItemSftp": "SFTP для кожного файлу",
"methodAutoHint": "Вибирає tar-файл або SFTP для кожного файлу на основі кількості файлів, розміру та стискальності. Окремі файли завжди використовують потоковий SFTP.",
"methodTarHint": "Стиснення у вихідному коді, перенесення одного архіву, розпакування у кінцевому. Потрібен tar-архів на обох хостах Unix.",
"methodItemSftpHint": "Передавайте кожен файл окремо через SFTP. Працює на всіх хостах, включаючи Windows.",
"methodPreviewLoading": "Розрахунок методу переказу…",
"methodPreviewError": "Не вдалося переглянути метод передачі. Сервер все одно вибере метод під час запуску.",
"methodPreviewWillUseTar": "Буде використано: архів Tar",
"methodPreviewWillUseItemSftp": "Буде використовуватися: SFTP для кожного файлу",
"methodPreviewScanSummary": "{{fileCount}} файлів, {{totalSize}} всього (проскановано на вихідному хості).",
"methodItemSftpLimitation": "Кожен файл використовує той самий потік SFTP, що й копія окремого файлу, послідовно. Прогрес об'єднується для всіх файлів, тому шкала рухається повільно під час роботи з великими файлами.",
"methodReason": {
"user_item_sftp": "Ви обрали SFTP для кожного файлу.",
"user_tar": "Ви обрали tar-архів.",
"tar_unavailable": "Архів TAR недоступний на одному або обох хостах — замість нього використовуватиметься SFTP для кожного файлу.",
"windows_host": "Задіяний хост Windows — tar не використовується.",
"auto_multi_large": "Авто: кілька файлів, включаючи великий файл ({{largestSize}}) зі стисливими даними — tar-пакети об'єднуються в одну передачу.",
"auto_single_large_in_archive": "Авто: один великий файл ({{largestSize}}) у цьому наборі — SFTP для кожного файлу.",
"auto_many_incompressible": "Авто: переважно нестисливі дані — SFTP для кожного файлу.",
"auto_many_files": "Авто: багато файлів ({{fileCount}}) — tar зменшує навантаження на кожен файл.",
"auto_default": "Авто: SFTP для кожного файлу для цього набору."
},
"progressCancel": "Скасувати",
"progressCancelling": "Скасування…",
"progressStalled": "Зупинився",
"resumedHint": "Повторне підключення до активної передачі, розпочатої в іншому вікні.",
"transferCancelled": "Переказ скасовано",
"transferCancelledCopyHint": "Часткові файли можуть залишатися на пристрої призначення.",
"transferCancelledMoveHint": "Часткові файли можуть залишатися в місці призначення. Вихідні файли не видалено.",
"cleanupDestFiles": "Прибирання місця призначення",
"cleanupDestFilesSuccess": "Видалено часткові файли з місця призначення",
"cleanupDestFilesPartial": "Не вдалося видалити деякі часткові файли",
"cleanupDestFilesNothing": "Нічого прибирати на місці призначення",
"cleanupDestFilesError": "Очищення не вдалося",
"retryTransfer": "Повторити спробу",
"retryTransferError": "Повторна спроба не вдалася",
"transferFailedRetryHint": "На місці призначення збережено частку даних. Повторна спроба відновиться після відновлення з’єднання."
"sourceNotDeletedPartial": "Вихідні файли збережено (часткове перенесення)"
},
"tunnels": {
"connect": "Підключитися",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Тунель клієнта",
"addClientTunnel": "Додати клієнтський тунель",
"active": "Активний",
"start": "Початок",
"stop": "СТІЙ",
"typeServerLocalDesc": "Поточний хост до кінцевої точки.",
"typeServerRemoteDesc": "Кінцева точка повертається до поточного хоста.",
"typeClientLocalDesc": "Локальний комп'ютер до кінцевої точки.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Обмеження швидкості: Забагато спроб перевірки. Будь ласка, зачекайте {{time}} секунд, перш ніж повторити спробу.",
"authTokenSaveFailed": "Не вдалося зберегти токен автентифікації",
"authTokenMissing": "Сервер не повернув новий токен автентифікації. Будь ласка, увійдіть ще раз.",
"failedToLoadServer": "Не вдалося завантажити сервер",
"remoteServerRequired": "Потрібен віддалений сервер. Підключіться до віддаленого сервера в налаштуваннях, щоб використовувати цей тип підключення."
"failedToLoadServer": "Не вдалося завантажити сервер"
},
"messages": {
"registrationDisabled": "Реєстрацію нового облікового запису наразі вимкнено адміністратором. Будь ласка, увійдіть або зверніться до адміністратора.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Протокол",
"domainLabel": "Домен",
"domainPlaceholder": "необов'язково",
"connectToTerminal": "Підключення до терміналу",
"connectToFiles": "Підключення до файлів"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "Chọn chủ đề, màu nhấn và ngôn ngữ của bạn. Bạn có thể thay đổi cả ba sau này trong phần Cài đặt.",
"featuresTitle": "Ngoài ra, Termix còn cung cấp những dịch vụ gì khác?",
"featuresIntro": "Mỗi máy chủ bạn lưu có thể được mở trong nhiều cửa sổ dòng lệnh khác nhau. Đây là những gì đang chờ đợi phía sau các biểu tượng bên trái.",
"feature_files": "Trình quản lý tập tin",
"feature_files_desc": "Duyệt, tải lên, tải xuống và chỉnh sửa tệp qua SFTP mà không cần rời khỏi ứng dụng.",
"feature_tunnels": "Đường hầm",
"feature_tunnels_desc": "Chuyển tiếp cổng thông qua máy chủ để truy cập các dịch vụ không được công khai.",
"feature_snippets": "Những đoạn trích",
"feature_snippets_desc": "Lưu lại các lệnh bạn thường xuyên sử dụng và gửi chúng đến cửa sổ dòng lệnh chỉ với một cú nhấp chuột.",
"featuresRailHint": "Không cần những biểu tượng này? Hãy ẩn bất kỳ biểu tượng nào khỏi thanh bên trong Cài đặt, mục Điều hướng.",
@@ -449,7 +445,6 @@
"passwordSaved": "Mật khẩu đã được lưu, nhập để thay đổi",
"key": "Khóa",
"credential": "Thông tin xác thực",
"none": "Không có",
"sshPrivateKey": "Khóa riêng SSH",
"keyType": "Loại khóa",
"uploadFile": "Tải tệp lên",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "Khoảng thời gian Keepalive (giây)",
"maxKeepaliveMisses": "Số lần bỏ lỡ Keepalive tối đa",
"sameHost": "Máy chủ này (đường hầm trực tiếp)",
"bindHost": "Máy chủ bind",
"connectionToolbar": "Thanh công cụ kết nối",
"showConnectionToolbar": "Hiển thị thanh công cụ kết nối",
"showConnectionToolbarDesc": "Hiển thị thanh công cụ trong các phiên SSH, RDP, VNC và Telnet của máy chủ này. Bạn cũng có thể tạm thời ẩn nó từ chính thanh công cụ.",
"proxmoxLastSyncStatus": {
"success": "Thành công"
},
"proxmoxGuestsSelected_one": "{{count}} máy khách — đã chọn {{selected}}",
"proxmoxGuestsSelected_other": "{{count}} máy khách — đã chọn {{selected}}",
"proxmoxImportButton_one": "Nhập {{count}} máy chủ",
"proxmoxImportButton_other": "Nhập {{count}} máy chủ",
"proxmoxResultSkippedNoIp": "{{count}} đã bỏ qua (không tìm thấy địa chỉ IP)",
"proxmoxStatsUrlCopied": "URL Thống kê Proxmox đã được sao chép vào clipboard",
"copyProxmoxStatsUrlAction": "Sao chép URL Thống kê Proxmox",
@@ -896,13 +886,11 @@
"updatedCount": "Đã cập nhật {{count}} máy chủ",
"friendlyNameLabel": "Tên hiển thị",
"descriptionLabel": "Mô tả",
"loadingHost": "Đang tải máy chủ...",
"loadingHosts": "Đang tải các máy chủ...",
"loadingCredentials": "Đang tải thông tin xác thực...",
"noHostsYet": "Chưa có máy chủ nào",
"noHostsYetHint": "Thêm máy chủ để mở cửa sổ dòng lệnh, duyệt tập tin và xem số liệu.",
"noHostsMatchSearch": "Không có máy chủ nào khớp với tìm kiếm của bạn",
"hostNotFound": "Không tìm thấy máy chủ",
"searchHosts": "Tìm kiếm máy chủ...",
"sortHosts": "Sắp xếp Máy chủ",
"sortDefault": "Thứ tự mặc định",
@@ -925,7 +913,6 @@
"filterAuthKey": "Khóa SSH",
"filterAuthCredential": "Thông tin xác thực",
"filterAuthNone": "Không",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "Bước CA",
"filterProtocolGroup": "Giao thức",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "Kết nối đến máy chủ",
"clear": "Xóa",
"paste": "Dán",
"connected": "Đã kết nối",
"clipboardWriteFailed": "Sao chép vào clipboard thất bại. Đảm bảo trang được phục vụ qua HTTPS hoặc localhost.",
"clipboardReadFailed": "Đọc từ clipboard thất bại. Đảm bảo quyền truy cập clipboard đã được cấp.",
"tmuxDetach": "Ngắt khỏi phiên tmux",
"terminalTitle": "Terminal - {{host}}",
"terminalWithPath": "Terminal - {{host}}:{{path}}",
"runTitle": "Đang chạy {{command}} - {{host}}",
"totpRequired": "Yêu cầu xác thực hai yếu tố",
"totpCodeLabel": "Mã xác minh",
"totpVerify": "Xác minh",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "Sao chép đến máy chủ…",
"moveToHost": "Di chuyển đến máy chủ…",
"copyItemsToHost": "Sao chép {{count}} mục đến máy chủ…",
"moveItemsToHost": "Di chuyển {{count}} mục tới máy chủ…",
"noHostsConnected": "Không có máy chủ nào khác có Trình quản lý tệp khả dụng.",
"noHostsConnectedHint": "Thêm một máy chủ SSH khác đã bật Trình quản lý tệp trong Trình quản lý máy chủ.",
"selectDestinationHost": "Chọn máy chủ đích",
"destinationPath": "Đường dẫn đích",
"recentDestinations": "Đích gần đây",
"collapseRecentDestinations": "Thu gọn đích gần đây",
"expandRecentDestinations": "Mở rộng đích gần đây",
"browseFolders": "Duyệt thư mục đích",
"browseDestination": "Duyệt hoặc nhập đường dẫn",
"confirmCopy": "Sao chép",
"confirmMove": "Di chuyển",
"transferring": "Đang truyền tải…",
"progressVerifying": "Đang xác minh tính toàn vẹn của tệp…",
"progressBenchmarking": "Chọn tuyến đường chuyển tiếp nhanh nhất…",
"compressing": "Đang nén…",
"extracting": "Đang giải nén…",
"transferringItems": "Đang truyền tải {{current}}/{{total}} mục…",
"transferSuccess": "Truyền tải hoàn tất",
"transferError": "Truyền tải thất bại",
"transferPartial": "Truyền tải hoàn tất với {{count}} lỗi",
"transferPartialHint": "Không thể truyền tải: {{paths}}",
"itemsSummary": "{{count}} mục",
"destMustBeDirectory": "Đích phải là thư mục khi truyền tải nhiều mục",
"selectThisFolder": "Chọn thư mục này",
"browsePathWillBeCreated": "Thư mục này chưa tồn tại. Nó sẽ được tạo khi truyền tải bắt đầu.",
"browsePathError": "Không thể mở đường dẫn này trên máy chủ đích.",
"goUp": "Lên trên",
"copyFolderToHost": "Sao chép thư mục tới máy chủ…",
"moveFolderToHost": "Di chuyển thư mục tới máy chủ…",
"hostReady": "Sẵn sàng",
"hostConnecting": "Đang kết nối…",
"hostDisconnected": "Chưa kết nối",
"hostAuthRequired": "Yêu cầu xác thực — mở Trình quản lý tệp trên máy chủ này trước",
"hostConnectionFailed": "Kết nối thất bại",
"metricsTitle": "Thời gian truyền tải",
"metricsPrepare": "Chuẩn bị đích: {{duration}}",
"metricsCompress": "Nén tại nguồn: {{duration}}",
"metricsHopSourceRead": "Nguồn → máy chủ: {{throughput}}",
"metricsHopDestSftpWrite": "Máy chủ → đích (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "Máy chủ → đích (cục bộ): {{throughput}}",
"metricsTransfer": "Toàn trình: {{throughput}} ({{duration}})",
"metricsExtract": "Giải nén tại đích: {{duration}}",
"metricsVerify": "Đã xác thực SHA-256: {{duration}}",
"metricsRouteBenchmark": "Tìm đường dẫn — trực tiếp: {{direct}}, chuyển tiếp: {{relay}}",
"metricsSourceDelete": "Xóa khỏi nguồn: {{duration}}",
"metricsTotal": "Tổng: {{duration}}",
"progressCompressing": "Đang nén trên máy nguồn…",
"progressExtracting": "Đang giải nén tại đích…",
"progressTransferring": "Đang truyền dữ liệu…",
"progressReconnecting": "Đang kết nối lại…",
"parallelSegmentsLabel": "Làn truyền song song",
"parallelSegmentsOption": "{{count}} làn",
"parallelSegmentsHint": "Các tệp lớn được chia thành các khối 256 MB. Nhiều làn sử dụng các kết nối riêng biệt (như khởi chạy nhiều lần truyền) để tăng tổng thông lượng.",
"progressTotalSpeed": "{{speed}} tổng ({{lanes}} làn)",
"progressTransferringItems": "Đang truyền tệp ({{current}}/{{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} tệp",
"sourceNotDeletedPartial": "Giữ tệp nguồn (truyền một phần)",
"jumpHostLimitation": "Cả hai máy chủ phải có thể truy cập từ máy chủ Termix. Không hỗ trợ định tuyến trực tiếp giữa các máy.",
"cancel": "Hủy",
"methodLabel": "Phương thức truyền",
"methodAuto": "Tự động",
"methodTar": "Lưu trữ tar",
"methodItemSftp": "SFTP từng tệp",
"methodAutoHint": "Chọn tar hoặc SFTP từng tệp dựa trên số lượng tệp, kích thước và khả năng nén. Tệp đơn lẻ luôn dùng SFTP truyền luồng.",
"methodTarHint": "Nén tại nguồn, truyền một tệp lưu trữ, giải nén tại đích. Yêu cầu tar trên cả hai máy Unix.",
"methodItemSftpHint": "Truyền từng tệp riêng lẻ qua SFTP. Hoạt động trên mọi máy, bao gồm Windows.",
"methodPreviewLoading": "Đang tính toán phương thức truyền…",
"methodPreviewError": "Không thể xem trước phương thức truyền. Máy chủ vẫn sẽ chọn phương thức khi bạn bắt đầu.",
"methodPreviewWillUseTar": "Sẽ dùng: Lưu trữ tar",
"methodPreviewWillUseItemSftp": "Sẽ dùng: SFTP từng tệp",
"methodPreviewScanSummary": "{{fileCount}} tệp, tổng {{totalSize}} (đã quét trên máy nguồn).",
"methodItemSftpLimitation": "Mỗi tệp sử dụng cùng một luồng SFTP như bản sao tệp đơn lẻ, lần lượt từng tệp một. Tiến trình được gộp chung cho tất cả tệp, do đó thanh tiến trình di chuyển chậm khi có tệp lớn.",
"methodReason": {
"user_item_sftp": "Bạn đã chọn SFTP từng tệp.",
"user_tar": "Bạn đã chọn dùng tar.",
"tar_unavailable": "Tar không có trên một hoặc cả hai máy — sẽ dùng SFTP từng tệp thay thế.",
"windows_host": "Có máy Windows — không dùng tar.",
"auto_multi_large": "Tự động: nhiều tệp bao gồm một tệp lớn ({{largestSize}}) có dữ liệu nén được — tar gộp thành một lần chuyển.",
"auto_single_large_in_archive": "Tự động: một tệp lớn ({{largestSize}}) trong tập này — SFTP từng tệp.",
"auto_many_incompressible": "Tự động: dữ liệu hầu như không nén được — SFTP từng tệp.",
"auto_many_files": "Tự động: nhiều tệp ({{fileCount}}) — tar giảm chi phí trên mỗi tệp.",
"auto_default": "Tự động: SFTP từng tệp cho tập này."
},
"progressCancel": "Hủy",
"progressCancelling": "Đang hủy…",
"progressStalled": "Đình trệ",
"resumedHint": "Đã kết nối lại với một tác vụ chuyển đang hoạt động được bắt đầu từ cửa sổ khác.",
"transferCancelled": "Đã hủy chuyển",
"transferCancelledCopyHint": "Các tệp chưa hoàn chỉnh có thể còn ở đích.",
"transferCancelledMoveHint": "Các tệp chưa hoàn chỉnh có thể còn ở đích. Tệp nguồn chưa bị xóa.",
"cleanupDestFiles": "Dọn dẹp đích",
"cleanupDestFilesSuccess": "Đã xóa các tệp chưa hoàn chỉnh ở đích",
"cleanupDestFilesPartial": "Không thể xóa một số tệp chưa hoàn chỉnh",
"cleanupDestFilesNothing": "Không có gì để dọn dẹp ở đích",
"cleanupDestFilesError": "Dọn dẹp thất bại",
"retryTransfer": "Thử lại",
"retryTransferError": "Thử lại thất bại",
"transferFailedRetryHint": "Dữ liệu chưa hoàn chỉnh được giữ ở đích. Thử lại sẽ tiếp tục khi kết nối được khôi phục."
"sourceNotDeletedPartial": "Giữ tệp nguồn (truyền một phần)"
},
"tunnels": {
"connect": "Kết nối",
@@ -1261,8 +1153,6 @@
"clientTunnel": "Đường hầm máy khách",
"addClientTunnel": "Thêm đường hầm máy khách",
"active": "Hoạt động",
"start": "Bắt đầu",
"stop": "Dừng",
"typeServerLocalDesc": "Máy chủ hiện tại đến điểm cuối.",
"typeServerRemoteDesc": "Điểm cuối trở về máy chủ hiện tại.",
"typeClientLocalDesc": "Máy tính cục bộ đến điểm cuối.",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "Hạn chế tốc độ: Quá nhiều lần xác minh. Vui lòng chờ {{time}} giây trước khi thử lại.",
"authTokenSaveFailed": "Lưu token xác thực thất bại",
"authTokenMissing": "Máy chủ không trả về mã xác thực mới. Vui lòng đăng nhập lại.",
"failedToLoadServer": "Tải máy chủ thất bại",
"remoteServerRequired": "Cần có máy chủ từ xa. Kết nối máy chủ từ xa trong Cài đặt để sử dụng loại kết nối này."
"failedToLoadServer": "Tải máy chủ thất bại"
},
"messages": {
"registrationDisabled": "Đăng ký tài khoản mới hiện bị quản trị viên vô hiệu hóa. Vui lòng đăng nhập hoặc liên hệ quản trị viên.",
@@ -1831,7 +1720,6 @@
"protocolLabel": "Giao thức",
"domainLabel": "Lãnh địa",
"domainPlaceholder": "không bắt buộc",
"connectToTerminal": "Kết nối đến Terminal",
"connectToFiles": "Kết nối đến Files"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "选择主题、强调色和界面语言。后续均可在“设置”中随时更改。",
"featuresTitle": "Termix 的其他功能",
"featuresIntro": "保存的服务器不仅能在终端中打开。左侧图标还提供了以下强大功能。",
"feature_files": "文件管理器",
"feature_files_desc": "无需离开应用,即可通过 SFTP 浏览、上传、下载及编辑文件。",
"feature_tunnels": "隧道",
"feature_tunnels_desc": "通过服务器转发端口以访问未暴露的服务。",
"feature_snippets": "代码片段",
"feature_snippets_desc": "保存常用命令,一键发送至终端执行。",
"featuresRailHint": "不需要某些功能?可在“设置” > “导航”中隐藏侧边栏的对应图标。",
@@ -449,7 +445,6 @@
"passwordSaved": "密码已保存,输入即可更改",
"key": "密钥",
"credential": "凭据",
"none": "无",
"sshPrivateKey": "SSH 私钥",
"keyType": "密钥类型",
"uploadFile": "上传文件",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "保活间隔(秒)",
"maxKeepaliveMisses": "最大保活失败次数",
"sameHost": "此主机(直接隧道)",
"bindHost": "绑定主机",
"connectionToolbar": "连接工具栏",
"showConnectionToolbar": "显示连接工具栏",
"showConnectionToolbarDesc": "在主机的 SSH、RDP、VNC 和 Telnet 会话中显示工具栏。您也可以暂时将其从工具栏本身隐藏。",
"proxmoxLastSyncStatus": {
"success": "成功"
},
"proxmoxGuestsSelected_one": "{{count}} 个客户主机 — 已选择 {{selected}} 个",
"proxmoxGuestsSelected_other": "{{count}} 个客户主机 — 已选择 {{selected}} 个",
"proxmoxImportButton_one": "导入 {{count}} 个主机",
"proxmoxImportButton_other": "导入 {{count}} 个主机",
"proxmoxResultSkippedNoIp": "{{count}} 已跳过(未找到 IP )",
"proxmoxStatsUrlCopied": "Proxmox 统计信息 URL 已复制到剪贴板",
"copyProxmoxStatsUrlAction": "复制 Proxmox 统计信息 URL",
@@ -896,13 +886,11 @@
"updatedCount": "已更新 {{count}} 台主机",
"friendlyNameLabel": "友好名称",
"descriptionLabel": "描述",
"loadingHost": "正在加载主机...",
"loadingHosts": "正在加载主机...",
"loadingCredentials": "正在加载凭据...",
"noHostsYet": "暂无主机",
"noHostsYetHint": "添加服务器以打开终端、浏览文件和查看指标。",
"noHostsMatchSearch": "没有匹配搜索的主机",
"hostNotFound": "未找到主机",
"searchHosts": "搜索主机...",
"sortHosts": "排序主机",
"sortDefault": "默认顺序",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH 密钥",
"filterAuthCredential": "凭据",
"filterAuthNone": "无",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "步骤 CA",
"filterProtocolGroup": "协议",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "连接到主机",
"clear": "清除",
"paste": "粘贴",
"connected": "已连接",
"clipboardWriteFailed": "复制到剪贴板失败。请确保页面通过 HTTPS 或 localhost 提供服务。",
"clipboardReadFailed": "从剪贴板读取失败。请确保已授予剪贴板权限。",
"tmuxDetach": "从 tmux 会话分离",
"terminalTitle": "终端 - {{host}}",
"terminalWithPath": "终端 - {{host}}:{{path}}",
"runTitle": "运行 {{command}} - {{host}}",
"totpRequired": "需要双因素认证",
"totpCodeLabel": "验证码",
"totpVerify": "验证",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "复制到主机…",
"moveToHost": "移动到主机…",
"copyItemsToHost": "复制 {{count}} 个项目到主机…",
"moveItemsToHost": "移动 {{count}} 个项目到主机…",
"noHostsConnected": "没有其他可用的文件管理器主机。",
"noHostsConnectedHint": "在主机管理器中添加启用文件管理器的其他 SSH 主机。",
"selectDestinationHost": "选择目标主机",
"destinationPath": "目标路径",
"recentDestinations": "最近目标",
"collapseRecentDestinations": "收起最近目标",
"expandRecentDestinations": "展开最近目标",
"browseFolders": "浏览目标文件夹",
"browseDestination": "浏览或输入路径",
"confirmCopy": "复制",
"confirmMove": "移动",
"transferring": "传输中…",
"progressVerifying": "正在验证文件完整性…",
"progressBenchmarking": "选择最快的传输路线…",
"compressing": "压缩中…",
"extracting": "解压中…",
"transferringItems": "正在传输 {{current}}/{{total}} 个项目…",
"transferSuccess": "传输完成",
"transferError": "传输失败",
"transferPartial": "传输完成,但有 {{count}} 个错误",
"transferPartialHint": "无法传输:{{paths}}",
"itemsSummary": "{{count}} 个项目",
"destMustBeDirectory": "对于多项目传输,目标必须是一个目录",
"selectThisFolder": "选择此文件夹",
"browsePathWillBeCreated": "此文件夹尚不存在,将在传输开始时创建。",
"browsePathError": "无法在目标主机上打开此路径。",
"goUp": "向上",
"copyFolderToHost": "复制文件夹到主机…",
"moveFolderToHost": "移动文件夹到主机…",
"hostReady": "就绪",
"hostConnecting": "连接中…",
"hostDisconnected": "未连接",
"hostAuthRequired": "需要身份验证 — 请先在此主机上打开文件管理器",
"hostConnectionFailed": "连接失败",
"metricsTitle": "传输耗时",
"metricsPrepare": "准备目标:{{duration}}",
"metricsCompress": "源端压缩:{{duration}}",
"metricsHopSourceRead": "源 → 服务器:{{throughput}}",
"metricsHopDestSftpWrite": "服务器 → 目标 (SFTP):{{throughput}}",
"metricsHopDestLocalWrite": "服务器 → 目标 (本地):{{throughput}}",
"metricsTransfer": "端到端:{{throughput}} ({{duration}})",
"metricsExtract": "目标端解压:{{duration}}",
"metricsVerify": "SHA-256 已验证: {{duration}}",
"metricsRouteBenchmark": "路由探测 — 直接: {{direct}},中继: {{relay}}",
"metricsSourceDelete": "从源端删除:{{duration}}",
"metricsTotal": "总计:{{duration}}",
"progressCompressing": "正在源主机上压缩…",
"progressExtracting": "正在目标端解压…",
"progressTransferring": "正在传输数据…",
"progressReconnecting": "重新连接中…",
"parallelSegmentsLabel": "并行传输通道",
"parallelSegmentsOption": "{{count}} 个通道",
"parallelSegmentsHint": "大文件会被拆分为 256 MB 的块。多个通道使用独立连接(如同同时进行多个传输),以获得更高的总吞吐量。",
"progressTotalSpeed": "{{speed}} 总计({{lanes}} 通道)",
"progressTransferringItems": "正在传输文件({{current}}/{{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} 个文件",
"sourceNotDeletedPartial": "源文件已保留(部分传输)",
"jumpHostLimitation": "两个主机都必须能从 Termix 服务器访问。不支持直接的主机到主机路由。",
"cancel": "取消",
"methodLabel": "传输方式",
"methodAuto": "自动",
"methodTar": "Tar 归档",
"methodItemSftp": "逐文件 SFTP",
"methodAutoHint": "根据文件数量、大小和可压缩性选择 tar 或逐文件 SFTP。单个文件始终使用流式 SFTP。",
"methodTarHint": "在源端压缩,传输单个归档文件,在目标端解压。要求两个 Unix 主机都有 tar。",
"methodItemSftpHint": "通过 SFTP 逐个传输文件。适用于包括 Windows 在内的所有主机。",
"methodPreviewLoading": "正在计算传输方式…",
"methodPreviewError": "无法预览传输方式。启动时服务器仍会选择方式。",
"methodPreviewWillUseTar": "将使用:Tar 归档",
"methodPreviewWillUseItemSftp": "将使用:逐文件 SFTP",
"methodPreviewScanSummary": "{{fileCount}} 个文件,总计 {{totalSize}}(已在源主机上扫描)。",
"methodItemSftpLimitation": "每个文件使用相同的 SFTP 流(与单文件拷贝一样),一个接一个传输。所有文件的进度合并显示,因此大文件传输时进度条移动缓慢。",
"methodReason": {
"user_item_sftp": "您选择了逐文件 SFTP。",
"user_tar": "您选择了 Tar 归档。",
"tar_unavailable": "一个或多个主机上不可用 tar — 将转而使用逐文件 SFTP。",
"windows_host": "涉及 Windows 主机 — 不使用 tar。",
"auto_multi_large": "自动:多个文件,其中包括一个包含可压缩数据的大文件({{largestSize}})— tar 将其打包成一次传输。",
"auto_single_large_in_archive": "自动:此集合中有一个大文件({{largestSize}})— 使用逐文件 SFTP。",
"auto_many_incompressible": "自动:大部分为不可压缩数据 — 使用逐文件 SFTP。",
"auto_many_files": "自动:文件众多({{fileCount}})— tar 可减少逐文件开销。",
"auto_default": "自动:此集合使用逐文件 SFTP。"
},
"progressCancel": "取消",
"progressCancelling": "正在取消…",
"progressStalled": "已停滞",
"resumedHint": "已重新连接到在另一个窗口中启动的进行中的传输。",
"transferCancelled": "传输已取消",
"transferCancelledCopyHint": "目标位置可能残留部分文件。",
"transferCancelledMoveHint": "目标位置可能残留部分文件。源文件未被删除。",
"cleanupDestFiles": "清理目标位置",
"cleanupDestFilesSuccess": "已从目标位置删除部分文件",
"cleanupDestFilesPartial": "部分文件无法删除",
"cleanupDestFilesNothing": "目标位置无需清理",
"cleanupDestFilesError": "清理失败",
"retryTransfer": "重试",
"retryTransferError": "重试失败",
"transferFailedRetryHint": "部分数据已保留在目标位置。连接恢复后重试将继续。"
"sourceNotDeletedPartial": "源文件已保留(部分传输)"
},
"tunnels": {
"connect": "连接",
@@ -1261,8 +1153,6 @@
"clientTunnel": "客户端隧道",
"addClientTunnel": "添加客户端隧道",
"active": "活跃",
"start": "启动",
"stop": "停止",
"typeServerLocalDesc": "当前主机至端点。",
"typeServerRemoteDesc": "端点回连至当前主机。",
"typeClientLocalDesc": "本地计算机至端点。",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "频率受限:验证尝试次数过多,请等待 {{time}} 秒后再试。",
"authTokenSaveFailed": "保存认证令牌失败",
"authTokenMissing": "服务器未返回新的身份验证令牌。请重新登录。",
"failedToLoadServer": "加载服务器失败",
"remoteServerRequired": "需要远程服务器。请在“设置”中连接远程服务器以使用此连接类型。"
"failedToLoadServer": "加载服务器失败"
},
"messages": {
"registrationDisabled": "新账户注册已被管理员禁用。请登录或联系管理员。",
@@ -1831,7 +1720,6 @@
"protocolLabel": "协议",
"domainLabel": "领域",
"domainPlaceholder": "选修的",
"connectToTerminal": "连接到终端",
"connectToFiles": "连接到文件管理器"
},
"splitScreen": {
+2 -114
View File
@@ -324,10 +324,6 @@
"appearanceIntro": "選擇主題、強調色和語言。這三項都可以在「設定」中更改。",
"featuresTitle": "Termix 還有哪些功能",
"featuresIntro": "您保存的每個伺服器都可以在終端機以外的多個終端機中開啟。以下是左側圖示背後的功能。",
"feature_files": "文件管理器",
"feature_files_desc": "無需離開應用程序,即可透過 SFTP 瀏覽、上傳、下載和編輯檔案。",
"feature_tunnels": "隧道",
"feature_tunnels_desc": "透過伺服器轉送連接埠以存取未公開的服務。",
"feature_snippets": "片段",
"feature_snippets_desc": "儲存您經常執行的命令,並一鍵將其發送到終端。",
"featuresRailHint": "不需要其中任何一個圖示?您可以在「設定」>「導覽」中隱藏側邊欄中的任何圖示。",
@@ -449,7 +445,6 @@
"passwordSaved": "密碼已儲存,輸入即可更改",
"key": "金鑰",
"credential": "憑證",
"none": "無",
"sshPrivateKey": "SSH 私密金鑰",
"keyType": "金鑰類型",
"uploadFile": "上傳檔案",
@@ -611,17 +606,12 @@
"keepaliveIntervalLabel": "保持連線間隔(秒)",
"maxKeepaliveMisses": "最大保持連線遺失次數",
"sameHost": "此主機(直接通道)",
"bindHost": "綁定主機",
"connectionToolbar": "連接工具列",
"showConnectionToolbar": "顯示連接工具列",
"showConnectionToolbarDesc": "在主機的 SSH、RDP、VNC 和 Telnet 會話中顯示工具列。您也可以暫時將其從工具列本身隱藏。",
"proxmoxLastSyncStatus": {
"success": "成功"
},
"proxmoxGuestsSelected_one": "{{count}} 個訪客主機 — 已選取 {{selected}}",
"proxmoxGuestsSelected_other": "{{count}} 個訪客主機 — 已選取 {{selected}}",
"proxmoxImportButton_one": "匯入 {{count}} 台主機",
"proxmoxImportButton_other": "匯入 {{count}} 台主機",
"proxmoxResultSkippedNoIp": "{{count}} 已跳過(找不到 IP 位址)",
"proxmoxStatsUrlCopied": "Proxmox 統計資料 URL 已複製到剪貼簿",
"copyProxmoxStatsUrlAction": "複製 Proxmox 統計資料 URL",
@@ -896,13 +886,11 @@
"updatedCount": "已更新 {{count}} 台主機",
"friendlyNameLabel": "易記名稱",
"descriptionLabel": "描述",
"loadingHost": "正在載入主機...",
"loadingHosts": "正在載入主機...",
"loadingCredentials": "正在載入憑證...",
"noHostsYet": "尚無主機",
"noHostsYetHint": "新增伺服器以開啟終端、瀏覽文件和查看指標。",
"noHostsMatchSearch": "沒有符合搜尋的主機",
"hostNotFound": "找不到主機",
"searchHosts": "搜尋主機...",
"sortHosts": "排序主機",
"sortDefault": "預設排序",
@@ -925,7 +913,6 @@
"filterAuthKey": "SSH 金鑰",
"filterAuthCredential": "憑證",
"filterAuthNone": "無",
"filterAuthOpkssh": "OPKSSH",
"filterAuthStepca": "步驟 CA",
"filterProtocolGroup": "通訊協定",
"filterProtocolSsh": "SSH",
@@ -1114,13 +1101,7 @@
"connect": "連線至主機",
"clear": "清除",
"paste": "貼上",
"connected": "已連線",
"clipboardWriteFailed": "複製到剪貼簿失敗。請確認頁面是透過 HTTPS 或 localhost 提供。",
"clipboardReadFailed": "從剪貼簿讀取失敗。請確認已授予剪貼簿權限。",
"tmuxDetach": "從 tmux 工作階段中斷連線",
"terminalTitle": "終端機 - {{host}}",
"terminalWithPath": "終端機 - {{host}}:{{path}}",
"runTitle": "正在執行 {{command}} - {{host}}",
"totpRequired": "需要雙因素驗證",
"totpCodeLabel": "驗證碼",
"totpVerify": "驗證",
@@ -1148,109 +1129,20 @@
}
},
"transfer": {
"copyToHost": "複製到主機…",
"moveToHost": "移動到主機…",
"copyItemsToHost": "複製 {{count}} 個項目到主機…",
"moveItemsToHost": "將 {{count}} 個項目移至主機…",
"noHostsConnected": "無其他可用的檔案管理員主機。",
"noHostsConnectedHint": "在主機管理員中新增另一個已啟用檔案管理員的 SSH 主機。",
"selectDestinationHost": "選擇目標主機",
"destinationPath": "目標路徑",
"recentDestinations": "最近使用的目的地",
"collapseRecentDestinations": "收起最近使用的目的地",
"expandRecentDestinations": "展開最近使用的目的地",
"browseFolders": "瀏覽目標資料夾",
"browseDestination": "瀏覽或輸入路徑",
"confirmCopy": "複製",
"confirmMove": "移動",
"transferring": "傳送中…",
"progressVerifying": "正在驗證檔案完整性…",
"progressBenchmarking": "選擇最快的傳輸路線…",
"compressing": "壓縮中…",
"extracting": "解壓縮中…",
"transferringItems": "正在傳送 {{total}} 個項目中的第 {{current}} 個…",
"transferSuccess": "傳送完成",
"transferError": "傳送失敗",
"transferPartial": "傳送完成,有 {{count}} 個錯誤",
"transferPartialHint": "無法傳送:{{paths}}",
"itemsSummary": "{{count}} 個項目",
"destMustBeDirectory": "多項目傳送時,目標必須是資料夾",
"selectThisFolder": "選擇此資料夾",
"browsePathWillBeCreated": "此資料夾尚不存在。傳送開始時將會建立。",
"browsePathError": "無法在目標主機上開啟此路徑。",
"goUp": "向上",
"copyFolderToHost": "複製資料夾至主機…",
"moveFolderToHost": "移動資料夾至主機…",
"hostReady": "就緒",
"hostConnecting": "連線中…",
"hostDisconnected": "未連線",
"hostAuthRequired": "需要驗證 — 請先在此主機上開啟檔案管理員",
"hostConnectionFailed": "連線失敗",
"metricsTitle": "傳送時間計量",
"metricsPrepare": "準備目標:{{duration}}",
"metricsCompress": "在來源主機壓縮: {{duration}}",
"metricsHopSourceRead": "來源主機 → 伺服器: {{throughput}}",
"metricsHopDestSftpWrite": "伺服器 → 目標主機 (SFTP): {{throughput}}",
"metricsHopDestLocalWrite": "伺服器 → 目標主機 (本機): {{throughput}}",
"metricsTransfer": "端對端: {{throughput}} ({{duration}})",
"metricsExtract": "在目標主機解壓縮: {{duration}}",
"metricsVerify": "SHA-256 已驗證: {{duration}}",
"metricsRouteBenchmark": "路由探測 — 直接: {{direct}},中繼: {{relay}}",
"metricsSourceDelete": "從來源主機刪除: {{duration}}",
"metricsTotal": "總計: {{duration}}",
"progressCompressing": "在來源主機壓縮中…",
"progressExtracting": "在目標主機解壓縮中…",
"progressTransferring": "傳輸資料中…",
"progressReconnecting": "重新連線中…",
"parallelSegmentsLabel": "平行傳輸通道",
"parallelSegmentsOption": "{{count}} 個通道",
"parallelSegmentsHint": "大型檔案會分割成 256 MB 區塊。多個通道會使用獨立的連線(如同啟動多個傳輸作業)以獲取更高的總傳輸速率。",
"progressTotalSpeed": "總計 {{speed}}({{lanes}} 個通道)",
"progressTransferringItems": "傳輸檔案中({{current}} / {{total}})…",
"progressBytes": "{{transferred}} / {{total}}",
"progressItems": "{{current}} / {{total}} 個檔案",
"sourceNotDeletedPartial": "保留來源檔案(部分傳輸)",
"jumpHostLimitation": "兩台主機都必須可從 Termix 伺服器連線。不支援主機對主機的直接路由。",
"cancel": "取消",
"methodLabel": "傳輸方法",
"methodAuto": "自動",
"methodTar": "Tar 封存",
"methodItemSftp": "逐檔 SFTP",
"methodAutoHint": "根據檔案數量、大小及可壓縮性選擇 tar 封存或逐檔 SFTP。單一檔案一律使用串流 SFTP。",
"methodTarHint": "在來源主機壓縮,傳輸一個封存檔,在目標主機解壓縮。需兩台 Unix 主機皆安裝 tar。",
"methodItemSftpHint": "透過 SFTP 逐一傳輸每個檔案。適用於所有主機,包括 Windows。",
"methodPreviewLoading": "正在計算傳輸方法…",
"methodPreviewError": "無法預覽傳輸方法。啟動時伺服器仍會選擇一個方法。",
"methodPreviewWillUseTar": "將使用:Tar 封存",
"methodPreviewWillUseItemSftp": "將使用:逐檔 SFTP",
"methodPreviewScanSummary": "{{fileCount}} 個檔案,總計 {{totalSize}}(已在來源主機掃描)。",
"methodItemSftpLimitation": "每個檔案依序使用相同的 SFTP 串流作為單一檔案複製。進度會合併所有檔案,因此處理大型檔案時進度條會緩慢移動。",
"methodReason": {
"user_item_sftp": "您選擇了逐檔 SFTP。",
"user_tar": "您選擇了 tar 封存。",
"tar_unavailable": "一或多部主機無法使用 tar,將改用逐檔 SFTP。",
"windows_host": "涉及 Windows 主機,因此不使用 tar。",
"auto_multi_large": "自動:多個檔案中包含一個具可壓縮資料的大型檔案 ({{largestSize}}),tar 會將所有檔案封裝成單一傳輸。",
"auto_single_large_in_archive": "自動:此集合中有一個大型檔案 ({{largestSize}}) — 逐檔 SFTP。",
"auto_many_incompressible": "自動:多為不可壓縮資料 — 逐檔 SFTP。",
"auto_many_files": "自動:多個檔案 ({{fileCount}}) — tar 可減少逐檔傳輸的額外負擔。",
"auto_default": "自動:此集合使用逐檔 SFTP。"
},
"progressCancel": "取消",
"progressCancelling": "正在取消…",
"progressStalled": "停滯",
"resumedHint": "已重新連線至在另一個視窗中啟動的進行中傳輸。",
"transferCancelled": "傳輸已取消",
"transferCancelledCopyHint": "部分檔案可能仍留在目的地。",
"transferCancelledMoveHint": "部分檔案可能仍留在目的地,來源檔案未被移除。",
"cleanupDestFiles": "清理目的地",
"cleanupDestFilesSuccess": "已從目的地移除部分檔案",
"cleanupDestFilesPartial": "部分檔案無法移除",
"cleanupDestFilesNothing": "目的地無需清理",
"cleanupDestFilesError": "清理失敗",
"retryTransfer": "重試",
"retryTransferError": "重試失敗",
"transferFailedRetryHint": "部分資料已保留在目的地。重新連線後,重試將從斷點繼續。"
"sourceNotDeletedPartial": "保留來源檔案(部分傳輸)"
},
"tunnels": {
"connect": "連線",
@@ -1261,8 +1153,6 @@
"clientTunnel": "用戶端通道",
"addClientTunnel": "新增用戶端通道",
"active": "作用中",
"start": "啟動",
"stop": "停止",
"typeServerLocalDesc": "從目前主機到端點。",
"typeServerRemoteDesc": "從端點返回目前主機。",
"typeClientLocalDesc": "從本機電腦到端點。",
@@ -1374,8 +1264,7 @@
"resetCodeRateLimitedWithTime": "速率限制:驗證嘗試次數過多。請等待 {{time}} 秒後再試。",
"authTokenSaveFailed": "無法儲存驗證權杖",
"authTokenMissing": "伺服器未傳回新的身份驗證令牌。請重新登入。",
"failedToLoadServer": "無法載入伺服器",
"remoteServerRequired": "需要遠端伺服器。請在「設定」中連接遠端伺服器以使用此連線類型。"
"failedToLoadServer": "無法載入伺服器"
},
"messages": {
"registrationDisabled": "管理員目前已停用新帳戶註冊。請登入或聯絡管理員。",
@@ -1831,7 +1720,6 @@
"protocolLabel": "協定",
"domainLabel": "領域",
"domainPlaceholder": "選修的",
"connectToTerminal": "連線至終端機",
"connectToFiles": "連線至檔案管理員"
},
"splitScreen": {
+49 -2
View File
@@ -143,8 +143,55 @@ const SETTINGS_WRITERS: Record<
updatePluginHostSettings(pluginId, hostId!, values),
};
function toHostRecord(host: unknown): PluginHostRecord {
return host as PluginHostRecord;
/** Both host shapes the shell holds: its own list and the API's. */
type ShellHost = Omit<Partial<PluginHostRecord>, "id" | "parentHostId"> & {
id: string | number;
parentHostId?: string | number | null;
};
/**
* The shell's host as the SDK types it. Copied field by field, so a core
* field reaches plugins only once it is part of PluginHostRecord.
*/
export function toHostRecord(host: ShellHost): PluginHostRecord {
return {
id: String(host.id),
name: host.name ?? "",
ip: host.ip ?? "",
port: host.port,
username: host.username,
folder: host.folder,
tags: host.tags,
pin: host.pin,
notes: host.notes,
syncId: host.syncId,
parentHostId: host.parentHostId == null ? null : String(host.parentHostId),
authType: host.authType,
credentialId: host.credentialId,
overrideCredentialUsername: host.overrideCredentialUsername,
connectionType: host.connectionType,
connectionOrigin: host.connectionOrigin,
enableSsh: host.enableSsh,
sshPort: host.sshPort,
jumpHosts: host.jumpHosts?.map((jump) => ({ hostId: jump.hostId })),
statusCheckEnabled: host.statusCheckEnabled,
statusCheckInterval: host.statusCheckInterval,
sshOptions: host.sshOptions,
pluginSettings: host.pluginSettings,
protocolAuth: host.protocolAuth,
quickConnectLogin: host.quickConnectLogin,
quickConnectSavable: host.quickConnectSavable,
instanceId: host.instanceId,
status: host.status,
online: host.online,
isShared: host.isShared,
permissionLevel: host.permissionLevel,
sharedExpiresAt: host.sharedExpiresAt,
ownerUsername: host.ownerUsername,
authOverrides: host.authOverrides,
sharedCopy: host.sharedCopy,
localOnly: host.localOnly,
};
}
export const pluginHostBridge: PluginHostBridge = {
+17 -1
View File
@@ -79,9 +79,25 @@ function subscribe(set: Set<() => void>, listener: () => void): () => void {
const noop = () => {};
/**
* A plugin hands back the typed record it got from the SDK, which carries
* fewer fields than the shell's own host. A tab should get the shell's host,
* with whatever the plugin set on top.
*/
export function withShellHost(host: Host | null): Host | null {
if (!host) return host;
const own = hosts.find((entry) => String(entry.id) === String(host.id));
if (!own || own === host) return host;
const merged: Record<string, unknown> = { ...own };
for (const [key, value] of Object.entries(host)) {
if (value !== undefined) merged[key] = value;
}
return merged as Host;
}
/** Forwards to the mounted shell; a no-op before it mounts or after logout. */
export const shell: TabShellCallbacks = {
openTab: (...args) => callbacks?.openTab(...args),
openTab: (host, ...rest) => callbacks?.openTab(withShellHost(host), ...rest),
openSingletonTab: (...args) => callbacks?.openSingletonTab(...args),
closeTab: (...args) => callbacks?.closeTab(...args),
renameTab: (...args) => callbacks?.renameTab(...args),
@@ -62,7 +62,6 @@ describe("ONBOARDING_STEPS", () => {
describe("onboarding step body translations", () => {
const KEYS: Record<string, string[]> = {
welcome: ["hosts", "terminal", "files"],
feature: ["files", "tunnels"],
workflow: ["palette", "split", "dock"],
security: ["credentials", "twofa", "identity", "sharing"],
done: ["settings", "rerun", "docs"],
+34
View File
@@ -0,0 +1,34 @@
import { describe, expect, it } from "vitest";
import { toHostRecord } from "@/plugin-host/bridge";
describe("toHostRecord", () => {
it("copies only the fields the SDK types", () => {
const record = toHostRecord({
id: 7,
name: "web",
ip: "10.0.0.7",
port: 22,
username: "root",
parentHostId: 3,
jumpHosts: [{ hostId: 2 }],
pluginSettings: { docker: { enableDocker: true } },
authOverrides: { ssh: { required: true, ownerAuthShared: false } },
password: "secret",
terminalConfig: { fontSize: 14 },
enableDocker: true,
} as never);
expect(record).toMatchObject({
id: "7",
name: "web",
parentHostId: "3",
jumpHosts: [{ hostId: 2 }],
pluginSettings: { docker: { enableDocker: true } },
authOverrides: { ssh: { required: true, ownerAuthShared: false } },
});
const loose = record as unknown as Record<string, unknown>;
expect(loose).not.toHaveProperty("password");
expect(loose).not.toHaveProperty("terminalConfig");
expect(loose).not.toHaveProperty("enableDocker");
});
});
+6 -4
View File
@@ -110,13 +110,13 @@ function activate(app: TermixApp) {
kind: "connect",
priority: 500,
tabType: "fixture-tab",
when: (host) => host.enableFixture === true,
when: (host) => host.pluginSettings?.fixture?.enableFixture === true,
});
app.registerPaletteEntry({
id: "fixture-entry",
titleKey: "title",
scope: "host",
when: (host) => host?.enableFixture === true,
when: (host) => host?.pluginSettings?.fixture?.enableFixture === true,
run: (shell, host) => shell.openTab(host ?? null, "fixture-tab"),
});
app.registerDashboardCard({
@@ -262,7 +262,7 @@ describe("registries through the app object", () => {
it("offers a host action only where it applies, and picks it as the default connect", async () => {
await mount();
const on = host({ enableFixture: true } as Partial<Host>);
const on = host({ pluginSettings: { fixture: { enableFixture: true } } });
const off = host();
expect(hostActionsFor(listHostActions(), on).map((a) => a.id)).toEqual([
"fixture-connect",
@@ -307,7 +307,9 @@ describe("registries through the app object", () => {
it("offers a per-host palette entry that runs against the shell", async () => {
const app = await mount();
const target = host({ enableFixture: true } as Partial<Host>);
const target = host({
pluginSettings: { fixture: { enableFixture: true } },
});
const entries = paletteEntriesFor(listPaletteEntries(), "host", target);
expect(entries.map((entry) => entry.id)).toEqual(["fixture-entry"]);
expect(paletteEntriesFor(listPaletteEntries(), "host", host())).toEqual([]);
@@ -0,0 +1,52 @@
import { afterEach, describe, expect, it, vi } from "vitest";
import {
resetShellBridge,
setShellCallbacks,
setShellHosts,
shell,
withShellHost,
} from "@/plugin-host/shell-bridge";
import type { Host } from "@/types/ui-types";
const saved = {
id: "5",
name: "db",
ip: "10.0.0.5",
port: 22,
username: "root",
useSocks5: true,
socks5Host: "proxy",
} as unknown as Host;
afterEach(() => resetShellBridge());
describe("withShellHost", () => {
it("fills a typed record back in from the shell's own host", () => {
setShellHosts([saved]);
const merged = withShellHost({
id: "5",
name: "db (renamed)",
notes: undefined,
} as unknown as Host);
expect(merged).toMatchObject({
name: "db (renamed)",
useSocks5: true,
socks5Host: "proxy",
});
});
it("keeps a host the shell does not list as it is", () => {
setShellHosts([saved]);
const quick = { id: "quick-connect-1", ip: "1.2.3.4" } as unknown as Host;
expect(withShellHost(quick)).toBe(quick);
expect(withShellHost(null)).toBeNull();
});
it("is what shell.openTab hands the mounted shell", () => {
setShellHosts([saved]);
const openTab = vi.fn();
setShellCallbacks({ openTab } as never);
shell.openTab({ id: "5", name: "db" } as unknown as Host, "terminal");
expect(openTab.mock.calls[0][0]).toMatchObject({ socks5Host: "proxy" });
});
});