Files
NetMesh/application/i18n/locales/ru/terminal.ts

863 lines
72 KiB
TypeScript
Raw Normal View History

import type { Messages } from '../types';
export const ruTerminalMessages: Messages = {
'terminal.sudoHint.pressEnter': 'Нажмите Enter, чтобы вставить сохранённый пароль',
'terminal.passwordPicker.title': 'Сохранённые пароли',
'terminal.passwordPicker.empty': 'Нет сохранённых паролей',
// Network Device Mode auto-detection tip (session header)
'terminal.networkDevice.tip.message': 'Похоже на сетевое устройство. Включите режим сетевого устройства, чтобы команды отправлялись как есть (без обёртки оболочки).',
'terminal.networkDevice.tip.action': 'Включить',
'terminal.networkDevice.tip.dismiss': 'Скрыть',
'terminal.networkDevice.tip.enabled': 'Режим сетевого устройства включён для {host}',
// Connection logs
'logs.table.date': 'Дата',
'logs.table.user': 'Пользователь',
'logs.table.host': 'Хост',
'logs.table.saved': 'Сохранено',
'logs.empty.title': 'Нет журналов подключений',
'logs.empty.desc':
'История ваших подключений будет отображаться здесь, когда вы подключаетесь к хостам или открываете локальные терминалы.',
'logs.loadMore': 'Загрузить ещё {count} журналов',
'logs.ongoing': 'в процессе',
'logs.localTerminal': 'Локальный терминал',
'logs.action.save': 'Сохранить',
'logs.action.unsave': 'Убрать из сохранённых',
'logs.action.delete': 'Удалить',
// Log view
'logView.customizeAppearance': 'Настроить внешний вид',
'logView.appearance': 'Внешний вид',
'logView.readOnly': 'Только чтение',
'logView.export': 'Экспорт',
// Terminal toolbar / search / context menu / auth
'terminal.toolbar.openSftp': 'Открыть SFTP',
'terminal.toolbar.availableAfterConnect': 'Доступно после подключения',
'terminal.toolbar.sendYmodem': 'Отправить через YMODEM',
'terminal.toolbar.receiveYmodem': 'Получить через YMODEM',
'terminal.toolbar.sftp': 'SFTP',
'terminal.toolbar.more': 'Другие действия',
'terminal.toolbar.scripts': 'Скрипты',
'terminal.toolbar.history': 'История команд',
'terminal.toolbar.configureOsc7': 'Настроить отслеживание каталога',
'history.scope.label': 'Область истории',
'history.tab.host': 'Хост',
'history.tab.global': 'Глобальная',
'history.searchPlaceholder': 'Поиск по истории...',
'history.loading': 'Загрузка удалённой истории...',
'history.meta.count': '{count} команд',
'history.empty.noSession': 'Откройте удалённую сессию, чтобы просмотреть историю команд.',
'history.empty.unsupportedProtocol': 'История команд доступна только для сессий SSH/Mosh/ET.',
'history.empty.noHistory': 'История команд на этом хосте не найдена.',
'history.empty.noGlobalHistory': 'Глобальной истории команд пока нет. Выполненные команды появятся здесь.',
'history.action.refresh': 'Обновить',
'history.action.retry': 'Повторить',
'history.action.paste': 'Вставить в терминал',
'history.action.run': 'Выполнить в терминале',
'history.action.saveAsSnippet': 'Сохранить как сниппет',
'history.action.delete': 'Удалить из истории',
'terminal.toolbar.library': 'Библиотека',
'terminal.toolbar.noSnippets': 'Нет доступных сниппетов',
'terminal.toolbar.terminalSettings': 'Настройки терминала',
'terminal.toolbar.searchTerminal': 'Поиск по терминалу',
'terminal.toolbar.search': 'Поиск',
'terminal.toolbar.startSessionLog': 'Начать журнал сессии',
'terminal.toolbar.stopSessionLog': 'Остановить журнал сессии',
'terminal.toolbar.timestampsEnable': 'Показать время',
'terminal.toolbar.timestampsDisable': 'Скрыть время',
'terminal.toolbar.broadcast': 'Трансляция',
'terminal.toolbar.broadcastEnable': 'Включить режим трансляции',
'terminal.toolbar.broadcastDisable': 'Отключить режим трансляции',
'terminal.toolbar.composeBar': 'Строка ввода',
'terminal.composeBar.placeholder': 'Введите команду здесь и нажмите Enter для отправки...',
'terminal.composeBar.send': 'Отправить',
'terminal.composeBar.close': 'Закрыть строку ввода',
'terminal.composeBar.broadcasting': 'Трансляция во все сессии',
'terminal.composeBar.resize': 'Изменить высоту строки ввода',
'terminal.composeBar.manageSnippets': 'Управление быстрыми сниппетами',
'terminal.composeBar.searchSnippets': 'Поиск сниппетов...',
'terminal.composeBar.noPinnedSnippets': 'Закрепите сниппеты через + для быстрого доступа',
'terminal.composeBar.noMatchingSnippets': 'Сниппеты не найдены',
'terminal.composeBar.pinnedCount': 'Закреплено: {count}',
'terminal.composeBar.unpinSnippet': 'Убрать {label} из панели',
'terminal.composeBar.snippetClickHint': 'Клик — вставить · Shift+клик — отправить',
'terminal.toolbar.focus': 'Фокус',
'terminal.toolbar.focusMode': 'Режим фокуса',
'terminal.paneMagnification.magnify': 'Увеличить текущую панель',
'terminal.paneMagnification.restore': 'Восстановить раскладку панелей',
'terminal.paneMagnification.hint': 'Увеличено',
'terminal.toolbar.detach': 'Открепить в отдельную вкладку',
'terminal.toolbar.dragPane': 'Перетащить панель терминала',
'terminal.toolbar.showActions': 'Показать действия терминала',
'terminal.toolbar.encoding': 'Кодировка терминала',
'terminal.toolbar.encoding.utf8': 'UTF-8',
'terminal.toolbar.encoding.gb18030': 'GB18030',
'terminal.toolbar.closeSession': 'Закрыть сессию',
'terminal.toolbar.hostHighlight.title': 'Подсветка ключевых слов хоста',
'terminal.toolbar.hostHighlight.noRules': 'Для этого хоста не задано пользовательских правил подсветки',
'terminal.toolbar.hostHighlight.addRule': 'Добавить новое правило',
'terminal.toolbar.hostHighlight.labelPlaceholder': 'Метка (например, Error)',
'terminal.toolbar.hostHighlight.patternPlaceholder': 'Regex-шаблон (например, \\bfailed\\b)',
'terminal.toolbar.hostHighlight.invalidPattern': 'Некорректный regex-шаблон',
'terminal.toolbar.hostHighlight.clearAll': 'Очистить все',
'terminal.toolbar.hostHighlight.changeColor': 'Изменить цвет подсветки для',
'terminal.toolbar.hostHighlight.selectColor': 'Выбрать цвет для нового правила',
'terminal.statusbar.copyHostname.label': 'Копировать адрес хоста',
'terminal.statusbar.copyHostname.tooltip': 'Копировать адрес хоста ({hostname})',
'terminal.statusbar.copyHostname.toast': 'Адрес хоста скопирован: {hostname}',
'terminal.statusbar.copyHostname.error': 'Не удалось скопировать адрес хоста в буфер обмена',
'terminal.statusbar.disconnect.label': 'Отключить',
'terminal.statusbar.disconnect.tooltip': 'Отключить сессию, не закрывая вкладку',
'terminal.statusbar.reconnect.label': 'Переподключиться',
'terminal.statusbar.reconnect.tooltip': 'Переподключить эту сессию',
'terminal.serverStats.cpu': 'Использование CPU',
'terminal.serverStats.cpuCores': 'Использование ядер CPU',
'terminal.serverStats.memory': 'Использование памяти',
'terminal.serverStats.memoryDetails': 'Сведения о памяти',
'terminal.serverStats.memUsed': 'Использовано',
'terminal.serverStats.memBuffers': 'Буферы',
'terminal.serverStats.memCached': 'Кэш',
'terminal.serverStats.memFree': 'Свободно',
'terminal.serverStats.swap': 'Файл подкачки',
'terminal.serverStats.swapUsed': 'Использовано swap',
'terminal.serverStats.swapFree': 'Свободный swap',
'terminal.serverStats.swapTotal': 'Всего',
'terminal.serverStats.topProcesses': 'Топ процессов по памяти',
'terminal.serverStats.disk': 'Использование дисков',
'terminal.serverStats.diskDetails': 'Смонтированные диски',
'terminal.serverStats.network': 'Скорость сети',
'terminal.serverStats.latency': 'Сетевая задержка SSH',
'terminal.serverStats.networkDetails': 'Сетевые интерфейсы',
'terminal.serverStats.noData': 'Данные недоступны',
'terminal.dragDrop.localTitle': 'Перетащите для вставки путей',
'terminal.dragDrop.localMessage': 'Пути к файлам будут вставлены в терминал',
'terminal.dragDrop.remoteTitle': 'Перетащите для загрузки файлов',
'terminal.dragDrop.remoteZmodemMessage': 'Файлы будут загружены через ZMODEM (PTY)',
'terminal.dragDrop.remoteSftpMessage': 'Файлы будут загружены через SFTP',
'terminal.dragDrop.noFiles': 'Нет файлов для загрузки',
'terminal.dragDrop.notConnected': 'Нельзя перетащить файлы — терминал не подключён',
'terminal.dragDrop.errorTitle': 'Ошибка перетаскивания',
'terminal.dragDrop.errorMessage': 'Не удалось обработать перетащенные файлы',
'terminal.dragDrop.destinationUnknown': 'Не удалось определить текущую папку терминала. Включите отслеживание каталогов или сначала откройте SFTP и выберите папку загрузки.',
'terminal.dragDrop.uploadCancelled': 'Загрузка отменена: соединение терминала изменилось или его не удалось повторно использовать. После переподключения перетащите файлы снова.',
'terminal.dragDrop.needsSudoElevation': 'Эта папка недоступна для записи пользователю входа. Включите повышение прав Sudo в настройках хоста или вернитесь в домашний каталог и перетащите файлы снова.',
'terminal.search.placeholder': 'Поиск...',
'terminal.search.noResults': 'Ничего не найдено',
'terminal.search.prevMatch': 'Предыдущее совпадение (Shift+Enter)',
'terminal.search.nextMatch': 'Следующее совпадение (Enter)',
'terminal.menu.copy': 'Копировать',
'terminal.menu.paste': 'Вставить',
'terminal.menu.uploadClipboardImage': 'Загрузить изображение из буфера',
'terminal.menu.addSelectionToAI': 'Добавить в чат',
'terminal.menu.pasteSelection': 'Вставить выделенное',
'terminal.menu.selectAll': 'Выбрать всё',
'terminal.menu.reconnect': 'Переподключиться',
'terminal.menu.sendYmodem': 'Отправить через YMODEM',
'terminal.menu.receiveYmodem': 'Получить через YMODEM',
'terminal.menu.splitHorizontal': 'Разделить по горизонтали',
'terminal.menu.splitVertical': 'Разделить по вертикали',
'terminal.menu.clearBuffer': 'Очистить буфер',
'terminal.menu.closeTerminal': 'Закрыть терминал',
'terminal.menu.rename': 'Переименовать',
'terminal.menu.detach': 'Открепить из рабочей области',
'terminal.menu.detachSession': 'Открепить {name}',
'terminal.osc7Setup.title': 'Настроить отслеживание каталога',
'terminal.osc7Setup.desc': 'NetMesh добавит хуки OSC 7 для текущего удалённого пользователя. Это помогает SFTP следовать за каталогом терминала после sudo или su.',
'terminal.osc7Setup.targets': 'Возможные файлы для обновления',
'terminal.osc7Setup.command': 'Команда для запуска',
'terminal.osc7Setup.run': 'Запустить настройку',
'terminal.osc7Setup.running': 'Настройка...',
'terminal.osc7Setup.configured': 'Отслеживание каталога настроено',
'terminal.osc7Setup.failed': 'Не удалось настроить отслеживание каталога',
'terminal.osc7Setup.sent': 'Настройка отслеживания каталога отправлена в терминал',
'terminal.ymodem.selectFile': 'Выберите файл для отправки',
'terminal.ymodem.allFiles': 'Все файлы',
'terminal.ymodem.started': 'YMODEM отправляет {fileName}',
'terminal.ymodem.complete': 'YMODEM отправил {fileName}',
'terminal.ymodem.failed': 'Не удалось отправить через YMODEM',
'terminal.ymodem.selectReceiveDirectory': 'Выберите папку для полученных файлов',
'terminal.ymodem.receiveStarted': 'YMODEM получает...',
'terminal.ymodem.receiveComplete': 'YMODEM получил {fileName}',
'terminal.ymodem.receiveCompleteMultiple': 'YMODEM получил файлов: {count}',
'terminal.ymodem.receiveEmpty': 'Файлы YMODEM не получены',
'terminal.ymodem.receiveFailed': 'Не удалось получить через YMODEM',
'terminal.ymodem.unavailable': 'YMODEM недоступен',
'terminal.clipboardImageUpload.noImage': 'В буфере обмена нет изображения',
'terminal.clipboardImageUpload.failed': 'Не удалось загрузить изображение из буфера обмена',
'terminal.selection.addToAI': 'Добавить в чат',
'terminal.selection.addToAIDesc': 'Прикрепить выбранный вывод терминала к черновику AI',
'terminal.auth.password': 'Пароль',
'terminal.auth.sshKey': 'SSH-ключ',
'terminal.auth.username': 'Имя пользователя',
'terminal.auth.username.placeholder': 'root',
'terminal.auth.passwordLabel': 'Пароль',
'terminal.auth.password.placeholder': 'Введите пароль',
'terminal.auth.passphrase': 'Парольная фраза',
'terminal.auth.passphrase.placeholder': 'Необязательная парольная фраза для выбранного приватного ключа',
'terminal.auth.certificate': 'Сертификат',
'terminal.auth.selectKey': 'Выбрать ключ',
'terminal.auth.retryMessage': 'Ошибка аутентификации. Проверьте учётные данные и повторите попытку.',
'terminal.auth.retryLog': 'Ошибка аутентификации. Повторите попытку.',
'terminal.auth.noKeysHint': 'Нет доступных ключей. Добавьте ключи в связке ключей.',
'terminal.auth.continueSave': 'Продолжить и сохранить',
'terminal.auth.credentialsUnavailable': 'Сохранённые учётные данные не могут быть расшифрованы на этом устройстве. Пожалуйста, введите и сохраните их заново.',
'terminal.auth.jumpCredentialsUnavailable': 'У jump-хоста сохранены учётные данные, которые нельзя расшифровать на этом устройстве. Откройте настройки хоста и введите их заново.',
'terminal.auth.proxyCredentialsUnavailable': 'Учётные данные прокси не могут быть расшифрованы на этом устройстве. Откройте настройки хоста и заново введите пароль прокси.',
'terminal.auth.keyUnavailableFallbackPassword': 'Сохранённый SSH-ключ недоступен на этом устройстве. Выполняется переход на аутентификацию по паролю.',
'terminal.progress.timeoutIn': 'Тайм-аут через {seconds}с',
'terminal.progress.waitingForUserInput': 'Ожидание ввода пользователя',
'terminal.progress.disconnected': 'Отключено',
'terminal.progress.cancelling': 'Отмена...',
'terminal.progress.startOver': 'Начать заново',
'terminal.progress.enterReconnectHint': 'Нажмите Enter, чтобы подключиться снова',
'terminal.progress.reconnecting': 'Повторное подключение...',
'terminal.progress.autoReconnectScheduled': 'Соединение потеряно. Повторное подключение через {seconds} с (попытка {attempt}).',
'terminal.progress.autoReconnectAttempt': 'Попытка автоматического подключения {attempt}...',
'terminal.connection.dismissDisconnectedDialog': 'Закрыть уведомление об отключении',
'terminal.connection.chainOf': 'Цепочка {current} из {total}',
'terminal.connection.showLogs': 'Показать журналы',
'terminal.connection.hideLogs': 'Скрыть журналы',
'terminal.connection.protocol.ssh': 'SSH',
'terminal.connection.protocol.telnet': 'Telnet',
'terminal.connection.protocol.mosh': 'Mosh',
'terminal.connection.protocol.plugin': 'Подключение плагина',
'terminal.connection.protocol.serial': 'Serial',
'terminal.connection.protocol.local': 'Локальная оболочка',
'terminal.hostKey.unknownTitle': 'Подтвердите этот ключ хоста',
'terminal.hostKey.changedTitle': 'Ключ хоста изменился',
'terminal.hostKey.unknownDescription': 'Подлинность {host} пока не может быть установлена.',
'terminal.hostKey.changedDescription': 'Сохранённый ключ для {host} больше не совпадает с этим сервером.',
'terminal.hostKey.fingerprintLabel': 'Отпечаток {keyType} — SHA256:',
'terminal.hostKey.savedFingerprintLabel': 'Сохранённый отпечаток',
'terminal.hostKey.unknownHint': 'Запомните его, если этот отпечаток принадлежит серверу, к которому вы ожидали подключиться.',
'terminal.hostKey.changedHint': 'Продолжайте только если вы ожидали, что этот хост изменится.',
'terminal.hostKey.addAndContinue': 'Добавить и продолжить',
'terminal.hostKey.updateAndContinue': 'Обновить и продолжить',
'terminal.themeModal.title': 'Внешний вид терминала',
'terminal.themeModal.tab.theme': 'Тема',
'terminal.themeModal.tab.font': 'Шрифт',
'terminal.themeModal.tab.custom': 'Пользовательское',
'terminal.themeModal.globalTheme': 'Глобальная тема',
'terminal.themeModal.globalFont': 'Глобальный шрифт',
'terminal.themeModal.fontSize': 'Размер шрифта',
'terminal.themeModal.fontWeight': 'Толщина шрифта',
'terminal.themeModal.livePreview': 'Предпросмотр в реальном времени',
'terminal.themeModal.themeType': 'Тема {type}',
'terminal.hiddenTheme.title': 'Текущая скрытая тема',
'terminal.hiddenTheme.desc': 'Эта тема скрыта из ручного выбора и будет заменена, когда вы выберете другую тему.',
'topTabs.toggleTheme.systemExitTitle': 'Активна системная тема',
'topTabs.toggleTheme.systemExitMessage': 'Откройте настройки, чтобы выбрать фиксированную светлую или тёмную тему.',
'topTabs.toggleTheme.openSettings': 'Открыть настройки',
// Custom Themes
'terminal.customTheme.section': 'Пользовательские темы',
'terminal.customTheme.yourThemes': 'Ваши темы',
'terminal.customTheme.new': 'Новая тема',
'terminal.customTheme.newDesc': 'Клонировать текущую тему и настроить её',
'terminal.customTheme.newTitle': 'Новая пользовательская тема',
'terminal.customTheme.editTitle': 'Редактировать тему',
'terminal.customTheme.import': 'Импорт .itermcolors',
'terminal.customTheme.importDesc': 'Импорт из файла цветовой схемы iTerm2',
'terminal.customTheme.importError': 'Не удалось разобрать выбранный файл. Убедитесь, что это корректный XML-файл .itermcolors.',
'terminal.customTheme.delete': 'Удалить тему',
'terminal.customTheme.confirmDelete': 'Подтвердить удаление',
'terminal.customTheme.name': 'Название',
'terminal.customTheme.namePlaceholder': 'Моя пользовательская тема',
'terminal.customTheme.type': 'Тип',
'terminal.customTheme.group.general': 'Общие',
'terminal.customTheme.group.normal': 'Обычные цвета',
'terminal.customTheme.group.bright': 'Яркие цвета',
'terminal.customTheme.color.background': 'Фон',
'terminal.customTheme.color.foreground': 'Текст',
'terminal.customTheme.color.cursor': 'Курсор',
'terminal.customTheme.color.selection': 'Выделение',
'terminal.customTheme.color.black': 'Чёрный',
'terminal.customTheme.color.red': 'Красный',
'terminal.customTheme.color.green': 'Зелёный',
'terminal.customTheme.color.yellow': 'Жёлтый',
'terminal.customTheme.color.blue': 'Синий',
'terminal.customTheme.color.magenta': 'Пурпурный',
'terminal.customTheme.color.cyan': 'Голубой',
'terminal.customTheme.color.white': 'Белый',
'terminal.customTheme.color.brightBlack': 'Яркий чёрный',
'terminal.customTheme.color.brightRed': 'Яркий красный',
'terminal.customTheme.color.brightGreen': 'Яркий зелёный',
'terminal.customTheme.color.brightYellow': 'Яркий жёлтый',
'terminal.customTheme.color.brightBlue': 'Яркий синий',
'terminal.customTheme.color.brightMagenta': 'Яркий пурпурный',
'terminal.customTheme.color.brightCyan': 'Яркий голубой',
'terminal.customTheme.color.brightWhite': 'Яркий белый',
// Cloud Sync Settings
'cloudSync.gate.title': 'Синхронизация с end-to-end шифрованием',
'cloudSync.gate.desc':
'Ваши данные шифруются локально перед синхронизацией. Облачные провайдеры никогда не видят ваши данные в открытом виде. Задайте мастер-ключ, чтобы включить безопасную синхронизацию.',
'cloudSync.gate.masterKey': 'Мастер-ключ',
'cloudSync.gate.confirmMasterKey': 'Подтвердите мастер-ключ',
'cloudSync.gate.placeholder': 'Введите надёжный пароль',
'cloudSync.gate.confirmPlaceholder': 'Подтвердите пароль',
'cloudSync.gate.mismatch': 'Пароли не совпадают',
'cloudSync.gate.warning':
'Я понимаю, что если забуду мастер-ключ, мои данные нельзя будет восстановить. Сброс пароля невозможен.',
'cloudSync.gate.enableVault': 'Включить зашифрованное хранилище',
'cloudSync.gate.enabledToast': 'Зашифрованное хранилище включено',
'cloudSync.gate.setupFailed': 'Не удалось настроить мастер-ключ',
'cloudSync.passwordStrength.tooShort': 'Слишком короткий',
'cloudSync.passwordStrength.weak': 'Слабый',
'cloudSync.passwordStrength.moderate': 'Средний',
'cloudSync.passwordStrength.strong': 'Сильный',
'cloudSync.passwordStrength.veryStrong': 'Очень сильный',
'cloudSync.provider.notConnected': 'Не подключено',
'cloudSync.provider.sync': 'Синхронизация',
'cloudSync.provider.connect': 'Подключить',
'cloudSync.provider.connecting': 'Подключение...',
'cloudSync.provider.disconnect': 'Отключить',
'cloudSync.provider.disconnect.confirmTitle': 'Отключить "{name}"?',
'cloudSync.provider.disconnect.confirmMessage': 'Это устройство перестанет синхронизироваться с {name}. Локальное хранилище останется на этом компьютере.',
'cloudSync.provider.disconnect.confirmAction': 'Отключить',
'cloudSync.provider.webdav': 'WebDAV',
'cloudSync.provider.webdav.desc': 'Подключение к самостоятельно размещённому WebDAV endpoint',
'cloudSync.provider.s3': 'Совместимое с S3',
'cloudSync.provider.s3.desc': 'Подключение к объектному хранилищу, совместимому с S3',
'cloudSync.provider.comingSoon': 'Скоро',
'cloudSync.webdav.title': 'Настройки WebDAV',
'cloudSync.webdav.desc': 'Настройка WebDAV endpoint для зашифрованной синхронизации.',
'cloudSync.webdav.endpoint': 'Конечная точка URL',
'cloudSync.webdav.authType': 'Тип аутентификации',
'cloudSync.webdav.auth.basic': 'Базовая',
'cloudSync.webdav.auth.digest': 'Дайджест',
'cloudSync.webdav.auth.token': 'Токен',
'cloudSync.webdav.username': 'Имя пользователя',
'cloudSync.webdav.password': 'Пароль',
'cloudSync.webdav.token': 'Токен',
'cloudSync.webdav.showSecret': 'Показать секрет',
'cloudSync.webdav.allowInsecure': 'Разрешить небезопасное соединение (игнорировать ошибки сертификата)',
'cloudSync.webdav.validation.endpoint': 'Введите корректный WebDAV endpoint.',
'cloudSync.webdav.validation.credentials': 'Имя пользователя и пароль обязательны.',
'cloudSync.webdav.validation.token': 'Токен обязателен.',
'cloudSync.s3.title': 'Настройки S3',
'cloudSync.s3.desc': 'Подключение к объектному хранилищу, совместимому с S3, для зашифрованной синхронизации.',
'cloudSync.s3.endpoint': 'Конечная точка URL',
'cloudSync.s3.region': 'Регион',
'cloudSync.s3.bucket': 'Бакет',
'cloudSync.s3.accessKeyId': 'ID ключа доступа',
'cloudSync.s3.secretAccessKey': 'Секретный ключ доступа',
'cloudSync.s3.sessionToken': 'Токен сессии (необязательно)',
'cloudSync.s3.prefix': 'Префикс ключа (необязательно)',
'cloudSync.s3.forcePathStyle': 'Принудительно использовать path-style URL (для MinIO/R2 и т. д.)',
'cloudSync.s3.allowInsecure': 'Разрешить небезопасное соединение (игнорировать ошибки сертификата)',
'cloudSync.s3.showSecret': 'Показать секреты',
'cloudSync.s3.validation.required': 'Endpoint, регион, бакет, access key и secret обязательны.',
'cloudSync.smb.title': 'Настройки SMB',
'cloudSync.smb.desc': 'Подключение к файловой SMB/CIFS-шаре для зашифрованной синхронизации.',
'cloudSync.smb.share': 'Путь к шаре',
'cloudSync.smb.username': 'Имя пользователя',
'cloudSync.smb.password': 'Пароль',
'cloudSync.smb.domain': 'Домен (необязательно)',
'cloudSync.smb.domainPlaceholder': 'например, WORKGROUP',
'cloudSync.smb.port': 'Порт (необязательно)',
'cloudSync.smb.showSecret': 'Показать пароль',
'cloudSync.smb.validation.share': 'Путь к шаре обязателен.',
'cloudSync.smb.validation.port': 'Порт должен быть числом от 1 до 65535.',
'cloudSync.connect.smb.success': 'SMB успешно подключён',
'cloudSync.connect.smb.failedTitle': 'Ошибка подключения SMB',
'cloudSync.provider.smb': 'SMB-шара',
'cloudSync.connect.webdav.success': 'WebDAV успешно подключён',
'cloudSync.connect.webdav.failedTitle': 'Ошибка подключения WebDAV',
'cloudSync.connect.s3.success': 'S3 успешно подключён',
'cloudSync.connect.s3.failedTitle': 'Ошибка подключения S3',
'cloudSync.connect.plugin.success': 'Провайдер синхронизации плагина подключен',
'cloudSync.connect.plugin.failedTitle': 'Ошибка подключения синхронизации плагина',
'cloudSync.pluginConfig.title': 'Настройка {name}',
'cloudSync.pluginConfig.desc': 'Введите JSON-конфигурацию, требуемую этим провайдером синхронизации.',
'cloudSync.pluginConfig.label': 'Конфигурация провайдера (JSON)',
'cloudSync.pluginConfig.invalidJson': 'Конфигурация должна быть допустимым JSON.',
'cloudSync.pluginConfig.schemaInvalid': 'Конфигурация не соответствует схеме провайдера.',
'cloudSync.lastSync.never': 'Никогда',
'cloudSync.lastSync.justNow': 'Только что',
'cloudSync.lastSync.minutesAgo': '{minutes} мин назад',
'cloudSync.changeKey': 'Изменить ключ',
'cloudSync.providers.title': 'Облачные провайдеры',
'cloudSync.syncAll': 'Синхронизировать всех подключённых провайдеров',
'cloudSync.autoSync.title': 'Автосинхронизация',
'cloudSync.autoSync.desc': 'Автоматически синхронизировать при внесении изменений',
'cloudSync.strategy.title': 'Стратегия синхронизации',
'cloudSync.strategy.desc': 'Выберите, что делать, когда изменились и локальные, и облачные данные.',
'cloudSync.strategy.smartMerge': 'Умное объединение (рекомендуется)',
'cloudSync.strategy.smartMergeDesc': 'По возможности объединять изменения с обеих сторон; если NetMesh не сможет безопасно выбрать, он попросит вас решить вручную.',
'cloudSync.strategy.preferCloud': 'Приоритет облака',
'cloudSync.strategy.preferCloudDesc': 'Когда изменились обе стороны, скачать облачную версию и заменить локальные изменения.',
'cloudSync.strategy.preferLocal': 'Приоритет локальных данных',
'cloudSync.strategy.preferLocalDesc': 'Когда изменились обе стороны, загрузить локальную версию и заменить облачные изменения.',
'cloudSync.convergent.title': 'Сходящаяся синхронизация устройств',
'cloudSync.convergent.experimental': 'Экспериментально',
'cloudSync.convergent.desc': 'Зашифрованная CRDT-реплика сохраняет офлайн-правки, параллельные удаления и изменения всех подключённых провайдеров.',
'cloudSync.convergent.active': 'CRDT v2 активна. Каждая загрузка проверяется чтением из облака.',
'cloudSync.convergent.paused': 'CRDT v2 приостановлена на этом устройстве; облачные метаданные сохранены.',
'cloudSync.convergent.enabled': 'Сходящаяся синхронизация включена',
'cloudSync.convergent.preview.title': 'Предпросмотр миграции',
'cloudSync.convergent.preview.entities': 'Объекты',
'cloudSync.convergent.preview.providers': 'Провайдеры',
'cloudSync.convergent.preview.conflicts': 'Конфликты',
'cloudSync.convergent.preview.compatibility': 'Каждая зашифрованная нагрузка сохраняет полный снимок v1 для старых клиентов.',
'cloudSync.convergent.preview.confirm': 'Создать CRDT-реплику',
'cloudSync.convergent.preview.status.ready': 'Готово',
'cloudSync.convergent.preview.status.empty': 'Пусто',
'cloudSync.convergent.preview.status.unavailable': 'Недоступно',
'cloudSync.convergent.preview.status.blocked': 'Заблокировано',
'cloudSync.convergent.preview.schema': 'схема',
'cloudSync.convergent.field.presence': 'наличие',
'cloudSync.convergent.field.position': 'позиция',
'cloudSync.convergent.conflicts.title': 'Конфликты полей ({count})',
'cloudSync.convergent.conflict.empty': 'Пусто / удалено',
'cloudSync.convergent.conflict.secretSet': 'Секрет задан',
'cloudSync.convergent.conflict.current': 'текущий вариант',
'cloudSync.convergent.conflict.choose': 'Выбрать',
'cloudSync.convergent.conflict.resolved': 'Конфликт разрешён и синхронизирован',
'cloudSync.convergent.downgrade.desc': 'Заменить файлы v2 у всех подключённых провайдеров снимком старого формата.',
'cloudSync.convergent.downgrade.button': 'Понизить версию',
'cloudSync.convergent.downgrade.confirm': 'Понизить формат у всех подключённых провайдеров? Метаданные CRDT будут удалены после проверки записи.',
'cloudSync.convergent.downgrade.done': 'Формат сходящейся синхронизации понижен',
'cloudSync.status.title': 'Статус синхронизации',
'cloudSync.status.localVersion': 'Локальная версия',
'cloudSync.status.remoteVersion': 'Удалённая версия',
'cloudSync.history.title': 'История синхронизации',
'cloudSync.history.upload': 'Загрузка',
'cloudSync.history.download': 'Скачивание',
'cloudSync.history.resolved': 'Разрешено',
'cloudSync.history.error': 'Ошибка',
'cloudSync.localBackups.title': 'История локальных резервных копий',
'cloudSync.localBackups.desc': 'NetMesh сохраняет локальные точки восстановления перед сменой версии приложения и перед восстановлением хранилища.',
'cloudSync.localBackups.retentionTitle': 'Хранение резервных копий',
'cloudSync.localBackups.retentionDesc': 'Выберите, сколько локальных резервных копий должен хранить NetMesh.',
'cloudSync.localBackups.maxCount': 'Макс. число копий',
'cloudSync.localBackups.maxSaved': 'Хранение резервных копий: {count}',
'cloudSync.localBackups.maxInvalid': 'Введите число от 1 до 100.',
'cloudSync.localBackups.empty': 'Локальных резервных копий пока нет.',
'cloudSync.localBackups.reason.appVersionChange': 'Перед сменой версии приложения',
'cloudSync.localBackups.reason.beforeRestore': 'Перед восстановлением',
'cloudSync.localBackups.versionChange': '{from} -> {to}',
'cloudSync.localBackups.counts': '{hosts} хостов, {keys} ключей, {snippets} сниппетов, {notes} заметок',
'cloudSync.localBackups.restore': 'Восстановить',
'cloudSync.localBackups.restoreSuccess': 'Локальная резервная копия восстановлена.',
'cloudSync.localBackups.restoreFailedTitle': 'Ошибка восстановления',
'cloudSync.localBackups.restoreMissing': 'Резервная копия не найдена.',
'cloudSync.localBackups.protectiveBackupFailed': 'Не удалось создать защитную резервную копию, поэтому восстановление было прервано для защиты ваших текущих данных. Устраните основную проблему (например, доступ к keychain) и попробуйте снова. Подробности: {message}',
'cloudSync.localBackups.restoreConfirmTitle': 'Восстановить эту резервную копию?',
'cloudSync.localBackups.restoreConfirmDesc': 'Ваши текущие хосты, ключи, сниппеты и настройки будут заменены содержимым этой резервной копии. Перед этим автоматически создаётся защитный снимок текущих данных.',
'cloudSync.localBackups.restoreConfirmButton': 'Восстановить',
'cloudSync.localBackups.restoreConfirmCancel': 'Отмена',
'cloudSync.localBackups.unavailableTitle': 'Локальные резервные копии недоступны',
'cloudSync.localBackups.unavailableDesc': 'Эта платформа не предоставляет NetMesh безопасное хранилище ключей, поэтому локальные резервные копии нельзя записывать безопасно. Установите NetMesh в систему с поддерживаемым keychain, чтобы включить историю локальных резервных копий.',
'cloudSync.localBackups.lockedTitle': 'Требуется мастер-ключ',
'cloudSync.localBackups.lockedDesc': 'Настройте или разблокируйте мастер-ключ перед восстановлением резервной копии, чтобы восстановленные учётные данные оставались зашифрованными.',
'cloudSync.revisionHistory.viewButton': 'История',
'cloudSync.revisionHistory.title': 'История версий хранилища',
'cloudSync.revisionHistory.description': 'Просматривайте и восстанавливайте предыдущие версии вашего хранилища из истории ревизий Gist.',
'cloudSync.revisionHistory.empty': 'Ревизии не найдены.',
'cloudSync.revisionHistory.current': 'Текущая',
'cloudSync.revisionHistory.revision': 'Ревизия',
'cloudSync.revisionHistory.revisionPreview': 'Содержимое ревизии',
'cloudSync.revisionHistory.device': 'Устройство',
'cloudSync.revisionHistory.hosts': 'Хосты',
'cloudSync.revisionHistory.keys': 'Ключи',
'cloudSync.revisionHistory.snippets': 'Сниппеты',
'cloudSync.revisionHistory.notes': 'Заметки',
'cloudSync.revisionHistory.identities': 'Идентификаторы',
'cloudSync.revisionHistory.restoreButton': 'Восстановить эту версию',
'cloudSync.revisionHistory.restored': 'Хранилище восстановлено из выбранной ревизии.',
'cloudSync.revisionHistory.revisionNotFound': 'Ревизия не найдена или не содержит данных хранилища.',
'cloudSync.revisionHistory.decryptFailed': 'Не удалось расшифровать эту ревизию. Возможно, она была зашифрована другим мастер-паролем.',
'cloudSync.changeKey.title': 'Изменить мастер-ключ',
'cloudSync.changeKey.current': 'Текущий мастер-ключ',
'cloudSync.changeKey.new': 'Новый мастер-ключ',
'cloudSync.changeKey.confirmNew': 'Подтвердите новый мастер-ключ',
'cloudSync.changeKey.currentPlaceholder': 'Введите текущий мастер-ключ',
'cloudSync.changeKey.newPlaceholder': 'Введите новый мастер-ключ',
'cloudSync.changeKey.confirmPlaceholder': 'Подтвердите новый мастер-ключ',
'cloudSync.changeKey.fillAll': 'Пожалуйста, заполните все поля',
'cloudSync.changeKey.minLength': 'Новый мастер-ключ должен содержать не менее 8 символов',
'cloudSync.changeKey.notMatch': 'Новые мастер-ключи не совпадают',
'cloudSync.changeKey.incorrectCurrent': 'Неверный текущий мастер-ключ',
'cloudSync.changeKey.failed': 'Не удалось изменить мастер-ключ',
'cloudSync.changeKey.desc': 'Это заново зашифрует ваше хранилище. Убедитесь, что вы помните новый ключ.',
'cloudSync.changeKey.showKeys': 'Показать ключи',
'cloudSync.changeKey.updatedToast': 'Мастер-ключ обновлён',
'cloudSync.changeKey.updateButton': 'Обновить ключ',
'cloudSync.unlock.title': 'Введите мастер-ключ',
'cloudSync.unlock.masterKey': 'Мастер-ключ',
'cloudSync.unlock.desc':
'Введите мастер-ключ один раз, чтобы включить зашифрованную синхронизацию. Он будет безопасно сохранён в системном keychain.',
'cloudSync.unlock.placeholder': 'Введите мастер-ключ',
'cloudSync.unlock.empty': 'Пожалуйста, введите мастер-ключ',
'cloudSync.unlock.incorrect': 'Неверный мастер-ключ',
'cloudSync.unlock.failed': 'Не удалось разблокировать хранилище',
'cloudSync.unlock.showKey': 'Показать ключ',
'cloudSync.unlock.notNow': 'Не сейчас',
'cloudSync.unlock.readyToast': 'Хранилище готово',
'cloudSync.unlock.unlockButton': 'Разблокировать',
'cloudSync.header.vaultReady': 'Хранилище готово',
'cloudSync.header.preparingVault': 'Подготовка хранилища...',
'cloudSync.header.providersConnected': 'Подключено провайдеров: {count}',
'cloudSync.githubFlow.title': 'Подключить GitHub',
'cloudSync.githubFlow.desc': 'Скопируйте код ниже и введите его на GitHub, чтобы авторизовать NetMesh.',
'cloudSync.githubFlow.copyCode': 'Скопировать код',
'cloudSync.githubFlow.copied': 'Скопировано!',
'cloudSync.githubFlow.openGitHub': 'Открыть GitHub',
'cloudSync.githubFlow.waiting': 'Ожидание авторизации...',
'cloudSync.conflict.title': 'Обнаружен конфликт версий',
'cloudSync.conflict.desc': 'Выберите, какую версию сохранить',
'cloudSync.conflict.local': 'ЛОКАЛЬНАЯ',
'cloudSync.conflict.cloud': 'ОБЛАЧНАЯ',
'cloudSync.conflict.detailsTitle': 'Изменённые данные',
'cloudSync.conflict.detailsCounts': 'Локально {local} · Облако {cloud} · Конфликты {conflicts}',
'cloudSync.conflict.entity.hosts': 'Хосты',
'cloudSync.conflict.entity.keys': 'Ключи',
'cloudSync.conflict.entity.identities': 'Идентификаторы',
'cloudSync.conflict.entity.proxyProfiles': 'Профили прокси',
'cloudSync.conflict.entity.snippets': 'Сниппеты',
'cloudSync.conflict.entity.notes': 'Заметки',
'cloudSync.conflict.entity.noteGroups': 'Группы заметок',
'cloudSync.conflict.entity.customGroups': 'Группы',
'cloudSync.conflict.entity.snippetPackages': 'Пакеты сниппетов',
'cloudSync.conflict.entity.portForwardingRules': 'Проброс портов',
'cloudSync.conflict.entity.groupConfigs': 'Настройки групп',
'cloudSync.conflict.entity.settings': 'Настройки',
'cloudSync.conflict.keepLocal': 'Перезаписать облако (сохранить локальную)',
'cloudSync.conflict.useCloud': 'Скачать из облака (перезаписать локальную)',
'cloudSync.connect.browserContinue': 'Завершите авторизацию в браузере',
'cloudSync.connect.browserCancelled': 'Предыдущая авторизация в браузере была отменена',
'cloudSync.connect.github.success': 'GitHub успешно подключён',
'cloudSync.connect.github.failedTitle': 'Ошибка подключения GitHub',
'cloudSync.connect.github.timeout': 'Время подключения к GitHub истекло. Проверьте сеть или настройки прокси.',
'cloudSync.connect.github.networkError': 'Не удалось связаться с GitHub. Проверьте сеть или настройки прокси.',
'cloudSync.connect.google.failedTitle': 'Ошибка подключения Google',
'cloudSync.connect.onedrive.failedTitle': 'Ошибка подключения OneDrive',
'cloudSync.sync.success': 'Синхронизировано с {provider}',
'cloudSync.sync.failed': 'Синхронизация не удалась',
'cloudSync.sync.failedTitle': 'Синхронизация не удалась',
'cloudSync.sync.errorTitle': 'Ошибка синхронизации',
'cloudSync.resolve.downloaded': 'Скачаны данные из облака',
'cloudSync.resolve.uploaded': 'Загружены локальные данные',
'cloudSync.resolve.failedTitle': 'Не удалось разрешить конфликт',
'cloudSync.clearLocal.title': 'Очистить локальные данные',
'cloudSync.clearLocal.desc': 'Сбросить локальную версию и историю синхронизации. При следующей синхронизации данные будут скачаны из облака.',
'cloudSync.clearLocal.button': 'Очистить',
'cloudSync.clearLocal.dialog.title': 'Очистить локальные данные хранилища?',
'cloudSync.clearLocal.dialog.desc': 'Локальная версия будет сброшена до 0, а история синхронизации очищена. При следующей синхронизации данные будут скачаны из облака и заменят локальные.',
'cloudSync.clearLocal.dialog.cancel': 'Отмена',
'cloudSync.clearLocal.dialog.confirm': 'Очистить локальные данные',
'cloudSync.clearLocal.toast.title': 'Локальные данные очищены',
'cloudSync.clearLocal.toast.desc': 'Локальная версия сброшена до 0. Выполните синхронизацию для загрузки из облака.',
// Keychain
'keychain.filter.key': 'Ключ',
'keychain.filter.certificate': 'Сертификат',
'keychain.action.generateKey': 'Создать ключ',
'keychain.action.importKey': 'Импорт. ключ',
'keychain.action.newIdentity': 'Новый ид-катор',
'keychain.action.importCertificate': 'Импорт. сертификат',
'keychain.view.grid': 'Сетка',
'keychain.view.list': 'Список',
'keychain.section.keys': 'Ключи',
'keychain.section.identities': 'Идентификаторы',
'keychain.count.items': '{count} запис(ей)',
'keychain.empty.title': 'Настройте свои ключи',
'keychain.empty.desc': 'Импортируйте или создайте SSH-ключи для безопасной аутентификации.',
'keychain.panel.generateKey': 'Сгенерировать ключ',
'keychain.panel.newKey': 'Новый ключ',
'keychain.panel.keyDetails': 'Сведения о ключе',
'keychain.panel.editKey': 'Редактировать ключ',
'keychain.panel.editIdentity': 'Редактировать идентификатор',
'keychain.panel.newIdentity': 'Новый идентификатор',
'keychain.panel.keyExport': 'Экспорт ключа',
'keychain.validation.labelRequired': 'Пожалуйста, введите метку для ключа',
'keychain.validation.labelAndPrivateKeyRequired': 'Метка и приватный ключ обязательны',
'keychain.validation.labelAndUsernameRequired': 'Метка и имя пользователя обязательны',
'keychain.error.generationUnavailable': 'Генератор ключей не работает - пожалуйста, убедитесь, что приложение работает в Electron',
'keychain.error.generateKeyPairFailed': 'Не удалось сгенерировать пару ключей',
'keychain.error.generateKeyFailed': 'Не удалось сгенерировать ключ',
'keychain.error.keyGenerationTitle': 'Генерация ключа',
'keychain.export.exportTo': 'Экспортировать в *',
'keychain.export.selectHost': 'Выберите хост',
'keychain.export.location': 'Расположение ~ $1 *',
'keychain.export.filename': 'Имя файла ~ $2 *',
'keychain.export.note': 'Экспорт ключей сейчас поддерживается только в системах {unix}. Используйте раздел {advanced} для настройки скрипта экспорта.',
'keychain.export.script': 'Скрипт *',
'keychain.export.scriptPlaceholder': 'Скрипт экспорта...',
'keychain.export.missingCredentials': 'У хоста нет сохранённого пароля или ключа. Сначала добавьте в хост учётные данные с паролем.',
'keychain.export.successTitle': 'Экспорт выполнен успешно',
'keychain.export.successMessage': 'Публичный ключ экспортирован и привязан к {host}',
'keychain.export.failedTitle': 'Ошибка экспорта',
'keychain.export.failedMessage': 'Не удалось экспортировать ключ: {error}',
'keychain.export.failedPrefix': 'Ошибка экспорта: {error}',
'keychain.export.exitCode': 'Команда завершилась с кодом {code}',
'keychain.export.exporting': 'Экспорт...',
'keychain.export.exportAndAttach': 'Экспортировать и привязать',
'keychain.export.title': 'Экспорт ключа',
'keychain.export.exportToRequired': 'Экспортировать в *',
'keychain.export.selectHostPlaceholder': 'Выберите хост...',
'keychain.export.locationLabel': 'Расположение ~ $1 *',
'keychain.export.filenameLabel': 'Имя файла ~ $2 *',
'keychain.export.advanced': 'Дополнительно',
'keychain.export.note.supportsOnly': 'Экспорт ключей сейчас поддерживается только в',
'keychain.export.note.systems': 'системах.',
'keychain.export.note.use': 'Используйте',
'keychain.export.note.customize': 'раздел для настройки скрипта экспорта.',
'keychain.export.scriptRequired': 'Скрипт *',
'keychain.export.exportToHost': 'Экспортировать на хост',
'keychain.export.failedGeneric': 'Ошибка экспорта: {message}',
'keychain.field.label': 'Метка',
'keychain.field.labelRequired': 'Метка *',
'keychain.field.labelPlaceholder': 'Метка ключа',
'keychain.field.privateKeyRequired': 'Приватный ключ *',
'keychain.field.publicKey': 'Публичный ключ',
'keychain.field.certificatePlaceholder': 'Содержимое сертификата (необязательно)',
'keychain.generate.keyType': 'Тип ключа',
'keychain.generate.keySize': 'Размер ключа',
'keychain.generate.labelPlaceholder': 'Метка ключа',
'keychain.generate.passphrasePlaceholder': 'Парольная фраза (необязательно)',
'keychain.generate.savePassphrase': 'Сохранить парольную фразу',
'keychain.generate.generate': 'Сгенерировать',
'keychain.generate.generateSave': 'Сгенерировать и сохранить',
'keychain.import.dropHint': 'Перетащите сюда файл ключа',
'keychain.import.importFromFile': 'Импортировать из файла',
'keychain.import.saveKey': 'Сохранить ключ',
'keychain.import.importedKeyLabel': 'Импортированный ключ',
'keychain.identity.usernameRequired': 'Имя пользователя *',
'keychain.identity.method.passwordOnly': 'Пароль',
'keychain.identity.summary.password': 'Пароль аутентификации',
'keychain.identity.summary.key': 'Ключ аутентификации',
'keychain.identity.summary.certificate': 'Сертификат аутентификации',
'keychain.identity.summary.passwordAndKey': 'Пароль и ключ аутентификации',
'keychain.identity.summary.passwordAndCertificate': 'Пароль и сертификат аутентификации',
'keychain.identity.summary.none': 'Нет учётных данных',
'keychain.identity.selectCredential': 'Выберите {kind}',
'keychain.identity.save': 'Сохранить',
'keychain.identity.update': 'Обновить',
'keychain.keyDialog.newTitle': 'Новый ключ',
'keychain.keyDialog.newDesc': 'Добавить новый SSH-ключ',
'keychain.keyDialog.editTitle': 'Редактировать ключ',
'keychain.keyDialog.editDesc': 'Обновить этот SSH-ключ',
'keychain.keyDialog.updateKey': 'Обновить ключ',
// Tabs
'tabs.closeSessionAria': 'Закрыть сессию',
'tabs.closeLogViewAria': 'Закрыть просмотр журнала',
'tabs.closePluginViewAria': 'Закрыть {title}',
'tabs.logPrefix': 'Журнал:',
'tabs.logLocal': 'Локальный',
'tabs.copyTab': 'Копировать вкладку',
'tabs.duplicateSession': 'Дублировать сессию',
'tabs.copyTabToNewWindow': 'Копировать вкладку в новое окно',
'tabs.copyTabToNewWindowFailed': 'Не удалось открыть вкладку в новом окне',
'tabs.closeOthers': 'Закрыть остальные',
'tabs.closeToRight': 'Закрыть вкладки справа',
'tabs.closeAll': 'Закрыть все',
'keychain.edit.labelRequired': 'Метка *',
'keychain.edit.keyLabelPlaceholder': 'Метка ключа',
'keychain.edit.privateKeyRequired': 'Приватный ключ *',
'keychain.edit.publicKey': 'Публичный ключ',
'keychain.edit.certificate': 'Сертификат',
'keychain.edit.certificatePlaceholder': 'Содержимое сертификата (необязательно)',
'keychain.edit.filePath': 'Путь к файлу',
'keychain.edit.keyExport': 'Экспорт ключа',
'keychain.edit.exportToHost': 'Экспортировать на хост',
// Snippets
'snippets.searchPlaceholder': 'Поиск сниппетов...',
'snippets.action.newSnippet': 'Новый сниппет',
'snippets.action.newPackage': 'Новый пакет',
'snippets.action.import': 'Импорт',
'snippets.action.selectSnippets': 'Выбрать сниппеты',
'snippets.panel.newTitle': 'Новый сниппет',
'snippets.panel.editTitle': 'Редактировать сниппет',
'snippets.panel.resizeWidth': 'Изменить ширину панели',
'snippets.field.description': 'Описание действия',
'snippets.field.descriptionPlaceholder': 'Например: проверить сетевую нагрузку',
'snippets.field.package': 'Добавить пакет',
'snippets.field.packagePlaceholder': 'Выберите или создайте пакет',
'snippets.field.createPackage': 'Создать пакет',
'snippets.field.scriptRequired': 'Скрипт *',
'snippets.scriptEditor.expand': 'Открыть в окне',
'snippets.scriptEditor.resize': 'Изменить высоту редактора',
'snippets.scriptEditor.modalTitle': 'Редактировать скрипт',
'snippets.variables.dialogTitle': 'Переменные сниппета',
'snippets.variables.dialogDesc': 'Заполните значения для "{label}" перед запуском.',
'snippets.variables.hint': 'Значения вставляются в скрипт как есть (без shell-экранирования).',
'snippets.variables.preview': 'Предпросмотр',
'snippets.variables.placeholder': 'Введите значение',
'snippets.variables.placeholderDefault': 'По умолчанию: {value}',
'snippets.variables.required': 'Эта переменная обязательна',
'snippets.variables.run': 'Запустить',
'snippets.field.variablesHelp': 'Используйте {{name}} или {{name:default}} для плейсхолдеров в скрипте.',
'snippets.field.variablesDetected': 'Переменные',
'snippets.field.variableDefault': 'по умолчанию {value}',
'snippets.targets.title': 'Цели',
'snippets.targets.add': 'Добавить цели',
'snippets.targets.selectHosts': 'Хосты',
'snippets.targets.selectGroups': 'Группы',
'snippets.targets.noGroups': 'Группы не найдены',
'snippets.history.title': 'История оболочки',
'snippets.history.subtitle': '{count} команд',
'snippets.history.emptyTitle': 'История оболочки пока пуста',
'snippets.history.emptyDesc': 'Здесь будут появляться выполненные вами команды',
'snippets.history.loadMore': 'Загрузить ещё',
'snippets.history.separator': '•',
'snippets.history.labelPlaceholder': 'Задайте метку для этого сниппета',
'snippets.history.saveAsSnippet': 'Сохранить как сниппет',
'snippets.history.time.justNow': 'только что',
'snippets.history.time.minutesAgo': '{count}м назад',
'snippets.history.time.hoursAgo': '{count}ч назад',
'snippets.history.time.daysAgo': '{count}д назад',
'snippets.breadcrumb.allPackages': 'Все пакеты',
'snippets.breadcrumb.separator': '',
'snippets.empty.title': 'Создать сниппет',
'snippets.empty.desc': 'Сохраняйте самые используемые команды как сниппеты, чтобы повторно использовать их в один клик.',
'snippets.search.noResults.title': 'Нет совпадений',
'snippets.search.noResults.desc': 'Ни один сниппет или пакет не соответствует запросу "{query}". Попробуйте другой поисковый запрос или очистите поиск для просмотра.',
'snippets.section.packages': 'Пакеты',
'snippets.section.snippets': 'Сниппеты',
'snippets.package.count': '{count} сниппет(ов)',
'snippets.commandFallback': 'Команда',
'snippets.view.grid': 'Сетка',
'snippets.view.list': 'Список',
'snippets.selection.selected': 'Выбрано: {count}',
'snippets.selection.selectVisible': 'Выбрать видимые',
'snippets.selection.deselectAll': 'Снять выбор',
'snippets.selection.exportSelected': 'Экспорт выбранных ({count})',
'snippets.selection.deleteSelected': 'Удалить ({count})',
'snippets.selection.deleteConfirmTitle': 'Удалить выбранные элементы ({count})?',
'snippets.selection.deleteConfirmDesc': 'Выбранные элементы будут удалены без возможности восстановления.',
'snippets.selection.deleteSuccess': 'Удалено выбранных элементов: {count}.',
'snippets.export.snippet': 'Экспорт сниппета',
'snippets.export.package': 'Экспорт пакета',
'snippets.export.toast.empty': 'Нет сниппетов для экспорта.',
'snippets.export.toast.successTitle': 'Экспорт готов',
'snippets.export.toast.success': 'Экспортировано сниппетов: {count}.',
'snippets.import.toast.empty': 'Не найдено сниппетов для импорта.',
'snippets.import.toast.failedTitle': 'Импорт не удался',
'snippets.import.toast.invalidDesc': 'Это невалидный файл сниппетов NetMesh.',
'snippets.import.toast.successTitle': 'Импорт завершён',
'snippets.import.toast.summary': 'Импортировано: {imported}, перезаписано: {overwritten}, пропущено: {skipped}.',
'snippets.import.modal.title': 'Импорт сниппетов',
'snippets.import.modal.desc': 'Выберите один или несколько JSON-файлов сниппетов NetMesh. NetMesh сначала покажет результат разбора и ничего не импортирует без подтверждения.',
'snippets.import.modal.exampleTitle': 'Пример JSON',
'snippets.import.modal.noFile': 'Файл ещё не выбран. Используйте пример ниже или обычный JSON-массив сниппетов, затем выберите один или несколько файлов.',
'snippets.import.modal.chooseFile': 'Выбрать файл',
'snippets.import.modal.downloadExamples': 'Скачать примеры',
'snippets.import.modal.multipleFiles': 'Выбрано файлов: {count}',
'snippets.import.modal.parsedSummary': '{files} файл(ов), {total} сниппет(ов), {packages} пакет(ов), повторяющихся команд: {conflicts}. Привязки к хостам игнорируются.',
'snippets.import.modal.confirm': 'Подтвердить импорт',
'snippets.import.conflict.title': 'Импортировать сниппеты?',
'snippets.import.conflict.desc': 'Файл «{file}» содержит {total} сниппет(ов), из них повторяющихся команд: {conflicts}.',
'snippets.import.conflict.hostBindingsNote': 'Привязки сниппетов к хостам не импортируются и не экспортируются.',
'snippets.import.conflict.skip': 'Пропустить повторы',
'snippets.import.conflict.overwrite': 'Перезаписать повторы',
'snippets.packageDialog.title': 'Новый пакет',
'snippets.packageDialog.parent': 'Родитель: {parent}',
'snippets.packageDialog.root': 'Корень',
'snippets.packageDialog.placeholder': 'например, ops/maintenance',
'snippets.packageDialog.hint': 'Используйте "/" для создания вложенных пакетов.',
// Snippets Rename Dialog
'snippets.renameDialog.title': 'Переименовать пакет',
'snippets.renameDialog.currentPath': 'Текущий путь: {path}',
'snippets.renameDialog.placeholder': 'Введите новое имя',
'snippets.renameDialog.error.empty': 'Имя пакета не может быть пустым',
'snippets.renameDialog.error.duplicate': 'Пакет с таким именем уже существует',
'snippets.renameDialog.error.invalidChars': 'Имя пакета может содержать только буквы, цифры, дефисы и подчёркивания',
'snippets.field.noAutoRun': 'Только вставить (не выполнять автоматически)',
'snippets.field.multiLineRunMode': 'Многострочный запуск',
'snippets.field.multiLineRunMode.paste': 'Отправить сразу',
'snippets.field.multiLineRunMode.lineDelay': 'Отправлять построчно',
'snippets.field.multiLineRunModeHint': 'Построчный режим подходит для логинов с подсказками и макросов устройств.',
// Snippet Shortkey
'snippets.field.shortkey': 'Сочетание клавиш',
'snippets.shortkey.placeholder': 'Нажмите, чтобы задать сочетание',
'snippets.shortkey.recording': 'Нажмите сочетание клавиш...',
'snippets.shortkey.hint': 'Нажмите это сочетание в терминале, чтобы быстро отправить команду.',
'snippets.shortkey.clear': 'Очистить сочетание',
'snippets.shortkey.error.systemConflict': 'Это сочетание конфликтует с «{name}»',
'snippets.shortkey.error.snippetConflict': 'Это сочетание уже используется сниппетом: {name}',
// Serial Port
'serial.button': 'Серийный',
'serial.modal.title': 'Подключение к последовательному порту',
'serial.modal.desc': 'Настройте параметры подключения к последовательному порту',
'serial.field.port': 'Последовательный порт',
'serial.field.selectPort': 'Выберите порт...',
'serial.field.baudRate': 'Скорость передачи',
'serial.field.dataBits': 'Биты данных',
'serial.field.stopBits': 'Стоп-биты',
'serial.field.stopBits15Warning': 'Стоп-биты 1,5 могут поддерживаться не всеми устройствами Windows',
'serial.field.parity': 'Чётность',
'serial.field.flowControl': 'Управление потоком',
'serial.noPorts': 'Последовательные порты не обнаружены. Подключите устройство и обновите список.',
'serial.field.customPort': 'Путь к пользовательскому порту',
'serial.field.customPortPlaceholder': 'например, /dev/ttys001 или COM1',
'serial.type.hardware': 'Аппаратный',
'serial.type.pseudo': 'Псевдотерминал',
'serial.type.custom': 'Пользовательский',
'serial.parity.none': 'Нет',
'serial.parity.even': 'Чётная',
'serial.parity.odd': 'Нечётная',
'serial.parity.mark': 'Mark',
'serial.parity.space': 'Space',
'serial.flowControl.none': 'Нет',
'serial.flowControl.xon/xoff': 'XON/XOFF (программный)',
'serial.flowControl.rts/cts': 'RTS/CTS (аппаратный)',
'serial.field.localEcho': 'Принудительное локальное эхо',
'serial.field.localEchoDesc': 'Локально отображать вводимые символы (для устройств без удалённого эха)',
'serial.field.lineMode': 'Построчный режим',
'serial.field.lineModeDesc': 'Буферизовать ввод и отправлять по Enter (вместо посимвольной отправки)',
'serial.field.backspaceBehavior': 'Клавиша Backspace',
'serial.field.backspaceBehaviorDesc': 'Используйте Ctrl+H для сетевых устройств, которые не реагируют на код Backspace по умолчанию.',
'serial.backspace.default': 'По умолчанию (DEL, 0x7F)',
'serial.backspace.ctrlH': 'Ctrl+H (BS, 0x08)',
'serial.field.charset': 'Кодировка',
'serial.connectionError': 'Не удалось подключиться к последовательному порту',
'serial.field.baudRatePlaceholder': 'Выберите или введите скорость...',
'serial.field.baudRateEmpty': 'Введите пользовательскую скорость передачи',
'serial.field.customBaudRate': 'Используется пользовательская скорость передачи',
'serial.field.saveConfig': 'Сохранить конфигурацию',
'serial.field.saveConfigDesc': 'Сохраните эту последовательную конфигурацию в хостах для быстрого доступа',
'serial.field.configLabel': 'Имя конфигурации',
'serial.field.configLabelPlaceholder': 'например, Arduino Uno',
'serial.connectAndSave': 'Подключить и сохранить',
'serial.edit.title': 'Настройки последовательного порта',
// Keyboard Interactive Authentication (2FA/MFA)
'keyboard.interactive.title': 'Требуется аутентификация',
'keyboard.interactive.desc': 'Сервер требует дополнительную аутентификацию.',
'keyboard.interactive.descWithHost': 'Сервер {hostname} требует дополнительную аутентификацию.',
'keyboard.interactive.response': 'Ответ',
'keyboard.interactive.enterCode': 'Введите код подтверждения',
'keyboard.interactive.enterResponse': 'Введите ответ',
'keyboard.interactive.submit': 'Отправить',
'keyboard.interactive.verifying': 'Проверка...',
'keyboard.interactive.savePassword': 'Сохранить пароль',
// Passphrase Modal for encrypted SSH keys
'passphrase.title': 'Парольная фраза SSH-ключа',
'passphrase.desc': 'Введите парольную фразу для {keyName}',
'passphrase.descWithHost': 'Введите парольную фразу для {keyName}, чтобы подключиться к {hostname}',
'passphrase.label': 'Парольная фраза',
'passphrase.keyPath': 'Ключ',
'passphrase.unlock': 'Разблокировать',
'passphrase.unlocking': 'Разблокировка...',
'passphrase.skip': 'Пропустить',
'passphrase.remember': 'Запомнить эту парольную фразу',
// Text Editor
'sftp.editor.wordWrap': 'Перенос строк',
'sftp.editor.maximize': 'Развернуть',
'sftp.editor.unsavedTitle': 'Несохранённые изменения',
'sftp.editor.unsavedMessage': 'В файле {fileName} есть несохранённые изменения. Сохранить перед закрытием?',
'sftp.editor.discardChanges': 'Отбросить',
'sftp.editor.saveAndClose': 'Сохранить и закрыть',
'sftp.editor.quitBlockedByDirty': 'Есть несохранённые редакторы — перед выходом сохраните изменения или отбросьте их',
};