mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-30 15:15:24 +00:00
* fix(sso): send the PKCE verifier for GitHub login (#1534) * fix(remote-desktop): clip cursor overflow without disabling zoom (#1535) * test(remote-desktop): preserve sessions beyond one hour (#1536) * fix(hosts): expose controls for overflowing editor tabs (#1537) * fix(hosts): expose controls for overflowing editor tabs * test(hosts): mock resize observation in admin panel tests * fix(status): skip TCP probes while host sessions are active (#1538) * fix(database): batch session activity persistence (#1539) * docs(api): describe cookie and API key authentication (#1540) * fix(snippets): repair missing note column on SQLite upgrades (#1541) * fix(docker): retain stored SSH credential association (#1543) * fix(file-manager): render transfer toasts without plugin hooks (#1546) * feat(hosts): keep compact row actions inline (#1547) * fix(auth): allow retrying unavailable second-factor interfaces (#1549) * fix(auth): reject unresolved legacy identity provisioning (#1550) * fix(desktop): ship the plugin SDK inside Mac App Store builds (#1551) * fix(tmux): pass full session info to the terminal's session picker (#1552) The tmux.sessions service reduced detected sessions to bare names, but the picker reads session.name, so every entry rendered blank and selecting one sent an empty name, which created a new session instead of attaching. * fix(ssh): read force keyboard-interactive as a boolean when resolving hosts (#1553) The column holds the text "true"/"false", and the resolver passed it through as-is. The string "false" is truthy, so the password provider treated every saved host as forced keyboard-interactive and left the password out. Jump hops are built straight from the resolved host, so a password hop whose server doesn't offer keyboard-interactive failed with "All configured authentication methods failed". * fix(database): batch database saves for bulk host writes (#1554) * fix(database): yield to the event loop between database saves Each SQLite save serializes and encrypts the whole database into new buffers, which V8 only releases once the event loop turns. Boot migrations and bulk host import write plugin settings per host and per key in an awaited loop, so hundreds of full copies piled up and the container ran out of memory. * fix(database): save once per bulk host write instead of once per row On SQLite every repository write force-saves the whole database. Boot plugin data migrations, host defaults materialization and the bulk host routes write one row per host per setting, so they serialized and encrypted the full database hundreds of times in a row. DatabaseSaveTrigger.batched wraps a function so force saves made while it runs collapse into a single save when it finishes. Nested scopes fold into the outer one, and work that outlives its scope saves normally. * feat(hosts): add instance-wide predefined tag suggestions (#1548) * feat(hosts): add shared predefined tag suggestions * style(hosts): format tag catalog routes * test(database): advance fake timers past the save yield (#1555) * fix(i18n): complete Simplified Chinese core and plugin translations (#1542) * fix(i18n): complete Chinese onboarding and navigation labels * fix(i18n): translate remaining Chinese core and plugin interfaces * fix(i18n): translate host editor tab overflow controls * fix(i18n): use consistent Chinese fleet terminology * fix(i18n): localize hardcoded controls and plugin views * fix(i18n): translate built-in homepage widget catalog * test(homepage): follow translated timezone placeholder * fix(i18n): translate plugin-provided homepage widgets * fix(i18n): localize feature settings section titles * fix: 2.8 oidc accounts unable to sign in after upgrading (#1381) * fix: plugins losing the saved ssh login when copying a host (#1391) * fix: fleets, proxmox and automations not getting the host sudo password * fix: host imports running a defaults pass and metrics restart per host (#1384) * fix: high cpu from status probes and full database saves on every sample (#1300) * fix: user data export freezing the server (#1393) * fix: op:// secret references rejected as ssh keys on credentials (#1394) * fix: slow file deletes from the trash lookups on every delete (#1390) * fix: add openapi docs and error handling to host tag routes * test: compare download stream buffers directly so it stops timing out * chore: drop em dash from host row comment * chore: update release notes for 2.9.1 * fix: restore space to add host tags and redesign predefined tags editor * fix: host key silently accepted when the host is missing from the database (#1397) * fix: clearer host login failed status label and fix its translations (#1396) * chore: add host key and status label fixes to release notes * fix: sso and ldap provider dialogs overflowing the screen and using mismatched toggles * chore: increment ver * fix(audit): store plugin entries with no acting user as a null user_id (#1556) Plugin audit entries written outside a request used the literal "system" as user_id. That column references users.id, so the insert was refused (Postgres logs it as an FK violation) and the entry was silently dropped. Write null instead and keep "system" / plugin:<id> in username. * chore: add sso/ldap dialog and audit log fixes to release notes * fix: tunnels and host settings missing from shared hosts on desktop * fix: remote desktop logins missing from shared hosts on desktop * fix: simplify host status to online/offline and keep it live without a refresh * chore: sync Crowdin translations for 2.9.1 --------- Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
709 lines
45 KiB
JSON
709 lines
45 KiB
JSON
{
|
||
"mobileKeyboard": {
|
||
"addQuickKey": "Добавить",
|
||
"arrowDown": "Вниз",
|
||
"arrowLeft": "Влево",
|
||
"arrowRight": "Вправо",
|
||
"arrowUp": "Вверх",
|
||
"backTab": "⇥",
|
||
"ctrl": "Ctrl",
|
||
"delete": "Del",
|
||
"done": "Готово",
|
||
"editQuickKeys": "Редактировать",
|
||
"end": "End",
|
||
"esc": "Esc",
|
||
"home": "Home",
|
||
"pageDown": "PgDn",
|
||
"pageUp": "PgUp",
|
||
"paste": "Вставить",
|
||
"quickKeyPlaceholder": "напр. sudo ",
|
||
"quickKeysDesc": "Нажмите × для удаления. Поддерживается до 8 символов.",
|
||
"quickKeysTitle": "Быстрые клавиши",
|
||
"removeQuickKey": "Удалить",
|
||
"resetDefaults": "Сбросить по умолчанию",
|
||
"shift": "Shift",
|
||
"tab": "Tab"
|
||
},
|
||
"terminal": {
|
||
"autoTmuxEnableFailed": "Не удалось включить Auto-Tmux.",
|
||
"autoTmuxEnabled": "Автоматический Tmux включен для {{host}}. Он применяется со следующего соединения.",
|
||
"clipboardHttpWarning": "Не удалось прочитать содержимое буфера обмена. Некоторые браузеры ограничивают доступ к буферу обмена вне протокола HTTPS — попробуйте использовать Ctrl+V или используйте Termix через HTTPS.",
|
||
"closeTab": "Закрыть",
|
||
"connecting": "Подключение...",
|
||
"connectionLost": "Соединение потеряно",
|
||
"connectionRejected": "Подключение отклонено сервером. Проверьте аутентификацию и сетевые настройки.",
|
||
"connectionTimeout": "Тайм-аут подключения",
|
||
"enableAutoTmuxAction": "Включить Auto-Tmux",
|
||
"hostKeyRejected": "Проверка ключа хоста SSH отклонена. Подключение отменено.",
|
||
"linkDialogCopy": "Копировать",
|
||
"linkDialogOpen": "Открыть",
|
||
"linkDialogTitle": "Открыть ссылку",
|
||
"maxReconnectAttemptsReached": "Достигнуто максимальное количество попыток переподключения",
|
||
"noHostSelected": "Не выбран хост",
|
||
"passwordPromptFillTitle": "Вставить сохраненный пароль в этот запрос?",
|
||
"reconnect": "Переподключиться",
|
||
"reconnected": "Успешно переподключено",
|
||
"reconnecting": "Переподключение... ({{attempt}}/{{max}})",
|
||
"autoReconnecting": "Соединение потеряно, переподключение...",
|
||
"searchCaseSensitive": "Спичечный коробок",
|
||
"searchClose": "Закрыть (Выход)",
|
||
"searchNext": "Следующий матч (Вход)",
|
||
"searchNoResults": "Результаты отсутствуют",
|
||
"searchPlaceholder": "Находить",
|
||
"searchPrevious": "Предыдущий матч (Shift+Enter)",
|
||
"searchRegex": "Используйте регулярные выражения",
|
||
"searchResultCount": "{{index}} из {{count}}",
|
||
"searchWholeWord": "Сопоставьте целое слово",
|
||
"sessionExpiredNotice": "Ваша предыдущая сессия на {{host}} завершилась через {{minutes}} минут после разрыва соединения; оболочка и все запущенные в ней программы удалены. Включите Auto-Tmux на этом хосте, чтобы поддерживать сессии активными.",
|
||
"sessionExpiredNoticeNoMinutes": "Ваша предыдущая сессия на {{host}} завершилась во время отключения; оболочка и все запущенные в ней приложения удалены. Включите Auto-Tmux на этом хосте, чтобы поддерживать сессии активными.",
|
||
"sessionTakenOver": "Сеанс был открыт в другой вкладке. Переподключение...",
|
||
"tmuxAttached": "Подключённые клиенты",
|
||
"tmuxAttachedCount": "{{count}} подключено",
|
||
"tmuxCopyHint": "Скорректируйте выделение и нажмите Enter, чтобы скопировать в буфер обмена",
|
||
"tmuxCreateNew": "Начать новую сессию",
|
||
"tmuxDetached": "Отключён от сессии tmux",
|
||
"tmuxLastActivity": "Последняя активность",
|
||
"tmuxSessionAttached": "Сессия tmux подключена: {{name}}",
|
||
"tmuxSessionCreated": "Сессия tmux создана: {{name}}",
|
||
"tmuxSessionPickerDesc": "Найдены существующие сессии tmux на этом хосте. Выберите одну для переподключения или создайте новую сессию.",
|
||
"tmuxSessionPickerTitle": "Сессии tmux",
|
||
"tmuxTimeDays": "{{count}}д назад",
|
||
"tmuxTimeHours": "{{count}}ч назад",
|
||
"tmuxTimeJustNow": "только что",
|
||
"tmuxTimeMinutes": "{{count}}м назад",
|
||
"tmuxUnavailable": "tmux не установлен на удалённом хосте, переход на стандартную оболочку",
|
||
"tmuxWindowCount": "{{count}} окно",
|
||
"tmuxWindows": "Окна",
|
||
"unknownError": "Произошла неизвестная ошибка",
|
||
"websocketAbnormalClose": "Соединение неожиданно закрыто. Возможно, проблема с обратным прокси или конфигурацией SSL. Проверьте журналы сервера.",
|
||
"websocketError": "Ошибка подключения WebSocket",
|
||
"clipboardReadFailed": "Не удалось прочитать из буфера обмена. Убедитесь, что предоставлены разрешения на доступ к буферу обмена.",
|
||
"clipboardWriteFailed": "Не удалось скопировать в буфер обмена. Убедитесь, что страница загружена по HTTPS или с localhost.",
|
||
"connected": "Подключено",
|
||
"totpCodeLabel": "Код подтверждения",
|
||
"duplicateTab": "Дублировать вкладку",
|
||
"imageChooseFile": "Выберите файл изображения",
|
||
"imageUploaded": "Загруженное изображение: {{path}}",
|
||
"imageClipboardUnavailable": "Этот браузер не может считывать изображения из буфера обмена.",
|
||
"imageClipboardEmpty": "Изображение в буфере обмена не найдено",
|
||
"localShell": "Локальная терминальная оболочка",
|
||
"autocompleteHintComplete": "Нажмите клавишу Tab или Enter для завершения.",
|
||
"autocompleteHintNavigate": "↑↓ для навигации",
|
||
"autocompleteHintClose": "Нажмите Esc для закрытия"
|
||
},
|
||
"terminalToolbar": {
|
||
"detachTmux": "Отсоединить tmux",
|
||
"detachTmuxDescription": "Отключить сессию tmux",
|
||
"dismissError": "Отклонить ошибку изображения",
|
||
"hideToolbar": "Скрыть панель инструментов",
|
||
"image": "Действия с изображениями (только с изображениями)",
|
||
"imageActionFailed": "Операция с изображением не удалась.",
|
||
"layout": "режим отображения панели инструментов",
|
||
"layoutExpanded": "Дополнено метриками",
|
||
"layoutIcon": "Только иконка",
|
||
"layoutLabeled": "Иконки и подписи",
|
||
"moveToolbar": "Переместить панель инструментов",
|
||
"moveToolbarHint": "Перетащите панель инструментов, чтобы изменить ее положение.",
|
||
"paste": "Вставить изображение",
|
||
"pasteImage": "Вставить изображение из буфера обмена (только изображения)",
|
||
"retry": "Повторить",
|
||
"showToolbar": "Развернуть панель",
|
||
"upload": "Загрузить изображение",
|
||
"uploadImage": "Загрузите изображение на хостинг.",
|
||
"uploadingImage": "Загрузка..."
|
||
},
|
||
"history": {
|
||
"noTerminalSelected": "Терминал не выбран",
|
||
"noTerminalSelectedHint": "Откройте вкладку SSH-терминала, чтобы просмотреть историю команд",
|
||
"searchPlaceholder": "Поиск по истории...",
|
||
"clearAll": "Очистить всё",
|
||
"noHistoryEntries": "Нет записей в истории",
|
||
"trackingDisabled": "Отслеживание истории отключено",
|
||
"trackingDisabledHint": "Включите историю команд во вкладке SSH-терминала этого хоста.",
|
||
"commandCount_one": "{{count}} команда",
|
||
"commandCount_other": "{{count}} команд"
|
||
},
|
||
"touchInput": {
|
||
"enabled": "Включить сенсорный ввод",
|
||
"enabledDesc": "Разрешить прокрутку одним пальцем в терминалах",
|
||
"momentumEnabled": "Включить импульс",
|
||
"momentumEnabledDesc": "После свайпа продолжите прокрутку еще немного.",
|
||
"advanced": "Передовой",
|
||
"resetDefaults": "Сбросить по умолчанию",
|
||
"dragThreshold": "Порог сопротивления",
|
||
"maxWheelDelta": "Максимальная разница колес",
|
||
"momentumSampleWindow": "Окно выборки импульса",
|
||
"releaseGracePeriod": "Льготный период освобождения",
|
||
"minimumVelocity": "Минимальная скорость",
|
||
"maximumVelocity": "Максимальная скорость",
|
||
"maximumDuration": "Максимальная продолжительность",
|
||
"maximumTravel": "Максимальный ход",
|
||
"decayTime": "Время распада",
|
||
"pixelsPerTick": "Пикселей на такт",
|
||
"maximumFrameInterval": "Максимальный интервал кадров",
|
||
"maximumTicksPerFrame": "Максимальное количество тактов на кадр"
|
||
},
|
||
"imageStorage": {
|
||
"instanceId": "Идентификатор экземпляра терминальной сессии",
|
||
"instanceIdDesc": "Идентификатор экземпляра одной из подключенных вкладок терминала, используемый для проверки видимости.",
|
||
"selectedModeUnavailable": "Недоступно",
|
||
"test": "Проверить",
|
||
"testing": "Тестирование...",
|
||
"testFailed": "Не удалось проверить хранилище изображений.",
|
||
"testConnected": "Терминальная сессия подключена.",
|
||
"testNotConnected": "Нет подключенной терминальной сессии с этим идентификатором экземпляра.",
|
||
"testSelectedMode": "Для загрузки будет использоваться следующий синтаксис: {{mode}}",
|
||
"testLocalVisible": "Локальный каталог виден с подключенного хоста.",
|
||
"testLocalNotVisible": "Локальный каталог НЕ виден с подключенного хоста."
|
||
},
|
||
"settings": {
|
||
"admin": {
|
||
"group": {
|
||
"touch": "Сенсорный ввод",
|
||
"images": "Хранилище изображений",
|
||
"sessions": "Сессии",
|
||
"newHosts": "Новые хосты"
|
||
},
|
||
"sessionTimeoutMinutes": {
|
||
"label": "Сохранение сессии в терминале",
|
||
"description": "Как долго отключенный терминал остается активным на сервере до его закрытия. Мин. 1, макс. 1440 минут. Для сессий, которые должны длиться дольше этого времени, включите Auto-Tmux на хосте."
|
||
},
|
||
"commandHistoryEnabled": {
|
||
"label": "История команд",
|
||
"description": "Включить запись истории команд. При отключении история не сохраняется независимо от настроек хостов."
|
||
},
|
||
"commandHistoryForNewHosts": {
|
||
"label": "История команд для новых хостов",
|
||
"description": "Включается ли история команд при запуске новых хостов."
|
||
},
|
||
"imageStorageMode": {
|
||
"label": "Режим хранения",
|
||
"description": "Где записываются и загружаются образы терминала. Автоматический выбор по типу подключения, локальному и удаленному (SFTP) — это фиксированная настройка.",
|
||
"auto": "Авто",
|
||
"local": "Локальная",
|
||
"remoteSftp": "Удаленный (SFTP)"
|
||
},
|
||
"imageLocalDir": {
|
||
"label": "Локальный каталог",
|
||
"description": "Абсолютный путь в бэкэнде Termix, куда в локальном режиме записываются изображения. Никогда не отображается после сохранения. Пустой путь использует TERMIX_IMAGE_DIR."
|
||
},
|
||
"imageHostPath": {
|
||
"label": "Путь к хосту",
|
||
"description": "Представление локального каталога на стороне хоста, которое получают терминальные агенты."
|
||
},
|
||
"imageTtlMs": {
|
||
"label": "TTL (мс)",
|
||
"description": "Время хранения загруженного изображения в миллисекундах. В пустом случае используется значение TERMIX_IMAGE_TTL_MS, или один час."
|
||
},
|
||
"imageMaxCount": {
|
||
"label": "Максимальное количество изображений",
|
||
"description": "Большинство изображений сохраняется одновременно. В пустом режиме используется значение TERMIX_MAX_IMAGE_COUNT или 100."
|
||
},
|
||
"imageMaxBytes": {
|
||
"label": "Максимальный объем хранилища в байтах",
|
||
"description": "Максимальное количество байтов изображений, хранящихся одновременно. Пустой файл использует TERMIX_MAX_IMAGE_STORAGE_BYTES или 5 GiB."
|
||
},
|
||
"sessionPersistence": {
|
||
"label": "Сохраняйте сессии после отключения.",
|
||
"description": "Поддерживайте активность отключенного терминала на сервере в течение указанного выше времени, чтобы при повторном открытии его вкладки работа продолжалась с того места, где она остановилась."
|
||
},
|
||
"newHostAutoTmux": {
|
||
"label": "Auto-Tmux",
|
||
"description": "Запускайте терминалы новых хостов внутри tmux, чтобы сессии сохранялись после разрывов соединения (для этого tmux должен быть установлен на хосте)."
|
||
},
|
||
"newHostTheme": {
|
||
"label": "Тема оформления для новых хостов",
|
||
"description": "Тема оформления терминала, с которой запускается новый хост."
|
||
},
|
||
"newHostFontFamily": {
|
||
"label": "Шрифт для новых хостов",
|
||
"description": "Шрифт терминала, используемый при запуске нового хоста."
|
||
},
|
||
"newHostFontSize": {
|
||
"label": "Размер шрифта для новых хостов",
|
||
"description": "Размер шрифта в пикселях, с которым запускается новый хост."
|
||
},
|
||
"newHostCursorStyle": {
|
||
"label": "Стиль курсора для новых хостов"
|
||
},
|
||
"newHostCursorBlink": {
|
||
"label": "Мигающий курсор для новых хостов"
|
||
}
|
||
},
|
||
"host": {
|
||
"enableTerminalToolbar": {
|
||
"label": "Включить панель инструментов терминала",
|
||
"description": "Отобразить панель быстрого доступа, закрепленную на активном терминале, для отображения инструментов и статистики этого хоста в режиме реального времени."
|
||
},
|
||
"terminalToolbarPosition": {
|
||
"label": "Положение панели инструментов",
|
||
"description": "Там, где находится панель инструментов в терминале. Вы по-прежнему можете перетаскивать её оттуда.",
|
||
"bottom": "Нижний центр",
|
||
"bottomLeft": "Внизу слева",
|
||
"bottomRight": "Внизу справа",
|
||
"top": "Верхний центр",
|
||
"topLeft": "Вверху слева",
|
||
"topRight": "Вверху справа"
|
||
},
|
||
"terminalToolbarStartState": {
|
||
"label": "Начальное состояние панели инструментов",
|
||
"description": "Будет ли панель инструментов открываться в развернутом или свернутом виде при подключении терминала?",
|
||
"expanded": "Расширенный",
|
||
"collapsed": "Минимизированный"
|
||
},
|
||
"terminalToolbarDisplay": {
|
||
"label": "Режим отображения панели инструментов",
|
||
"description": "Как отображаются кнопки на панели инструментов. Функция «Последнее использованное» сохраняет выбранные вами кнопки на панели инструментов.",
|
||
"remember": "Последнее использование",
|
||
"icon": "Только иконка",
|
||
"labeled": "Иконки и подписи",
|
||
"expanded": "Дополнено статистикой."
|
||
},
|
||
"terminalToolbarShowStatus": {
|
||
"label": "Показать статистику в реальном времени",
|
||
"description": "В расширенном режиме отображайте статистику хоста в режиме реального времени над кнопками панели инструментов."
|
||
},
|
||
"terminalToolbarFade": {
|
||
"label": "Затухание в режиме ожидания",
|
||
"description": "Постепенно уменьшайте масштаб панели инструментов, пока не наведете на нее курсор мыши."
|
||
},
|
||
"enableCommandHistory": {
|
||
"label": "История команд",
|
||
"description": "Сохранять команды, выполняемые в этом терминале, для истории и автодополнения"
|
||
},
|
||
"enableTerminal": {
|
||
"label": "Включить терминал",
|
||
"description": "Предоставьте SSH-терминал для этого хоста."
|
||
},
|
||
"inheritAppearance": {
|
||
"label": "Использовать пользовательские настройки по умолчанию"
|
||
},
|
||
"theme": {
|
||
"label": "Тема"
|
||
},
|
||
"cursorBlink": {
|
||
"label": "Мигающий курсор"
|
||
},
|
||
"cursorStyle": {
|
||
"label": "Стиль курсора"
|
||
},
|
||
"fontSize": {
|
||
"label": "размер шрифта"
|
||
},
|
||
"fontFamily": {
|
||
"label": "Шрифт"
|
||
},
|
||
"scrollback": {
|
||
"label": "Прокрутка назад"
|
||
},
|
||
"letterSpacing": {
|
||
"label": "межбуквенный интервал"
|
||
},
|
||
"lineHeight": {
|
||
"label": "Высота строки"
|
||
},
|
||
"bellStyle": {
|
||
"label": "Белл"
|
||
},
|
||
"minimumContrastRatio": {
|
||
"label": "Минимальный коэффициент контрастности"
|
||
},
|
||
"backgroundImage": {
|
||
"label": "Фоновое изображение"
|
||
},
|
||
"backgroundImageOpacity": {
|
||
"label": "Прозрачность фонового изображения"
|
||
},
|
||
"customThemeColors": {
|
||
"label": "Пользовательские цвета темы"
|
||
},
|
||
"rightClickSelectsWord": {
|
||
"label": "Щелчок правой кнопкой мыши выделяет слово."
|
||
},
|
||
"macOptionIsMeta": {
|
||
"label": "Вариант — Мета"
|
||
},
|
||
"fastScrollModifier": {
|
||
"label": "Клавиша быстрой прокрутки"
|
||
},
|
||
"fastScrollSensitivity": {
|
||
"label": "Высокая скорость прокрутки"
|
||
},
|
||
"backspaceMode": {
|
||
"label": "Backspace"
|
||
},
|
||
"autoMosh": {
|
||
"label": "Автомош"
|
||
},
|
||
"moshCommand": {
|
||
"label": "Команда Мош"
|
||
},
|
||
"autoTmux": {
|
||
"label": "Автоматический tmux"
|
||
},
|
||
"useSSHTitle": {
|
||
"label": "Используйте заголовок SSH"
|
||
},
|
||
"syntaxHighlighting": {
|
||
"label": "Подсветка синтаксиса"
|
||
},
|
||
"syntaxHighlightingOptions": {
|
||
"label": "Категории подсветки синтаксиса"
|
||
},
|
||
"linkClickBehavior": {
|
||
"label": "Ссылка клик"
|
||
},
|
||
"localEcho": {
|
||
"label": "Локальное эхо"
|
||
},
|
||
"passwordPromptAutoFill": {
|
||
"label": "Предложить заполнить поля для ввода пароля"
|
||
},
|
||
"sudoPasswordAutoFill": {
|
||
"label": "Заполните подсказки sudo"
|
||
},
|
||
"autoReconnect": {
|
||
"label": "Автоматическое переподключение"
|
||
}
|
||
},
|
||
"user": {
|
||
"commandAutocomplete": {
|
||
"label": "Автодополнение команд",
|
||
"description": "При нажатии клавиши Tab будет отображаться автозаполнение во время набора текста."
|
||
},
|
||
"localEcho": {
|
||
"label": "Локальное эхо",
|
||
"description": "Снизьте воспринимаемую задержку ввода, используя безопасное локальное прогнозирование нажатий клавиш."
|
||
},
|
||
"linkClickBehavior": {
|
||
"label": "Клик по ссылке в терминале",
|
||
"description": "Поведение по умолчанию при клике по ссылкам в терминале"
|
||
},
|
||
"customThemes": {
|
||
"label": "Сохраненные темы"
|
||
}
|
||
}
|
||
},
|
||
"palette": {
|
||
"localTerminal": "Локальный терминал"
|
||
},
|
||
"permissions": {
|
||
"sessions": {
|
||
"title": "Используйте сеансы работы с терминалом в режиме реального времени.",
|
||
"description": "Позволяет использовать другие функции, такие как совместное использование сессий и запись, в режиме реального времени на вашем терминале."
|
||
},
|
||
"history": {
|
||
"title": "Прочитать историю команд",
|
||
"description": "Позволяет другим функциям, таким как ИИ-помощник, читать историю ваших команд."
|
||
}
|
||
},
|
||
"hosts": {
|
||
"tabTerminal": "Терминал",
|
||
"addHost": "Добавить хост",
|
||
"applyGlobalThemeTooltip": "Примените эту тему",
|
||
"backgroundImageDesc": "Необязательный URL для фонового изображения терминала",
|
||
"backgroundImageLabel": "URL фонового изображения",
|
||
"backgroundImageOpacityLabel": "Прозрачность фонового изображения",
|
||
"backspaceMode": "Режим Backspace",
|
||
"backspaceModeControlH": "Контроль-H (BS)",
|
||
"backspaceModeLabel": "Режим Backspace",
|
||
"backspaceModeNormal": "Нормальный (DEL)",
|
||
"behaviorAndAdvanced": "Поведение и дополнительные настройки",
|
||
"bellStyle": "Стиль звукового сигнала",
|
||
"bellStyleBoth": "Оба",
|
||
"bellStyleLabel": "Стиль сигнала",
|
||
"bellStyleNone": "Ни одного",
|
||
"bellStyleSound": "Звук",
|
||
"bellStyleVisual": "Визуальный",
|
||
"colorTheme": "Цветовая тема",
|
||
"cursorBlink": "Мигание курсора",
|
||
"cursorBlinking": "Мигание курсора",
|
||
"cursorBlinkingDesc": "Включить анимацию мигания курсора терминала",
|
||
"cursorStyle": "Стиль курсора",
|
||
"cursorStyleBar": "Бар",
|
||
"cursorStyleBlock": "Блокировать",
|
||
"cursorStyleLabel": "Стиль курсора",
|
||
"cursorStyleUnderline": "Подчеркнуть",
|
||
"customThemeAnsiColors": "Цвета ANSI",
|
||
"customThemeBackground": "Фон",
|
||
"customThemeBlack": "Чёрный",
|
||
"customThemeBlue": "Синий",
|
||
"customThemeBrightBlack": "Ярко-чёрный",
|
||
"customThemeBrightBlue": "Ярко-синий",
|
||
"customThemeBrightCyan": "Ярко-голубой",
|
||
"customThemeBrightGreen": "Ярко-зелёный",
|
||
"customThemeBrightMagenta": "Ярко-пурпурный",
|
||
"customThemeBrightRed": "Ярко-красный",
|
||
"customThemeBrightWhite": "Ярко-белый",
|
||
"customThemeBrightYellow": "Ярко-жёлтый",
|
||
"customThemeColors": "Пользовательские цвета",
|
||
"customThemeCursor": "Курсор",
|
||
"customThemeCursorAccent": "Акцент курсора",
|
||
"customThemeCyan": "Голубой",
|
||
"customThemeForeground": "Текст",
|
||
"customThemeGreen": "Зелёный",
|
||
"customThemeMagenta": "Пурпурный",
|
||
"customThemeRed": "Красный",
|
||
"customThemeResetTooltip": "Сбросить до значений по умолчанию",
|
||
"customThemeSelection": "Выделение",
|
||
"customThemeWhite": "Белый",
|
||
"customThemeYellow": "Жёлтый",
|
||
"deleteGlobalThemeTooltip": "Удалить эту тему",
|
||
"docsLink": "Документация",
|
||
"enableAutoMosh": "Включить Auto-Mosh",
|
||
"enableAutoMoshDesc": "Предпочитать Mosh вместо SSH, если доступен",
|
||
"enableAutoTmux": "Включить Auto-Tmux",
|
||
"enableAutoTmuxDesc": "Поддерживайте работоспособность вашей оболочки и всего, что в ней работает, даже при разрыве соединения и перезапуске браузера, запустив tmux (tmux должен быть установлен на хосте).",
|
||
"fastScrollModifier": "Модификатор быстрой прокрутки",
|
||
"fastScrollModifierAlt": "Alt",
|
||
"fastScrollModifierCtrl": "Ctrl",
|
||
"fastScrollModifierLabel": "Модификатор быстрой прокрутки",
|
||
"fastScrollModifierShift": "Shift",
|
||
"fastScrollSensitivity": "Чувствительность быстрой прокрутки",
|
||
"fastScrollSensitivityLabel": "Чувствительность быстрой прокрутки",
|
||
"fontFamily": "Семейство шрифтов",
|
||
"fontFamilyCustomHint": "Выберите шрифт из комплекта или выберите «Пользовательский» и введите точное название шрифта, уже установленного в вашей системе (например, MesloLGS NF, Noto Sans Mono). Termix не может установить шрифты автоматически, сначала установите его в свою операционную систему.",
|
||
"fontFamilyCustomOption": "Обычай...",
|
||
"fontFamilyCustomPlaceholder": "Точное название шрифта, например, MesloLGS NF",
|
||
"fontFamilyLabel": "Семейство шрифтов",
|
||
"fontSize": "Размер шрифта",
|
||
"fontSizeLabel": "Размер шрифта",
|
||
"hostNotFound": "Хост не найден",
|
||
"letterSpacing": "Межбуквенный интервал",
|
||
"letterSpacingPx": "Межбуквенное расстояние (px)",
|
||
"lineHeight": "Межстрочный интервал",
|
||
"lineHeightLabel": "Высота строки",
|
||
"linkClickBehaviorConfirm": "Показывать всплывающее окно для открытия или копирования",
|
||
"linkClickBehaviorDesc": "Определяет, что происходит при клике по ссылке в терминале. Используйте «По умолчанию», чтобы следовать настройкам приложения.",
|
||
"linkClickBehaviorDirect": "Открывать напрямую",
|
||
"linkClickBehaviorLabel": "Поведение при клике по ссылке",
|
||
"loadingHost": "Загрузка хоста...",
|
||
"localEchoAuto": "Автоматический",
|
||
"localEchoDesc": "Предсказывает безопасные нажатия клавиш для печати локально даже при медленном соединении. Запросы паролей и управляющий ввод никогда не отображаются.",
|
||
"localEchoLabel": "Локальное эхо",
|
||
"localEchoOff": "Отключено",
|
||
"localEchoOn": "Всегда включено",
|
||
"macOptionIsMetaLabel": "Клавиша Option отправляет метаданные",
|
||
"macOptionIsMetaShortDesc": "Отключите возможность ввода специальных символов (например, @ или |) с помощью клавиши Option/Alt в macOS вместо отправки Meta.",
|
||
"moshCommand": "Команда MOSH",
|
||
"moshCommandLabel": "Команда Mosh",
|
||
"noSavedThemes": "Сохранённых тем пока нет.",
|
||
"none": "Нет",
|
||
"passwordPromptAutoFillDesc": "Предлагается ввести сохраненный пароль, когда терминал запросит его. Отключите эту функцию, чтобы автоматическое заполнение паролей на этом хосте никогда не происходило.",
|
||
"passwordPromptAutoFillLabel": "Функция автозаполнения паролей",
|
||
"autoReconnectLabel": "Автоматическое переподключение",
|
||
"autoReconnectDesc": "При разрыве SSH-соединения, например, после сбоя сети или перехода в спящий режим, система автоматически переподключается. При этом сохраняется возможность прокрутки назад.",
|
||
"rightClickSelectsWord": "Выделять слово правой кнопкой",
|
||
"rightClickSelectsWordLabel": "Правый клик выделяет слово",
|
||
"rightClickSelectsWordShortDesc": "Выделять слово под курсором при правом клике",
|
||
"saveAsGlobalTheme": "Сохранить как глобальную тему",
|
||
"saveGlobalThemeError": "Не удалось сохранить тему.",
|
||
"saveGlobalThemeNamePrompt": "Введите название для этой темы.",
|
||
"saveGlobalThemeSuccess": "Тема сохранена",
|
||
"savedThemesLabel": "Сохраненные темы",
|
||
"scrollbackBufferLabel": "Буфер прокрутки",
|
||
"scrollbackMaxLines": "Максимальное количество строк, сохраняемых в истории",
|
||
"sudoPasswordAutoFill": "Автозаполнение пароля sudo",
|
||
"sudoPasswordAutoFillDesc": "Хранить пароль sudo, чтобы метрики хоста, запросы терминала и другие могли автоматически выполнять привилегированные команды.",
|
||
"sudoPasswordAutoFillLabel": "Автозаполнение пароля sudo",
|
||
"syntaxCategoryIpAddresses": "IP-адреса",
|
||
"syntaxCategoryIpAddressesDesc": "192.168.1.1, 10.0.0.1:8080",
|
||
"syntaxCategoryLogLevels": "Уровни логирования",
|
||
"syntaxCategoryLogLevelsDesc": "error, warn, info, debug, fatal",
|
||
"syntaxCategoryNumbers": "Числа с метками",
|
||
"syntaxCategoryNumbersDesc": "port 8080, exit 1, status 404",
|
||
"syntaxCategoryPaths": "Пути к файлам",
|
||
"syntaxCategoryPathsDesc": "/usr/share/doc, ~/file.txt",
|
||
"syntaxCategoryTimestamps": "Временные метки",
|
||
"syntaxCategoryTimestampsDesc": "[12:34:56], 2024-01-15",
|
||
"syntaxCategoryUrls": "URLs",
|
||
"syntaxCategoryUrlsDesc": "https://example.com",
|
||
"syntaxHighlightingDesc": "Раскрашивать вывод терминала (ошибки, пути, IP-адреса, временные метки)",
|
||
"syntaxHighlightingLabel": "Подсветка синтаксиса",
|
||
"terminalAppearance": "Внешний вид терминала",
|
||
"theme": "Тема",
|
||
"themePreview": "Предпросмотр темы",
|
||
"useSSHTitleDesc": "Обновлять заголовок вкладки из названия окна оболочки вместо имени хоста",
|
||
"useSSHTitleLabel": "Использовать заголовок окна SSH",
|
||
"enableTunnel": "Включить туннель",
|
||
"enableFileManager": "Включить файловый менеджер",
|
||
"enableDocker": "Включить Docker",
|
||
"startupSnippet": "Сниппет запуска",
|
||
"quickActions": "Быстрые действия",
|
||
"proxmoxLastSyncStatus": {
|
||
"success": "Успешно"
|
||
},
|
||
"proxmoxResultSkippedNoIp": "{{count}} пропущено (IP-адрес не найден)",
|
||
"proxmoxStatsUrlCopied": "URL-адрес статистики Proxmox скопирован в буфер обмена.",
|
||
"rdpUrlCopied": "Скопирован URL RDP",
|
||
"vncUrlCopied": "Скопирован URL VNC",
|
||
"filterAuthStepca": "Шаг CA",
|
||
"guac": {
|
||
"noCredential": "Нет учетных данных (прямые данные ниже)",
|
||
"authTypeDirect": "Прямой",
|
||
"authTypeCredential": "Учетные данные",
|
||
"authTypeNone": "Ни одного",
|
||
"recordingPath": "Путь записи",
|
||
"recordingName": "Имя записи",
|
||
"saveHostFirst": "Сначала сохраните хост.",
|
||
"sharingOptionsAfterSave": "Параметры общего доступа будут доступны после сохранения хоста.",
|
||
"permissionLevel": "Уровень разрешений",
|
||
"typeHeader": "Тип",
|
||
"targetHeader": "Цель",
|
||
"permissionHeader": "Разрешение",
|
||
"cancelBtn": "Отмена",
|
||
"savingBtn": "Сохранение...",
|
||
"updateHostBtn": "Обновить хост",
|
||
"addHostBtn": "Добавить хост"
|
||
},
|
||
"filterAuthVault": "Сейф"
|
||
},
|
||
"nav": {
|
||
"history": "История",
|
||
"localTerminal": "Локальный терминал",
|
||
"sshTools": "Инструменты SSH",
|
||
"terminal": "Терминал",
|
||
"macros": "Макросы"
|
||
},
|
||
"sshTools": {
|
||
"broadcastInputPlaceholder": "Введите текст для трансляции нажатий...",
|
||
"copyOnSelect": "Автоматическое копирование выделенного текста",
|
||
"enableRightClickCopyPaste": "Включить копирование/вставку правой кнопкой мыши",
|
||
"fillPassword": "Заполнить пароль",
|
||
"fillPasswordMissing": "Нет сохранённого пароля для {{count}} выбранных терминалов",
|
||
"fillPasswordSuccess": "Пароль введён в {{count}} терминалах",
|
||
"keyRecordingTitle": "Запись клавиш",
|
||
"noTerminalTabsOpen": "Нет открытых вкладок терминала",
|
||
"recordToTerminals": "Записать в терминалы",
|
||
"selectAll": "Все",
|
||
"selectNone": "Ни одного",
|
||
"selectTerminalsAbove": "Выберите терминалы выше",
|
||
"settingsTitle": "Настройки",
|
||
"startRecording": "Начать запись",
|
||
"stopRecording": "Остановить запись"
|
||
},
|
||
"keybindings": {
|
||
"copy": "Скопировать выделенный фрагмент",
|
||
"paste": "Вставить",
|
||
"sendControlCode": "Отправить сигнал Ctrl+буква",
|
||
"sendText": "Отправить текст",
|
||
"controlCodeLabel": "Письмо",
|
||
"textLabel": "Текст для отправки",
|
||
"appendEnterLabel": "Нажмите Enter после отправки",
|
||
"clipboardPermissionNote": "В некоторых браузерах при первом использовании может запрашиваться разрешение на использование буфера обмена.",
|
||
"textRequired": "Введите текст для отправки",
|
||
"controlCodeRequired": "Введите одну букву в качестве управляющего кода.",
|
||
"builtIn": {
|
||
"copyCtrlC": "Скопировать выделенный фрагмент (Ctrl+C, только если выделен текст)",
|
||
"copyCtrlShiftC": "Скопировать выделенный фрагмент (Ctrl+Shift+C)",
|
||
"copyCmdC": "Скопировать выделенный фрагмент (Cmd+C)",
|
||
"pasteCtrlShiftV": "Вставить из буфера обмена (Ctrl+Shift+V)",
|
||
"ctrlW": "Отправьте Ctrl+W в командную оболочку (это заблокирует закрытие вкладки браузера).",
|
||
"ctrlT": "Отправьте Ctrl+T в командную оболочку (это заблокирует открытие вкладки браузера).",
|
||
"ctrlN": "Отправьте Ctrl+N в командную оболочку (это заблокирует открытие окна браузера).",
|
||
"ctrlQ": "Отправьте Ctrl+Q в командную оболочку (это заблокирует возможность закрытия браузера)."
|
||
}
|
||
},
|
||
"macros": {
|
||
"title": "Макросы",
|
||
"description": "Выполните сохраненную последовательность команд в терминале и отреагируйте на то, что сервер отправит вам в ответ.",
|
||
"target": "Цель",
|
||
"noTerminal": "Терминал не открыт",
|
||
"empty": "Макросы пока отсутствуют",
|
||
"emptyHint": "Создайте макрос для автоматизации действий в терминале, таких как вход в систему, перезапуск службы или ответ на запросы.",
|
||
"create": "Новый макрос",
|
||
"back": "Вернуться к макроэлементам",
|
||
"name": "Название",
|
||
"namePlaceholder": "Перезапустите веб-сервер",
|
||
"nameRequired": "Перед сохранением дайте макросу имя.",
|
||
"descriptionLabel": "Описание",
|
||
"descriptionPlaceholder": "Что делает этот макрос (необязательно)",
|
||
"unsaved": "Несохранённые изменения",
|
||
"save": "Сохранить",
|
||
"saved": "Макрос сохранен",
|
||
"saveFailed": "Не удалось сохранить макрос.",
|
||
"delete": "Удалить",
|
||
"deleteTitle": "Удалить этот макрос?",
|
||
"deleteBody": "\"{{name}}\" будет удалено навсегда. Этого нельзя будет отменить.",
|
||
"deleted": "Макрос удален",
|
||
"cancel": "Отмена",
|
||
"run": "Запустить",
|
||
"stop": "Остановить",
|
||
"running": "Бег...",
|
||
"completed": "Макро завершен",
|
||
"failed": "Макрос не сработал",
|
||
"loadFailed": "Не удалось загрузить макросы.",
|
||
"needTerminal": "Сначала откройте и подключите терминал.",
|
||
"noSteps": "В этом макросе пока нет шагов. Добавьте один ниже.",
|
||
"addStep": "Добавить шаг",
|
||
"stepNumber": "Шаг {{number}}",
|
||
"removeStep": "Удалить шаг",
|
||
"confirmRunTitle": "Запустить этот макрос?",
|
||
"confirmRunBody": "\"{{name}}\" будет отправлять команды {{host}}.",
|
||
"confirmRunAction": "Запустить макрос",
|
||
"stepTypes": {
|
||
"send": {
|
||
"label": "Отправить команду",
|
||
"help": "Вводит текст в терминал так же, как если бы вы его ввели вручную."
|
||
},
|
||
"wait": {
|
||
"label": "Дождитесь вывода",
|
||
"help": "Приостанавливается до тех пор, пока сервер не выведет указанный вами текст, как запрос пароля."
|
||
},
|
||
"delay": {
|
||
"label": "Пауза",
|
||
"help": "Перед следующим шагом выполняется ожидание в течение заданного промежутка времени."
|
||
},
|
||
"if": {
|
||
"label": "Если вывод содержит",
|
||
"help": "Проверяет все данные, выведенные сервером на экран, а затем запускает одну из двух ветвей выполнения."
|
||
},
|
||
"repeat": {
|
||
"label": "Повторить",
|
||
"help": "Выполняет все шаги, входящие в его состав, заданное количество раз."
|
||
}
|
||
},
|
||
"send": {
|
||
"text": "Команда или текст",
|
||
"textPlaceholder": "systemctl restart nginx",
|
||
"pressEnter": "Нажмите Enter после отправки",
|
||
"pressEnterHelp": "Отключите эту функцию, чтобы вводить текст без отправки."
|
||
},
|
||
"wait": {
|
||
"pattern": "Дождитесь, пока на выходе не появится",
|
||
"patternPlaceholder": "пароль:",
|
||
"timeout": "Сдаться после",
|
||
"onTimeout": "Если оно никогда не появится",
|
||
"stop": "Остановите макрос",
|
||
"continue": "Продолжайте в любом случае."
|
||
},
|
||
"delay": {
|
||
"duration": "Подождите"
|
||
},
|
||
"ifStep": {
|
||
"pattern": "Если в выходных данных содержится",
|
||
"patternPlaceholder": "Активный: активен (работает)",
|
||
"then": "Затем сделайте это.",
|
||
"else": "В противном случае сделайте это.",
|
||
"emptyBranch": "Без ступенек"
|
||
},
|
||
"repeat": {
|
||
"count": "Количество раз",
|
||
"times": "времена"
|
||
},
|
||
"match": {
|
||
"useRegex": "Сопоставление с использованием регулярного выражения",
|
||
"useRegexHelp": "Оставьте этот параметр отключенным, чтобы текст точно соответствовал написанному.",
|
||
"invalidRegex": "Не является допустимым регулярным выражением, будет сопоставлено как обычный текст."
|
||
},
|
||
"seconds": "секунды",
|
||
"secondsShort": "{{count}}с"
|
||
},
|
||
"errors": {
|
||
"remoteServerRequired": "Требуется удаленный сервер. Для использования этого типа подключения подключите удаленный сервер в настройках."
|
||
},
|
||
"plugin": {
|
||
"name": "SSH Terminal"
|
||
}
|
||
}
|