mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-29 22:55:24 +00:00
* fix: keep concurrent ssh pool connects from overwriting each other (#1619) * fix: stop auto-accepting changed jump host keys (#1620) A jump hop whose key no longer matched the pinned fingerprint was silently accepted and the pin overwritten. Background status probes reconnect to jump hosts every cycle, so a MITM on that hop got the credentials with no user interaction. Changed jump host keys now go through the same path as any other host: prompt when there is a terminal socket, otherwise refuse. * fix(electron): validate external login URL scheme and callback port (#1621) * fix(plugins): read artifact manifest with the same tar parser as the unpack (#1622) The consent check read the first manifest.json with a hand-written tar reader, while the unpack keeps the last one and also follows pax and long-name headers. An archive with two manifests could pass the check with one capability list and get granted another. Read the manifest with node-tar, count only plain files, and refuse archives that hold more than one manifest.json. * fix: only trust the server's origin in the desktop login frame (#1624) The desktop sign-in iframe accepted AUTH_SUCCESS and system browser requests from whatever page it had navigated to, and posted replies (including 2FA temp tokens) to any origin. Messages must now come from the server's origin and replies are posted to it. The web UI also treated any framing page as the desktop app and posted the JWT to it. It now also requires the Termix-Desktop user agent. * fix: check trusted proxy login against nginx's peer, not nginx (#1625) The backend only sees the bundled nginx on loopback, so the allowlist could only work by trusting 127.0.0.1, which let any client that reached nginx log in as anyone by sending the identity headers. nginx now passes its own TCP peer (before real_ip rewriting) in X-Termix-Proxy-Peer, and loopback connections are judged by that address instead. * fix: keep foreign keys on during user data import (#1626) Import credentials before hosts and remap the file's credential ids to the ones created here, so hosts and protocol logins no longer point at another server's ids. With rows written in dependency order, the import no longer turns off SQLite foreign keys on the shared connection. The uploaded file is now removed on every exit path. * fix: enforce unique usernames (#1628) * fix: enforce unique usernames Registration checked for a taken name, hashed the password, then inserted, with nothing in the schema enforcing uniqueness. Concurrent sign-ups could create two accounts with one name, after which login, password reset, proxy login and admin lookups by username picked between them arbitrarily. Add a unique index on users.username for every dialect. Existing duplicates are renamed (later rows get a -<id> suffix, the oldest keeps the name) rather than deleted. Registration and admin user creation now return the same 409 when the insert loses the race. * fix: avoid username collisions during migration * fix: don't auto-enable synced plugins signed only by a server-sent key (#1623) * fix: don't auto-enable synced plugins signed only by a server-sent key Registry keys a linked server sends still let its plugins load on the desktop, but no longer count as a signer for switching them on or copying their grants. Keys the desktop added itself keep their trust. * fix: enforce local plugin trust across remote source labels * fix: require positive local trust for synced plugin keys * fix(desktop): harden external editor and session cookie IPC (#1627) * fix(desktop): stop the renderer choosing the external editor binary or reading the session cookie open-external-editor now launches only the editor saved from a file dialog and refuses to hand executable file types to the OS opener. The unused get-session-cookie and wait-session-cookie channels, which returned the httpOnly jwt, are removed. * fix: validate setting keys before editor authorization * fix(sidebar): sort hosts by IP address numerically (#1629) * fix(desktop): find spawn-helper in universal macOS builds (#1630) The universal build ships app-arm64.asar and app-x64.asar instead of app.asar, so node-pty's helper path rewrite never pointed at the unpacked copy and every local terminal failed with posix_spawnp failed. * fix(sync): send shared hosts with text columns in their stored form (#1631) resolveHostById turns forceKeyboardInteractive into a boolean, and the shared-host export passed it on as is. A desktop could not bind the boolean into the text column, so every shared host failed to apply. * fix: drop ssh_data.vault_profile_id so removing the vault plugin keeps hosts writable (#1633) The vault plugin renames vault_profiles to p_vault_profiles, and SQLite rewrites ssh_data's foreign key to follow it. Uninstalling the plugin then dropped p_vault_profiles and left ssh_data pointing at a missing table, so creating, cloning and deleting hosts failed with "no such table: main.p_vault_profiles". Postgres and MySQL refused the uninstall instead. The column was already copied into the vault plugin's host settings by 2.9, so retire it on every engine. The SQLite boot drop also repairs databases already in the broken state; MySQL drops the column's foreign key first. * fix(sync): let a linked desktop enable mirrored plugins it does not trust on its own (#1632) * fix(sync): let a linked desktop enable mirrored plugins it does not trust on its own * fix(sync): switch off an untrusted mirrored plugin when the server updates it * fix: require local consent for mirrored plugin activation * docs: describe consent fields on the plugin state endpoint * fix(i18n): keep Indonesian technical terms consistent (#1636) Use the English terms Indonesian users know for tunnel, snippet, deploy, file manager, remote desktop, jump host, passphrase, sidebar, toolbar, endpoint, browser and SSH agent, instead of mixing literal translations (terowongan, cuplikan, terapkan, bilah sisi, titik akhir, ...) with the English words. Match the split shortcuts to the split screen menu. Also fix the user data export description, which said secrets are encrypted while the English says they are decrypted. * fix(settings): leave user manage view when switching admin sections (#1649) The admin panel stays mounted across Settings pages, so an open user manage view kept replacing every other admin section until Back to users was clicked. Reset it whenever the selected section changes. * fix(sync): don't delete a local row when the server can't send its copy (#1650) * fix(sync): don't delete a local row when the server can't send its copy A push conflict on a live record whose server row failed to serialize came back as row: null, deleted: false, and the desktop treated that as a delete. The server now rejects that op as unavailable, the desktop never deletes on a conflict without a row, and serialization failures are logged. * fix(sync): retry temporarily unavailable records * fix: smooth host editor jumps to lower sections * chore: add changelog entries for 26.10.2 fixes * fix: stop building ssh2 native crypto in the docker image (#1644) * chore: test that an update keeps a changed auth type (#1601) * feat: option to hide the sidebar after opening a host (#1652) * feat: sort the dashboard host status card (Plugin-Host-Metrics#6) * fix: let the hover side menu overlay content instead of resizing it (Plugin-Remote-Desktop#2) * fix: say the server is down and keep retrying instead of a database error (#1637) * fix: show why a client tunnel failed to start (Plugin-Tunnels#2) * fix(sdk): skip comment-only chunks when splitting migrations * feat: setting to let the hover side menu push content again * fix: use the vite proxy for plugin sockets on any dev port * feat(sdk): let a plugin raise its public route rate limit * chore: update translations * chore: add the overview video to the readme * chore: update the overview video and add a play button to its thumbnail * feat: plugin builds bundle worker entries and import wasm and fonts as bytes * feat: plugin packs include LICENSE and NOTICE * chore: drop guacd from compose files and dev runner * chore: update remote desktop origin comment for the built-in engine * fix: show plugin names and descriptions in the UI language (#1658) * fix: show plugin names and descriptions in the UI language Read plugin.name and plugin.description from each plugin's own locale namespace, falling back to the manifest, everywhere core shows a plugin's name: the Plugins manager, onboarding picker, host editor tabs and sections, host filters and bulk actions, beta updates, interface presets and plugin crash/loading notices. * docs(sdk): document plugin.name and plugin.description locale keys --------- Co-authored-by: ZacharyZcR <zkl205305@gmail.com> * fix(hosts): reject or infer a missing authType on host create (#1664) Creating an SSH host through the API without authType hit the NOT NULL auth_type column and came back as a 500. The create route now infers the type from the credential, key or password in the body, falls back to the host defaults, and otherwise answers 400. A non-string authType is a 400 on create and update. * chore: changelog for merged plugin name and host auth type PRs * fix: move macOS split pane navigation to Cmd+Option+Arrow * fix: pick a free port for the desktop backend when 30001 is taken (#1663) * feat: build the Windows desktop app for ARM64 (#1615) * fix(sync): keep the changes cursor within the 32-bit seq column (#1665) The desktop learned the server's entity types by asking for changes after Number.MAX_SAFE_INTEGER. sync_records.seq is a 32-bit integer on Postgres, which rejects that bound value, so every pass needing the probe failed with 22003 out of range. The server now clamps the cursor to the largest seq the column holds and answers 400 for a cursor or limit that is not a non-negative integer. The desktop asks for a one-row page from its saved cursor instead. * fix(audit): coalesce identical plugin routine audits so they cannot flush the log (#1667) Successful plugin_as_user and plugin_service_* entries written by a plugin with the same user, action, resource and details are recorded once per 10 minutes. Failures and every other action are still written each time. * feat(plugins): publish host.created when a host is added (#1668) Plugins that keep an inventory of hosts had no way to hear about a new one short of polling. Core now publishes host.created with the same { hostId, userId } payload as host.updated wherever a host row is created: the host create route, ctx.hosts.create, JSON and SSH config bulk import, database file import, and sync writing a host it did not have yet. * fix: show the login for signed-out full-screen view links and return to them (#1669) A ?view= link opened without a session spun forever: the gate rendered the bare view when the session check failed, so the plugin runtime never started and the view never registered. A regular browser now keeps the link in sessionStorage, shows the normal login and opens the link again after any login, including redirect logins. Only same-origin paths with a view are restored. The desktop app, embedded sign-in frames and guest views keep their current behavior. * fix(desktop): apply linked server proxy headers and certificate exception to WebSockets (#1670) * fix(desktop): send linked server proxy headers on WebSocket upgrades isLinkedOrigin compared the request origin with the link's http(s) origin, so the terminal WebSocket (wss://host/...) never matched and its upgrade went out without the proxy headers and basic auth. Behind a forward-auth proxy that upgrade was redirected to the login and the terminal closed with "connection closed unexpectedly". ws and wss now count as http and https for the comparison, the same mapping the WebSocket handshake itself uses, with host and port still matched exactly. * fix(desktop): allow a linked server's self-signed certificate for its WebSockets isInvalidCertificateAllowedForUrl compared the URL with a local getOrigin copy, so wss://host never matched the link's https://host origin and an allowed self-signed certificate did not cover the terminal and tunnel sockets. It now uses linkedServer.isLinkedOrigin, which maps ws and wss the same way as the proxy headers, and the local copy is removed. * feat(sdk): let plugins mint a short-lived user session and read a user's locale (#1666) ctx.auth.issueUserToken(userId, { purpose, ttlSeconds }) gives background work a session for calling Termix's own API as an existing user. It needs users:impersonate, defaults to 300s and is capped at 900s, is stored as a normal session row marked as plugin-issued, and every issue is audited. Such sessions are refused on routes that change the user's password, second factors, API keys or linked logins. ctx.users.getLocale(userId) reads the user's UI language under users:read. SDK 1.0.11, plugin API 1.3.0. * chore: changelog for merged sync, audit, event and desktop PRs * feat: add shell.rightEdge slot so plugin panels can push the page over * chore: pin bundled plugins to the latest releases * chore: lint, format, and bump version to 26.10.2 --------- Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com> Co-authored-by: Ferdina Kusumah <19812460+FerdinaKusumah@users.noreply.github.com> Co-authored-by: ZacharyZcR <zkl205305@gmail.com> Co-authored-by: Lukas <80832688+0skater0@users.noreply.github.com>
2609 lines
202 KiB
JSON
2609 lines
202 KiB
JSON
{
|
||
"connection": {
|
||
"retryingIn": "Повторная попытка через {{seconds}} с ({{attempt}}/{{max}})",
|
||
"retryingNow": "Повторная попытка... ({{attempt}}/{{max}})",
|
||
"reconnect": "Переподключиться",
|
||
"close": "Закрыть",
|
||
"failed": "Не удалось подключиться",
|
||
"failedRetrying": "Ошибка подключения, повторная попытка",
|
||
"retryNow": "Повторить сейчас"
|
||
},
|
||
"credentials": {
|
||
"folders": "Папки",
|
||
"folder": "Папка",
|
||
"password": "Пароль",
|
||
"key": "Ключ",
|
||
"sshPrivateKey": "Закрытый SSH-ключ",
|
||
"upload": "Загрузить",
|
||
"keyPassword": "Пароль ключа",
|
||
"sshKey": "SSH-ключ",
|
||
"uploadPrivateKeyFile": "Загрузить файл закрытого ключа",
|
||
"searchCredentials": "Поиск учётных данных...",
|
||
"addCredential": "Добавить учётные данные",
|
||
"caCertificate": "Сертификат УЦ (-cert.pub)",
|
||
"caCertificateDescription": "Необязательно: загрузите или вставьте файл сертификата, подписанного УЦ (например, id_ed25519-cert.pub). Требуется, если ваш SSH-сервер использует авторизацию на основе сертификатов.",
|
||
"uploadCertFile": "Загрузить файл -cert.pub",
|
||
"clearCert": "Очистить",
|
||
"certLoaded": "Сертификат загружен",
|
||
"certPublicKeyLabel": "Сертификат УЦ",
|
||
"certTypeLabel": "Тип сертификата",
|
||
"pasteOrUploadCert": "Вставьте или загрузите сертификат -cert.pub...",
|
||
"hasCaCert": "Есть сертификат УЦ",
|
||
"noCaCert": "Нет сертификата УЦ",
|
||
"noPublicKeyAvailable": "Открытый ключ недоступен. Сначала откройте редактор учётных данных.",
|
||
"deployCommandCopied": "Команда развёртывания скопирована",
|
||
"sortCredentials": "Сортировка учётных данных",
|
||
"sortDefault": "По умолчанию",
|
||
"sortNameAsc": "Имя (А → Я)",
|
||
"sortNameDesc": "Имя (Я → А)",
|
||
"sortUsernameAsc": "Имя пользователя (А → Я)",
|
||
"sortUsernameDesc": "Имя пользователя (Я → А)",
|
||
"filterCredentials": "Фильтр учётных данных",
|
||
"filterClearAll": "Очистить фильтры",
|
||
"filterTypeGroup": "Тип",
|
||
"filterTypePassword": "Пароль",
|
||
"filterTypeKey": "SSH-ключ",
|
||
"filterTagsGroup": "Метки",
|
||
"copyDeployCommand": "Скопировать команду развёртывания",
|
||
"cloneCredentialAction": "Клонировать учётные данные",
|
||
"clonedCredential": "Клонировано: {{name}}",
|
||
"clonedCredentialName": "{{name}} (копия)",
|
||
"shareCredentialAction": "Поделиться учётными данными",
|
||
"sharedBadge": "общий доступ",
|
||
"sharedBy": "Доступ предоставлен пользователем {{owner}}",
|
||
"share": {
|
||
"title": "Поделиться «{{name}}»",
|
||
"description": "Получатели получат собственное зашифрованное копие секретов. Оно обновляется при изменении учётных данных и удаляется при отзыве доступа.",
|
||
"levelUse": "Использование",
|
||
"levelManage": "Управление",
|
||
"levelUseDesc": "Использование: привязать учётные данные к хостам и подключаться. Сами секреты остаются скрытыми.",
|
||
"levelManageDesc": "Управление: также редактировать учётные данные и предоставлять к ним доступ другим.",
|
||
"noAccessEntries": "Эти учётные данные ещё не были переданы другим",
|
||
"accessRevoked": "Доступ отозван",
|
||
"shared": "Доступ к учётным данным предоставлен"
|
||
},
|
||
"deleteCredentialAction": "Удалить учётные данные",
|
||
"editCredentialAction": "Редактировать учётные данные",
|
||
"failedToCloneCredential": "Не удалось клонировать учётные данные",
|
||
"failedToDeleteCredential": "Не удалось удалить учётные данные",
|
||
"keyBadge": "КЛЮЧ",
|
||
"passwordBadge": "ПАР.",
|
||
"renameFolder": "Переименовать папку",
|
||
"deleteFolder": "Удалить папку",
|
||
"deleteCredentialConfirm": "Удалить учётные данные «{{name}}»?",
|
||
"deletedCredential": "Удалено: {{name}}",
|
||
"deploySSHKeyTitle": "Развернуть ключ на хосте",
|
||
"loadingCredentials": "Загрузка учётных данных...",
|
||
"noCredentialsFound": "Учётные данные не найдены",
|
||
"noCredentialsMatchSearch": "Нет учётных данных, соответствующих поиску",
|
||
"addCredentialBtn": "Добавить учётные данные",
|
||
"failedToReorder": "Не удалось изменить порядок учётных данных",
|
||
"failedToMoveCredential": "Не удалось переместить учётные данные",
|
||
"sortManual": "Вручную (перетаскивание для сортировки)",
|
||
"customizeSidebar": "Настроить боковую панель",
|
||
"customizeSidebarDescription": "Выберите внешний вид и поведение списка учётных данных.",
|
||
"customizeDensityTitle": "Плотность",
|
||
"densityComfortableDesc": "По одному элементу в строке с подробной информацией.",
|
||
"densityCompactDesc": "По одной строке на элемент для длинных списков.",
|
||
"displayDensityComfortable": "Комфортная",
|
||
"displayDensityCompact": "Компактная",
|
||
"customizeBehaviorTitle": "Поведение",
|
||
"showCredentialTags": "Показывать метки",
|
||
"showCredentialTagsDesc": "Отображать метки в списке учётных данных",
|
||
"rowDetailsTitle": "Детали строки",
|
||
"rowDetailsDesc": "Выберите, что отображать для каждого элемента.",
|
||
"showUsername": "Имя пользователя",
|
||
"showUsernameDesc": "Показывать имя пользователя под названием учётных данных.",
|
||
"showUsageCount": "Количество хостов",
|
||
"showUsageCountDesc": "Показывать, на скольких хостах используются учётные данные.",
|
||
"showTypeBadge": "Значок типа",
|
||
"showTypeBadgeDesc": "Показывать значок ключа или пароля.",
|
||
"showPinIcon": "Значок закрепления",
|
||
"showPinIconDesc": "Показывать значок рядом с закрепленными учётными данными.",
|
||
"showSharedBadge": "Значок общего доступа",
|
||
"showSharedBadgeDesc": "Показывать значок для учётных данных, которыми с вами поделились.",
|
||
"actionsVisibility": "Действия с учётными данными",
|
||
"actionsVisibilityDesc": "Когда отображаются кнопки подключения и управления для каждого элемента",
|
||
"actionsAlways": "Всегда видны",
|
||
"actionsOnly": "Только подключение, остальное по клику",
|
||
"actionsHover": "Показывать при наведении",
|
||
"actionsClick": "Показывать по клику",
|
||
"customizeSortHint": "Порядок сортировки настраивается в меню сортировки на панели инструментов.",
|
||
"expandActions": "Развернуть действия",
|
||
"collapseActions": "Свернуть действия",
|
||
"backToHosts": "Назад к хостам",
|
||
"backToCredentials": "Назад к учётным данным",
|
||
"searchCredentialsPlaceholder": "Поиск учётных данных…",
|
||
"deployDialogTitle": "Развернуть SSH-ключ",
|
||
"deployDialogDesc": "Развернуть {{name}} в authorized_keys хоста.",
|
||
"targetHostLabel": "Целевой хост",
|
||
"selectHostOption": "Выберите хост...",
|
||
"deployingBtn": "Развертывание...",
|
||
"deployBtn": "Развернуть",
|
||
"keyDeployedSuccess": "Ключ успешно развернут",
|
||
"failedToDeployKey": "Не удалось развернуть ключ",
|
||
"folderRenamedTo": "Папка переименована в «{{name}}»",
|
||
"failedToRenameFolder": "Не удалось переименовать папку",
|
||
"arrangeUnlockedSwitchedToManual": "Переключено на ручной порядок сортировки, чтобы ваши изменения сохранились",
|
||
"arrangeUnlocked": "Разблокируйте перетаскивание для изменения порядка"
|
||
},
|
||
"versionCheck": {
|
||
"updateLinkLabel": "Доступно обновление. Открыть примечания к выпуску на GitHub"
|
||
},
|
||
"common": {
|
||
"scrollTabsLeft": "Прокрутить вкладки влево",
|
||
"scrollTabsRight": "Прокрутить вкладки вправо",
|
||
"close": "Закрыть",
|
||
"minimize": "Свернуть",
|
||
"online": "В сети",
|
||
"offline": "Не в сети",
|
||
"unknown": "Неизвестно",
|
||
"continue": "Продолжить",
|
||
"error": "Ошибка",
|
||
"unsavedChanges": "Несохранённые изменения",
|
||
"more": "Ещё",
|
||
"loading": "Загрузка...",
|
||
"host": "Хост",
|
||
"selectHost": "Выберите хост...",
|
||
"noHostConfigured": "Хосты не настроены",
|
||
"optional": "Необязательно",
|
||
"connect": "Подключиться",
|
||
"copied": "Скопировано",
|
||
"connecting": "Подключение...",
|
||
"openInNewTab": "Открыть в новой вкладке",
|
||
"cancel": "Отмена",
|
||
"username": "Имя пользователя",
|
||
"login": "Вход",
|
||
"logout": "Выход",
|
||
"register": "Регистрация",
|
||
"password": "Пароль",
|
||
"confirmPassword": "Подтвердите пароль",
|
||
"back": "Назад",
|
||
"save": "Сохранить",
|
||
"saving": "Сохранение...",
|
||
"delete": "Удалить",
|
||
"rename": "Переименовать",
|
||
"edit": "Изменить",
|
||
"confirm": "Подтвердить",
|
||
"next": "Далее",
|
||
"previous": "Назад",
|
||
"refresh": "Обновить",
|
||
"language": "Язык",
|
||
"backendReconnected": "Соединение с сервером восстановлено",
|
||
"connectionDegraded": "Соединение с сервером потеряно, восстановление…",
|
||
"reload": "Перезагрузить",
|
||
"create": "Создать",
|
||
"copy": "Копировать",
|
||
"copyFailed": "Не удалось скопировать в буфер обмена",
|
||
"maximize": "Развернуть",
|
||
"restore": "Восстановить",
|
||
"remove": "Удалить",
|
||
"add": "Добавить",
|
||
"update": "Обновить",
|
||
"noResults": "Ничего не найдено",
|
||
"sidebar": "Боковая панель",
|
||
"mobileSidebarDescription": "Отображает мобильную боковую панель.",
|
||
"toggleSidebar": "Показать/скрыть боковую панель",
|
||
"search": "Поиск...",
|
||
"new": "Новый",
|
||
"docs": "Документация"
|
||
},
|
||
"onboarding": {
|
||
"stepCounter": "Шаг {{current}} из {{total}}",
|
||
"stageLabel": "Настройка Termix",
|
||
"setupHeading": "Настройте рабочее пространство",
|
||
"partialHeading": "Несколько новых настроек",
|
||
"signOut": "Выйти",
|
||
"skipPartial": "Не сейчас",
|
||
"skip": "Пропустить настройку",
|
||
"next": "Далее",
|
||
"finish": "Готово",
|
||
"pluginsTitle": "Выберите плагины",
|
||
"pluginsIntro": "Выберите плагины, которые хотите оставить. Рекомендуемые покрывают потребности большинства пользователей.",
|
||
"pluginsUpgradeNote": "Всё, что вы используете сейчас, останется без изменений. Отключите или удалите то, что вам не нужно.",
|
||
"pluginsRemoveNote": "Плагины, отмеченные как «Удалить», будут удалены с этого сервера вместе с их данными после нажатия «Далее». Вы сможете установить любой из них снова в любое время на вкладке «Плагины» (требуется подключение к интернету). Выберите «Выкл», чтобы оставить плагин установленным, но отключённым.",
|
||
"pluginsUseRecommended": "Рекомендуемые",
|
||
"pluginsEnableAll": "Включить все",
|
||
"pluginsDisableAll": "Выключить все",
|
||
"pluginsCounts": "{{enabled}} включено, {{disabled}} выключено, {{removed}} для удаления",
|
||
"pluginsRecommended": "Рекомендуемые",
|
||
"pluginsKeptBecause": "Оставлен, так как {{names}} требует его",
|
||
"pluginsChoice_enabled": "Вкл",
|
||
"pluginsChoice_disabled": "Выкл",
|
||
"pluginsChoice_remove": "Удалить",
|
||
"pluginsConsentTitle": "Помогите улучшить Termix",
|
||
"pluginsConsentNote": "Вы можете отключить это в любое время на вкладке «Плагины».",
|
||
"pluginsApplying": "Применение ваших выборов",
|
||
"pluginsSomeFailed": "Некоторые плагины не удалось изменить. Вы можете исправить это позже на вкладке «Плагины». Нажмите «Далее», чтобы продолжить.",
|
||
"pluginsApplyFailed": "Ваши выборы не удалось сохранить. Повторите попытку или продолжите и измените их позже на вкладке «Плагины».",
|
||
"pluginsLoadFailed": "Не удалось загрузить список плагинов. Вы сможете выбрать плагины позже на вкладке «Плагины».",
|
||
"presetTitle": "Сколько информации вы хотите видеть на экране?",
|
||
"presetIntro": "Выберите, сколько элементов отображать на экране.",
|
||
"presetChangeLater": "Вы можете переключить пресеты или изменить любую настройку позже в разделе «Интерфейс» в Настройках.",
|
||
"appearanceTitle": "Сделайте его своим",
|
||
"appearanceIntro": "Выберите тему, акцентный цвет, шрифт и язык. Изменения применяются сразу, и вы сможете изменить их позже в Настройках.",
|
||
"securityTitle": "Защитите свой аккаунт",
|
||
"securityIntro": "Добавьте ключ доступа или приложение-аутентификатор к вашему аккаунту. Вы также можете сделать это позже в разделе «Безопасность» в Настройках.",
|
||
"desktopTitle": "Как вы хотите использовать Termix?",
|
||
"desktopBody": "Вы можете изменить это в любое время в разделе «Синхронизация» на боковой панели.",
|
||
"desktopLocalTitle": "Только на этом устройстве",
|
||
"desktopLocalBody": "Всё хранится здесь. Ничего настраивать не нужно.",
|
||
"desktopLinkTitle": "С моим сервером Termix",
|
||
"desktopLinkBody": "Войдите на свой сервер, чтобы использовать одни и те же хосты и настройки на всех устройствах.",
|
||
"desktopLinked": "Привязано к {{server}}",
|
||
"pluginsDocsLink": "Подробнее о каждом"
|
||
},
|
||
"desktopUpdates": {
|
||
"title": "Десктопное приложение",
|
||
"mode": "Обновления",
|
||
"modeHint": "Как приложение получает новые версии.",
|
||
"manualModeHint": "Эта копия не может обновляться автоматически, поэтому Termix только уведомляет вас о выходе новой версии.",
|
||
"modeAutomatic": "Автоматически",
|
||
"modePrompt": "Спрашивать",
|
||
"modeNever": "Никогда",
|
||
"automaticBody": "Скачивать новые версии в фоновом режиме и устанавливать их при перезапуске.",
|
||
"promptBody": "Уведомлять о выходе новой версии и позволять мне выбрать время для скачивания.",
|
||
"neverBody": "Не проверять наличие обновлений. Вы всё равно можете проверить их вручную в Настройках.",
|
||
"onboardingTitle": "Обновления приложения",
|
||
"onboardingBody": "Десктопное приложение теперь может обновляться самостоятельно. Выберите, как вы хотите получать новые версии. Это можно изменить позже в Настройках, раздел Обновления.",
|
||
"onboardingManual": "Эта копия приложения была установлена таким образом, что не может обновляться автоматически, поэтому Termix будет уведомлять вас о выходе новой версии со ссылкой для скачивания.",
|
||
"status": "Версия {{version}}",
|
||
"statusIdle": "Ещё не проверено",
|
||
"statusChecking": "Проверка обновлений",
|
||
"statusAvailable": "Доступна версия {{version}}",
|
||
"statusDownloading": "Скачивание {{version}} ({{progress}}%)",
|
||
"statusReady": "Версия {{version}} готова. Перезапустите приложение для установки.",
|
||
"statusUpToDate": "У вас установлена последняя версия",
|
||
"statusError": "Не удалось проверить наличие обновлений. Попробуйте позже.",
|
||
"checkNow": "Проверить сейчас",
|
||
"download": "Скачать",
|
||
"restart": "Перезапустить сейчас",
|
||
"later": "Позже",
|
||
"available": "Доступна Termix {{version}}",
|
||
"manualHint": "Скачайте её со страницы релизов и установите поверх текущей версии.",
|
||
"ready": "Termix {{version}} готова к установке",
|
||
"readyHint": "Она будет установлена при следующем перезапуске Termix."
|
||
},
|
||
"nav": {
|
||
"home": "Главная",
|
||
"terminal": "Терминал",
|
||
"close": "Закрыть",
|
||
"hostTabTitle": "{{username}}@{{ip}}:{{port}}",
|
||
"copyPassword": "Копировать пароль",
|
||
"copySudoPassword": "Копировать пароль sudo",
|
||
"passwordCopied": "Пароль скопирован в буфер обмена",
|
||
"failedToCopyPassword": "Не удалось скопировать пароль",
|
||
"refreshTab": "Обновить соединение",
|
||
"renameTab": "Переименовать вкладку",
|
||
"dashboard": "Панель управления",
|
||
"quickConnect": "Быстрое подключение",
|
||
"openAsTabHint": "Ctrl+клик или клик средней кнопкой мыши для открытия на вкладке",
|
||
"openAsTab": "Открыть на вкладке",
|
||
"openInRightDock": "Открыть в правой панели",
|
||
"closeRightDock": "Закрыть правую панель",
|
||
"toggleRightDock": "Переключить правую панель",
|
||
"hosts": "Хосты",
|
||
"credentials": "Учётные данные",
|
||
"connections": "Подключения",
|
||
"keepSideMenuOpen": "Держать меню открытым",
|
||
"collapseSideMenu": "Свернуть меню",
|
||
"roleAdministrator": "Администратор",
|
||
"roleUser": "Пользователь",
|
||
"sync": "Синхронизация",
|
||
"reconnectDisconnectedTerminals": "Переподключить все отключённые терминалы",
|
||
"reconnectingTerminals_one": "Переподключение {{count}} терминала",
|
||
"reconnectingTerminals_few": "Переподключение {{count}} терминалов",
|
||
"reconnectingTerminals_many": "Переподключение {{count}} терминалов",
|
||
"reconnectingTerminals_other": "Переподключение {{count}} терминалов",
|
||
"noDisconnectedTerminals": "Нет отключённых терминалов, готовых к переподключению",
|
||
"reconnectTerminalsFailed_one": "Не удалось начать переподключение {{count}} терминала",
|
||
"reconnectTerminalsFailed_few": "Не удалось начать переподключение {{count}} терминалов",
|
||
"reconnectTerminalsFailed_many": "Не удалось начать переподключение {{count}} терминалов",
|
||
"reconnectTerminalsFailed_other": "Не удалось начать переподключение {{count}} терминалов",
|
||
"fullscreenUnsupported": "Полноэкранный режим не поддерживается этим браузером",
|
||
"fullscreenFailed": "Не удалось переключить полноэкранный режим",
|
||
"resetSidebarWidth": "Сбросить ширину",
|
||
"collapseSidebar": "Свернуть боковую панель",
|
||
"openSidebar": "Открыть боковую панель",
|
||
"confirmCloseHost": "Закрыть {{host}}?",
|
||
"enterFullscreen": "Войти в полноэкранный режим (Ctrl+Shift+F)",
|
||
"exitFullscreen": "Выйти из полноэкранного режима (Ctrl+Shift+F)",
|
||
"group": {
|
||
"objects": "Мои",
|
||
"tools": "Инструменты",
|
||
"system": "Система"
|
||
},
|
||
"searchEverything": "Поиск хостов, вкладок и действий",
|
||
"search": "Поиск",
|
||
"hiddenCount_one": "{{count}} скрыт",
|
||
"hiddenCount_few": "{{count}} скрыты",
|
||
"hiddenCount_many": "{{count}} скрыто",
|
||
"hiddenCount_other": "{{count}} скрыто",
|
||
"showInRail": "Показать в боковой панели",
|
||
"moveUp": "Переместить вверх",
|
||
"moveDown": "Переместить вниз",
|
||
"resetRailOrder": "Сбросить порядок",
|
||
"hideFromRail": "Скрыть из боковой панели",
|
||
"openSettings": "Открыть настройки",
|
||
"settings": "Настройки",
|
||
"manage": "Управление",
|
||
"mobileNavigation": "Навигация",
|
||
"plugins": "Плагины"
|
||
},
|
||
"hosts": {
|
||
"hosts": "Хосты",
|
||
"noHosts": "Нет SSH-хостов",
|
||
"retry": "Повторить",
|
||
"refresh": "Обновить",
|
||
"optional": "Необязательно",
|
||
"downloadSample": "Скачать образец",
|
||
"failedToDeleteHost": "Не удалось удалить {{name}}",
|
||
"importSkipExisting": "Импорт (пропустить существующие)",
|
||
"importSSHConfig": "Импорт из конфигурации SSH",
|
||
"connectionDetails": "Параметры подключения",
|
||
"ssh": "SSH",
|
||
"telnet": "Telnet",
|
||
"port": "Порт",
|
||
"username": "Имя пользователя",
|
||
"folder": "Папка",
|
||
"tags": "Теги",
|
||
"pin": "Закрепить",
|
||
"addHost": "Добавить хост",
|
||
"editHost": "Редактировать хост",
|
||
"cloneHost": "Клонировать хост",
|
||
"defaultPath": "Путь по умолчанию",
|
||
"connection": "Подключение",
|
||
"upload": "Загрузить",
|
||
"authentication": "Аутентификация",
|
||
"password": "Пароль",
|
||
"passwordSaved": "Пароль сохранён, введите новый для изменения",
|
||
"key": "Ключ",
|
||
"credential": "Учётные данные",
|
||
"sshPrivateKey": "Закрытый ключ SSH",
|
||
"keyType": "Тип ключа",
|
||
"uploadFile": "Загрузить файл",
|
||
"tabGeneral": "Общие",
|
||
"tabSsh": "SSH",
|
||
"tabStats": "Метрики хоста",
|
||
"tabSharing": "Общий доступ",
|
||
"tabAuthentication": "Аутентификация",
|
||
"terminal": "Терминал",
|
||
"tunnel": "Туннель",
|
||
"serverStats": "Метрики хоста",
|
||
"status": {
|
||
"online": "В сети",
|
||
"offline": "Не в сети",
|
||
"checking": "Проверка",
|
||
"monitoringDisabled": "Проверка статуса отключена",
|
||
"label": "Статус"
|
||
},
|
||
"folderRenamed": "Папка «{{oldName}}» успешно переименована в «{{newName}}»",
|
||
"failedToRenameFolder": "Не удалось переименовать папку",
|
||
"unsavedChangesDescription": "Изменения хоста не сохранены. Отменить их?",
|
||
"keepEditing": "Продолжить редактирование",
|
||
"discardChanges": "Отменить изменения",
|
||
"movedToFolder_one": "Перемещён {{count}} хост в «{{folder}}»",
|
||
"movedToFolder_few": "Перемещено {{count}} хоста в «{{folder}}»",
|
||
"movedToFolder_many": "Перемещено {{count}} хостов в «{{folder}}»",
|
||
"movedToFolder_other": "Перемещено {{count}} хоста в «{{folder}}»",
|
||
"editHostTooltip": "Редактировать хост",
|
||
"behavior": "Поведение",
|
||
"scrollbackBuffer": "Буфер прокрутки",
|
||
"sshAgentForwarding": "Перенаправление агента SSH",
|
||
"selectSnippet": "Выбрать сниппет",
|
||
"forceKeyboardInteractive": "Принудительно использовать Keyboard-Interactive",
|
||
"overrideCredentialUsername": "Переопределить имя пользователя учётных данных",
|
||
"overrideCredentialUsernameDesc": "Использовать указанное выше имя пользователя вместо имени из учётных данных",
|
||
"externalUsernameHint": "Используйте $external.username, чтобы подставить имя, с которым вы вошли через SSO или LDAP.",
|
||
"jumpHostChain": "Цепочка промежуточных хостов",
|
||
"portKnocking": "Port Knocking",
|
||
"addKnock": "Добавить порт",
|
||
"addProxyNode": "Добавить узел",
|
||
"proxyNode": "Прокси-узел",
|
||
"proxyType": "Тип прокси",
|
||
"sudoPassword": "Пароль sudo",
|
||
"keepaliveInterval": "Интервал keepalive (мс)",
|
||
"environmentVariables": "Переменные окружения",
|
||
"addVariable": "Добавить переменную",
|
||
"docker": "Docker",
|
||
"failedToConnect": "Не удалось подключиться к консоли",
|
||
"connect": "Подключиться",
|
||
"disconnect": "Отключиться",
|
||
"start": "Запустить",
|
||
"enableStatusCheck": "Включить проверку статуса",
|
||
"enableMetrics": "Включить метрики",
|
||
"bulkUpdateFailed": "Массовое обновление не выполнено",
|
||
"selectAll": "Выбрать все",
|
||
"deselectAll": "Снять выделение",
|
||
"protocols": "Протоколы",
|
||
"secureShell": "Secure Shell",
|
||
"addressIp": "Адрес / IP",
|
||
"friendlyName": "Отображаемое имя",
|
||
"folderAndAdvanced": "Папка и дополнительные",
|
||
"showAdvancedSettings": "Показать дополнительные настройки",
|
||
"hideAdvancedSettings": "Скрыть расширенные настройки",
|
||
"privateNotes": "Приватные заметки",
|
||
"privateNotesPlaceholder": "Подробности о сервере...",
|
||
"pinToTop": "Закрепить вверху",
|
||
"pinToTopDesc": "Всегда показывать этот хост вверху списка",
|
||
"portKnockingSequence": "Последовательность Port Knocking",
|
||
"addKnockBtn": "Добавить стук",
|
||
"noPortKnocking": "Port Knocking не настроен.",
|
||
"knockPort": "Порт для стука",
|
||
"protocol": "Протокол",
|
||
"delayAfterMs": "Задержка после (мс)",
|
||
"useSocks5Proxy": "Использовать прокси SOCKS5",
|
||
"useSocks5ProxyDesc": "Направлять соединение через прокси-сервер",
|
||
"connectionOrigin": "Источник соединения",
|
||
"connectionOriginDesc": "Откуда исходит соединение с этим хостом. Переопределяет глобальное значение по умолчанию в приложении.",
|
||
"connectionOriginDefault": "По умолчанию",
|
||
"connectionOriginLocal": "Это устройство (локальная сеть)",
|
||
"connectionOriginRemote": "Удалённый сервер",
|
||
"proxyHost": "Хост прокси",
|
||
"proxyPort": "Порт прокси",
|
||
"proxyUsername": "Имя пользователя прокси",
|
||
"proxyPassword": "Пароль прокси",
|
||
"proxySingleMode": "Одиночный прокси",
|
||
"proxyChainMode": "Цепочка прокси",
|
||
"you": "Вы",
|
||
"jumpHostChainLabel": "Цепочка Jump Host",
|
||
"addJumpBtn": "Добавить Jump",
|
||
"noJumpHosts": "Jump Host не настроены.",
|
||
"selectAServer": "Выберите сервер...",
|
||
"sshPort": "Порт SSH",
|
||
"authMethod": "Метод аутентификации",
|
||
"authenticationMethod": "Метод аутентификации",
|
||
"authenticationMethodDesc": "Выберите один метод, который Termix будет использовать для аутентификации этого SSH-соединения. Другие методы не будут пробоваться автоматически.",
|
||
"storedCredential": "Сохранённые учётные данные",
|
||
"selectACredential": "Выберите учётные данные...",
|
||
"keyTypeLabel": "Тип ключа",
|
||
"keyTypeAuto": "Автоопределение",
|
||
"keyPasteTab": "Вставить",
|
||
"keyUploadTab": "Загрузить",
|
||
"keyFileLoaded": "Файл ключа загружен",
|
||
"keyUploadClick": "Нажмите, чтобы загрузить .pem / .key / .ppk",
|
||
"clearKey": "Очистить ключ",
|
||
"keySaved": "SSH-ключ сохранён",
|
||
"keyReplaceNotice": "вставьте новый ключ ниже, чтобы заменить его",
|
||
"keyPassphraseSaved": "Парольная фраза сохранена, введите для изменения",
|
||
"replaceKey": "Заменить ключ",
|
||
"docsLink": "Просмотреть документацию",
|
||
"agentLabel": "SSH Agent",
|
||
"agentDesc": "Аутентификация с помощью SSH-агента, запущенного на сервере Termix (Bitwarden, 1Password, gpg-agent, KeeAgent, ssh-agent). Агент должен быть запущен на машине, где размещён Termix.",
|
||
"agentAuthenticationDesc": "Используйте ключи из SSH-агента для аутентификации этого соединения. Оставьте путь к сокету пустым, чтобы использовать SSH_AUTH_SOCK.",
|
||
"agentSocketPathLabel": "Путь к сокету агента",
|
||
"agentSocketPathPlaceholder": "Оставьте пустым, чтобы использовать SSH_AUTH_SOCK",
|
||
"agentSocketPathHint": "Оставьте пустым для автоопределения из переменной окружения SSH_AUTH_SOCK или введите пользовательский путь к сокету (например, /run/user/1000/gnupg/S.gpg-agent.ssh).",
|
||
"agentIdentityLabel": "Идентификатор агента (открытый ключ)",
|
||
"agentIdentityPlaceholder": "Оставьте пустым, чтобы попробовать все ключи из агента",
|
||
"agentIdentityHint": "Вставьте открытый ключ (например, ssh-ed25519 AAAA...), чтобы предлагать только этот ключ из агента. Рекомендуется, если в агенте много ключей, чтобы избежать превышения MaxAuthTries сервера.",
|
||
"shareSshAuthLabel": "Поделиться SSH-аутентификацией",
|
||
"shareSshAuthDesc": "Предоставьте получателям зашифрованные копии SSH-аутентификации этого хоста. Личные учётные данные получателя всё равно имеют приоритет.",
|
||
"forceKeyboardInteractiveLabel": "Принудительно использовать Keyboard Interactive",
|
||
"forceKeyboardInteractiveShortDesc": "Принудительно требовать ручной ввод пароля, даже если ключи присутствуют",
|
||
"allowLegacyAlgorithmsLabel": "Разрешить устаревшие алгоритмы",
|
||
"allowLegacyAlgorithmsDesc": "Включить устаревшие SSH-алгоритмы (ssh-dss, ssh-rsa, diffie-hellman-group1-sha1, hmac-md5, 3des-cbc) для подключения к старым устройствам, которые невозможно обновить.",
|
||
"insecure": "Небезопасно",
|
||
"syntaxHighlightingCategories": "Категории подсветки",
|
||
"syntaxHighlightingCategoriesDesc": "Выберите типы содержимого для подсветки",
|
||
"sshAgentForwardingLabel": "Переадресация SSH-агента",
|
||
"sshAgentForwardingShortDesc": "Разрешить этому удалённому хосту использовать ваш локальный SSH-агент для дальнейших подключений. Это не требуется для аутентификации через агент.",
|
||
"sudoPasswordAutoFillShortDesc": "Автоматически вводить пароль sudo при запросе",
|
||
"sudoPasswordLabel": "Пароль sudo",
|
||
"sudoPasswordSaved": "Пароль сохранён, введите новый для изменения",
|
||
"environmentVariablesLabel": "Переменные окружения",
|
||
"addVariableBtn": "Добавить переменную",
|
||
"noEnvVars": "Переменные окружения не настроены.",
|
||
"keepaliveIntervalLabel": "Интервал keepalive (секунды)",
|
||
"maxKeepaliveMisses": "Макс. пропущенных keepalive",
|
||
"sameHost": "Этот хост (прямой туннель)",
|
||
"statusChecksLabel": "Проверки состояния",
|
||
"enableStatusChecks": "Включить проверки состояния",
|
||
"enableStatusChecksDesc": "Проверять доступность хоста. Активные сеансы пропускают дополнительные проверки. SSH-проверки без активного сеанса могут активировать агрессивные правила Fail2Ban; отключите проверки состояния на таких хостах.",
|
||
"useGlobalInterval": "Использовать глобальный интервал",
|
||
"useGlobalIntervalDesc": "Переопределить интервалом проверок состояния на уровне сервера",
|
||
"checkIntervalS": "Интервал проверки (с)",
|
||
"checkIntervalDesc": "Секунды между каждым ping-запросом",
|
||
"cpuUsageLabel": "Использование CPU",
|
||
"cpuUsageDesc": "Процент CPU, средняя нагрузка, график sparkline",
|
||
"memoryLabel": "Использование памяти",
|
||
"memoryDesc": "Использование RAM, swap, кэш",
|
||
"storageLabel": "Использование диска",
|
||
"storageDesc": "Использование диска по точкам монтирования",
|
||
"networkLabel": "Сетевые интерфейсы",
|
||
"networkDesc": "Список интерфейсов и пропускная способность",
|
||
"uptimeLabel": "Время работы",
|
||
"uptimeDesc": "Время работы системы и время загрузки",
|
||
"systemInfoLabel": "Сведения о системе",
|
||
"systemInfoDesc": "ОС, ядро, имя хоста, архитектура",
|
||
"recentLoginsLabel": "Последние входы",
|
||
"recentLoginsDesc": "Успешные и неудачные попытки входа",
|
||
"topProcessesLabel": "Основные процессы",
|
||
"topProcessesDesc": "PID, CPU%, MEM%, команда",
|
||
"listeningPortsLabel": "Прослушиваемые порты",
|
||
"listeningPortsDesc": "Открытые порты с процессом и состоянием",
|
||
"firewallLabel": "Файрвол",
|
||
"firewallDesc": "Состояние файрвола, AppArmor, SELinux",
|
||
"hostSharedSuccessfully": "Хост успешно передан",
|
||
"failedToShareHost": "Не удалось передать хост",
|
||
"accessRevoked": "Доступ отозван",
|
||
"failedToRevokeAccess": "Не удалось отозвать доступ",
|
||
"cancelBtn": "Отмена",
|
||
"savingBtn": "Сохранение...",
|
||
"addHostBtn": "Добавить хост",
|
||
"hostUpdated": "Хост обновлён",
|
||
"hostCreated": "Хост создан",
|
||
"failedToSave": "Не удалось сохранить хост",
|
||
"credentialUpdated": "Учётные данные обновлены",
|
||
"credentialCreated": "Учётные данные созданы",
|
||
"failedToSaveCredential": "Не удалось сохранить учётные данные",
|
||
"credentialNameRequired": "Введите имя для учётных данных",
|
||
"credentialAuthRequired": "Добавьте пароль, SSH-ключ или оба",
|
||
"createCredentialFromHostBtn": "Создать учётные данные",
|
||
"createCredentialFromHostTitle": "Создать учётные данные из хоста",
|
||
"createCredentialFromHostDesc": "Создайте многоразовую учетную запись с общими данными, заполненную текущим именем пользователя, паролем и/или SSH-ключом этого хоста.",
|
||
"backToHosts": "Назад к хостам",
|
||
"pinned": "Закреплено",
|
||
"noHostsFound": "Хосты не найдены",
|
||
"tryDifferentTerm": "Попробуйте другой запрос",
|
||
"addFirstHost": "Добавьте свой первый хост, чтобы начать работу",
|
||
"noCredentialsFound": "Учетные данные не найдены",
|
||
"addCredentialBtn": "Добавить учетные данные",
|
||
"updateCredentialBtn": "Обновить учетные данные",
|
||
"editCredentialAction": "Редактировать учетные данные",
|
||
"backToHost": "Назад к хосту",
|
||
"saveCredentialAsNewBtn": "Сохранить как новый",
|
||
"saveCredentialAsNewDesc": "Создает новые учетные данные с этими изменениями и назначает их этому хосту. Исходные учетные данные остаются без изменений.",
|
||
"credentialSavedAsNew": "Сохранено как новые учетные данные",
|
||
"failedToSaveCredentialAsNew": "Не удалось сохранить как новые учетные данные",
|
||
"features": "Возможности",
|
||
"noFolder": "(Без папки)",
|
||
"deleteSelected": "Удалить",
|
||
"exitSelection": "Отменить выделение",
|
||
"importSkip": "Импорт (пропустить существующие)",
|
||
"importOverwrite": "Импорт (перезаписать)",
|
||
"collapseBtn": "Свернуть",
|
||
"importExportBtn": "Импорт / Экспорт",
|
||
"hostStatusesRefreshed": "Статусы хостов обновлены",
|
||
"failedToRefreshHosts": "Не удалось обновить хосты",
|
||
"movedHostTo": "Хост {{host}} перемещен в «{{folder}}»",
|
||
"failedToMoveHost": "Не удалось переместить хост",
|
||
"deletedFolder": "Папка «{{name}}» удалена",
|
||
"failedToDeleteFolder": "Не удалось удалить папку",
|
||
"deleteAllInFolder": "Удалить все хосты в «{{name}}»? Это действие нельзя отменить.",
|
||
"folderPickerPlaceholder": "Без папки",
|
||
"folderPickerSearch": "Поиск или создание (используйте / для вложенных папок)...",
|
||
"folderPickerNone": "Без папки",
|
||
"folderPickerCreate": "Создать «{{path}}»",
|
||
"folderPickerEmpty": "Подходящих папок не найдено",
|
||
"parentHost": "Родительский хост",
|
||
"useFolderInstead": "Использовать вместо этого папку",
|
||
"useParentHostInstead": "Использовать вместо этого родительский хост",
|
||
"parentHostPickerPlaceholder": "Без родительского хоста",
|
||
"parentHostPickerSearch": "Поиск хостов...",
|
||
"parentHostPickerNone": "Без родительского хоста",
|
||
"parentHostPickerEmpty": "Подходящих хостов не найдено",
|
||
"collapseSubHosts": "Свернуть дочерние хосты",
|
||
"expandSubHosts": "Развернуть дочерние хосты",
|
||
"cannotNestUnderDescendant": "Нельзя вложить хост в свой собственный дочерний хост",
|
||
"movedToParent_one": "Перемещён {{count}} хост под «{{parent}}»",
|
||
"movedToParent_few": "Перемещено {{count}} хоста под «{{parent}}»",
|
||
"movedToParent_many": "Перемещено {{count}} хостов под «{{parent}}»",
|
||
"movedToParent_other": "Перемещено {{count}} хоста под «{{parent}}»",
|
||
"newFolder": "Новая папка",
|
||
"createFolderTitle": "Создать папку",
|
||
"editFolderTitle": "Редактировать папку",
|
||
"folderDialogDescription": "Выберите имя, цвет и значок. Используйте / для создания вложенных папок.",
|
||
"folderNameLabel": "Имя папки",
|
||
"folderNamePlaceholder": "напр. Production/Web",
|
||
"folderNestingHint": "Используйте / для разделения уровней и создания вложенных папок.",
|
||
"folderNameDuplicate": "Папка с таким именем уже существует здесь.",
|
||
"folderColor": "Цвет",
|
||
"folderIcon": "Значок",
|
||
"folderCredential": "Учетные данные",
|
||
"folderCredentialNone": "Учетные данные не назначены",
|
||
"folderCredentialHint": "Хосты в этой папке, использующие аутентификацию «Сохраненные учетные данные» без выбора собственных учетных данных, будут наследовать эти.",
|
||
"folderPreview": "Предпросмотр",
|
||
"folderNameFallback": "Безымянная папка",
|
||
"createFolderButton": "Создать папку",
|
||
"saveFolderButton": "Сохранить папку",
|
||
"cancel": "Отмена",
|
||
"iconSearchPlaceholder": "Поиск значков...",
|
||
"openAllSessions": "Открыть все сессии",
|
||
"editFolder": "Изменить папку",
|
||
"deleteFolder": "Удалить папку",
|
||
"selectFolder": "Выбрать все хосты в папке",
|
||
"deselectFolder": "Снять выделение со всех хостов в папке",
|
||
"folderSaved": "Папка сохранена",
|
||
"failedToSaveFolder": "Не удалось сохранить папку",
|
||
"folderDeleted": "Папка «{{name}}» удалена",
|
||
"deleteFolderConfirm_one": "Удалить «{{name}}» и его {{count}} хост? Это действие нельзя отменить.",
|
||
"deleteFolderConfirm_few": "Удалить «{{name}}» и его {{count}} хоста? Это действие нельзя отменить.",
|
||
"deleteFolderConfirm_many": "Удалить «{{name}}» и его {{count}} хостов? Это действие нельзя отменить.",
|
||
"deleteFolderConfirm_other": "Удалить «{{name}}» и его {{count}} хоста? Это действие нельзя отменить.",
|
||
"failedToMoveHosts": "Не удалось переместить хосты",
|
||
"failedToReorder": "Не удалось изменить порядок",
|
||
"expandAll": "Развернуть все папки",
|
||
"collapseAll": "Свернуть все папки",
|
||
"moreActions": "Ещё",
|
||
"groupBy": "Группировать по",
|
||
"GroupByFolder": "Папка",
|
||
"GroupByTag": "Метка",
|
||
"GroupByStatus": "Статус",
|
||
"GroupByProtocol": "Протокол",
|
||
"GroupByAuth": "Тип аутентификации",
|
||
"groupUngrouped": "Без группы",
|
||
"customizeSidebar": "Настроить боковую панель",
|
||
"customizeSidebarDescription": "Настройте внешний вид и поведение списка хостов.",
|
||
"customizeDensityTitle": "Плотность",
|
||
"customizeBehaviorTitle": "Поведение",
|
||
"connectBarTitle": "Панель подключения",
|
||
"connectBarDesc": "Выберите, какие действия отображаются в виде кнопок на хосте. Все действия остаются в меню хоста.",
|
||
"customizeSortHint": "Порядок сортировки и группировки настраиваются в меню сортировки и группировки на панели инструментов.",
|
||
"densityComfortableDesc": "Больше деталей для каждого хоста: адрес, метки и использование ресурсов.",
|
||
"densityCompactDesc": "Одна строка на хост, удобно для длинных списков.",
|
||
"display": "Отображение",
|
||
"displayDensity": "Плотность",
|
||
"displayDensityComfortable": "Комфортная",
|
||
"displayDensityCompact": "Компактная",
|
||
"displayShowTags": "Показывать метки",
|
||
"displayTrayOnClick": "Открывать действия по клику (вместо наведения)",
|
||
"actionsVisibility": "Отображение действий хоста",
|
||
"actionsVisibilityDesc": "Выберите, когда раскрываются действия хоста. Выберите «По клику», чтобы вернуть предыдущее поведение с раскрытием по клику.",
|
||
"actionsAlways": "Всегда видны",
|
||
"actionsOnly": "Только подключение, остальные по клику",
|
||
"actionsHover": "Показывать при наведении",
|
||
"actionsClick": "Раскрывать/сворачивать по клику",
|
||
"openOnDoubleClick": "Открывать по двойному клику",
|
||
"openOnDoubleClickDesc": "Требовать двойной клик для открытия сессии хоста вместо одинарного",
|
||
"closeOnOpen": "Скрыть боковую панель после открытия",
|
||
"closeOnOpenDesc": "Закрывать боковую панель после открытия хоста из неё",
|
||
"showFolderPaths": "Показывать пути к папкам",
|
||
"showFolderPathsDesc": "Показывать путь к родительской папке над вложенными подпапками. Подпапки остаются отступленными в любом случае.",
|
||
"rowDetailsTitle": "Детали строки",
|
||
"rowDetailsDesc": "Выберите, что отображается для каждого хоста.",
|
||
"showAddress": "Адрес",
|
||
"showAddressDesc": "Показывать адрес хоста под именем.",
|
||
"showUsername": "Имя пользователя",
|
||
"showUsernameDesc": "Показывать имя пользователя перед адресом.",
|
||
"showPort": "Порт",
|
||
"showPortDesc": "Показывать порт после адреса.",
|
||
"showPinIcon": "Значок закрепления",
|
||
"showPinIconDesc": "Показывать значок булавки рядом с закреплёнными хостами.",
|
||
"showSharedBadge": "Значок общего доступа",
|
||
"showSharedBadgeDesc": "Показывать значок на хостах, которыми с вами поделились.",
|
||
"showBadges": "Значки плагинов",
|
||
"showBadgesDesc": "Показывать значки, добавляемые плагинами рядом с именем хоста.",
|
||
"hostClickBehavior": "Клик по хосту",
|
||
"hostClickBehaviorDesc": "Что происходит при клике по хосту, у которого уже открыта вкладка. Ctrl/Cmd + клик, клик средней кнопкой мыши или «Открыть в новой вкладке» всегда открывают новую.",
|
||
"hostClickNewTab": "Всегда открывать новую вкладку",
|
||
"hostClickFocusExisting": "Переключиться на открытую вкладку",
|
||
"hostClickFocusExistingDoubleNew": "Клик для переключения, двойной клик для новой вкладки",
|
||
"openInNewTab": "Открыть в новой вкладке",
|
||
"deletedHost": "Удалён {{name}}",
|
||
"copiedToClipboard": "Скопировано в буфер обмена",
|
||
"remoteDesktopUrlCopied": "URL удалённого рабочего стола скопирован",
|
||
"expandActions": "Развернуть действия",
|
||
"collapseActions": "Свернуть действия",
|
||
"cloneHostAction": "Клонировать хост",
|
||
"copyAddress": "Копировать адрес",
|
||
"copyLink": "Копировать ссылку",
|
||
"deleteCredentialConfirm": "Удалить учётные данные «{{name}}»?",
|
||
"deletedCredential": "Удалены учётные данные «{{name}}»",
|
||
"deleteHostsConfirm_one": "Удалить {{count}} хост? Это действие нельзя отменить.",
|
||
"deleteHostsConfirm_few": "Удалить {{count}} хоста? Это действие нельзя отменить.",
|
||
"deleteHostsConfirm_many": "Удалить {{count}} хостов? Это действие нельзя отменить.",
|
||
"deleteHostsConfirm_other": "Удалить {{count}} хоста? Это действие нельзя отменить.",
|
||
"movedToRoot": "Перемещено в корень",
|
||
"addTagsPlaceholder": "Добавить теги...",
|
||
"authDetails": "Данные аутентификации",
|
||
"credType": "Тип",
|
||
"generateKeyPairDesc": "Сгенерировать новую пару ключей, приватный и публичный ключи будут заполнены автоматически.",
|
||
"generatingKey": "Генерация...",
|
||
"generateLabel": "Сгенерировать {{label}}",
|
||
"uploadFileBtn": "Загрузить файл",
|
||
"keyPassphraseOptional": "Парольная фраза ключа (необязательно)",
|
||
"sshPublicKeyOptional": "Публичный SSH-ключ (необязательно)",
|
||
"publicKeyGenerated": "Публичный ключ сгенерирован",
|
||
"failedToGeneratePublicKey": "Не удалось получить публичный ключ",
|
||
"publicKeyCopied": "Публичный ключ скопирован",
|
||
"keyPairGenerated": "Пара ключей {{label}} сгенерирована",
|
||
"failedToGenerateKeyPair": "Не удалось сгенерировать пару ключей",
|
||
"searchHostsPlaceholder": "Поиск хостов, адресов, тегов…",
|
||
"refreshBtn": "Обновить",
|
||
"addTag": "Добавить теги...",
|
||
"deleteConfirmBtn": "Удалить",
|
||
"deleteHostConfirm": "Удалить «{{name}}»?",
|
||
"enableAtLeastOneProtocol": "Включите хотя бы один протокол выше, чтобы настроить параметры аутентификации и подключения.",
|
||
"keyPassphrase": "Парольная фраза ключа",
|
||
"basicInformation": "Основная информация",
|
||
"authDetailsSection": "Данные аутентификации",
|
||
"credTypeLabel": "Тип",
|
||
"hostsTab": "Хосты",
|
||
"credentialsTab": "Учётные данные",
|
||
"selectMultiple": "Выбрать несколько",
|
||
"selectHosts": "Выбрать хосты",
|
||
"connectionLabel": "Подключение",
|
||
"authenticationLabel": "Аутентификация",
|
||
"generateKeyPairTitle": "Сгенерировать пару ключей",
|
||
"generateKeyPairDescription": "Сгенерировать новую пару ключей, приватный и публичный ключи будут заполнены автоматически.",
|
||
"generateFromPrivateKey": "Сгенерировать из приватного ключа",
|
||
"refreshBtn2": "Обновить",
|
||
"exitSelectionTitle": "Выйти из режима выбора",
|
||
"addHostBtn2": "Добавить хост",
|
||
"addCredentialBtn2": "Добавить учётные данные",
|
||
"checkingHostStatuses": "Проверка статусов хостов...",
|
||
"pinnedSection": "Закреплённые",
|
||
"hostsExported": "Хосты успешно экспортированы",
|
||
"export": {
|
||
"menuItem": "Экспорт...",
|
||
"title": "Экспорт хостов",
|
||
"scope": "Область",
|
||
"scopeAll": "Все",
|
||
"scopeSelected": "Выбранные",
|
||
"searchHosts": "Поиск хостов...",
|
||
"include": "Включить",
|
||
"groupConnection": "Подключение",
|
||
"groupCredentials": "Учётные данные",
|
||
"groupNotes": "Заметки",
|
||
"groupTags": "Теги и закрепление",
|
||
"groupProxy": "Прокси",
|
||
"groupJumpHosts": "Промежуточные хосты",
|
||
"groupFeatureFlags": "Настройки плагинов",
|
||
"groupAdvanced": "Расширенная конфигурация",
|
||
"preview": "Предпросмотр",
|
||
"moreHosts_one": "... ещё {{count}} хост",
|
||
"moreHosts_few": "... ещё {{count}} хоста",
|
||
"moreHosts_many": "... ещё {{count}} хостов",
|
||
"moreHosts_other": "... ещё {{count}} хоста",
|
||
"summary": "{{selected}} из {{total}} хостов",
|
||
"credentialsIncluded": "учётные данные включены",
|
||
"credentialsExcluded": "учётные данные исключены",
|
||
"noneSelected": "Хосты не выбраны",
|
||
"cancel": "Отмена",
|
||
"confirm": "Экспорт",
|
||
"fetchFailed": "Не удалось загрузить хосты для экспорта",
|
||
"bulkButton": "Экспорт"
|
||
},
|
||
"sampleDownloaded": "Пример файла загружен",
|
||
"failedToDeleteCredential2": "Не удалось удалить учётные данные",
|
||
"noFolderOption": "(Без папки)",
|
||
"nSelected_one": "{{count}} выбран",
|
||
"nSelected_few": "{{count}} выбраны",
|
||
"nSelected_many": "{{count}} выбрано",
|
||
"nSelected_other": "{{count}} выбрано",
|
||
"featuresMenu": "Плагины",
|
||
"moveMenu": "Переместить",
|
||
"connectSelected": "Подключиться",
|
||
"cancelSelection": "Отмена",
|
||
"deletedCount_one": "Удалён {{count}} хост",
|
||
"deletedCount_few": "Удалено {{count}} хоста",
|
||
"deletedCount_many": "Удалено {{count}} хостов",
|
||
"deletedCount_other": "Удалено {{count}} хоста",
|
||
"failedToDeleteCount_one": "Не удалось удалить {{count}} хост",
|
||
"failedToDeleteCount_few": "Не удалось удалить {{count}} хоста",
|
||
"failedToDeleteCount_many": "Не удалось удалить {{count}} хостов",
|
||
"failedToDeleteCount_other": "Не удалось удалить {{count}} хоста",
|
||
"duplicatedHost": "Дубликат «{{name}}»",
|
||
"failedToDuplicateHost": "Не удалось дублировать хост",
|
||
"updatedCount_one": "Обновлён {{count}} хост",
|
||
"updatedCount_few": "Обновлено {{count}} хоста",
|
||
"updatedCount_many": "Обновлено {{count}} хостов",
|
||
"updatedCount_other": "Обновлено {{count}} хоста",
|
||
"friendlyNameLabel": "Отображаемое имя",
|
||
"descriptionLabel": "Описание",
|
||
"loadingHosts": "Загрузка хостов...",
|
||
"loadingCredentials": "Загрузка учётных данных...",
|
||
"noHostsYet": "Хостов пока нет",
|
||
"noHostsYetHint": "Добавьте сервер, чтобы открывать терминалы, просматривать файлы и видеть метрики.",
|
||
"noHostsMatchSearch": "Хосты, соответствующие поиску, не найдены",
|
||
"noHostSelected": "Выберите хост, чтобы открыть это.",
|
||
"searchHosts": "Поиск хостов...",
|
||
"sortHosts": "Сортировка хостов",
|
||
"sortDefault": "По умолчанию",
|
||
"sortNameAsc": "Имя (А → Я)",
|
||
"sortNameDesc": "Имя (Я → А)",
|
||
"sortIpAsc": "IP-адрес (по возрастанию)",
|
||
"sortIpDesc": "IP-адрес (по убыванию)",
|
||
"sortOnlineFirst": "Сначала онлайн",
|
||
"sortOfflineFirst": "Сначала офлайн",
|
||
"sortManual": "Вручную (перетаскивание для изменения порядка)",
|
||
"sortPinnedFirst": "Сначала закрепленные",
|
||
"filterHosts": "Фильтр хостов",
|
||
"filterClearAll": "Сбросить фильтры",
|
||
"filterStatusGroup": "Статус",
|
||
"filterOnline": "Онлайн",
|
||
"filterOffline": "Офлайн",
|
||
"filterPinned": "Закрепленные",
|
||
"filterAuthGroup": "Тип аутентификации",
|
||
"filterAuthPassword": "Пароль",
|
||
"filterAuthKey": "SSH-ключ",
|
||
"filterAuthCredential": "Учётные данные",
|
||
"filterAuthNone": "Нет",
|
||
"filterProtocolGroup": "Протокол",
|
||
"filterProtocolSsh": "SSH",
|
||
"filterTagsGroup": "Теги",
|
||
"editHostAction": "Редактировать хост",
|
||
"moreOptions": "Другие варианты",
|
||
"shareHost": "Поделиться хостом",
|
||
"shareHostTitle": "Поделиться: {{name}}",
|
||
"shareFolder": "Поделиться папкой",
|
||
"shareFolderTitle": "Поделиться папкой: {{name}}",
|
||
"folderSharedSuccessfully_one": "Поделен {{count}} хост в папке",
|
||
"folderSharedSuccessfully_few": "Поделено {{count}} хоста в папке",
|
||
"folderSharedSuccessfully_many": "Поделено {{count}} хостов в папке",
|
||
"folderSharedSuccessfully_other": "Поделено {{count}} хоста в папке",
|
||
"failedToShareFolder": "Не удалось поделиться папкой",
|
||
"sharing": {
|
||
"loadError": "Не удалось загрузить данные для общего доступа. Повторите попытку.",
|
||
"shareWithSection": "Предоставить доступ",
|
||
"usersTab": "Пользователи",
|
||
"rolesTab": "Роли",
|
||
"searchPlaceholder": "Поиск пользователей или ролей...",
|
||
"noMatches": "Ничего не найдено",
|
||
"permissionLevelLabel": "Уровень доступа",
|
||
"levels": {
|
||
"connect": {
|
||
"label": "Подключение",
|
||
"description": "Только открытие сессий: терминал, удалённый рабочий стол, файловый менеджер, туннели и Docker. Доступ к настройкам хоста отсутствует."
|
||
},
|
||
"view": {
|
||
"label": "Просмотр",
|
||
"description": "Подключение, а также просмотр настроек хоста. Секреты никогда не отображаются."
|
||
},
|
||
"edit": {
|
||
"label": "Редактирование",
|
||
"description": "Просмотр, а также изменение настроек хоста, кроме аутентификации. SSH-аутентификация владельца остаётся приватной и доступна только владельцу."
|
||
},
|
||
"manage": {
|
||
"label": "Управление",
|
||
"description": "Редактирование, а также возможность делиться хостом с другими, изменять уровни доступа и отзывать права."
|
||
}
|
||
},
|
||
"expiryLabel": "Срок действия доступа",
|
||
"expiry": {
|
||
"never": "Никогда",
|
||
"oneHour": "1 час",
|
||
"oneDay": "24 часа",
|
||
"sevenDays": "7 дней",
|
||
"thirtyDays": "30 дней",
|
||
"custom": "Свой срок"
|
||
},
|
||
"customHoursPlaceholder": "Часов до истечения доступа",
|
||
"shareButton": "Поделиться",
|
||
"shareWithCount": "Поделиться ({{count}})",
|
||
"currentAccess": "Текущий доступ",
|
||
"noAccessEntries": "Этот хост ещё не передан в общий доступ",
|
||
"folderRulesTitle": "Применяется к хостам, добавленным позже",
|
||
"folderRulesHint": "Эти правила остаются на папке: хост, созданный в ней или перемещённый в неё (или в подпапку), автоматически получает такой же доступ. Удаление правила лишь прекращает дальнейшее наследование.",
|
||
"folderRuleRemove": "Прекратить наследование",
|
||
"folderShareSummary": "Поделено {{shared}} из {{total}} хост(ов) в этой папке",
|
||
"grantedBy": "Предоставлено",
|
||
"expires": "Истекает",
|
||
"expired": "Истёк",
|
||
"never": "Никогда",
|
||
"revoke": "Отозвать",
|
||
"accessUpdated": "Доступ обновлён",
|
||
"accessUpdateFailed": "Не удалось обновить доступ",
|
||
"sharedBadge": "Общий доступ",
|
||
"sharedBadgeTooltip": "Доступ предоставлен пользователем {{owner}} (уровень: {{level}})",
|
||
"viewOnlyBanner": "Этот хост предоставлен вам пользователем {{owner}} с правами только для просмотра. Конфигурация доступна только для чтения.",
|
||
"sharedEditBanner": "Этот хост предоставлен вам пользователем {{owner}} с правами редактирования. Изменения применяются к реальному хосту; ссылки на аутентификацию может изменять только владелец.",
|
||
"ownerOnlyControl": "Это может изменить только владелец хоста",
|
||
"ownerAuthPrivate": "Данные SSH-аутентификации владельца хоста являются частными. Используйте пункт «Настроить личную SSH-аутентификацию» в меню хоста, чтобы выбрать свои учетные данные.",
|
||
"ownerAuthShared": "Владелец хоста предоставил общие данные SSH-аутентификации для этого хоста. Вы можете использовать их или выбрать свои учетные данные в пункте «Настроить личную SSH-аутентификацию».",
|
||
"authOverrideAction": "Настроить личную SSH-аутентификацию",
|
||
"authOverrideActionProtocol": "Настроить личную аутентификацию {{protocol}}",
|
||
"authOverrideTitle": "Личная SSH-аутентификация",
|
||
"authOverrideTitleProtocol": "Личная аутентификация {{protocol}}",
|
||
"authOverrideDescriptionPrivate": "Учетные данные SSH владельца хоста остаются частными. Выберите один из сохраненных вами учетных данных для подключения к {{host}}.",
|
||
"authOverrideDescriptionShared": "Используйте аутентификацию, предоставленную владельцем хоста, или замените её одним из сохраненных вами учетных данных для подключения к {{host}}.",
|
||
"authOverrideCredentialLabel": "Учетные данные для аутентификации",
|
||
"useSharedAuthentication": "Использовать общую аутентификацию хоста",
|
||
"noPersonalCredential": "Без личных учетных данных",
|
||
"authOverrideNoCredentials": "У вас пока нет сохраненных SSH-учетных данных. Создайте их в разделе «Учетные данные», чтобы подключаться к хостам, требующим аутентификацию.",
|
||
"authOverrideRequired": "Для подключения к этому хосту требуется один из ваших сохраненных учетных данных.",
|
||
"authOverridePrivateHint": "Эти учетные данные являются личными. Владелец хоста и другие получатели не могут их видеть или использовать.",
|
||
"authOverrideSaved": "Личная SSH-аутентификация сохранена",
|
||
"authOverrideCleared": "Личная SSH-аутентификация удалена",
|
||
"authOverrideClearedToShared": "Используется общая аутентификация хоста",
|
||
"authOverrideLoadError": "Не удалось загрузить ваши данные SSH-аутентификации. Повторите попытку.",
|
||
"authOverrideSaveError": "Не удалось сохранить ваши данные SSH-аутентификации"
|
||
},
|
||
"arrangeUnlockedSwitchedToManual": "Переключено на ручной порядок сортировки, чтобы сохранить ваше расположение",
|
||
"dragToRearrange": "Перетащите для изменения порядка",
|
||
"arrangeUnlocked": "Разблокировать перетаскивание для изменения порядка",
|
||
"webUiBindHostUnreachable": "Ваш браузер не может достичь адреса 127.0.0.1 на машине, где запущен Termix, поэтому этот конечный пункт не загрузится. Используйте адрес, на который отвечает эта машина, например 0.0.0.0.",
|
||
"webUiBindHostSharesSessionCookie": "Из этого браузера перенаправление будет доступно по тому же имени хоста, с которого обслуживается Termix, поэтому туннелированный сервис получит вашу сессию Termix. Куки игнорируют порт. Этот конечный пункт откажется открываться здесь; он работает в настольном приложении Termix или когда Termix открыт по адресу localhost.",
|
||
"webUiErrorLabelRequired": "Конечному пункту {{row}} требуется метка.",
|
||
"webUiErrorLabelDuplicate": "Каждый конечный пункт должен иметь уникальное имя.",
|
||
"webUiErrorPortRange": "Конечному пункту {{row}} требуется порт в диапазоне от 1 до 65535.",
|
||
"webUiErrorPathInvalid": "У конечного пункта {{row}} указан недействительный путь. Используйте путь вида /admin.",
|
||
"copyViewUrlAction": "Скопировать ссылку на {{name}}",
|
||
"filterAuthAgent": "SSH Agent",
|
||
"authTypeNeedsPlugin": "Этот хост использует {{type}}, для чего требуется {{plugin}}. Он отключен на этом сервере.",
|
||
"authTypeUnknown": "Этот хост использует {{type}}, который недоступен на этом сервере.",
|
||
"authFieldsAfterSave": "Сначала сохраните хост, затем заполните эти поля.",
|
||
"enablePluginFeature": "Включить {{name}}",
|
||
"disablePluginFeature": "Отключить {{name}}",
|
||
"filterFeaturesGroup": "Плагины",
|
||
"localOnly": "Хранить только на этом устройстве",
|
||
"localOnlyDesc": "Этот хост не отправляется на сервер и не отображается на ваших других устройствах.",
|
||
"folderLocalOnly": "Хранить только на этом устройстве",
|
||
"folderLocalOnlyDesc": "Эта папка и все хосты в ней остаются на этом устройстве и не отправляются на сервер.",
|
||
"sudoPasswordDesc": "Используется, когда терминал заполняет запрос sudo, а также плагинами, которые запускают команды с sudo.",
|
||
"editorCancel": "Отмена",
|
||
"editorSaving": "Сохранение...",
|
||
"editorUpdate": "Обновить хост",
|
||
"editorAdd": "Добавить хост",
|
||
"speedSearch": "Поиск хостов. Стрелки для выбора, Enter для подключения, Esc для закрытия",
|
||
"speedSearchList": "Список хостов. Введите текст или нажмите / для поиска.",
|
||
"importNoHosts": "В файле не найдено хостов",
|
||
"importTooMany": "Вы можете импортировать не более {{max}} хостов за один раз",
|
||
"importSummary": "Импорт завершен: {{imported}} импортировано, {{updated}} обновлено, {{failed}} не удалось",
|
||
"importHostsFailed": "Не удалось импортировать хосты"
|
||
},
|
||
"commandPalette": {
|
||
"searchPlaceholder": "Поиск хостов, команд или настроек...",
|
||
"quickActions": "Быстрые действия",
|
||
"navigation": "Навигация",
|
||
"orShortcut": "или",
|
||
"addNewHost": "Добавить хост",
|
||
"adminSettings": "Настройки администратора",
|
||
"addCredential": "Добавить учётные данные",
|
||
"recentActivity": "Недавняя активность",
|
||
"serversAndHosts": "Серверы и хосты",
|
||
"noHostsFound": "Не найдено хостов, соответствующих запросу «{{search}}»",
|
||
"links": "Ссылки",
|
||
"navigate": "Навигация",
|
||
"select": "Выбрать",
|
||
"pluginActions": "Другие действия",
|
||
"noTargetTab": "Вкладки терминала не открыты",
|
||
"documentation": "Документация"
|
||
},
|
||
"splitScreen": {
|
||
"title": "Разделённый экран",
|
||
"defaultLabel": "Разделение {{number}}",
|
||
"splitRight": "Разделить вправо",
|
||
"splitDown": "Разделить вниз",
|
||
"addToSplit": "Добавить в {{split}}",
|
||
"paneEmptyItem": "Панель {{index}}: пусто",
|
||
"paneItem": "Панель {{index}}: {{label}}",
|
||
"paneNumber": "Панель {{index}}",
|
||
"newPaneRight": "Новая панель справа",
|
||
"newPaneBelow": "Новая панель снизу",
|
||
"emptyTitle": "Пустая панель",
|
||
"emptyHint": "Выберите, что отобразить здесь. Пока эта панель выбрана, всё, что вы открываете из боковой панели, также откроется здесь.",
|
||
"openTabs": "Открытые вкладки",
|
||
"noOpenTabs": "Другие вкладки не открыты",
|
||
"hosts": "Хосты",
|
||
"searchHosts": "Поиск хостов",
|
||
"noHosts": "Подходящих хостов не найдено",
|
||
"newSession": "Новая",
|
||
"closePane": "Закрыть панель",
|
||
"closeSession": "Закрыть сессию",
|
||
"moveToTab": "Переместить в отдельную вкладку",
|
||
"swapWith": "Поменять местами с",
|
||
"showHere": "Показать в этой панели",
|
||
"clearPane": "Очистить эту панель",
|
||
"zoom": "Развернуть панель",
|
||
"unzoom": "Восстановить раскладку",
|
||
"unsplit": "Убрать разделение",
|
||
"layouts": "Раскладки",
|
||
"applyLayout": "Изменить раскладку",
|
||
"maxPanes_one": "Разделение может содержать до {{count}} панели",
|
||
"maxPanes_few": "Разделение может содержать до {{count}} панелей",
|
||
"maxPanes_many": "Разделение может содержать до {{count}} панелей",
|
||
"maxPanes_other": "Разделение может содержать до {{count}} панели",
|
||
"dropSplit": "Перетащите для разделения",
|
||
"dropHere": "Перетащите, чтобы показать здесь",
|
||
"paneActions": "Действия с панелью",
|
||
"dividerHint": "Перетащите для изменения размера. Дважды щёлкните, чтобы выровнять.",
|
||
"openInSplit": "Открыть в разделённом экране",
|
||
"openInNewSplit": "Новое разделение с текущей вкладкой",
|
||
"shortcuts": "Горячие клавиши",
|
||
"shortcutNavigate": "Перемещение между панелями",
|
||
"presets": {
|
||
"columns2": "Две рядом",
|
||
"rows2": "Две друг над другом",
|
||
"columns3": "Три рядом",
|
||
"mainLeft3": "Одна слева, две справа",
|
||
"mainBottom3": "Две сверху, одна снизу",
|
||
"grid4": "Сетка 2×2",
|
||
"grid5": "Три сверху, две снизу",
|
||
"grid6": "Сетка 2×3"
|
||
}
|
||
},
|
||
"connections": {
|
||
"noConnections": "Нет подключений",
|
||
"noConnectionsDesc": "Откройте терминал, файловый менеджер или удалённый рабочий стол, чтобы увидеть подключения здесь",
|
||
"connectedFor": "Подключено {{duration}}",
|
||
"connected": "Подключено",
|
||
"disconnected": "Отключено",
|
||
"reconnect": "Переподключиться",
|
||
"sectionOpen": "Открытые",
|
||
"sectionBackground": "Фоновые",
|
||
"backgroundDesc": "Сессии сохраняются в течение {{minutes}} минут после отключения и могут быть восстановлены.",
|
||
"expiresIn": "Истекает через {{duration}}",
|
||
"search": "Поиск подключений...",
|
||
"noSearchResults": "Подключения не найдены",
|
||
"rename": "Переименовать сессию",
|
||
"forgetConfirm": "Завершить фоновую сессию для {{name}}?",
|
||
"forget": "Завершить сессию"
|
||
},
|
||
"sshAuth": {
|
||
"totpRequired": "Требуется двухфакторная аутентификация",
|
||
"totpCodeLabel": "Код подтверждения",
|
||
"totpVerify": "Подтвердить",
|
||
"mfaPromptRequired": "Требуется аутентификация",
|
||
"mfaPushRequired": "Требуется push-аутентификация",
|
||
"mfaMenuPlaceholder": "Введите ответ",
|
||
"mfaCodeOrPushPlaceholder": "Код или «push»",
|
||
"mfaWaitingApproval": "Ожидание подтверждения на вашем устройстве...",
|
||
"mfaSendRequest": "Отправить запрос",
|
||
"browserSignInCode": "Ключ безопасности",
|
||
"browserSignInUrl": "URL входа",
|
||
"browserSignInOpen": "Открыть в браузере",
|
||
"browserSignInContinue": "Я завершил вход",
|
||
"browserSignInRequired": "Требуется вход через {{provider}}",
|
||
"connectionLogTitle": "Журнал подключений",
|
||
"connectionLogCopy": "Копировать журнал в буфер обмена",
|
||
"connectionLogEmpty": "Журнал подключений пуст",
|
||
"connectionLogWaiting": "Ожидание журнала подключений...",
|
||
"connectionLogCopied": "Журнал подключений скопирован в буфер обмена",
|
||
"connectionLogCopyFailed": "Не удалось скопировать журнал в буфер обмена"
|
||
},
|
||
"cardGrid": {
|
||
"dragToMove": "Перетащите для перемещения",
|
||
"dragToResize": "Перетащите для изменения размера",
|
||
"changeWidth": "Изменить ширину",
|
||
"removeCard": "Удалить {{label}}",
|
||
"addCard": "Добавить",
|
||
"columns": "Столбцы",
|
||
"empty": "Нет карточек. Используйте кнопку «Добавить» ниже, чтобы добавить карточки."
|
||
},
|
||
"auth": {
|
||
"tagline": "Управление серверами с поддержкой плагинов и возможностью самостоятельного размещения.",
|
||
"loginTitle": "С возвращением",
|
||
"registerTitle": "Создать аккаунт",
|
||
"forgotPassword": "Забыли пароль?",
|
||
"rememberMe": "Запомнить устройство на 30 дней (включая TOTP)",
|
||
"noAccount": "Нет аккаунта?",
|
||
"hasAccount": "Уже есть аккаунт?",
|
||
"twoFactorAuth": "Двухфакторная аутентификация",
|
||
"enterCode": "Введите код подтверждения",
|
||
"redirectingToApp": "Перенаправление в приложение...",
|
||
"sshAuthenticationRequired": "Требуется аутентификация SSH",
|
||
"sshNoKeyboardInteractive": "Интерактивная клавиатурная аутентификация недоступна",
|
||
"sshAuthenticationFailed": "Ошибка аутентификации",
|
||
"sshAuthenticationTimeout": "Превышено время ожидания аутентификации",
|
||
"sshNoKeyboardInteractiveDescription": "Сервер не поддерживает интерактивную клавиатурную аутентификацию. Пожалуйста, введите пароль или укажите SSH-ключ.",
|
||
"sshAuthFailedDescription": "Указанные учетные данные неверны. Пожалуйста, попробуйте снова с правильными данными.",
|
||
"sshTimeoutDescription": "Превышено время ожидания попытки аутентификации. Пожалуйста, попробуйте снова.",
|
||
"sshProvideCredentialsDescription": "Пожалуйста, укажите учетные данные SSH для подключения к этому серверу.",
|
||
"sshPasswordDescription": "Введите пароль для этого SSH-подключения.",
|
||
"sshKeyPasswordDescription": "Если ваш SSH-ключ зашифрован, введите здесь парольную фразу.",
|
||
"passphraseRequired": "Требуется парольная фраза",
|
||
"passphraseRequiredDescription": "SSH-ключ зашифрован. Введите парольную фразу, чтобы разблокировать его.",
|
||
"external": "Внешний",
|
||
"loginWithExternal": "Войти через внешний провайдер",
|
||
"loginWithExternalDesc": "Войдите, используя настроенный внешний провайдер идентификации",
|
||
"loginWithProvider": "Войти через {{name}}",
|
||
"resetPasswordButton": "Сбросить пароль",
|
||
"sendResetCode": "Отправить код сброса",
|
||
"resetCodeDesc": "Введите имя пользователя, чтобы получить код сброса пароля. Код будет записан в логи контейнера Docker.",
|
||
"resetCode": "Код сброса",
|
||
"verifyCodeButton": "Проверить код",
|
||
"newPassword": "Новый пароль",
|
||
"confirmNewPassword": "Подтвердите пароль",
|
||
"signUp": "Зарегистрироваться",
|
||
"loadingServer": "Загрузка сервера...",
|
||
"password": "Пароль",
|
||
"secondFactorUnavailable": "Для вашего аккаунта используется второй фактор аутентификации, который сейчас недоступен. Обратитесь к администратору для сброса.",
|
||
"externalLoginRequired": "Вход в этот аккаунт осуществляется через единый вход (SSO). Используйте соответствующую кнопку для входа.",
|
||
"secondFactorNoUI": "Этот второй фактор аутентификации не может быть отображен на этом экране. Обратитесь к администратору.",
|
||
"serverAuthentication": "Вход на сервер",
|
||
"minChars": "мин. {{min}} символов",
|
||
"retrySecondFactorUI": "Обновить методы проверки",
|
||
"localDesktopSignedOut": "Выход из локальной сессии рабочего стола",
|
||
"localDesktopUnavailable": "Локальная сессия рабочего стола недоступна",
|
||
"localDesktopSignedOutDesc": "Вы вышли из локальной сессии рабочего стола. Продолжите локально, чтобы снова использовать встроенный сервер Termix этого устройства.",
|
||
"localDesktopUnavailableDesc": "Termix не смог запустить локальную сессию рабочего стола. Повторите попытку вместо регистрации нового аккаунта.",
|
||
"continueLocalDesktop": "Продолжить с локальным рабочим столом",
|
||
"retryLocalDesktop": "Повторить попытку локальной сессии рабочего стола"
|
||
},
|
||
"hostKey": {
|
||
"verifyNewHost": "Проверить ключ SSH-хоста",
|
||
"keyChangedWarning": "Ключ SSH-хоста изменен",
|
||
"firstConnectionTitle": "Первое подключение к этому хосту",
|
||
"firstConnectionDescription": "Подлинность этого хоста не может быть установлена. Убедитесь, что отпечаток соответствует ожидаемому.",
|
||
"keyChangedDescription": "Ключ хоста для этого сервера изменился с момента вашего последнего подключения. Это может указывать на проблему безопасности.",
|
||
"previousKey": "Предыдущий ключ",
|
||
"newFingerprint": "Новый отпечаток",
|
||
"fingerprint": "Отпечаток",
|
||
"verifyInstructions": "Если вы доверяете этому хосту, нажмите «Принять», чтобы продолжить и сохранить этот отпечаток для будущих подключений.",
|
||
"securityWarning": "Предупреждение о безопасности",
|
||
"acceptAndContinue": "Принять и продолжить",
|
||
"acceptNewKey": "Принять новый ключ и продолжить"
|
||
},
|
||
"errors": {
|
||
"databaseConnection": "Сервер Termix не отвечает",
|
||
"embeddedServerFailed": "Не удалось запустить локальный сервер Termix",
|
||
"unknownError": "Неизвестная ошибка",
|
||
"syncedHostMissing": "Синхронизированный хост не существует на связанном сервере",
|
||
"linkedServerUnreachable": "Связанный сервер недоступен",
|
||
"loginFailed": "Ошибка входа",
|
||
"failedPasswordReset": "Не удалось инициировать сброс пароля",
|
||
"failedVerifyCode": "Не удалось проверить код сброса",
|
||
"failedCompleteReset": "Не удалось завершить сброс пароля",
|
||
"invalidTotpCode": "Неверный код TOTP",
|
||
"failedExternalLogin": "Не удалось начать внешний вход",
|
||
"silentSigninExternalUnavailable": "Запрошен тихий вход, но внешний вход не настроен.",
|
||
"failedUserInfo": "Не удалось получить информацию о пользователе после входа",
|
||
"externalAuthFailed": "Внешний вход не выполнен",
|
||
"invalidAuthUrl": "Получен неверный URL авторизации от бэкенда",
|
||
"requiredField": "Это поле обязательно для заполнения",
|
||
"minLength": "Минимальная длина — {{min}}",
|
||
"passwordMismatch": "Пароли не совпадают",
|
||
"sessionExpired": "Сессия истекла — пожалуйста, войдите снова",
|
||
"authTokenSaveFailed": "Не удалось сохранить токен аутентификации",
|
||
"authTokenMissing": "Сервер не вернул новый токен аутентификации. Пожалуйста, войдите снова.",
|
||
"failedToLoadServer": "Не удалось загрузить сервер",
|
||
"sessionExpiredLogin": "Сессия истекла. Пожалуйста, войдите снова."
|
||
},
|
||
"messages": {
|
||
"registrationDisabled": "У вас еще нет учетной записи Termix. Попросите администратора включить автоматическое создание внешних учетных записей.",
|
||
"userNotAllowed": "Ваша учетная запись не имеет права на регистрацию. Обратитесь к администратору.",
|
||
"databaseConnectionFailed": "Он может всё ещё запускаться или остановиться. Эта страница продолжает попытки и автоматически возобновит работу, когда сервер станет доступен.",
|
||
"embeddedServerPortInUse": "Порт {{port}} уже занят другой программой. Обычно это контейнер Termix Docker или процесс Termix от предыдущего сеанса. Закройте его, затем перезапустите Termix.",
|
||
"embeddedServerPortInUseUnknownPort": "Один из портов, необходимых Termix, уже занят другой программой. Закройте программу, использующую этот порт, затем перезапустите Termix.",
|
||
"embeddedServerOldDatabase": "Ваши локальные данные относятся к Termix версии 2.8 или более ранней и должны быть сначала обновлены через версию 2.9. Установите Termix 2.9.1, откройте его один раз для миграции данных, а затем обновитесь до текущей версии.",
|
||
"embeddedServerCrashed": "Локальный сервер неожиданно остановился. Перезапустите Termix и проверьте журнал рабочего стола, если это повторится.",
|
||
"resetCodeSent": "Код сброса отправлен в логи Docker",
|
||
"codeVerified": "Код успешно подтвержден",
|
||
"passwordResetSuccess": "Пароль успешно сброшен",
|
||
"loginSuccess": "Вход выполнен успешно",
|
||
"registrationSuccess": "Регистрация прошла успешно"
|
||
},
|
||
"placeholders": {
|
||
"keyPassword": "пароль ключа",
|
||
"pastePrivateKey": "Вставьте ваш закрытый ключ здесь...",
|
||
"enterPassword": "Введите ваш пароль",
|
||
"apiKeyName": "например, CI Pipeline",
|
||
"credentialName": "например, Production SSH Key",
|
||
"optionalDetails": "Дополнительные сведения...",
|
||
"sshUsername": "например, root или deploy",
|
||
"hostAddress": "10.0.0.1 или example.com",
|
||
"hostName": "например, Web Server Production"
|
||
},
|
||
"dashboard": {
|
||
"title": "Панель управления",
|
||
"github": "GitHub",
|
||
"reportBug": "Сообщить об ошибке",
|
||
"discord": "Discord",
|
||
"docs": "Документация",
|
||
"donate": "Пожертвовать",
|
||
"serverOverview": "Обзор сервера",
|
||
"version": "Версия",
|
||
"updateAvailable": "Доступно обновление",
|
||
"beta": "Бета",
|
||
"uptime": "Время работы",
|
||
"database": "База данных",
|
||
"healthy": "Работает",
|
||
"error": "Ошибка",
|
||
"totalHosts": "Всего хостов",
|
||
"totalCredentials": "Всего учетных данных",
|
||
"recentActivity": "Последняя активность",
|
||
"reset": "Сбросить",
|
||
"noRecentActivity": "Нет недавней активности",
|
||
"quickActions": "Быстрые действия",
|
||
"addHost": "Добавить хост",
|
||
"addCredential": "Добавить учетные данные",
|
||
"adminSettings": "Настройки администратора",
|
||
"userProfile": "Профиль пользователя",
|
||
"serverStats": "Статистика сервера",
|
||
"customizeLayout": "Настроить панель управления",
|
||
"justNow": "только что"
|
||
},
|
||
"dashboardTab": {
|
||
"stable": "СТАБИЛЬНАЯ",
|
||
"registerNewServer": "Зарегистрировать новый сервер",
|
||
"storeSshKeysOrPasswords": "Хранить SSH-ключи или пароли",
|
||
"manageUsersAndRoles": "Управлять пользователями и ролями",
|
||
"manageYourAccount": "Управлять своей учетной записью",
|
||
"hostStatus": "Статус хоста",
|
||
"noHostsConfigured": "Хосты не настроены",
|
||
"checking": "ПРОВЕРКА",
|
||
"commandPalette": "Палитра команд",
|
||
"done": "Готово",
|
||
"clear": "Очистить",
|
||
"dragToResizeColumns": "Перетащите, чтобы изменить ширину столбцов",
|
||
"hostsAvailable": "Доступные хосты",
|
||
"removeSection": "Удалить раздел",
|
||
"addSection": "Добавить раздел",
|
||
"allSectionsShown": "Все разделы уже отображаются на панели.",
|
||
"fromPlugins": "Из плагинов",
|
||
"dropHere": "Перетащите раздел сюда",
|
||
"dragToReorder": "Перетащите разделы, чтобы изменить их порядок",
|
||
"clearActivityConfirm": "Очистить недавнюю активность?",
|
||
"resetConfirm": "Сбросить панель к стандартному виду?",
|
||
"onlineCount_one": "{{count}} онлайн",
|
||
"onlineCount_few": "{{count}} онлайн",
|
||
"onlineCount_many": "{{count}} онлайн",
|
||
"onlineCount_other": "{{count}} онлайн",
|
||
"hostCount_one": "{{count}} хост",
|
||
"hostCount_few": "{{count}} хоста",
|
||
"hostCount_many": "{{count}} хостов",
|
||
"hostCount_other": "{{count}} хостов"
|
||
},
|
||
"admin": {
|
||
"sectionGeneral": "Общие",
|
||
"sectionUsers": "Пользователи",
|
||
"sectionSessions": "Сессии",
|
||
"sectionRoles": "Роли",
|
||
"sectionDatabase": "База данных",
|
||
"sectionApiKeys": "API-ключи",
|
||
"sectionAuditLog": "Журнал аудита",
|
||
"sectionSsl": "HTTPS-сертификат",
|
||
"sectionBranding": "Белая этикетка",
|
||
"brandingAppName": "Название приложения",
|
||
"brandingAppNameDesc": "Отображается на экране входа и во вкладке браузера. Оставьте пустым, чтобы использовать «Termix».",
|
||
"brandingTagline": "Слоган",
|
||
"brandingTaglineDesc": "Отображается под названием приложения на экране входа. Оставьте пустым, чтобы использовать стандартный слоган.",
|
||
"brandingLogo": "Логотип",
|
||
"brandingLogoDesc": "PNG, JPEG или WEBP, до 750 КБ. Заменяет стандартную иконку на экране входа и во вкладке браузера.",
|
||
"brandingLogoUpload": "Загрузить логотип",
|
||
"brandingLogoReset": "Сбросить к стандартному",
|
||
"brandingLogoInvalid": "Неверное изображение. Используйте файл PNG, JPEG или WEBP размером до 750 КБ.",
|
||
"brandingSaved": "Настройки брендинга сохранены",
|
||
"brandingSaveFailed": "Не удалось сохранить настройки брендинга",
|
||
"sslDescription": "Сертификат, который Termix использует для HTTPS. Загрузите свой собственный здесь или получите и обновите его от Let's Encrypt в разделе ACME-сертификатов.",
|
||
"sslDocsLink": "Просмотреть документацию по SSL",
|
||
"sslCertStatus": "Статус сертификата",
|
||
"sslCertStatusNone": "Нет сертификата",
|
||
"sslCertStatusValid": "Действителен",
|
||
"sslCertStatusExpiring": "Скоро истекает",
|
||
"sslCertStatusExpired": "Истек",
|
||
"sslCertExpiresAt": "Истекает {{date}}",
|
||
"sslInfoNote": "После выпуска или загрузки сертификата Termix автоматически включит HTTPS на SSL_PORT (по умолчанию 8443) в дополнение к существующему HTTP-порту. Убедитесь, что этот порт опубликован/отображен для этого контейнера, чтобы он был доступен.",
|
||
"sslManualCert": "Сертификат (PEM)",
|
||
"sslManualCertPlaceholder": "-----BEGIN CERTIFICATE-----",
|
||
"sslManualKey": "Закрытый ключ (PEM)",
|
||
"sslManualKeyPlaceholder": "-----BEGIN PRIVATE KEY-----",
|
||
"sslManualDesc": "Вставьте существующий сертификат и закрытый ключ, включая полную цепочку, если это требуется вашим центром сертификации.",
|
||
"sslManualUpload": "Загрузить и установить сертификат",
|
||
"sslManualUploadLoading": "Загрузка сертификата...",
|
||
"sslManualUploadSuccess": "Сертификат успешно загружен и установлен",
|
||
"sslManualUploadFailed": "Не удалось загрузить сертификат",
|
||
"sslManualRequiresFields": "Требуется сертификат и закрытый ключ",
|
||
"auditLogTotal": "{{total}} записей всего",
|
||
"auditLogEmpty": "Записи журнала аудита не найдены",
|
||
"auditLogSuccess": "Успешно",
|
||
"auditLogFailed": "Не удалось",
|
||
"auditLogClearFilters": "Очистить фильтры",
|
||
"auditLogPage": "Страница {{page}} из {{totalPages}} ({{total}} всего)",
|
||
"auditLogIp": "IP",
|
||
"auditLogResourceId": "ID ресурса",
|
||
"auditLogFilterUser": "Пользователь",
|
||
"auditLogFilterAction": "Действие",
|
||
"auditLogFilterResourceType": "Тип ресурса",
|
||
"auditLogFilterStatus": "Статус",
|
||
"auditLogFilterFrom": "С",
|
||
"auditLogFilterTo": "По",
|
||
"auditLogFilterAll": "Все",
|
||
"allowRegistration": "Разрешить регистрацию пользователей",
|
||
"allowRegistrationDesc": "Позволять новым пользователям регистрироваться самостоятельно, указывая имя пользователя и пароль",
|
||
"allowPasswordLogin": "Разрешить вход по паролю",
|
||
"allowPasswordLoginDesc": "Вход по имени пользователя и паролю",
|
||
"externalAutoProvision": "Автоматическое создание внешних учетных записей",
|
||
"externalAutoProvisionDesc": "Создавать учетную запись при первом входе через внешний метод аутентификации, например SSO или LDAP. Если отключено, войти таким образом смогут только пользователи, у которых уже есть учетная запись",
|
||
"secondFactorAfterExternalLogin": "Запрашивать второй фактор после внешних входов (SSO, GitHub, Google, LDAP)",
|
||
"secondFactorAfterExternalLoginDesc": "Если отключено, второй фактор запрашивается только после входа по паролю и других локальных методов, как и раньше. Если включено, он запрашивается после любого метода входа, включая SSO и LDAP.",
|
||
"allowPasswordReset": "Разрешить сброс пароля",
|
||
"allowPasswordResetDesc": "Код сброса через логи Docker",
|
||
"auditForwardingTitle": "Переадресация в SIEM",
|
||
"auditForwardingDesc": "Отправлять копию каждой записи журнала аудита во внешний коллектор в формате NDJSON. Локальные журналы остаются основным источником данных.",
|
||
"auditForwardingEnvNotice": "Переадресацию также можно настроить через переменную окружения; URL, сохраненный здесь, имеет приоритет.",
|
||
"auditForwardingToken": "Токен Bearer (необязательно)",
|
||
"auditForwardingTokenStored": "Токен Bearer (сохранен)",
|
||
"auditForwardingSaved": "Настройки переадресации журнала аудита сохранены",
|
||
"auditForwardingSaveError": "Не удалось сохранить настройки переадресации журнала аудита",
|
||
"sessionTimeout": "Тайм-аут сессии",
|
||
"hours": "часов",
|
||
"sessionTimeoutRange": "Мин. 1 ч, макс. 720 ч",
|
||
"monitoringDefaults": "Параметры мониторинга по умолчанию",
|
||
"statusCheck": "Проверка статуса",
|
||
"sec": "сек",
|
||
"logLevel": "Уровень логирования",
|
||
"usersCount_one": "{{count}} пользователь",
|
||
"usersCount_few": "{{count}} пользователя",
|
||
"usersCount_many": "{{count}} пользователей",
|
||
"usersCount_other": "{{count}} пользователя",
|
||
"searchUsers": "Поиск пользователей...",
|
||
"noUsers": "Нет пользователей",
|
||
"noUsersMatch": "Пользователи, соответствующие вашему запросу, не найдены",
|
||
"pageOf": "Страница {{page}} из {{total}}",
|
||
"createUser": "Создать",
|
||
"newRole": "Новая роль",
|
||
"roleName": "Имя",
|
||
"roleDisplayName": "Отображаемое имя",
|
||
"roleDescription": "Описание",
|
||
"rolesCount_one": "{{count}} роль",
|
||
"rolesCount_few": "{{count}} роли",
|
||
"rolesCount_many": "{{count}} ролей",
|
||
"rolesCount_other": "{{count}} роли",
|
||
"createRole": "Создать",
|
||
"creating": "Создание...",
|
||
"exportDatabase": "Экспорт базы данных",
|
||
"exportDatabaseDesc": "Скачать портативную резервную копию SQLite со всеми хостами, учетными данными и настройками",
|
||
"export": "Экспорт",
|
||
"exporting": "Экспорт...",
|
||
"importDatabase": "Импорт базы данных",
|
||
"importDatabaseDesc": "Восстановить из портативной резервной копии .sqlite на любом бэкенде базы данных",
|
||
"importDatabaseSelected": "Выбрано: {{name}}",
|
||
"selectFile": "Выбрать файл",
|
||
"changeFile": "Изменить",
|
||
"import": "Импорт",
|
||
"importing": "Импорт...",
|
||
"apiKeysCount_one": "{{count}} ключ",
|
||
"apiKeysCount_few": "{{count}} ключа",
|
||
"apiKeysCount_many": "{{count}} ключей",
|
||
"apiKeysCount_other": "{{count}} ключа",
|
||
"apiKeysDocsLink": "Просмотр документации",
|
||
"apiKeysCliHint": "Используйте API-ключ с Termix CLI для управления серверами из терминала.",
|
||
"apiKeysCliLink": "Просмотр документации по CLI",
|
||
"newApiKey": "Новый API-ключ",
|
||
"apiKeyCreatedWarning": "Ключ создан — скопируйте его сейчас, он больше не будет показан.",
|
||
"apiKeyName": "Имя",
|
||
"apiKeyUser": "Пользователь",
|
||
"apiKeySelectUser": "Выберите пользователя...",
|
||
"apiKeyExpiresAt": "Срок действия",
|
||
"createKey": "Создать ключ",
|
||
"apiKeyNoExpiry": "Бессрочно",
|
||
"revokedBadge": "ОТЗЫВАН",
|
||
"authTypeDual": "Двойная аутентификация",
|
||
"authTypeExternal": "Внешняя",
|
||
"authTypeLocal": "Локальная",
|
||
"adminStatusAdministrator": "Администратор",
|
||
"adminStatusRegularUser": "Обычный пользователь",
|
||
"adminBadge": "АДМИН",
|
||
"systemBadge": "СИСТ",
|
||
"customBadge": "ПОЛЬЗОВАТЕЛЬСКИЙ",
|
||
"youBadge": "ВЫ",
|
||
"sessionsActive_one": "{{count}} активен",
|
||
"sessionsActive_few": "{{count}} активны",
|
||
"sessionsActive_many": "{{count}} активно",
|
||
"sessionsActive_other": "{{count}} активно",
|
||
"sessionActive": "Активна: {{time}}",
|
||
"sessionExpires": "Ист.: {{time}}",
|
||
"revokeAll": "Все",
|
||
"revokeAllSessionsSuccess": "Все сессии пользователя отозваны",
|
||
"revokeAllSessionsFailed": "Не удалось отозвать сессии",
|
||
"revokeSessionFailed": "Не удалось отозвать сессию",
|
||
"addRole": "Добавить роль",
|
||
"noCustomRoles": "Пользовательские роли не определены",
|
||
"removeRoleFailed": "Не удалось удалить роль",
|
||
"assignRoleFailed": "Не удалось назначить роль",
|
||
"userAdminAccess": "Администратор",
|
||
"userAdminAccessDesc": "Полный доступ ко всем настройкам администратора",
|
||
"userRoles": "Роли",
|
||
"revokeAllUserSessions": "Отозвать все сессии",
|
||
"revokeAllUserSessionsDesc": "Принудительный повторный вход на всех устройствах",
|
||
"revoke": "Отозвать",
|
||
"deleteUserWarning": "Удаление этого пользователя необратимо.",
|
||
"deleteUser": "Удалить {{username}}",
|
||
"deleting": "Удаление...",
|
||
"deleteUserFailed": "Не удалось удалить пользователя",
|
||
"deleteUserSuccess": "Пользователь «{{username}}» удалён",
|
||
"deleteRoleSuccess": "Роль «{{name}}» удалена",
|
||
"revokeKeySuccess": "Ключ «{{name}}» отозван",
|
||
"revokeKeyFailed": "Не удалось отозвать ключ",
|
||
"copiedToClipboard": "Скопировано в буфер обмена",
|
||
"done": "Готово",
|
||
"createUserTitle": "Создать пользователя",
|
||
"createUserDesc": "Создайте новую локальную учётную запись.",
|
||
"createUserUsername": "Имя пользователя",
|
||
"createUserPassword": "Пароль",
|
||
"createUserPasswordHint": "Минимум 6 символов.",
|
||
"createUserEnterUsername": "Введите имя пользователя",
|
||
"createUserSubmit": "Создать пользователя",
|
||
"editUserTitle": "Управление пользователем: {{username}}",
|
||
"editUserDesc": "Изменение ролей, статуса администратора, сессий и настроек учётной записи.",
|
||
"editUserUsername": "Имя пользователя",
|
||
"editUserAuthType": "Тип аутентификации",
|
||
"editUserAdminStatus": "Статус администратора",
|
||
"editUserUserId": "ID пользователя",
|
||
"linkAccountTitle": "Привязка учётных записей",
|
||
"linkAccountDesc": "Объедините внешнюю учётную запись {{username}} с существующей локальной учётной записью.",
|
||
"linkAccountDescLocal": "Привяжите локальную учётную запись {{username}} к существующей внешней учётной записи.",
|
||
"linkAccountWarningTitle": "Это приведет к:",
|
||
"linkAccountEffect1": "Удалению учетной записи, доступной только через внешний провайдер",
|
||
"linkAccountEffect2": "Добавлению внешнего входа в целевую учетную запись",
|
||
"linkAccountEffect3": "Возможности входа как через внешний провайдер, так и по паролю",
|
||
"linkAccountTargetUsername": "Имя пользователя локальной учетной записи",
|
||
"linkAccountTargetPlaceholder": "Введите имя пользователя локальной учетной записи для привязки",
|
||
"linkAccountExternalUsername": "Имя пользователя внешней учетной записи",
|
||
"linkAccountExternalPlaceholder": "Введите имя пользователя внешней учетной записи для объединения",
|
||
"linkAccountExternalNotFound": "Внешняя учетная запись с таким именем пользователя не найдена",
|
||
"linkAccounts": "Привязать учетные записи",
|
||
"linkAccountSuccess": "Учетные записи успешно привязаны",
|
||
"linkAccountFailed": "Не удалось привязать учетные записи",
|
||
"linkAccountInProgress": "Привязка...",
|
||
"unlinkAccountTitle": "Отвязать внешний вход",
|
||
"unlinkAccountDesc": "Удалить внешний вход у {{username}}. Пользователь сможет входить только по паролю.",
|
||
"unlinkAccountWarning": "Это удалит внешний вход из этой учетной записи. У пользователя должен быть установлен пароль, чтобы он мог продолжать входить в систему.",
|
||
"unlinkAccount": "Отвязать внешний вход",
|
||
"unlinkAccountInProgress": "Отвязка...",
|
||
"unlinkAccountSuccess": "Внешний вход отвязан",
|
||
"unlinkAccountFailed": "Не удалось отвязать внешний вход",
|
||
"updateRegistrationFailed": "Не удалось обновить настройку регистрации",
|
||
"updatePasswordLoginFailed": "Не удалось обновить настройку входа по паролю",
|
||
"updateSecondFactorAfterExternalLoginFailed": "Не удалось обновить настройку второго фактора",
|
||
"updatePasswordResetFailed": "Не удалось обновить настройку сброса пароля",
|
||
"sessionTimeoutRange2": "Время ожидания сессии должно быть от 1 до 720 часов",
|
||
"sessionTimeoutSaved": "Время ожидания сессии сохранено",
|
||
"sessionTimeoutSaveFailed": "Не удалось сохранить время ожидания сессии",
|
||
"monitoringIntervalInvalid": "Недопустимые значения интервала",
|
||
"monitoringSaved": "Настройки мониторинга сохранены",
|
||
"monitoringSaveFailed": "Не удалось сохранить настройки мониторинга",
|
||
"logLevelUpdateFailed": "Не удалось обновить уровень логирования",
|
||
"createUserRequired": "Имя пользователя и пароль обязательны",
|
||
"createUserPasswordTooShort": "Пароль должен содержать не менее 6 символов",
|
||
"createUserSuccess": "Пользователь «{{username}}» создан",
|
||
"createUserFailed": "Не удалось создать пользователя",
|
||
"updateAdminStatusFailed": "Не удалось обновить статус администратора",
|
||
"allSessionsRevoked": "Все сессии отозваны",
|
||
"revokeSessionsFailed": "Не удалось отозвать сессии",
|
||
"manageUserData": "Управление данными пользователя",
|
||
"backToUsers": "Назад к пользователям",
|
||
"manageTabAccount": "Учетная запись",
|
||
"manageTabHosts": "Хосты",
|
||
"manageTabCredentials": "Учетные данные",
|
||
"manageTabSessions": "Сессии",
|
||
"manageTabDanger": "Опасные действия",
|
||
"manageEditorBack": "Назад к данным {{username}}",
|
||
"dataLockedBadge": "ЗАБЛОКИРОВАНО",
|
||
"dataLockedNotice": "Данные {{username}} остаются заблокированными до следующего входа. Их хосты, учетные данные и сниппеты нельзя просматривать или редактировать до этого момента.",
|
||
"resetPasswordTitle": "Сброс пароля",
|
||
"resetPasswordExternalOnly": "Этот пользователь входит через внешний провайдер и не имеет пароля.",
|
||
"resetPasswordPlaceholder": "Новый пароль",
|
||
"resetPasswordBtn": "Сбросить",
|
||
"resetPasswordWorking": "Сброс...",
|
||
"resetPasswordSuccess": "Пароль сброшен",
|
||
"resetPasswordSuccessWiped": "Пароль сброшен. Зашифрованные данные пользователя удалены.",
|
||
"resetPasswordFailed": "Не удалось сбросить пароль",
|
||
"resetPasswordConfirmWipe": "{{username}} не входил в систему после обновления шифрования, поэтому его данные невозможно восстановить. Сброс сейчас удалит его хосты, учетные данные и сниппеты. Продолжить?",
|
||
"manageApiKeys": "Ключи API",
|
||
"apiKeyNamePlaceholder": "Имя ключа",
|
||
"apiKeyCopyNotice": "Скопируйте этот ключ сейчас, он больше не будет показан.",
|
||
"noApiKeysForUser": "Нет ключей API",
|
||
"apiKeyDeleteFailed": "Не удалось удалить ключ API",
|
||
"exportUserData": "Экспорт данных",
|
||
"exportUserDataDesc": "Скачать хосты, учетные данные и данные файлового менеджера этого пользователя в формате JSON. Секреты будут расшифрованы.",
|
||
"exportUserDataSuccess": "Данные пользователя экспортированы",
|
||
"exportUserDataFailed": "Не удалось экспортировать данные пользователя",
|
||
"hostsCount_one": "{{count}} хост",
|
||
"hostsCount_few": "{{count}} хоста",
|
||
"hostsCount_many": "{{count}} хостов",
|
||
"hostsCount_other": "{{count}} хоста",
|
||
"addHostForUser": "Добавить хост",
|
||
"noHostsForUser": "У этого пользователя нет хостов",
|
||
"connectToHost": "Подключиться",
|
||
"deleteHostConfirm": "Удалить хост «{{name}}», принадлежащий {{username}}?",
|
||
"hostDeletedSuccess": "Хост удален",
|
||
"hostDeleteFailed": "Не удалось удалить хост",
|
||
"credentialsCount_one": "{{count}} учётные данные",
|
||
"credentialsCount_few": "{{count}} учётных данных",
|
||
"credentialsCount_many": "{{count}} учётных данных",
|
||
"credentialsCount_other": "{{count}} учётных данных",
|
||
"addCredentialForUser": "Добавить учетные данные",
|
||
"noCredentialsForUser": "У этого пользователя нет учетных данных",
|
||
"deleteCredentialConfirm": "Удалить учетные данные «{{name}}», принадлежащие {{username}}?",
|
||
"credentialDeletedSuccess": "Учетные данные удалены",
|
||
"credentialDeleteFailed": "Не удалось удалить учетные данные",
|
||
"noSessionsForUser": "Нет активных сессий",
|
||
"deleteSuccessorLabel": "Передать хосты и учетные данные",
|
||
"deleteSuccessorMe": "Мне (удаляющему администратору)",
|
||
"deleteSuccessorNone": "Никому, удалить их",
|
||
"deleteSuccessorDesc": "Все, чем этот пользователь делился, продолжит работать у нового владельца; выбор «Никому» удалит их хосты, учетные данные и общие ресурсы.",
|
||
"deleteUserDangerDesc": "Безвозвратно удалить {{username}} и все его данные (хосты, учетные данные, сниппеты, историю). Это действие нельзя отменить.",
|
||
"deleteUserConfirm": "Безвозвратно удалить {{username}} и все его данные?",
|
||
"deleteUserAdminBlocked": "Снимите статус администратора перед удалением этого пользователя.",
|
||
"createRoleRequired": "Имя и отображаемое имя обязательны",
|
||
"createRoleSuccess": "Роль «{{name}}» создана",
|
||
"createRoleFailed": "Не удалось создать роль",
|
||
"apiKeyNameRequired": "Имя ключа обязательно",
|
||
"apiKeyUserRequired": "ID пользователя обязателен",
|
||
"apiKeyCreatedSuccess": "Ключ API «{{name}}» создан",
|
||
"apiKeyCreateFailed": "Не удалось создать ключ API",
|
||
"exportSuccess": "База данных успешно экспортирована",
|
||
"exportFailed": "Не удалось экспортировать базу данных",
|
||
"importSelectFile": "Сначала выберите файл",
|
||
"importCompleted": "Импорт завершен: импортировано {{total}} элементов, пропущено {{skipped}}",
|
||
"importFailed": "Не удалось импортировать: {{error}}",
|
||
"importError": "Не удалось импортировать базу данных",
|
||
"sectionHostDefaults": "Параметры хоста по умолчанию",
|
||
"rolePermissions": {
|
||
"count_one": "{{count}} разрешение",
|
||
"count_few": "{{count}} разрешения",
|
||
"count_many": "{{count}} разрешений",
|
||
"count_other": "{{count}} разрешения",
|
||
"editAction": "Изменить разрешения",
|
||
"loadError": "Не удалось загрузить каталог разрешений",
|
||
"saved": "Разрешения роли сохранены",
|
||
"saveError": "Не удалось сохранить разрешения роли",
|
||
"save": "Сохранить",
|
||
"saving": "Сохранение...",
|
||
"pluginDisabled": "Плагин отключен",
|
||
"groups": {
|
||
"hosts": "Хосты",
|
||
"credentials": "Учетные данные",
|
||
"admin": "Администрирование"
|
||
}
|
||
},
|
||
"notificationPrivateEndpoints": "Разрешенные частные хосты уведомлений",
|
||
"notificationPrivateEndpointsDesc": "Точные частные хосты, к которым могут обращаться каналы уведомлений. Разделяйте их запятыми.",
|
||
"updateNotificationEndpointsFailed": "Не удалось обновить белый список конечных точек уведомлений",
|
||
"secondFactorsSectionTitle": "Двухфакторная аутентификация",
|
||
"secondFactorsNone": "Двухфакторная аутентификация не настроена",
|
||
"secondFactorUnavailable": "Недоступно",
|
||
"resetSecondFactors": "Сбросить двухфакторную аутентификацию",
|
||
"resetSecondFactorsConfirm": "Удалить все факторы двухфакторной аутентификации для {{username}}? Они смогут войти с помощью пароля или SSO и настроить их заново.",
|
||
"secondFactorsResetSuccess": "Вторые факторы сброшены",
|
||
"secondFactorsResetFailed": "Не удалось сбросить вторые факторы",
|
||
"passwordLoginForced": "Вход по паролю отключен, но другие методы входа не настроены, поэтому он временно остается включенным. Никто не останется без доступа.",
|
||
"sslNotRenewed": "Ничто не обновляет этот сертификат. Он истекает {{date}}. Включите автоматическое обновление в разделе сертификатов ACME или загрузите новый сертификат до этой даты.",
|
||
"sslSelfSigned": "Самподписанный сертификат, созданный Termix. Браузеры будут выдавать предупреждения.",
|
||
"sslRenewedBy": "Автоматически обновлен через {{plugin}}",
|
||
"sslIssuer": "Выдан {{issuer}}",
|
||
"sslNames": "Охватывает {{names}}",
|
||
"sslManualTitle": "Загрузить сертификат",
|
||
"updateExternalAutoProvisionFailed": "Не удалось обновить настройку автоматического создания",
|
||
"hostTags": "Предопределенные теги хостов",
|
||
"hostTagsDesc": "Теги, которые все пользователи видят как предложения в редакторе хостов. Нажмите Пробел или Enter, чтобы добавить тег. Удаление тега здесь не удаляет его из хостов.",
|
||
"hostTagsError": "Не удалось загрузить или сохранить предложения тегов хостов.",
|
||
"revokeAllSessionsConfirm": "Выйти для пользователя {{username}} на всех устройствах?",
|
||
"revokeSessionConfirm": "Выйти из этой сессии?",
|
||
"revokeSession": "Выйти",
|
||
"deleteRoleConfirm": "Удалить роль {{name}}?",
|
||
"revokeKeyConfirm": "Отозвать API-ключ {{name}}?",
|
||
"revokeKey": "Отозвать"
|
||
},
|
||
"newUi": {
|
||
"sidebar": {
|
||
"quickConnect": {
|
||
"where": "Куда",
|
||
"who": "Кто",
|
||
"hostLabel": "Хост",
|
||
"hostPlaceholder": "192.168.1.1 или example.com",
|
||
"portLabel": "Порт",
|
||
"usernameLabel": "Имя пользователя",
|
||
"usernamePlaceholder": "имя_пользователя",
|
||
"authLabel": "Аутентификация",
|
||
"passwordLabel": "Пароль",
|
||
"passwordPlaceholder": "пароль",
|
||
"privateKeyLabel": "Закрытый ключ",
|
||
"privateKeyPlaceholder": "Вставьте закрытый ключ...",
|
||
"credentialLabel": "Учетные данные",
|
||
"credentialPlaceholder": "Выберите сохраненные учетные данные",
|
||
"protocolLabel": "Протокол",
|
||
"domainLabel": "Домен",
|
||
"domainPlaceholder": "необязательно",
|
||
"connectToAction": "Подключиться к {{name}}",
|
||
"sshProtocol": "SSH",
|
||
"noTarget": "Ни одна установленная программа не может подключиться к этому типу хоста"
|
||
},
|
||
"keybindings": {
|
||
"description": "Привяжите клавиши к действиям в терминале и приложении или измените встроенные сочетания клавиш.",
|
||
"defaultsHeading": "Встроенные сочетания",
|
||
"fixedHeading": "Сочетания приложения",
|
||
"fixed": {
|
||
"splitRight": "Разделить вправо",
|
||
"splitDown": "Разделить вниз",
|
||
"zoomPane": "Увеличить активную панель",
|
||
"navigatePane": "Переключаться между панелями",
|
||
"nextTab": "Следующая вкладка",
|
||
"previousTab": "Предыдущая вкладка",
|
||
"jumpTab": "Перейти к вкладке",
|
||
"previousView": "Вернуться к предыдущему виду боковой панели",
|
||
"fullscreen": "Переключить полноэкранный режим"
|
||
},
|
||
"customHeading": "Пользовательские сочетания",
|
||
"addBinding": "Добавить сочетание",
|
||
"addBindingTitle": "Добавить сочетание",
|
||
"editBindingTitle": "Изменить сочетание",
|
||
"loading": "Загрузка...",
|
||
"noCustomBindings": "Пользовательских сочетаний пока нет",
|
||
"defaultBadge": "По умолчанию",
|
||
"customizedBadge": "Изменено",
|
||
"customize": "Настроить",
|
||
"resetToDefault": "Сбросить по умолчанию",
|
||
"resetAllToDefaults": "Сбросить все по умолчанию",
|
||
"cancel": "Отмена",
|
||
"saveBinding": "Сохранить сочетание клавиш",
|
||
"saveError": "Не удалось сохранить сочетания клавиш",
|
||
"pressKeysToRecord": "Сочетание клавиш",
|
||
"pressKeysPlaceholder": "Нажмите клавиши",
|
||
"recording": "Нажмите клавиши...",
|
||
"comboRequiredError": "Сначала введите сочетание клавиш",
|
||
"conflictWarning": "Это сочетание уже назначено на {{combo}}. Сохранение приведет к срабатыванию обоих действий.",
|
||
"actionLabel": "Действие",
|
||
"actionNextTab": "Переключиться на следующую вкладку",
|
||
"actionPreviousTab": "Переключиться на предыдущую вкладку",
|
||
"actionOpenCommandPalette": "Открыть быстрый поиск",
|
||
"actionReconnectSession": "Переподключить текущую сессию",
|
||
"unavailableAction": "{{type}} (недоступно)",
|
||
"actionRequiredError": "Сначала выберите действие",
|
||
"deleteConfirm": "Удалить это сочетание клавиш?",
|
||
"resetAllConfirm": "Сбросить все сочетания клавиш к значениям по умолчанию?"
|
||
},
|
||
"userProfile": {
|
||
"storageModeLocal": "Браузер",
|
||
"storageModeCloud": "База данных",
|
||
"storageModeDescription": "Браузер хранит настройки только в этом браузере. База данных синхронизирует их с сервером и загружает на любом устройстве.",
|
||
"resetToDefaults": "Сбросить к значениям по умолчанию",
|
||
"resetToDefaultsSuccess": "Настройки сброшены к значениям по умолчанию.",
|
||
"storageModeSwitch": "Хранение настроек",
|
||
"sectionAccount": "Аккаунт",
|
||
"desktopProfileTitle": "Только это устройство",
|
||
"desktopProfileDescription": "Этот профиль существует только на этом устройстве и входит в систему самостоятельно. Свяжите его с сервером Termix, чтобы использовать одни и те же хосты и настройки на всех устройствах.",
|
||
"sectionInterface": "Интерфейс",
|
||
"interfacePresetDesc": "Уровень детализации, который показывает Termix. Все функции остаются доступными.",
|
||
"preset_simple": "Простой",
|
||
"preset_simple_desc": "Только самое необходимое.",
|
||
"preset_balanced": "Сбалансированный",
|
||
"preset_balanced_desc": "Стандартная раскладка.",
|
||
"preset_advanced": "Расширенный",
|
||
"preset_advanced_desc": "Всё включено, компактно.",
|
||
"presetClearOverrides": "Сбросить все",
|
||
"presetOverridesTitle": "Настроено",
|
||
"presetRevertArea": "Отменить",
|
||
"presetConfirmTitle": "Переключиться на {{preset}}?",
|
||
"presetConfirmDesc": "Это сбросит боковую панель, навигацию, раскладку панели управления, панель инструментов терминала и вид файлового менеджера. Ваши хосты, учетные данные и домашняя страница не будут затронуты.",
|
||
"presetConfirmApply": "Применить пресет",
|
||
"runSetupAgainDesc": "Повторно пройти начальную настройку.",
|
||
"runSetupAgainButton": "Запустить настройку",
|
||
"uiArea_chrome": "Интерфейс приложения",
|
||
"uiArea_hostList": "Список хостов",
|
||
"uiArea_credentialList": "Список учетных данных",
|
||
"uiArea_rail": "Навигация",
|
||
"uiArea_dashboard": "Панель управления",
|
||
"uiArea_terminal": "Терминал",
|
||
"uiArea_fileManager": "Файловый менеджер",
|
||
"uiArea_hostEditor": "Редактор хоста",
|
||
"sectionAppearance": "Внешний вид",
|
||
"sectionSecurity": "Безопасность",
|
||
"sectionApiKeys": "Ключи API",
|
||
"sectionData": "Данные",
|
||
"usernameLabel": "Имя пользователя",
|
||
"roleLabel": "Роль",
|
||
"roleAdministrator": "Администратор",
|
||
"authMethodLabel": "Метод аутентификации",
|
||
"authMethodLocal": "Локальный",
|
||
"twoFaLabel": "2FA",
|
||
"twoFaOn": "Вкл.",
|
||
"twoFaOff": "Выкл.",
|
||
"versionLabel": "Версия",
|
||
"cliTitle": "Termix CLI",
|
||
"cliDescription": "Открывайте терминалы, запускайте команды и перемещайте файлы прямо из своей оболочки.",
|
||
"cliLearnMore": "Подробнее",
|
||
"deleteAccount": "Удалить аккаунт",
|
||
"deleteAccountDescription": "Безвозвратно удалить ваш аккаунт",
|
||
"deleteButton": "Удалить",
|
||
"deleteAccountPermanent": "Это действие необратимо.",
|
||
"deleteAccountWarning": "Все сеансы, хосты, учетные данные и настройки будут удалены безвозвратно.",
|
||
"confirmPasswordDeletePlaceholder": "Введите пароль для подтверждения",
|
||
"languageLabel": "Язык",
|
||
"themeLabel": "Тема",
|
||
"fontSizeLabel": "Размер шрифта",
|
||
"interfaceFontLabel": "Шрифт интерфейса",
|
||
"interfaceFontDescription": "Изменяет шрифт интерфейса приложения. Профили терминала сохраняют собственные настройки шрифта.",
|
||
"accentColorLabel": "Акцентный цвет",
|
||
"keyboardShortcuts": "Горячие клавиши",
|
||
"keyboardShortcutsDescription": "Настройте сочетания клавиш для копирования, вставки и команд в терминале",
|
||
"manageShortcuts": "Настроить",
|
||
"commandPalette": "Палитра команд",
|
||
"commandPaletteDesc": "Включить сочетание клавиш",
|
||
"reopenTabsOnLogin": "Восстанавливать вкладки при входе",
|
||
"reopenTabsOnLoginDesc": "Восстанавливайте открытые вкладки при входе в систему или обновлении страницы, даже с другого устройства",
|
||
"confirmTabClose": "Подтверждать закрытие вкладки",
|
||
"confirmTabCloseDesc": "Спрашивать перед закрытием вкладок терминала",
|
||
"showTabNumbers": "Показывать номера вкладок",
|
||
"showTabNumbersDesc": "Отображать номер на каждой вкладке для удобства различения",
|
||
"settingsAppRail": "Боковая панель приложений",
|
||
"sidebarSettingsMoved": "Настройки отображения боковой панели хостов перенесены в панель «Настроить боковую панель», которая открывается из панели инструментов хостов.",
|
||
"showHostTags": "Показывать теги хостов",
|
||
"showHostTagsDesc": "Отображать теги в списке хостов",
|
||
"statusColors": "Реальные цвета статуса",
|
||
"statusColorsDesc": "Использовать зеленый/красный для статуса онлайн/офлайн вместо акцентного цвета",
|
||
"pinAppRail": "Закрепить боковую панель приложений",
|
||
"pinAppRailDesc": "Держать левую боковую панель приложений всегда развернутой, вместо раскрытия при наведении",
|
||
"expandAppRailOnHover": "Разворачивать боковую панель при наведении",
|
||
"expandAppRailOnHoverDesc": "Разрешить разворачивание левой боковой панели приложений при наведении указателя",
|
||
"appRailHoverPushesContent": "Сдвигать контент при расширении",
|
||
"appRailHoverPushesContentDesc": "Освободить место для расширенной панели вместо наложения на страницу. Открытые сессии, например удалённый рабочий стол, будут каждый раз изменять размер",
|
||
"showPinAppRailButton": "Показывать кнопку закрепления панели",
|
||
"showPinAppRailButtonDesc": "Показывать кнопку для закрепления панели в открытом состоянии. По умолчанию выключено.",
|
||
"settingsNavigation": "Навигация",
|
||
"navigationTabsDesc": "Выберите, какие вкладки отображаются в боковой панели приложений",
|
||
"settingsUpdates": "Обновления",
|
||
"disableUpdateChecks": "Отключить проверку обновлений",
|
||
"disableUpdateChecksDesc": "Перестать проверять наличие обновлений",
|
||
"changePassword": "Изменить пароль",
|
||
"currentPasswordLabel": "Текущий пароль",
|
||
"currentPasswordPlaceholder": "Текущий пароль",
|
||
"newPasswordLabel": "Новый пароль",
|
||
"newPasswordPlaceholder": "Новый пароль",
|
||
"confirmPasswordLabel": "Подтвердите новый пароль",
|
||
"confirmPasswordPlaceholder": "Подтвердите новый пароль",
|
||
"updatePassword": "Обновить пароль",
|
||
"createApiKeyTitle": "Создать ключ API",
|
||
"createApiKeyDescription": "Создайте новый ключ API для программного доступа.",
|
||
"apiKeyNameLabel": "Имя",
|
||
"apiKeyNamePlaceholder": "напр. CI Pipeline",
|
||
"expiryDateLabel": "Дата истечения срока",
|
||
"optional": "необязательно",
|
||
"cancel": "Отмена",
|
||
"createKey": "Создать ключ",
|
||
"apiKeyCreatedWarning": "Ключ создан — скопируйте его сейчас, он больше не будет показан.",
|
||
"copyApiKey": "Скопировать API-ключ",
|
||
"copiedToClipboard": "Скопировано в буфер обмена",
|
||
"apiKeyCount_one": "{{count}} ключ",
|
||
"apiKeyCount_few": "{{count}} ключа",
|
||
"apiKeyCount_many": "{{count}} ключей",
|
||
"apiKeyCount_other": "{{count}} ключа",
|
||
"newKey": "Новый ключ",
|
||
"noApiKeys": "API-ключей пока нет.",
|
||
"apiKeyActive": "Активен",
|
||
"apiKeyUsageHint": "Добавьте ваш ключ в",
|
||
"apiKeyUsageHintHeader": "заголовок.",
|
||
"apiKeyPermissionsHint": "Ключи наследуют права пользователя, который их создал.",
|
||
"exportData": "Экспорт моих данных",
|
||
"exportDataDesc": "Скачайте резервную копию ваших хостов, учетных данных и настроек для переноса на другое устройство",
|
||
"export": "Экспорт",
|
||
"exporting": "Экспорт...",
|
||
"importData": "Импорт моих данных",
|
||
"importDataDesc": "Восстановите хосты, учетные данные и настройки из файла резервной копии .sqlite",
|
||
"importDataSelected": "Выбрано: {{name}}",
|
||
"selectFile": "Выбрать файл",
|
||
"changeFile": "Изменить",
|
||
"import": "Импорт",
|
||
"importing": "Импорт...",
|
||
"exportSuccess": "Данные успешно экспортированы",
|
||
"exportFailed": "Ошибка экспорта данных",
|
||
"importSelectFile": "Сначала выберите файл",
|
||
"importCompleted": "Импорт завершен: импортировано {{total}} элементов, пропущено {{skipped}}",
|
||
"importFailed": "Ошибка импорта: {{error}}",
|
||
"roleUser": "Пользователь",
|
||
"authMethodDual": "Двухфакторная аутентификация",
|
||
"authMethodExternal": "Внешняя",
|
||
"done": "Готово",
|
||
"apiKeyNameRequired": "Укажите имя ключа",
|
||
"apiKeyCreated": "API-ключ «{{name}}» создан",
|
||
"apiKeyCreateFailed": "Не удалось создать API-ключ",
|
||
"apiKeyUser": "Пользователь",
|
||
"apiKeyExpires": "Истекает",
|
||
"apiKeyRevoked": "API-ключ «{{name}}» отозван",
|
||
"apiKeyRevokeFailed": "Не удалось отозвать API-ключ",
|
||
"passwordFieldsRequired": "Укажите текущий и новый пароли",
|
||
"passwordMismatch": "Пароли не совпадают",
|
||
"passwordTooShort": "Пароль должен содержать не менее 6 символов",
|
||
"passwordUpdated": "Пароль успешно обновлен",
|
||
"passwordUpdateFailed": "Не удалось обновить пароль",
|
||
"deletePasswordRequired": "Для удаления учетной записи необходимо ввести пароль",
|
||
"deleteFailed": "Не удалось удалить учетную запись",
|
||
"deleting": "Удаление...",
|
||
"colorPickerTooltip": "Открыть палитру цветов",
|
||
"themeSystem": "Системная",
|
||
"themeLight": "Светлая",
|
||
"themeDark": "Темная",
|
||
"themeDracula": "Dracula",
|
||
"themeCatppuccin": "Catppuccin",
|
||
"themeNord": "Nord",
|
||
"themeSolarized": "Solarized",
|
||
"themeTokyoNight": "Tokyo Night",
|
||
"themeOneDark": "One Dark",
|
||
"themeGruvbox": "Gruvbox",
|
||
"linkedProfileTitle": "Выполнен вход в {{server}}",
|
||
"linkedProfileDescription": "Это устройство использует ваш аккаунт на сервере и хранит копию ваших данных, поэтому оно продолжает работать в автономном режиме.",
|
||
"manageSync": "Настроить синхронизацию",
|
||
"setUpSync": "Привязать к серверу",
|
||
"settingsTabsAndShortcuts": "Вкладки и сочетания клавиш",
|
||
"onBetaTitle": "Вы используете бета-версию",
|
||
"onBetaDescription": "Спасибо за тестирование. Сообщите нам о любых ошибках.",
|
||
"tryBetaTitle": "Попробуйте новые функции первыми",
|
||
"tryBetaDescription": "Присоединитесь к бета-программе в разделе «Обновления».",
|
||
"sendBetaFeedback": "Отправить отзыв о бета-версии",
|
||
"openUpdates": "Обновления"
|
||
}
|
||
}
|
||
},
|
||
"plugins": {
|
||
"capabilities": {
|
||
"credentials:read": {
|
||
"title": "Просмотр ваших паролей и ключей",
|
||
"consequence": "Может читать сохраненные секреты для любого хоста, к которому у вас есть доступ."
|
||
},
|
||
"ssh:connect": {
|
||
"title": "Выполнение команд на ваших серверах",
|
||
"consequence": "Любые команды на хостах, к которым подключается плагин, с использованием ваших прав доступа."
|
||
},
|
||
"process:spawn": {
|
||
"title": "Запуск программ на этом компьютере",
|
||
"consequence": "Программы запускаются на самом сервере Termix, а не на ваших хостах."
|
||
},
|
||
"users:write": {
|
||
"title": "Создание и изменение учетных записей пользователей",
|
||
"consequence": "Может добавлять пользователей и изменять их роли."
|
||
},
|
||
"auth:provide": {
|
||
"title": "Обработка входа в систему",
|
||
"consequence": "Может добавлять методы входа, второй фактор аутентификации или тип входа по SSH."
|
||
},
|
||
"system:tls": {
|
||
"title": "Управление сертификатами",
|
||
"consequence": "Может заменять сертификат, который Termix использует для HTTPS, и отвечать на проверки доменов со стороны центров сертификации."
|
||
},
|
||
"device:serial": {
|
||
"title": "Доступ к последовательным и USB-устройствам",
|
||
"consequence": "Может открывать физический последовательный порт на компьютере, где запущен Termix."
|
||
},
|
||
"hosts:write": {
|
||
"title": "Создание и изменение хостов",
|
||
"consequence": "Может добавлять хосты и редактировать уже существующие."
|
||
},
|
||
"credentials:use": {
|
||
"title": "Подключение к вашим серверам",
|
||
"consequence": "Не может видеть ваши пароли или ключи."
|
||
},
|
||
"credentials:write": {
|
||
"title": "Сохранение новых учетных данных",
|
||
"consequence": "Может добавлять пароли и ключи в ваши сохраненные учетные данные."
|
||
},
|
||
"network:outbound": {
|
||
"title": "Доступ в интернет",
|
||
"consequence": "Может отправлять запросы к внешним сервисам."
|
||
},
|
||
"network:serve": {
|
||
"title": "Принятие подключений",
|
||
"consequence": "Открывает порт на сервере Termix."
|
||
},
|
||
"network:broadcast": {
|
||
"title": "Отправка сетевых широковещательных сообщений",
|
||
"consequence": "Может отправлять пакеты устройствам в локальной сети, например сигнал Wake-on-LAN."
|
||
},
|
||
"users:read": {
|
||
"title": "Просмотр имен пользователей и ролей",
|
||
"consequence": "Никогда не получает хэши паролей или состояние двухфакторной аутентификации."
|
||
},
|
||
"events:core": {
|
||
"title": "Наблюдение за всеми событиями",
|
||
"consequence": "Включая активность других пользователей, а не только вашу."
|
||
},
|
||
"notify:send": {
|
||
"title": "Отправка уведомлений",
|
||
"consequence": "Вам или другим пользователям через настроенные ими каналы."
|
||
},
|
||
"notify:hub": {
|
||
"title": "Получение всех уведомлений",
|
||
"consequence": "Хранит и доставляет все уведомления, отправленные другими плагинами, включая их содержимое."
|
||
},
|
||
"audit:read": {
|
||
"title": "Чтение журнала аудита",
|
||
"consequence": "Может видеть, кто, что и когда делал."
|
||
},
|
||
"desktop:window": {
|
||
"title": "Открытие окон рабочего стола",
|
||
"consequence": "Только в настольном приложении Termix."
|
||
},
|
||
"users:impersonate": {
|
||
"title": "Действие от имени других пользователей",
|
||
"consequence": "Выполняет фоновые задачи с правами другого пользователя, например запланированные задания. Каждое использование записывается в журнал аудита."
|
||
},
|
||
"db:core-refs": {
|
||
"title": "Чтение основных таблиц учетных записей",
|
||
"consequence": "Может напрямую запрашивать данные о пользователях, ролях и хостах из базы данных."
|
||
},
|
||
"hosts:read": {
|
||
"title": "Просмотр списка ваших хостов",
|
||
"consequence": "Имена и адреса хостов, которые вы уже видите."
|
||
},
|
||
"db:own": {
|
||
"title": "Хранение собственных данных",
|
||
"consequence": "Хранится в собственных таблицах, отдельно от других плагинов."
|
||
},
|
||
"kv:own": {
|
||
"title": "Запоминание небольших настроек",
|
||
"consequence": "Хранится отдельно от других плагинов."
|
||
},
|
||
"files:own": {
|
||
"title": "Хранение собственных файлов",
|
||
"consequence": "В собственной папке на диске, отдельно от других плагинов."
|
||
},
|
||
"secrets:own": {
|
||
"title": "Хранить свои секреты",
|
||
"consequence": "Зашифровано Termix. Плагин никогда не хранит ключ."
|
||
},
|
||
"settings:read-core": {
|
||
"title": "Чтение настроек Termix",
|
||
"consequence": "Настройки сервера, а не ваши хосты или учетные данные."
|
||
},
|
||
"plugins:read": {
|
||
"title": "Просмотр установленных плагинов",
|
||
"consequence": "Он может видеть, какие плагины установлены и запущены."
|
||
},
|
||
"ui:surface": {
|
||
"title": "Добавлять свои экраны",
|
||
"consequence": "Вкладки, панели и настройки, которые можно скрыть позже."
|
||
}
|
||
},
|
||
"runtime": {
|
||
"needsPlugin": "{{name}} недоступен",
|
||
"needsUnknownPlugin": "Этот плагин недоступен",
|
||
"disabledHint": "Он отключен на этом сервере.",
|
||
"missingHint": "Плагин, из которого он был получен, был удален.",
|
||
"failed": "{{name}} не удалось запустить",
|
||
"failedHint": "Администратор может проверить журналы сервера для получения подробной информации.",
|
||
"loading": "Загрузка {{name}}",
|
||
"crashed": "Что-то пошло не так в {{name}}",
|
||
"retry": "Попробовать снова"
|
||
},
|
||
"manager": {
|
||
"tabs": {
|
||
"installed": "Установленные",
|
||
"browse": "Каталог",
|
||
"updates": "Обновления",
|
||
"registries": "Регистры"
|
||
},
|
||
"status": {
|
||
"summary": "{{installed}} установлено, {{running}} запущено",
|
||
"running": "Запущен",
|
||
"disabled": "Отключен",
|
||
"failed": "Неожиданно остановлен",
|
||
"blocked": "Ожидание другого плагина",
|
||
"server": "Работает на вашем сервере"
|
||
},
|
||
"groups": {
|
||
"running": "Запущенные",
|
||
"notRunning": "Не запущенные",
|
||
"onServer": "На вашем сервере"
|
||
},
|
||
"runsOnServerHint": "Этот плагин работает только на вашем сервере, поэтому он отключён в десктопном приложении. Он продолжает работать на сервере.",
|
||
"sort": {
|
||
"popular": "Самые популярные",
|
||
"name": "Имя",
|
||
"updated": "Недавно обновленные",
|
||
"category": "Категория"
|
||
},
|
||
"columns": {
|
||
"title": "Столбцы",
|
||
"auto": "Авто",
|
||
"count": "{{count}} столбцов"
|
||
},
|
||
"table": {
|
||
"name": "Имя",
|
||
"description": "Описание",
|
||
"version": "Версия",
|
||
"status": "Статус",
|
||
"category": "Категория",
|
||
"downloads": "Скачивания"
|
||
},
|
||
"risk": {
|
||
"critical": "Критический",
|
||
"high": "Высокий риск",
|
||
"medium": "Средний риск",
|
||
"low": "Низкий риск"
|
||
},
|
||
"contributes": {
|
||
"tabs_one": "{{count}} вкладка",
|
||
"tabs_few": "{{count}} вкладки",
|
||
"tabs_many": "{{count}} вкладок",
|
||
"tabs_other": "{{count}} вкладок",
|
||
"panels_one": "{{count}} панель",
|
||
"panels_few": "{{count}} панели",
|
||
"panels_many": "{{count}} панелей",
|
||
"panels_other": "{{count}} панелей",
|
||
"dashboardCards_one": "{{count}} карточка панели управления",
|
||
"dashboardCards_few": "{{count}} карточки панели управления",
|
||
"dashboardCards_many": "{{count}} карточек панели управления",
|
||
"dashboardCards_other": "{{count}} карточек панели управления",
|
||
"actions_one": "{{count}} действие",
|
||
"actions_few": "{{count}} действия",
|
||
"actions_many": "{{count}} действий",
|
||
"actions_other": "{{count}} действий",
|
||
"protocols_one": "{{count}} тип подключения",
|
||
"protocols_few": "{{count}} типа подключения",
|
||
"protocols_many": "{{count}} типов подключения",
|
||
"protocols_other": "{{count}} типов подключения",
|
||
"auth_one": "{{count}} способ входа",
|
||
"auth_few": "{{count}} способа входа",
|
||
"auth_many": "{{count}} способов входа",
|
||
"auth_other": "{{count}} способов входа",
|
||
"settings_one": "Настройки",
|
||
"settings_few": "Настройки",
|
||
"settings_many": "Настройки",
|
||
"settings_other": "Настройки",
|
||
"hostCapability_one": "Настройки хоста",
|
||
"hostCapability_few": "Настройки хоста",
|
||
"hostCapability_many": "Настройки хоста",
|
||
"hostCapability_other": "Настройки хоста",
|
||
"permissions_one": "{{count}} разрешение роли",
|
||
"permissions_few": "{{count}} разрешения роли",
|
||
"permissions_many": "{{count}} разрешений роли",
|
||
"permissions_other": "{{count}} разрешений роли",
|
||
"keybindingActions_one": "{{count}} сочетание клавиш",
|
||
"keybindingActions_few": "{{count}} сочетания клавиш",
|
||
"keybindingActions_many": "{{count}} сочетаний клавиш",
|
||
"keybindingActions_other": "{{count}} сочетаний клавиш",
|
||
"syncEntities_one": "Синхронизация рабочего стола",
|
||
"syncEntities_few": "Синхронизация рабочего стола",
|
||
"syncEntities_many": "Синхронизация рабочего стола",
|
||
"syncEntities_other": "Синхронизация рабочего стола"
|
||
},
|
||
"consent": {
|
||
"enableTitle": "Включить {{name}}?",
|
||
"installTitle": "Установить {{name}}",
|
||
"updateTitle": "Обновить {{name}}",
|
||
"agreeUpdate": "Согласиться и обновить",
|
||
"updateExplain": "Эта версия запрашивает то, чего не запрашивает ваша текущая, поэтому она не установится автоматически.",
|
||
"newInVersion": "Новое в этой версии",
|
||
"minor": "Также добавляет собственные экраны и хранит свои данные, отделённые от данных других плагинов.",
|
||
"none": "Не запрашивает специальных разрешений.",
|
||
"uploadTitle": "Установить {{name}} из файла",
|
||
"uploadWarning": "Этот файл не проверен и не подписан реестром Termix. Устанавливайте его только если создали сами или доверяете автору."
|
||
},
|
||
"confirm": {
|
||
"uninstallTitle": "Удалить {{name}}?",
|
||
"uninstallBody": "Это остановит плагин и удалит все его данные, включая настройки и секреты. Вы сможете установить его снова, но данные не восстановятся.",
|
||
"deleteDataTitle": "Удалить все данные для {{name}}?",
|
||
"deleteDataBody": "Его таблицы, настройки, секреты и файлы будут удалены, а плагин отключён. Это действие нельзя отменить.",
|
||
"enableAlsoTitle": "Включить {{name}}?",
|
||
"enableAlsoBody": "Для работы ему нужны следующие компоненты, поэтому они тоже будут включены: {{list}}.",
|
||
"disableAlsoTitle": "Отключить {{name}}?",
|
||
"disableAlsoBody": "Эти компоненты зависят от него, поэтому они тоже будут отключены: {{list}}.",
|
||
"downgradeTitle": "Вернуться к {{name}} {{version}}?",
|
||
"downgradeBody": "Данные, записанные новой версией, останутся без изменений, а старая версия может не понять их. Плагин останется на этой версии, пока вы не снимете фиксацию.",
|
||
"downgradeConfirm": "Сменить версию"
|
||
},
|
||
"toast": {
|
||
"installed": "{{name}} установлен",
|
||
"installedNotRunning": "{{name}} установлен, но не удалось запустить. Откройте его, чтобы узнать причину.",
|
||
"updated": "{{name}} обновлён до {{version}}",
|
||
"updatedMany_one": "{{count}} плагин обновлён",
|
||
"updatedMany_few": "{{count}} плагина обновлено",
|
||
"updatedMany_many": "{{count}} плагинов обновлено",
|
||
"updatedMany_other": "{{count}} плагинов обновлено",
|
||
"uninstalled": "{{name}} удалён",
|
||
"dataDeleted": "Данные для {{name}} удалены",
|
||
"failedToStart": "Не удалось запустить {{name}}. Откройте его, чтобы узнать причину."
|
||
},
|
||
"errors": {
|
||
"generic": "Что-то пошло не так",
|
||
"install": "Не удалось установить {{name}}: {{error}}",
|
||
"update": "Не удалось обновить {{name}}: {{error}}",
|
||
"updateAll": "Не удалось обновить плагины: {{error}}",
|
||
"uninstall": "Не удалось удалить {{name}}: {{error}}",
|
||
"state": "Не удалось изменить состояние {{name}}: {{error}}",
|
||
"retry": "Не удалось перезапустить {{name}}: {{error}}",
|
||
"options": "Не удалось сохранить параметры для {{name}}: {{error}}",
|
||
"deleteData": "Не удалось удалить данные для {{name}}: {{error}}",
|
||
"managedByServer": "Этот рабочий стол связан с сервером, который управляет его плагинами.",
|
||
"hasDependents": "{{name}} требуется для {{list}}. Сначала отключите или удалите их.",
|
||
"missingDependencies": "{{name}} требует {{list}}, который не установлен.",
|
||
"consentChanged": "Список запрашиваемых разрешений изменился с момента последнего просмотра. Проверьте его снова.",
|
||
"upload": "Не удалось прочитать {{name}}: {{error}}",
|
||
"developerMode": "Не удалось изменить режим разработчика: {{error}}"
|
||
},
|
||
"data": {
|
||
"title": "Хранимые данные",
|
||
"delete": "Удалить данные",
|
||
"loadFailed": "Не удалось прочитать данные, хранимые этим плагином.",
|
||
"tables": "Таблицы",
|
||
"kv": "Ключи",
|
||
"settings": "Настройки",
|
||
"files": "Файлы",
|
||
"rows_one": "{{count}} строка",
|
||
"rows_few": "{{count}} строки",
|
||
"rows_many": "{{count}} строк",
|
||
"rows_other": "{{count}} строк",
|
||
"secrets_one": "{{count}} секрет",
|
||
"secrets_few": "{{count}} секрета",
|
||
"secrets_many": "{{count}} секретов",
|
||
"secrets_other": "{{count}} секретов",
|
||
"migrations_one": "{{count}} миграция применена",
|
||
"migrations_few": "{{count}} миграции применены",
|
||
"migrations_many": "{{count}} миграций применено",
|
||
"migrations_other": "{{count}} миграций применено",
|
||
"grants_one": "{{count}} возможность предоставлена",
|
||
"grants_few": "{{count}} возможности предоставлены",
|
||
"grants_many": "{{count}} возможностей предоставлено",
|
||
"grants_other": "{{count}} возможностей предоставлено"
|
||
},
|
||
"install": "Установить",
|
||
"uninstall": "Удалить",
|
||
"enable": "Включить",
|
||
"disable": "Отключить",
|
||
"restart": "Перезапустить",
|
||
"update": "Обновить",
|
||
"updateAll": "Обновить все",
|
||
"updateTo": "Обновить до {{version}}",
|
||
"review": "Просмотр",
|
||
"reviewUpdate": "Просмотр обновления",
|
||
"updates": "Обновления",
|
||
"auto": "Авто",
|
||
"autoUpdate": "Обновлять автоматически",
|
||
"autoUpdateHint": "Никогда, если обновление запрашивает новые разрешения.",
|
||
"pin": "Закрепить эту версию",
|
||
"pinHint": "Остаётся на версии {{version}} и пропускает все обновления, пока вы не отключите это.",
|
||
"pinnedTo": "Закреплена версия {{version}}",
|
||
"version": "Версия",
|
||
"versionPickHint": "Установите более старую версию вместо последней. Она останется на этой версии, пока вы не снимете закрепление.",
|
||
"versionPickHintInstalled": "Переключитесь на другую версию. Выбор версии, отличной от последней, закрепит её.",
|
||
"switchVersion": "Переключить",
|
||
"latestVersion": "{{version}} (последняя)",
|
||
"versionChange": "с {{from}} на {{to}}",
|
||
"releaseNotes": "Список изменений",
|
||
"noReleaseNotes": "Для этой версии нет заметок.",
|
||
"viewRelease": "Посмотреть на GitHub",
|
||
"showOlderReleases": "Старые версии ({{count}})",
|
||
"hideOlderReleases": "Скрыть старые версии",
|
||
"showMoreChanges": "Показать ещё {{count}}",
|
||
"videoTitle": "Видео {{name}}",
|
||
"changeTypes": {
|
||
"added": "Добавлено",
|
||
"changed": "Изменено",
|
||
"fixed": "Исправлено",
|
||
"removed": "Удалено",
|
||
"deprecated": "Устарело",
|
||
"security": "Безопасность"
|
||
},
|
||
"installedBadge": "Установлено",
|
||
"incompatible": "Требуется более новая версия Termix",
|
||
"features": "Возможности",
|
||
"whatItCanDo": "Что он умеет",
|
||
"addsToTermix": "Добавляет в Termix",
|
||
"addsToTermixHint": "После удаления все эти функции исчезнут.",
|
||
"noServerAccess": "Нет доступа к вашим серверам",
|
||
"searchInstalled": "Поиск среди установленных",
|
||
"searchPlugins": "Поиск плагинов",
|
||
"allCategories": "Все",
|
||
"nothingMatches": "Ничего не найдено.",
|
||
"noneInstalled": "Плагины ещё не установлены. Просмотрите каталог, чтобы добавить.",
|
||
"nothingHere": "Здесь пусто.",
|
||
"nothingHereHint": "Попробуйте другую категорию или поиск.",
|
||
"showInstalled": "Показать установленные",
|
||
"allInstalled": "Всё здесь уже установлено.",
|
||
"allInstalledHint": "Включите «Показать установленные», чтобы увидеть их.",
|
||
"communitySubmit": "Как отправить",
|
||
"registries": {
|
||
"intro": "Регистры — это списки плагинов, которые можно установить. Официальный регистр всегда включён. Вы можете включить регистр сообщества или добавить свой собственный.",
|
||
"hostYourOwn": "Разместить свой регистр",
|
||
"add": "Добавить регистр",
|
||
"addTitle": "Добавить регистр",
|
||
"addHint": "Вставьте ссылку на index.json регистра. Termix прочитает его и покажет ключ, которым он подписывает плагины. Добавляйте только регистры от людей, которым доверяете.",
|
||
"urlLabel": "URL индекса",
|
||
"check": "Проверить",
|
||
"addConfirm": "Доверять и добавить",
|
||
"added": "Добавлен {{name}}",
|
||
"customWarning": "Плагины из этого регистра не проверяются командой Termix. Только владелец регистра решает, что в нём находится. Каждое скачивание должно быть подписано ключом, указанным выше.",
|
||
"keyFingerprint": "Ключ {{keyId}}",
|
||
"pluginCount_one": "{{count}} плагин",
|
||
"pluginCount_few": "{{count}} плагина",
|
||
"pluginCount_many": "{{count}} плагинов",
|
||
"pluginCount_other": "{{count}} плагинов",
|
||
"officialName": "Официальный",
|
||
"communityName": "Сообщества",
|
||
"alwaysOn": "Всегда включён",
|
||
"communityHint": "Плагины, созданные другими людьми. Каждая версия проверяется человеком и автоматическими проверками перед добавлением в список.",
|
||
"communityConfirmTitle": "Включить плагины сообщества?",
|
||
"communityConfirmBody": "Плагины сообщества создаются другими людьми, а не командой Termix. Каждая версия проверяется человеком и автоматическими проверками перед добавлением в список, но ошибки всё же могут проскользнуть. Устанавливайте только те плагины, которым доверяете, и проверяйте, какие разрешения запрашивает каждый из них.",
|
||
"communityConfirm": "Включить",
|
||
"communityBadge": "Сообщества",
|
||
"communityBadgeHint": "Из регистра сообщества. Создан другими людьми и проверен перед добавлением в список.",
|
||
"customBadge": "Пользовательский",
|
||
"customBadgeHint": "Из {{name}}, регистра, добавленного администратором. Не проверен командой Termix.",
|
||
"remove": "Удалить",
|
||
"removeTitle": "Удалить {{name}}?",
|
||
"removeBody": "Плагины из этого реестра больше не будут отображаться в разделе «Обзор». Вы можете добавить его снова позже.",
|
||
"removed": "{{name}} удалён",
|
||
"inUse": "Сначала удалите плагины из {{name}}: {{list}}",
|
||
"changeFailed": "Не удалось изменить реестр: {{error}}",
|
||
"loadFailed": "Не удалось загрузить реестры: {{error}}",
|
||
"unreachable": "Не удалось прочитать: {{error}}",
|
||
"filter": "Реестр",
|
||
"allRegistries": "Все реестры",
|
||
"browseHint": "Включите плагины сообщества или добавьте свой собственный реестр на вкладке «Реестры»."
|
||
},
|
||
"upToDate": "Всё обновлено.",
|
||
"lastChecked": "Последняя проверка: {{time}}",
|
||
"updatesReady_one": "{{count}} обновление готово.",
|
||
"updatesReady_few": "{{count}} обновления готовы.",
|
||
"updatesReady_many": "{{count}} обновлений готово.",
|
||
"updatesReady_other": "{{count}} обновлений готово.",
|
||
"updatesNeedReview_one": "Ещё {{count}} требует вашего одобрения.",
|
||
"updatesNeedReview_few": "Ещё {{count}} требуют вашего одобрения.",
|
||
"updatesNeedReview_many": "Ещё {{count}} требуют вашего одобрения.",
|
||
"updatesNeedReview_other": "Ещё {{count}} требуют вашего одобрения.",
|
||
"updateAsksMore": "Это обновление запрашивает дополнительные разрешения, поэтому оно ожидает вашего решения.",
|
||
"checkRegistry": "Проверить плагины и обновления",
|
||
"registryUnreachable": "Не удалось подключиться к реестру плагинов ({{error}}). Установленные плагины продолжают работать.",
|
||
"managedByServer": "Этот рабочий стол связан с сервером, который управляет его плагинами. Изменения вносятся на сервере.",
|
||
"browsePlugins": "Просмотр плагинов",
|
||
"loading": "Загрузка",
|
||
"developer": {
|
||
"title": "Режим разработчика плагинов",
|
||
"hint": "Позволяет администраторам устанавливать плагины из файлов .tmxplug во вкладке «Плагины» без проверки реестра. Используйте это для создания и тестирования собственных плагинов.",
|
||
"enableTitle": "Включить режим разработчика?",
|
||
"enableBody": "Администраторы смогут устанавливать плагины из файлов, которые Termix не проверял. Плагин может выполнять любые действия, разрешённые его возможностями, поэтому включайте это только при разработке или тестировании плагинов.",
|
||
"enable": "Включить",
|
||
"installFromFile": "Установить из файла",
|
||
"signedOnly": "Установлена переменная TERMIX_REQUIRE_SIGNED_PLUGINS, поэтому установка из файла заблокирована."
|
||
},
|
||
"count": {
|
||
"downloads_one": "{{formatted}} загрузка",
|
||
"downloads_few": "{{formatted}} загрузки",
|
||
"downloads_many": "{{formatted}} загрузок",
|
||
"downloads_other": "{{formatted}} загрузок",
|
||
"downloadsHint": "Количество загрузок релиза. Это не количество установок."
|
||
},
|
||
"unverified": "Непроверенный",
|
||
"unverifiedHint": "Установлен из файла. Termix не проверял и не подписывал его.",
|
||
"reportIssue": "Сообщить о проблеме",
|
||
"reportTo": "Сообщить автору {{author}}",
|
||
"requestFeature": "Предложить функцию",
|
||
"openSettings": "Открыть его настройки",
|
||
"beta": {
|
||
"badge": "Бета",
|
||
"badgeHint": "Это бета-версия. В ней могут быть ошибки.",
|
||
"try": "Попробовать бета-версию {{version}}",
|
||
"confirmTitle": "Использовать бета-версии для {{name}}?",
|
||
"confirmBody": "Бета-версии получают новые функции и исправления первыми, но в них могут быть ошибки. Вы можете вернуться к стабильной версии в любое время.",
|
||
"confirmInstall": "Установить {{version}}",
|
||
"confirmSwitch": "Использовать бета-версии",
|
||
"leftWhileOnBeta": "{{name}} останется на версии {{version}}, пока не выйдет более новая стабильная версия.",
|
||
"channel": "Бета-версии",
|
||
"channelHint": "Получайте новые версии раньше. В них могут быть ошибки.",
|
||
"waitingForStable": "Вернулись к стабильной версии. Останется на {{version}}, пока не выйдет более новая стабильная версия.",
|
||
"versionLabel": "{{version}} (бета)",
|
||
"sendFeedback": "Отправить отзыв о бета-версии"
|
||
},
|
||
"documentation": "Документация",
|
||
"envVars": "Переменные окружения",
|
||
"envRequired": "Обязательно",
|
||
"envDefault": "По умолчанию: {{value}}"
|
||
}
|
||
},
|
||
"settings": {
|
||
"secretSet": "Установлено",
|
||
"secretNotSet": "Не установлено",
|
||
"secretReplace": "Заменить",
|
||
"pluginSettingsSaved": "Настройки сохранены",
|
||
"pluginSettingsInvalid": "Некоторые настройки не удалось сохранить. Проверьте выделенные поля.",
|
||
"pluginSettingsSaveFailed": "Не удалось сохранить настройки",
|
||
"pluginSettingsLoadFailed": "Не удалось загрузить настройки",
|
||
"featureUnavailable": "{{name}} сейчас недоступен. Эти настройки сохранены, но не будут применены.",
|
||
"account": "Аккаунт",
|
||
"security": "Безопасность",
|
||
"apiKeys": "API-ключи",
|
||
"data": "Данные и синхронизация",
|
||
"interface": "Интерфейс",
|
||
"appearance": "Внешний вид",
|
||
"keybindings": "Сочетания клавиш",
|
||
"adminGeneral": "Общие",
|
||
"adminUsers": "Пользователи",
|
||
"adminSessions": "Сессии",
|
||
"adminRoles": "Роли",
|
||
"adminHostDefaults": "Настройки хоста по умолчанию",
|
||
"adminBranding": "Брендинг",
|
||
"adminDatabase": "База данных",
|
||
"adminSsl": "SSL",
|
||
"adminApiKeys": "API-ключи",
|
||
"adminAuditLog": "Журнал аудита",
|
||
"bandYou": "Ваш аккаунт",
|
||
"bandApp": "Это приложение",
|
||
"bandPlugins": "Плагины",
|
||
"bandInstance": "Этот сервер",
|
||
"searchPlaceholder": "Поиск настроек",
|
||
"noResults": "Настройки не найдены.",
|
||
"pages": "Страницы",
|
||
"instanceSettings": "Настройки сервера",
|
||
"nothingHere": "Здесь нечего настраивать.",
|
||
"searchPage": "Поиск на этой странице",
|
||
"noPageMatches": "На этой странице ничего не найдено.",
|
||
"updates": {
|
||
"title": "Обновления",
|
||
"betaProgram": "Бета-программа",
|
||
"betaIntro": "Бета-версии — это ранние сборки следующей версии Termix. Они выходят по вторникам и пятницам, когда появляются новые функции для тестирования. В них могут быть ошибки, и именно ваши отзывы помогают сделать стабильную версию лучше.",
|
||
"termixBetas": "Бета-версии Termix",
|
||
"termixBetasHint": "Сообщать о новых бета-версиях, а не только о стабильных.",
|
||
"runningBetaBuild": "Вы используете бета-сборку. Чтобы вернуться к стабильной версии, переключитесь на стабильный образ или установщик.",
|
||
"howToInstall": "Как получить бета-версию",
|
||
"desktopInstall": "Скачайте установщик бета-версии и установите его поверх текущей.",
|
||
"downloadBeta": "Скачать {{version}}",
|
||
"dockerInstall": "Измените тег образа на бета-версию и перезапустите контейнер:",
|
||
"copy": "Копировать",
|
||
"copied": "Скопировано",
|
||
"copyFailed": "Не удалось скопировать",
|
||
"learnMore": "Узнать больше о бета-версиях",
|
||
"feedback": "Отзывы",
|
||
"feedbackHint": "Нашли ошибку или есть идея? Сообщение отправится напрямую разработчикам с указанием вашей версии.",
|
||
"sendFeedback": "Отправить отзыв о бета-версии",
|
||
"releases": "Релизы",
|
||
"thisVersion": "Текущая версия",
|
||
"newestStable": "Последняя стабильная",
|
||
"newestBeta": "Последняя бета",
|
||
"noRelease": "Сейчас нет",
|
||
"pluginBetas": "Бета-версии плагинов",
|
||
"pluginBetasIntro": "Каждый плагин может использовать бета-версии самостоятельно. Чтобы попробовать, откройте плагин и нажмите «Попробовать бета-версию».",
|
||
"openPlugins": "Открыть плагины",
|
||
"waitingForStable": "Вернулись к стабильной версии. Останется на {{version}}, пока не выйдет более новая стабильная версия.",
|
||
"backToStable": "Вернуться к стабильной",
|
||
"allPluginsBeta": "Использовать бета-версии для всех плагинов",
|
||
"allPluginsStable": "Все плагины возвращены к стабильным версиям",
|
||
"saveFailed": "Не удалось сохранить изменения"
|
||
}
|
||
},
|
||
"managerCard": {
|
||
"refresh": "Обновить",
|
||
"retry": "Повторить",
|
||
"sudoHint": "Установите пароль sudo для этого хоста в редакторе хоста, чтобы разрешить привилегированные действия.",
|
||
"noData": "Нет данных",
|
||
"filter": "Фильтр..."
|
||
},
|
||
"sync": {
|
||
"server": "Сервер Termix",
|
||
"account": "Аккаунт",
|
||
"status": "Статус",
|
||
"never": "никогда",
|
||
"justNow": "только что",
|
||
"minutesAgo_one": "{{count}} минуту назад",
|
||
"minutesAgo_few": "{{count}} минуты назад",
|
||
"minutesAgo_many": "{{count}} минут назад",
|
||
"minutesAgo_other": "{{count}} минут назад",
|
||
"hoursAgo_one": "{{count}} час назад",
|
||
"hoursAgo_few": "{{count}} часа назад",
|
||
"hoursAgo_many": "{{count}} часов назад",
|
||
"hoursAgo_other": "{{count}} часов назад",
|
||
"actionFailed": "Не удалось выполнить действие. Попробуйте еще раз.",
|
||
"unlinkedTitle": "Только это устройство",
|
||
"unlinkedBody": "Termix работает автономно на этом устройстве. Свяжите его с вашим сервером Termix, чтобы синхронизировать все данные.",
|
||
"unlinkedPointHosts": "Ваши хосты, учетные данные, сниппеты и настройки будут доступны на каждом устройстве.",
|
||
"unlinkedPointOffline": "Все продолжает работать, когда сервер недоступен, и синхронизируется позже.",
|
||
"unlinkedPointAccount": "Вы входите в систему с помощью учетной записи сервера, и хосты, которыми с вами поделились другие пользователи, также появятся здесь.",
|
||
"linkButton": "Связать с сервером",
|
||
"state": {
|
||
"syncing": "Синхронизация",
|
||
"offline": "Сервер недоступен",
|
||
"error": "Синхронизация остановлена",
|
||
"signedOut": "Выход выполнен",
|
||
"synced": "Синхронизировано {{time}}"
|
||
},
|
||
"pending_one": "{{count}} изменение ожидает синхронизации",
|
||
"pending_few": "{{count}} изменения ожидают синхронизации",
|
||
"pending_many": "{{count}} изменений ожидают синхронизации",
|
||
"pending_other": "{{count}} изменений ожидают синхронизации",
|
||
"signInAgain": "Войти снова",
|
||
"syncNow": "Синхронизировать сейчас",
|
||
"unlink": "Разорвать связь",
|
||
"unlinked": "Это устройство больше не связано",
|
||
"unlinkTitle": "Отвязать это устройство?",
|
||
"unlinkDescription": "Синхронизация будет остановлена, и вы выйдете из сервера. Хосты, которыми с вами поделились другие пользователи, будут удалены с этого устройства в любом случае.",
|
||
"unlinkKeepTitle": "Оставить мои данные здесь",
|
||
"unlinkKeepBody": "Ваши хосты, учётные данные и настройки останутся на этом устройстве и будут работать автономно.",
|
||
"unlinkRemoveTitle": "Удалить синхронизированные данные",
|
||
"unlinkRemoveBody": "Всё, что пришло с сервера, будет удалено с этого устройства. Останутся только хосты, сохранённые локально.",
|
||
"conflictsTitle": "Конфликты",
|
||
"conflictsDescription": "Эти элементы были изменены одновременно здесь и на сервере. Сейчас используется версия с сервера. Выберите «Оставить мою», чтобы отправить свою версию на сервер.",
|
||
"keepMine": "Оставить мою",
|
||
"keepServer": "Оставить серверную",
|
||
"errorsTitle": "Не синхронизировано",
|
||
"errorsDescription": "Сервер не принял эти изменения. Они остались на этом устройстве.",
|
||
"errorPermission": "Ваша учётная запись на сервере не имеет прав для внесения этого изменения.",
|
||
"retry": "Повторить попытку",
|
||
"whatSyncs": "Что синхронизируется",
|
||
"whatSyncsDescription": "Отключите синхронизацию для тех элементов, которые хотите хранить только на этом устройстве.",
|
||
"coreGroup": "Termix",
|
||
"notOnServer": "Этого нет на сервере",
|
||
"notOnDevice": "Ещё нет на этом устройстве",
|
||
"localOnlyHint": "Вы также можете хранить отдельные хосты или папки только на этом устройстве через их настройки.",
|
||
"originTitle": "Откуда начинаются подключения",
|
||
"originDescription": "Подключайтесь к хостам напрямую с этого устройства или через сервер. Это можно настроить для каждого хоста отдельно.",
|
||
"originLocal": "Это устройство",
|
||
"originRemote": "Сервер",
|
||
"entities": {
|
||
"hosts": "Хосты",
|
||
"sshCredentials": "Учётные данные",
|
||
"sshFolders": "Папки",
|
||
"userPreferences": "Настройки",
|
||
"pluginUserSettings": "Настройки плагинов",
|
||
"sharedHosts": "Хосты, которыми с вами поделились",
|
||
"sharedCredentials": "Учётные данные, которыми с вами поделились",
|
||
"vaultProfiles": "Профили Vault",
|
||
"snippetFolders": "Папки сниппетов",
|
||
"snippets": "Сниппеты",
|
||
"dashboardServiceLinks": "Ссылки на сервисы",
|
||
"homepageItems": "Элементы домашней страницы",
|
||
"networkTopology": "Схема сети",
|
||
"workspaces": "Рабочие пространства",
|
||
"hostDefaults": "Настройки хостов по умолчанию",
|
||
"hostDefaultsAdmin": "Настройки хостов сервера по умолчанию",
|
||
"aiProviders": "Поставщики ИИ",
|
||
"homepageLayouts": "Макеты домашней страницы",
|
||
"accountProfile": "Профиль учётной записи"
|
||
},
|
||
"proxy": {
|
||
"title": "Обратный прокси",
|
||
"description": "Требуется только если перед вашим сервером стоит Cloudflare Access или страница входа.",
|
||
"headersTitle": "Дополнительные заголовки",
|
||
"headersHint": "Отправляются с каждым запросом к серверу, например, токен сервиса Cloudflare Access.",
|
||
"headerName": "Имя заголовка",
|
||
"headerValue": "Значение",
|
||
"savedValue": "Сохранено, введите для изменения",
|
||
"addHeader": "Добавить заголовок",
|
||
"removeHeader": "Удалить заголовок",
|
||
"basicAuthTitle": "Имя пользователя и пароль",
|
||
"basicAuthHint": "Для прокси, который запрашивает имя пользователя и пароль перед входом в Termix.",
|
||
"username": "Имя пользователя",
|
||
"password": "Пароль",
|
||
"allowInvalidCertificate": "Доверять самоподписанному сертификату",
|
||
"allowInvalidCertificateHint": "Только для вашего собственного сервера, если его сертификат не выдан известным центром сертификации.",
|
||
"saved": "Сохранено"
|
||
},
|
||
"problems": {
|
||
"invalidUrl": "Это не похоже на веб-адрес.",
|
||
"unreachable": "Не удалось подключиться к серверу. Проверьте адрес и убедитесь, что сервер запущен.",
|
||
"unreachableWithReason": "Не удалось подключиться к серверу: {{reason}}",
|
||
"tlsUntrusted": "Сертификат сервера не доверен. Если это ваш собственный сервер с самоподписанным сертификатом, включите опцию ниже.",
|
||
"basicAuthRequired": "Что-то перед сервером запрашивает имя пользователя и пароль. Введите их ниже.",
|
||
"proxyLogin": "Вместо Termix ответила страница входа или прокси. Добавьте необходимые заголовки ниже или проверьте адрес.",
|
||
"notTermix": "По этому адресу нет сервера Termix. Если он работает по пути, укажите его, например https://example.com/termix.",
|
||
"versionMismatch": "На этом сервере запущена старая версия Termix. Обновите её до 2.9 или новее, чтобы связать.",
|
||
"differentAccount": "Вы вошли в другой аккаунт. Войдите в аккаунт, к которому привязано это устройство, или сначала отвяжите его."
|
||
},
|
||
"wizard": {
|
||
"title": "Привязка к серверу Termix",
|
||
"reloginTitle": "Войдите снова",
|
||
"savedServers": "Недавние серверы",
|
||
"removeServer": "Удалить из списка",
|
||
"serverDescription": "Введите адрес, по которому вы открываете Termix в браузере.",
|
||
"signinDescription": "Вход в {{url}}",
|
||
"chooseDescription": "На этом устройстве уже есть данные. Что с ними сделать?",
|
||
"finishingDescription": "Привязка этого устройства.",
|
||
"serverUrl": "Адрес сервера",
|
||
"serverUrlHint": "Например https://termix.example.com",
|
||
"showProxySettings": "Настройки обратного прокси",
|
||
"hideProxySettings": "Скрыть настройки обратного прокси",
|
||
"continue": "Далее",
|
||
"back": "Назад",
|
||
"mergeTitle": "Добавить в мой аккаунт",
|
||
"mergeBody_one": "Элемент с этого устройства будет добавлен в ваш аккаунт. Элементы, которые уже есть в вашем аккаунте, останутся на сервере без изменений.",
|
||
"mergeBody_few": "{{count}} элемента с этого устройства будут добавлены в ваш аккаунт. Элементы, которые уже есть в вашем аккаунте, останутся на сервере без изменений.",
|
||
"mergeBody_many": "{{count}} элементов с этого устройства будут добавлены в ваш аккаунт. Элементы, которые уже есть в вашем аккаунте, останутся на сервере без изменений.",
|
||
"mergeBody_other": "{{count}} элемента с этого устройства будут добавлены в ваш аккаунт. Элементы, которые уже есть в вашем аккаунте, останутся на сервере без изменений.",
|
||
"replaceTitle": "Заменить данными моего аккаунта",
|
||
"replaceBody_one": "Элемент с этого устройства будет удалён, и устройство получит всё из вашего аккаунта. Хосты, сохранённые только на этом устройстве, останутся.",
|
||
"replaceBody_few": "{{count}} элемента с этого устройства будут удалены, и устройство получит всё из вашего аккаунта. Хосты, сохранённые только на этом устройстве, останутся.",
|
||
"replaceBody_many": "{{count}} элементов с этого устройства будут удалены, и устройство получит всё из вашего аккаунта. Хосты, сохранённые только на этом устройстве, останутся.",
|
||
"replaceBody_other": "{{count}} элемента с этого устройства будут удалены, и устройство получит всё из вашего аккаунта. Хосты, сохранённые только на этом устройстве, останутся.",
|
||
"link": "Привязать",
|
||
"linking": "Привязка и запуск первой синхронизации...",
|
||
"linked": "Привязано. Ваши данные синхронизируются.",
|
||
"signedInAgain": "Выполнен вход. Синхронизация возобновлена."
|
||
}
|
||
},
|
||
"hostDefaults": {
|
||
"source": {
|
||
"folder": "Папка {{name}}",
|
||
"user": "Мои значения по умолчанию",
|
||
"admin": "Сервер",
|
||
"builtin": "Встроенные"
|
||
},
|
||
"custom": "Пользовательские",
|
||
"setHere": "Установить здесь",
|
||
"notSet": "Не задано",
|
||
"notSetTitle": "Для этого параметра не задано значение по умолчанию",
|
||
"resetTitle": "Этот хост задаёт своё значение. Нажмите, чтобы снова использовать значение по умолчанию из {{source}}",
|
||
"clearTitle": "Задано на этом уровне. Нажмите, чтобы очистить и использовать {{source}} вместо этого",
|
||
"inheritedTitle": "Использует значение по умолчанию из {{source}}",
|
||
"titleAdmin": "Значения по умолчанию для хостов на сервере",
|
||
"titleUser": "Мои значения по умолчанию для хостов",
|
||
"titleFolder": "Значения по умолчанию для папки: {{name}}",
|
||
"descriptionAdmin": "Значения по умолчанию для каждого хоста на этом сервере. Пользователь, папка или сам хост могут задать другое значение. Измените поле, чтобы задать значение здесь, или очистите его, чтобы оставить незаданным.",
|
||
"descriptionUser": "Значения по умолчанию для всех ваших хостов, переопределяющие серверные. Папка или сам хост могут задать другое значение. Измените поле, чтобы задать значение здесь, или очистите его, чтобы оставить незаданным.",
|
||
"descriptionFolder": "Значения по умолчанию для хостов в этой папке и её подпапках, переопределяющие ваши собственные. Хост может задать другое значение. Измените поле, чтобы задать значение здесь, или очистите его, чтобы оставить незаданным.",
|
||
"save": "Сохранить значения по умолчанию",
|
||
"saved_one": "Значения по умолчанию сохранены. Обновлён {{count}} хост.",
|
||
"saved_few": "Значения по умолчанию сохранены. Обновлено {{count}} хоста.",
|
||
"saved_many": "Значения по умолчанию сохранены. Обновлено {{count}} хостов.",
|
||
"saved_other": "Значения по умолчанию сохранены. Обновлено {{count}} хоста.",
|
||
"savedInBackground": "Значения по умолчанию сохранены. Хосты обновляются в фоновом режиме.",
|
||
"appliedToHosts_one": "{{count}} хост обновлён новыми значениями по умолчанию.",
|
||
"appliedToHosts_few": "{{count}} хоста обновлены новыми значениями по умолчанию.",
|
||
"appliedToHosts_many": "{{count}} хостов обновлены новыми значениями по умолчанию.",
|
||
"appliedToHosts_other": "{{count}} хоста обновлены новыми значениями по умолчанию.",
|
||
"saveFailed": "Не удалось сохранить значения по умолчанию",
|
||
"loadFailed": "Не удалось загрузить значения по умолчанию",
|
||
"confirmTitle": "Сохранить значения по умолчанию?",
|
||
"confirmChanges_one": "{{count}} хост использует эти значения по умолчанию и будет изменён.",
|
||
"confirmChanges_few": "{{count}} хоста используют эти значения по умолчанию и будут изменены.",
|
||
"confirmChanges_many": "{{count}} хостов используют эти значения по умолчанию и будут изменены.",
|
||
"confirmChanges_other": "{{count}} хоста используют эти значения по умолчанию и будут изменены.",
|
||
"confirmNoChanges": "Существующие хосты не изменятся. Новые хосты будут создаваться с этими значениями по умолчанию.",
|
||
"menuMyDefaults": "Мои значения по умолчанию для хостов",
|
||
"folderDefaultsAction": "Значения по умолчанию для папки",
|
||
"adminSectionDescription": "Задайте значения по умолчанию, которые будут использоваться каждым хостом на этом сервере для всех настроек хоста, включая настройки каждого плагина. Пользователи и папки могут задать свои значения поверх них, а любой хост может использовать своё собственное значение.",
|
||
"editServerDefaults": "Изменить значения по умолчанию на сервере",
|
||
"resetMenu": "Сбросить",
|
||
"resetAll": "Сбросить всё по умолчанию",
|
||
"resetCore": "Сбросить параметры подключения и SSH",
|
||
"resetDone_one": "{{count}} хост теперь использует значения по умолчанию.",
|
||
"resetDone_few": "{{count}} хоста теперь используют значения по умолчанию.",
|
||
"resetDone_many": "{{count}} хостов теперь используют значения по умолчанию.",
|
||
"resetDone_other": "{{count}} хостов теперь используют значения по умолчанию."
|
||
},
|
||
"panel": {
|
||
"clearSearch": "Очистить поиск",
|
||
"gridView": "Сетка",
|
||
"listView": "Список",
|
||
"compactRows": "Компактные строки",
|
||
"comfortableRows": "Удобные строки"
|
||
},
|
||
"fields": {
|
||
"secretSaved": "Сохранено. Введите новый текст, чтобы заменить."
|
||
},
|
||
"sharing": {
|
||
"revokeConfirm": "Удалить доступ для {{name}}?",
|
||
"revoke": "Удалить доступ"
|
||
},
|
||
"manage": {
|
||
"searchSettings": "Поиск настроек",
|
||
"noMatchingSettings": "Подходящих настроек не найдено.",
|
||
"sections": "Разделы",
|
||
"sectionNeedsAttention": "Здесь требуется внимание",
|
||
"needsAttention_one": "Один элемент требует внимания.",
|
||
"needsAttention_few": "{{count}} элемента требуют внимания.",
|
||
"needsAttention_many": "{{count}} элементов требуют внимания.",
|
||
"needsAttention_other": "{{count}} элементов требуют внимания.",
|
||
"bandHost": "Хост",
|
||
"bandFeatures": "Протоколы и плагины",
|
||
"bandCredential": "Учётные данные",
|
||
"sshConnection": "Подключение по SSH",
|
||
"errorAddressRequired": "Необходимо указать адрес.",
|
||
"errorPortRange": "Используйте порт от 1 до 65535.",
|
||
"defaults": "По умолчанию",
|
||
"searchHosts": "Поиск хостов",
|
||
"searchCredentials": "Поиск учётных данных",
|
||
"searchDefaults": "Поиск значений по умолчанию",
|
||
"addCredential": "Добавить учётные данные",
|
||
"nothingMatches": "Ничего не найдено",
|
||
"nothingYet": "Здесь пока пусто",
|
||
"emptyHostsHint": "Добавьте хост, и он появится здесь, в той папке, которую вы ему назначите.",
|
||
"emptyCredentialsHint": "Сохранённые учётные данные можно использовать для любого хоста.",
|
||
"collapse": "Свернуть",
|
||
"expand": "Развернуть",
|
||
"cannotBeUndone": "Это действие нельзя отменить.",
|
||
"hostNotFound": "Хост не найден. Попробуйте обновить список.",
|
||
"hostCount_one": "{{count}} хост",
|
||
"hostCount_few": "{{count}} хоста",
|
||
"hostCount_many": "{{count}} хостов",
|
||
"hostCount_other": "{{count}} хостов",
|
||
"credentialCount_one": "{{count}} учётная запись",
|
||
"credentialCount_few": "{{count}} учётные записи",
|
||
"credentialCount_many": "{{count}} учётных записей",
|
||
"credentialCount_other": "{{count}} учётных записей",
|
||
"newHost": "Новый хост",
|
||
"newCredential": "Новые учётные данные",
|
||
"advanced": "Дополнительно",
|
||
"pickHost": "Выберите хост для редактирования",
|
||
"pickCredential": "Выберите учётные данные для редактирования",
|
||
"pickDefaults": "Выберите уровень значений по умолчанию для редактирования",
|
||
"pickHint": "Все параметры подключения находятся здесь, сгруппированные для удобства поиска."
|
||
},
|
||
"rbac": {
|
||
"roles": {
|
||
"admin": "Администратор",
|
||
"user": "Пользователь"
|
||
}
|
||
}
|
||
}
|