import type { Messages } from '../types';

export const ruVaultMessages: Messages = {
  // Vault hosts header/actions
  'vault.hosts.search.placeholder': 'Найти хост или ssh user@hostname / ssh -p 2222 user@hostname...',
  'vault.hosts.connect': 'Подключиться',
  'vault.view.grid': 'Сетка',
  'vault.view.list': 'Список',
  'vault.view.tree': 'Дерево',
  'vault.tree.expandAll': 'Развернуть все',
  'vault.tree.collapseAll': 'Свернуть все',
  'vault.hosts.newHost': 'Новый хост',
  'vault.hosts.newGroup': 'Новая группа',
  'vault.hosts.import': 'Импорт',
  'vault.hosts.export': 'Экспорт',
  'vault.hosts.export.toast.success': 'Экспортировано {count} хостов в CSV',
  'vault.hosts.export.toast.successWithSkipped': 'Экспортировано {count} хостов в CSV ({skipped} неподдерживаемых хостов пропущено)',
  'vault.hosts.export.toast.noHosts': 'Нет хостов для экспорта',
  'vault.hosts.allHosts': 'Все хосты',
  'vault.hosts.pinned': 'Закреплённые',
  'vault.hosts.recentlyConnected': 'Недавно подключённые',
  'vault.hosts.pinToTop': 'Закрепить сверху',
  'vault.hosts.unpin': 'Открепить',
  'vault.hosts.copyCredentials': 'Копировать учётные данные',
  'vault.hosts.copyCredentials.toast.success': 'Учётные данные скопированы в буфер обмена',
  'vault.hosts.copyCredentials.toast.noPassword': 'Для этого хоста нет сохранённого пароля',
  'vault.hosts.multiSelect': 'Множественный выбор',
  'vault.hosts.selected': 'Выбрано: {count}',
  'vault.hosts.selectAll': 'Выбрать все',
  'vault.hosts.deselectAll': 'Снять выделение',
  'vault.hosts.deleteSelected': 'Удалить ({count})',
  'vault.hosts.deleteMultiple.success': 'Удалено хостов: {count}',
  'vault.hosts.connectSelected': 'Подключить ({count})',
  'vault.hosts.connectMultiple.success': 'Подключение хостов: {count}',
  'vault.hosts.moveToGroup.success': 'Хост {host} перемещён в {group}',
  'vault.hosts.empty.title': 'Настройте свои хосты',
  'vault.hosts.empty.desc': 'Сохраняйте хосты, чтобы быстро подключаться к серверам, виртуальным машинам и контейнерам.',

  // Vault import
  'vault.import.title': 'Добавить данные в хранилище',
  'vault.import.desc':
    'Перенесите свои подключения из популярных клиентов. Выберите формат файла, чтобы начать миграцию.',
  'vault.import.chooseFormat': 'Выберите формат файла',
  'vault.import.csv.tip': 'Массовый импорт: используйте шаблон CSV.',
  'vault.import.csv.downloadTemplate': 'Скачать шаблон CSV',
  'vault.import.toast.start': 'Импорт из {format}...',
  'vault.import.toast.completedTitle': 'Импорт завершён',
  'vault.import.toast.failedTitle': 'Ошибка импорта',
  'vault.import.toast.noEntries': 'В {format} не найдено импортируемых записей.',
  'vault.import.toast.noNewHosts': 'Из {format} не импортировано новых хостов.',
  'vault.import.toast.summary':
    'Импортировано {count} хостов (пропущено {skipped}, дубликатов {duplicates}).',
  'vault.import.toast.firstIssue': 'Первая проблема: {issue}',
  'vault.import.sshConfig.chooseMode': 'Выберите, как импортировать ваш файл SSH-конфига.',
  'vault.import.sshConfig.modeQuestion': 'Как вы хотите выполнить импорт?',
  'vault.import.sshConfig.importOnly': 'Только импорт',
  'vault.import.sshConfig.importOnlyDesc': 'Одноразовый импорт. Изменения не будут синхронизироваться обратно в файл.',
  'vault.import.sshConfig.managed': 'Управляемая синхронизация',
  'vault.import.sshConfig.managedDesc': 'Поддерживать синхронизацию. Изменения будут сохраняться обратно в файл.',
  'vault.import.sshConfig.managedGroup': 'ssh config',
  'vault.import.sshConfig.managedSuccess': 'Импортировано {count} хостов. Файл теперь находится под управлением.',
  'vault.import.sshConfig.alreadyManaged': 'Этот файл уже находится под управлением.',
  'vault.import.sshConfig.alreadyManagedDesc': 'Этот файл уже управляется в группе "{group}". Если хотите импортировать его заново, сначала удалите существующий управляемый источник.',
  'vault.import.sshConfig.noFilePath': 'Невозможно управлять этим файлом.',
  'vault.import.sshConfig.noFilePathDesc': 'Не удалось определить путь к файлу. Для управляемой синхронизации нужен доступ к файловой системе.',

  // Known Hosts
  'knownHosts.search.placeholder': 'Поиск известных хостов...',
  'knownHosts.action.scanSystem': 'Сканировать систему',
  'knownHosts.action.importFile': 'Импортировать файл',
  'knownHosts.action.browseFile': 'Выбрать файл',
  'knownHosts.empty.title': 'Нет известных хостов',
  'knownHosts.empty.desc':
    'Известные хосты — это SSH-серверы, к которым вы подключались раньше. Импортируйте системный файл known_hosts, чтобы начать.',
  'knownHosts.results.showingLimited':
    'Показано {shown} из {total} хостов. Используйте поиск, чтобы найти нужные хосты.',
  'knownHosts.toast.scanUnavailable': 'Сканирование системы недоступно на этой платформе.',
  'knownHosts.toast.scanNoFile': 'Системный файл known_hosts не найден.',
  'knownHosts.toast.scanNoEntries': 'В known_hosts не найдено пригодных записей.',
  'knownHosts.toast.scanImported': 'Импортировано новых хостов: {count}.',
  'knownHosts.toast.scanNoNew': 'Новых хостов не найдено.',
  'knownHosts.toast.scanFailed': 'Не удалось просканировать системный known_hosts.',

  // Port Forwarding
  'pf.empty.title': 'Настройте проброс портов',
  'pf.empty.desc': 'Сохраняйте правила проброса портов для доступа к базам данных, веб-приложениям и другим сервисам.',
  'pf.title': 'Проброс портов',
  'pf.rulesCount': 'Правил: {count}',
  'pf.wizard.editTitle': 'Редактировать проброс портов',
  'pf.wizard.newTitle': 'Новый проброс портов',
  'pf.wizard.saveChanges': 'Сохранить изменения',
  'pf.wizard.done': 'Готово',
  'pf.wizard.continue': 'Продолжить',
  'pf.wizard.cancel': 'Отмена',
  'pf.wizard.skipWizard': 'Пропустить мастер',
  'pf.error.hostNotFound': 'Хост не найден',
  'pf.toast.titleWithLabel': 'Проброс портов: {label}',
  'pf.type.local': 'Локальный',
  'pf.type.remote': 'Удалённый',
  'pf.type.dynamic': 'Динамический',
  'pf.type.menu.local': 'Локальный проброс',
  'pf.type.menu.remote': 'Удалённый проброс',
  'pf.type.menu.dynamic': 'Динамический проброс',
  'pf.type.local.desc': 'Локальный проброс позволяет обращаться к прослушиваемому порту удалённого сервера так, как будто он локальный.',
  'pf.type.remote.desc': 'Удалённый проброс открывает порт на удалённой машине и перенаправляет подключения на локальный (текущий) хост.',
  'pf.type.dynamic.desc': 'Динамический проброс портов превращает Netcatty в SOCKS-прокси-сервер.',
  'pf.wizard.type.title': 'Выберите тип проброса портов:',
  'pf.wizard.localConfig.title': 'Укажите локальный порт и адрес привязки:',
  'pf.wizard.localConfig.desc': 'Этот порт будет открыт на локальном (текущем) устройстве и будет принимать трафик.',
  'pf.wizard.localConfig.localPort': 'Номер локального порта *',
  'pf.wizard.bindAddress': 'Адрес привязки',
  'pf.wizard.remoteHost.title': 'Выберите удалённый хост:',
  'pf.wizard.remoteHost.desc': 'Выберите хост, на котором будет открыт порт. Трафик с этого порта будет перенаправляться на конечный хост.',
  'pf.wizard.remoteConfig.title': 'Укажите порт и адрес привязки:',
  'pf.wizard.remoteConfig.desc': 'Трафик будет перенаправляться с указанного порта и адреса интерфейса выбранного хоста.',
  'pf.wizard.remoteConfig.remotePort': 'Номер удалённого порта *',
  'pf.wizard.destination.title': 'Выберите конечный хост:',
  'pf.wizard.destination.desc.local': 'Введите удалённый адрес назначения, к которому вы хотите получить доступ через туннель.',
  'pf.wizard.destination.desc.remote': 'Адрес назначения и порт, на которые будет перенаправляться трафик.',
  'pf.wizard.destination.address': 'Адрес назначения *',
  'pf.wizard.destination.addressPlaceholder': 'например, 127.0.0.1 или 192.168.1.100',
  'pf.wizard.destination.port': 'Номер порта назначения *',
  'pf.wizard.sshServer.title': 'Выберите SSH-сервер:',
  'pf.wizard.sshServer.desc.dynamic': 'Выберите SSH-сервер, который будет работать как SOCKS-прокси.',
  'pf.wizard.sshServer.desc.default': 'Выберите SSH-сервер, который будет туннелировать ваш трафик к адресу назначения.',
  'pf.wizard.label.title': 'Выберите метку:',
  'pf.wizard.label.placeholder.dynamic': 'например, SOCKS Proxy',
  'pf.wizard.label.placeholder.default': 'например, MySQL Production',
  'pf.wizard.label.placeholder.remoteRule': 'например, Remote Rule',
  'pf.wizard.placeholders.portExample': 'например, {port}',
  'pf.action.newForwarding': 'Новое правило',
  'pf.form.labelPlaceholder': 'Метка правила',
  'pf.form.intermediateHost': 'Промежуточный хост *',
  'pf.form.createRule': 'Создать правило',
  'pf.form.openWizard': 'Открыть мастер',
  'pf.form.openWizardTitle': 'Открыть мастер проброса портов',
  'pf.view.grid': 'Сетка',
  'pf.view.list': 'Список',
  'pf.rule.summary.dynamic': 'SOCKS на {bindAddress}:{localPort}',
  'pf.rule.summary.default': '{bindAddress}:{localPort} -> {remoteHost}:{remotePort}',
  'pf.tooltip.relayHost': 'Промежуточный хост',
  'pf.tooltip.hostLabel': 'Хост',
  'pf.tooltip.hostAddress': 'Адрес',
  'pf.tooltip.noHost': 'Промежуточный хост не настроен',
  'pf.tooltip.localDesc': 'Локальный проброс портов: доступ к удалённым сервисам через SSH-туннель',
  'pf.tooltip.remoteDesc': 'Удалённый проброс портов: публикация локальных сервисов на удалённом хосте',
  'pf.tooltip.dynamicDesc': 'Динамический SOCKS-прокси: маршрутизация трафика через SSH-туннель',
  'pf.deleteActive.title': 'Удалить активное правило проброса портов?',
  'pf.deleteActive.desc': 'Правило проброса портов "{label}" сейчас активно. При удалении туннель будет сначала остановлен.',
  'pf.deleteActive.confirm': 'Остановить и удалить',
  'pf.form.autoStart': 'Автозапуск',
  'pf.form.autoStartDesc': 'Автоматически запускать это правило при запуске приложения',

  // SFTP
  'sftp.newFolder': 'Новая папка',
  'sftp.newFile': 'Новый файл',
  'sftp.filter': 'Фильтр',
  'sftp.filter.placeholder': 'Фильтр по имени файла...',
  'sftp.bookmark.add': 'Добавить путь в закладки',
  'sftp.bookmark.remove': 'Удалить закладку',
  'sftp.bookmark.list': 'Закладки путей',
  'sftp.bookmark.addGlobal': '+Глобальная',
  'sftp.bookmark.addGlobalTooltip': 'Сохранить как глобальную закладку (общую для всех хостов)',
  'sftp.bookmark.empty': 'Пока нет закладок',
  'sftp.columns.name': 'Имя',
  'sftp.columns.modified': 'Изменён',
  'sftp.columns.size': 'Размер',
  'sftp.columns.kind': 'Тип',
  'sftp.columns.actions': 'Действия',
  'sftp.emptyDirectory': 'Пустой каталог',
  'sftp.nav.up': 'Наверх',
  'sftp.nav.home': 'Перейти в домашний каталог',
  'sftp.nav.refresh': 'Обновить',
  'sftp.upload': 'Загрузить',
  'sftp.uploadFiles': 'Загрузить файлы',
  'sftp.uploadFolder': 'Загрузить папку',
  'sftp.dragDropToUpload': 'Перетащите сюда файлы для загрузки',
  'sftp.retry': 'Повторить',
  'sftp.context.open': 'Открыть',
  'sftp.context.navigateTo': 'Перейти к',
  'sftp.context.moveTo': 'Переместить в...',
  'sftp.context.moveToParent': 'Переместить в родительский каталог',
  'sftp.moveTo.title': 'Переместить в каталог',
  'sftp.moveTo.placeholder': 'Введите путь к целевому каталогу',
  'sftp.moveTo.confirm': 'Переместить',
  'sftp.moveTo.pathNotFound': 'Каталог не найден или недоступен',
  'sftp.context.download': 'Скачать',
  'sftp.context.copyToOtherPane': 'Копировать в другую панель',
  'sftp.viewMode.label': 'Режим просмотра',
  'sftp.viewMode.list': 'Список',
  'sftp.viewMode.tree': 'Дерево',
  'sftp.viewMode.switchToList': 'Переключиться на список',
  'sftp.viewMode.switchToTree': 'Переключиться на дерево',
  'sftp.tree.loadError': 'Не удалось загрузить каталог',
  'sftp.tree.loading': 'Загрузка...',
  'sftp.kind.folder': 'Папка',
  'sftp.context.rename': 'Переименовать',
  'sftp.context.permissions': 'Права доступа',
  'sftp.context.delete': 'Удалить',
  'sftp.context.refresh': 'Обновить',
  'sftp.context.uploadFiles': 'Загрузить файл(ы)...',
  'sftp.context.uploadFilesHere': 'Загрузить файлы сюда...',
  'sftp.context.uploadFolder': 'Загрузить папку...',
  'sftp.context.uploadFolderHere': 'Загрузить папку сюда...',
  'sftp.context.downloadSelected': 'Скачать выбранное ({count})',
  'sftp.context.deleteSelected': 'Удалить выбранное ({count})',
  'sftp.dropFilesHere': 'Перетащите сюда файлы',
  'sftp.itemsCount': '{count} записей',
  'sftp.selectedCount': '{count} выбрано',
  'sftp.path.doubleClickToEdit': 'Дважды щёлкните, чтобы изменить путь',
  'sftp.showHiddenPaths': 'Скрытые пути',
  'sftp.task.waiting': 'Ожидание...',
  'sftp.transfer.preparing': 'подготовка...',
  'sftp.status.loading': 'Загрузка...',
  'sftp.status.uploading': 'Загрузка...',
  'sftp.status.ready': 'Готово',
  'sftp.transfers': 'Передачи',
  'sftp.transfers.active': '{count} активн(ый/ых)',
  'sftp.transfers.clearCompleted': 'Очистить завершённые',
  'sftp.transfers.calculatingTotal': 'Вычисление общего размера...',
  'sftp.transfers.filesCount': '{count} файл(ов)',
  'sftp.transfers.filesProgress': '{current}/{total} файл(ов)',
  'sftp.transfers.expandChildren': 'Показать файлы',
  'sftp.transfers.collapseChildren': 'Скрыть файлы',
  'sftp.transfers.expandChildList': 'Показать детали',
  'sftp.transfers.collapseChildList': 'Скрыть',
  'sftp.transfers.retryAction': 'Повторить',
  'sftp.transfers.dismissAction': 'Скрыть',
  'sftp.transfers.openTargetFolder': 'Открыть целевую папку',
  'sftp.transfers.openTargetFolderError': 'Не удалось открыть целевую папку',
  'sftp.transfers.copyTargetPath': 'Копировать целевой путь',
  'sftp.transfers.copyTargetPathSuccess': 'Целевой путь скопирован',
  'sftp.transfers.copyTargetPathError': 'Не удалось скопировать целевой путь',
  'sftp.transfers.resizeNameColumn': 'Изменить ширину столбца имени файла',
  'sftp.transfers.dragToResize': 'Перетащите для изменения размера',
  'sftp.goUp': 'Наверх',
  'sftp.goToTerminalCwd': 'Перейти в каталог терминала',
  'sftp.followTerminalCwd': 'Следовать за каталогом терминала',
  'sftp.followTerminalCwd.enable': 'Включить следование за каталогом терминала',
  'sftp.followTerminalCwd.disable': 'Отключить следование за каталогом терминала',
  'sftp.encoding.label': 'Кодировка имён файлов',
  'sftp.encoding.auto': 'Авто',
  'sftp.encoding.utf8': 'UTF-8',
  'sftp.encoding.gb18030': 'GB18030',
  'sftp.goHome': 'Перейти в домашний каталог',
  'sftp.folderName': 'Имя папки',
  'sftp.folderName.placeholder': 'Введите имя папки',
  'sftp.fileName': 'Имя файла',
  'sftp.fileName.placeholder': 'Введите имя файла',
  'sftp.prompt.newFolderName': 'Имя новой папки?',
  'sftp.rename.title': 'Переименовать',
  'sftp.rename.newName': 'Новое имя',
  'sftp.rename.placeholder': 'Введите новое имя',
  'sftp.confirm.deleteOne': 'Удалить "{name}"?',
  'sftp.deleteConfirm.single': 'Удалить "{name}"?',
  'sftp.deleteConfirm.title': 'Удалить {count} элемент(ов)?',
  'sftp.deleteConfirm.desc': 'Это действие нельзя отменить. Будет удалено следующее:',
  'sftp.deleteConfirm.descSingle': 'Это действие нельзя отменить.',
  'sftp.deleteConfirm.host': 'Хост',
  'sftp.deleteConfirm.path': 'Путь',
  'sftp.error.loadFailed': 'Не удалось загрузить каталог',
  'sftp.error.downloadFailed': 'Ошибка скачивания',
  'sftp.error.uploadFailed': 'Ошибка загрузки',
  'sftp.error.deleteFailed': 'Ошибка удаления',
  'sftp.error.createFolderFailed': 'Не удалось создать папку',
  'sftp.error.createFileFailed': 'Не удалось создать файл',
  'sftp.error.invalidFileName': 'Имя файла содержит недопустимые символы: {chars}',
  'sftp.error.reservedName': 'Это имя файла зарезервировано системой',
  'sftp.overwrite.title': 'Файл уже существует',
  'sftp.overwrite.desc': 'Файл с именем "{name}" уже существует. Хотите заменить его?',
  'sftp.overwrite.confirm': 'Заменить',
  'sftp.error.renameFailed': 'Не удалось переименовать',
  'sftp.picker.title': 'Выберите хост',
  'sftp.picker.desc': 'Выберите хост для панели {side}',
  'sftp.picker.searchPlaceholder': 'Поиск хостов...',
  'sftp.picker.local.title': 'Локальная файловая система',
  'sftp.picker.local.desc': 'Просмотр локальных файлов',
  'sftp.picker.local.badge': 'Локально',
  'sftp.picker.noMatch': 'Подходящие хосты не найдены',
  'sftp.permissions.title': 'Изменить права доступа',
  'sftp.permissions.owner': 'Владелец',
  'sftp.permissions.group': 'Группа',
  'sftp.permissions.others': 'Остальные',
  'sftp.permissions.octal': 'Восьмеричный',
  'sftp.permissions.symbolic': 'Символьный',
  'sftp.permissions.success': 'Права доступа успешно обновлены',
  'sftp.permissions.failed': 'Не удалось обновить права доступа',
  'sftp.pane.local': 'Локально',
  'sftp.pane.remote': 'Удалённо',
  'sftp.pane.selectHost': 'Выберите хост',
  'sftp.pane.selectHostToStart': 'Выберите хост для начала',
  'sftp.pane.chooseFilesystem': 'Выберите локальную или удалённую файловую систему для просмотра',
  'sftp.tabs.addTab': 'Добавить новую вкладку',
  'sftp.tabs.closeTab': 'Закрыть вкладку',
  'sftp.tabs.newTab': 'Новая вкладка',
  'sftp.conflict.title': 'Конфликт файлов',
  'sftp.conflict.desc': 'В месте назначения уже существует файл с таким именем',
  'sftp.conflict.alreadyExistsSuffix': 'уже существует',
  'sftp.conflict.existingFile': 'Существующий файл',
  'sftp.conflict.newFile': 'Новый файл',
  'sftp.conflict.size': 'Размер:',
  'sftp.conflict.modified': 'Изменён:',
  'sftp.conflict.applyToAll': 'Применить это действие ко всем оставшимся конфликтам ({count})',
  'sftp.conflict.action.stop': 'Остановить',
  'sftp.conflict.action.skip': 'Пропустить',
  'sftp.conflict.action.keepBoth': 'Сохранить оба',
  'sftp.conflict.action.duplicate': 'Дублировать',
  'sftp.conflict.action.merge': 'Объединить',
  'sftp.conflict.action.replace': 'Заменить',

  // SFTP Upload Phases
  'sftp.upload.phase.compressing': 'Сжатие',
  'sftp.upload.phase.uploading': 'Загрузка',
  'sftp.upload.phase.extracting': 'Распаковка',
  'sftp.upload.phase.compressed': 'Сжато',

  // SFTP File Opener
  'sftp.context.copyPath': 'Копировать путь к файлу',
  'sftp.context.openWithDefault': 'Открыть в системном приложении',
  'sftp.context.openWith': 'Открыть с помощью...',
  'sftp.context.edit': 'Редактировать',
  'sftp.context.preview': 'Предпросмотр',
  'sftp.opener.title': 'Открыть с помощью',
  'sftp.opener.desc': 'Выберите приложение для открытия этого файла',
  'sftp.opener.builtInEditor': 'Встроенный редактор',
  'sftp.opener.editDescription': 'Редактировать текстовые файлы',
  'sftp.opener.builtInImageViewer': 'Встроенный просмотрщик изображений',
  'sftp.opener.previewDescription': 'Просмотр изображений',
  'sftp.opener.systemApp': 'Выбрать приложение...',
  'sftp.opener.systemAppDescription': 'Выберите приложение на вашем компьютере',
  'sftp.opener.onlySystemApp': 'Этот файл можно открыть только во внешнем приложении',
  'sftp.opener.noAppsAvailable': 'Нет доступных приложений',
  'sftp.opener.noExtension': 'файлы без расширения',
  'sftp.opener.setDefault': 'Всегда использовать это для файлов {ext}',
  'sftp.opener.confirmTitle': 'Установить по умолчанию?',
  'sftp.opener.confirmDescription': 'Хотите всегда использовать {app} для файлов {ext}?',
  'sftp.opener.yesRemember': 'Да, запомнить выбор',
  'sftp.opener.justOnce': 'Только один раз',
  'sftp.opener.confirm.title': 'Установить приложение по умолчанию',
  'sftp.opener.confirm.desc': 'Хотите всегда открывать файлы .{ext} этим приложением?',
  'sftp.editor.title': 'Текстовый редактор',
  'sftp.editor.save': 'Сохранить на удалённый сервер',
  'sftp.editor.saving': 'Сохранение...',
  'sftp.editor.saved': 'Успешно сохранено',
  'sftp.editor.saveFailed': 'Не удалось сохранить файл',
  'sftp.editor.unsavedChanges': 'У вас есть несохранённые изменения. Всё равно закрыть?',
  'sftp.editor.syntaxHighlight': 'Подсветка синтаксиса',
  'sftp.preview.title': 'Просмотр изображения',
  'sftp.preview.zoomIn': 'Увеличить',
  'sftp.preview.zoomOut': 'Уменьшить',
  'sftp.preview.resetZoom': 'Сбросить масштаб',
  'sftp.preview.fitToWindow': 'Подогнать по окну',

  // Settings > SFTP File Associations
  'settings.tab.sftpFileAssociations': 'SFTP',
  'settings.sftp.transferConcurrency': 'Параллелизм передачи',
  'settings.sftp.transferConcurrency.desc': 'Количество файлов, передаваемых параллельно при загрузке или скачивании папок. Более высокие значения могут ускорить работу, но способны перегрузить некоторые серверы.',
  'settings.sftp.defaultOpener': 'Приложение для открытия по умолчанию',
  'settings.sftp.defaultOpener.desc': 'Выберите приложение по умолчанию для открытия файлов без конкретной ассоциации',
  'settings.sftp.defaultOpener.ask': 'Всегда спрашивать',
  'settings.sftp.defaultOpener.askDesc': 'Каждый раз показывать диалог выбора приложения',
  'settings.sftp.defaultOpener.builtInDesc': 'По умолчанию открывать текстовые файлы во встроенном редакторе',
  'settings.sftp.defaultOpener.systemApp': 'Выбрать приложение...',
  'settings.sftp.defaultOpener.systemAppDesc': 'По умолчанию открывать файлы в конкретном приложении',
  'settings.sftpFileAssociations.title': 'Ассоциации файлов SFTP',
  'settings.sftpFileAssociations.desc': 'Настройка приложений по умолчанию для открытия файлов по расширению',
  'settings.sftpFileAssociations.extension': 'Расширение',
  'settings.sftpFileAssociations.application': 'Приложение',
  'settings.sftpFileAssociations.noAssociations': 'Ассоциации файлов не настроены',
  'settings.sftpFileAssociations.remove': 'Удалить',
  'settings.sftpFileAssociations.removeConfirm': 'Удалить ассоциацию для .{ext}?',

  // Settings > SFTP Behavior
  'settings.sftp.doubleClickBehavior': 'Поведение двойного щелчка',
  'settings.sftp.doubleClickBehavior.desc': 'Выберите действие при двойном щелчке по файлу в SFTP-режиме',
  'settings.sftp.doubleClickBehavior.open': 'Открыть файл',
  'settings.sftp.doubleClickBehavior.transfer': 'Передать в другую панель',
  'settings.sftp.doubleClickBehavior.openDesc': 'Открыть файл в приложении по умолчанию',
  'settings.sftp.doubleClickBehavior.transferDesc': 'Передать файл на активный хост другой панели',

  // Settings > SFTP Auto Sync
  'settings.sftp.autoSync': 'Автосинхронизация с удалённым сервером',
  'settings.sftp.autoSync.desc': 'Автоматически синхронизировать изменения файлов обратно на удалённый сервер при открытии файлов во внешних приложениях',
  'settings.sftp.autoSync.enable': 'Включить автосинхронизацию',
  'settings.sftp.autoSync.enableDesc': 'Когда вы сохраняете файл во внешнем приложении, изменения автоматически загружаются на удалённый сервер',

  // Settings > SFTP Auto Open Sidebar
  'settings.sftp.autoOpenSidebar': 'Автооткрытие боковой панели при подключении',
  'settings.sftp.autoOpenSidebar.desc': 'Автоматически открывать боковую панель файлового браузера SFTP при подключении к хосту',
  'settings.sftp.autoOpenSidebar.enable': 'Включить автооткрытие боковой панели',
  'settings.sftp.autoOpenSidebar.enableDesc': 'Боковая панель SFTP будет автоматически открываться при подключении терминальной сессии к удалённому хосту',
  'settings.sftp.followTerminalCwd': 'Следовать за каталогом терминала',
  'settings.sftp.followTerminalCwd.desc': 'Автоматически синхронизировать боковую панель SFTP с рабочим каталогом терминала (переключатель на панели инструментов)',
  'settings.sftp.followTerminalCwd.enable': 'Включать следование по умолчанию',
  'settings.sftp.followTerminalCwd.enableDesc': 'При открытой боковой панели SFTP режим следования включён по умолчанию и обновляется после команд cd в терминале',

  'settings.sftp.defaultViewMode': 'Режим просмотра по умолчанию',
  'settings.sftp.defaultViewMode.desc': 'Выберите режим просмотра по умолчанию при открытии новой вкладки SFTP. Настройки конкретного хоста имеют приоритет.',
  'settings.sftp.defaultViewMode.list': 'Список',
  'settings.sftp.defaultViewMode.listDesc': 'Показывать файлы в виде плоского списка для текущего каталога',
  'settings.sftp.defaultViewMode.tree': 'Дерево',
  'settings.sftp.defaultViewMode.treeDesc': 'Показывать файлы в иерархической древовидной структуре',

  'sftp.autoSync.success': 'Файл синхронизирован с удалённым сервером: {fileName}',
  'sftp.autoSync.error': 'Не удалось синхронизировать файл: {error}',

  // SFTP Folder Upload Progress
  'sftp.upload.progress': 'Загрузка файлов {current} из {total}...',
  'sftp.upload.uploading': 'Загрузка...',
  'sftp.upload.compressing': 'Сжатие...',
  'sftp.upload.extracting': 'Распаковка...',
  'sftp.upload.scanning': 'Сканирование файлов...',
  'sftp.upload.completed': 'Завершено',
  'sftp.upload.compressed': 'Сжатая передача',
  'sftp.upload.currentFile': 'Текущий: {fileName}',
  'sftp.upload.cancelled': 'Загрузка отменена',
  'sftp.upload.cancel': 'Отмена',
  'sftp.upload.completedToPath': 'Загружено в {path}',

  // SFTP Download
  'sftp.download.completed': 'Скачано',
  'sftp.download.cancelled': 'Скачивание отменено',

  // SFTP Reconnecting
  'sftp.reconnecting.title': 'Переподключение...',
  'sftp.reconnecting.desc': 'Соединение потеряно, выполняется попытка переподключения',
  'sftp.reconnected': 'Соединение восстановлено',
  'sftp.error.reconnectFailed': 'Не удалось переподключиться. Попробуйте ещё раз.',
  'sftp.error.connectionLostManual': 'Соединение потеряно. Пожалуйста, переподключитесь вручную.',
  'sftp.error.connectionLostReconnecting': 'Соединение потеряно. Переподключение...',
  'sftp.error.sessionLost': 'SFTP-сессия потеряна. Пожалуйста, переподключитесь.',

  // Settings > SFTP Show Hidden Files
  'settings.sftp.showHiddenFiles': 'Показывать скрытые файлы',
  'settings.sftp.showHiddenFiles.desc': 'Показывать скрытые файлы (dotfiles в Unix/macOS и файлы с атрибутом hidden в Windows) в файловом браузере SFTP.',
  'settings.sftp.showHiddenFiles.enable': 'Показывать скрытые файлы',
  'settings.sftp.showHiddenFiles.enableDesc': 'Показывать скрытые файлы при просмотре как локальной, так и удалённой файловой системы',

  // Settings > SFTP Compressed Upload
  'settings.sftp.compressedUpload': 'Передача со сжатием папок',
  'settings.sftp.compressedUpload.desc': 'Сжимать папки перед загрузкой, чтобы значительно сократить время передачи.',
  'settings.sftp.compressedUpload.enable': 'Включить сжатие папок',
  'settings.sftp.compressedUpload.enableDesc': 'Автоматически сжимать папки с помощью tar перед передачей. Требует поддержки tar на сервере. Если она недоступна, будет использована обычная передача.',

  // Quick Switcher
  'qs.search.placeholder': 'Поиск хостов или вкладок',
  'qs.jumpTo': 'Перейти к',
  'qs.localTerminal': 'Локальный терминал',
  'qs.localShells': 'Локальные оболочки',
  'qs.default': 'По умолчанию',

  // Select Host panel
  'selectHost.title': 'Выберите хост',
  'selectHost.noHostsFound': 'Хосты не найдены',
  'selectHost.newHost': 'Новый хост',
  'selectHost.continue': 'Продолжить',
  'selectHost.continueWithCount': 'Продолжить (выбрано: {count})',

  // Quick Connect
  'quickConnect.knownHost.title': 'Вы уверены, что хотите подключиться?',
  'quickConnect.knownHost.authenticity': 'Подлинность {hostname} не может быть установлена.',
  'quickConnect.knownHost.fingerprintLabel': '{keyType} fingerprint is SHA256:',
  'quickConnect.knownHost.addQuestion': 'Хотите добавить его в список известных хостов?',
  'quickConnect.knownHost.addAndContinue': 'Добавить и продолжить',
  'quickConnect.addKey': 'Добавить ключ',
  'quickConnect.warning.unparsedOptions': 'Некоторые аргументы SSH были проигнорированы: {options}',

  // Terminal
  'terminal.connectionErrorTitle': 'Ошибка подключения',

  // Protocol select dialog
  'protocolSelect.chooseProtocol': 'Выберите протокол',
  'protocolSelect.port': 'порт:',

  // Host Details
  'hostDetails.title.details': 'Сведения о хосте',
  'hostDetails.title.new': 'Новый хост',
  'hostDetails.saveAria': 'Сохранить',
  'hostDetails.section.address': 'Адрес',
  'hostDetails.hostname.placeholder': 'IP или имя хоста',
  'hostDetails.section.general': 'Общие',
  'hostDetails.section.sftp': 'Настройки SFTP',
  'hostDetails.sftp.sudo': 'Режим sudo',
  'hostDetails.sftp.sudo.desc': 'Автоматически получать привилегии Root с помощью сохранённого пароля',
  'hostDetails.sftp.sudo.passwordWarning': 'Для режима sudo требуется пароль. Укажите его выше или убедитесь, что сервер разрешает sudo без пароля.',
  'hostDetails.sftp.encoding': 'Кодировка имён файлов',
  'hostDetails.sftp.encoding.desc': 'Выберите кодировку, используемую для декодирования и отправки имён файлов SFTP.',
  'hostDetails.label.placeholder': 'Метка (например, Production Server)',
  'hostDetails.notes.label': 'Заметки',
  'hostDetails.notes.placeholder': 'Оборудование, проект, клиент, регион, роль...',
  'hostDetails.notes.help': 'Поддерживается Markdown. Не храните здесь пароли и закрытые ключи.',
  'hostDetails.notes.tab.edit': 'Редактировать',
  'hostDetails.notes.tab.preview': 'Просмотр',
  'hostDetails.notes.preview.empty': 'Пока нечего просматривать.',
  'hostDetails.group.placeholder': 'Родительская группа',
  'hostDetails.section.credentials': 'Учётные данные',
  'hostDetails.section.portCredentials': 'Порт и учётные данные',
  'hostDetails.section.appearance': 'Внешний вид',
  'hostDetails.distro.title': 'Дистрибутив Linux',
  'hostDetails.distro.desc': 'Автоопределение при подключении или ручное переопределение значка дистрибутива.',
  'hostDetails.distro.mode': 'Источник',
  'hostDetails.distro.mode.auto': 'Автоопределение',
  'hostDetails.distro.mode.manual': 'Ручное переопределение',
  'hostDetails.distro.detectedLabel': 'Текущий',
  'hostDetails.distro.manualLabel': 'Переопределить',
  'hostDetails.distro.pending': 'Определится после первого подключения',
  'hostDetails.distro.unknown': 'Неизвестно',
  'hostDetails.distro.option.linux': 'Обычный Linux',
  'hostDetails.distro.option.ubuntu': 'Ubuntu',
  'hostDetails.distro.option.debian': 'Debian',
  'hostDetails.distro.option.centos': 'CentOS',
  'hostDetails.distro.option.rocky': 'Rocky Linux',
  'hostDetails.distro.option.fedora': 'Fedora',
  'hostDetails.distro.option.arch': 'Arch Linux',
  'hostDetails.distro.option.alpine': 'Alpine',
  'hostDetails.distro.option.amazon': 'Amazon Linux',
  'hostDetails.distro.option.opensuse': 'openSUSE / SLES',
  'hostDetails.distro.option.redhat': 'Red Hat / RHEL',
  'hostDetails.distro.option.almalinux': 'AlmaLinux',
  'hostDetails.distro.option.alinux': 'Alibaba Cloud Linux',
  'hostDetails.distro.option.oracle': 'Oracle Linux',
  'hostDetails.distro.option.kali': 'Kali Linux',
  'hostDetails.distro.option.cisco': 'Cisco',
  'hostDetails.distro.option.juniper': 'Juniper Networks',
  'hostDetails.distro.option.huawei': 'Huawei',
  'hostDetails.distro.option.hpe': 'HPE / H3C',
  'hostDetails.distro.option.mikrotik': 'MikroTik',
  'hostDetails.distro.option.fortinet': 'Fortinet',
  'hostDetails.distro.option.paloalto': 'Palo Alto Networks',
  'hostDetails.distro.option.zyxel': 'ZyXEL',
  'hostDetails.distro.option.ruijie': 'Ruijie',
  'hostDetails.section.mosh': 'Mosh',
  'hostDetails.username.placeholder': 'Имя пользователя',
  'hostDetails.password.placeholder': 'Пароль',
  'hostDetails.password.show': 'Показать пароль',
  'hostDetails.password.hide': 'Скрыть пароль',
  'hostDetails.password.save': 'Сохранить пароль',
  'hostDetails.identity.suggestions': 'Идентификаторы',
  'hostDetails.identity.missing': 'Идентификатор не найден',
  'hostDetails.credential.keyCertificate': 'Ключ, сертификат, локальный файл ключа',
  'hostDetails.credential.key': 'Ключ',
  'hostDetails.credential.certificate': 'Сертификат',
  'hostDetails.credential.localKeyFile': 'Локальный файл ключа',
  'hostDetails.credential.localKeyFilePlaceholder': '~/.ssh/id_ed25519',
  'hostDetails.credential.browseKeyFile': 'Обзор...',
  'hostDetails.credential.missing': 'Учётные данные не найдены',
  'hostDetails.keys.search': 'Поиск ключей...',
  'hostDetails.keys.empty': 'Нет доступных ключей',
  'hostDetails.certs.search': 'Поиск сертификатов...',
  'hostDetails.certs.empty': 'Нет доступных сертификатов',
  'hostDetails.agentForwarding': 'Проброс SSH Agent',
  'hostDetails.agentForwarding.desc': 'Разрешить удалённому серверу использовать ваши локальные SSH-ключи (например, для операций git)',
  'hostDetails.agentForwarding.agentNotRunning': 'SSH Agent недоступен',
  'hostDetails.agentForwarding.agentNotRunningHint': 'SSH Agent не обнаружен. Включите OpenSSH Authentication Agent в службах Windows или используйте совместимый агент, например Bitwarden, 1Password или gpg-agent.',
  'hostDetails.section.agentForwarding': 'SSH Agent',
  'hostDetails.x11Forwarding': 'Проброс X11-приложений',
  'hostDetails.x11Forwarding.desc': 'Показывать удалённые графические приложения на вашем локальном рабочем столе, если запущен локальный X-сервер.',
  'hostDetails.section.x11Forwarding': 'Проброс X11',
  'hostDetails.section.deviceType': 'Тип устройства',
  'hostDetails.deviceType': 'Режим сетевого устройства',
  'hostDetails.deviceType.desc': 'Включайте для сетевого оборудования (коммутаторов, маршрутизаторов, межсетевых экранов), подключённого по SSH. Команды отправляются как есть, без обёртки оболочки, что совместимо с CLI вендоров вроде Huawei VRP и Cisco IOS.',
  'hostDetails.deviceType.warning': 'Команды AI-агента будут отправляться напрямую без отслеживания кода выхода. Включайте только для устройств, на которых нет стандартной оболочки.',
  'hostDetails.section.sshAlgorithms': 'SSH-алгоритмы',
  'hostDetails.section.terminalBehavior': 'Поведение терминала',
  'hostDetails.lineTimestamps': 'Показывать время вывода',
  'hostDetails.lineTimestamps.desc': 'Показывать локальное время рядом с видимыми строками вывода для этого хоста, не изменяя текст терминала.',
  'hostDetails.legacyAlgorithms': 'Разрешить устаревшие алгоритмы',
  'hostDetails.legacyAlgorithms.desc': 'Включить устаревшие SSH-алгоритмы (diffie-hellman-group1, ssh-dss, 3des-cbc и т. д.) для подключения к старому сетевому оборудованию.',
  'hostDetails.legacyAlgorithms.warning': 'У этих алгоритмов есть известные слабые места безопасности. Включайте только для устаревших устройств, которые не поддерживают современную криптографию.',
  'hostDetails.skipEcdsaHostKey': 'Пропустить ECDSA host key',
  'hostDetails.skipEcdsaHostKey.desc': 'Некоторые старые коммутаторы Huawei / Cisco выдают нестандартные подписи ECDSA host-key, из-за чего соединение падает с "signature verification failed". Включение этой опции убирает все ecdsa-sha2-* из предложения клиента, и согласование переходит к RSA / Ed25519.',
  'hostDetails.algorithms.advanced': 'Дополнительные настройки алгоритмов',
  'hostDetails.algorithms.advanced.desc': 'Заменить предлагаемый список алгоритмов для любой категории для конкретного хоста. Не трогать категорию = использовать значение по умолчанию; выбранное подмножество полностью заменяет список по умолчанию. Неверные значения могут сделать хост недоступным.',
  'hostDetails.algorithms.inheritedNotice': 'В текущей группе заданы переопределения алгоритмов для: {categories}. Кнопка «Сбросить» здесь возвращает к спискам группы, а не к значениям NetCatty по умолчанию. Чтобы игнорировать ограничение группы, очистите переопределение в настройках алгоритмов группы.',
  'hostDetails.algorithms.customized': 'настроено',
  'hostDetails.algorithms.reset': 'Сбросить',
  'hostDetails.algorithms.category.kex': 'Обмен ключами (KEX)',
  'hostDetails.algorithms.category.cipher': 'Шифр',
  'hostDetails.algorithms.category.hmac': 'MAC (HMAC)',
  'hostDetails.algorithms.category.serverHostKey': 'Host Key',
  'hostDetails.algorithms.category.compress': 'Сжатие',
  'hostDetails.section.keepalive': 'Keepalive',
  'hostDetails.keepalive.override': 'Переопределить глобальный keepalive',
  'hostDetails.keepalive.desc': 'Использовать для этого хоста собственную политику keepalive вместо глобальной настройки. Полезно для старых маршрутизаторов и коммутаторов, чей SSH-сервер не отвечает на запросы keepalive@openssh.com. Установите интервал 0, чтобы полностью отключить keepalive для этого хоста.',
  'hostDetails.keepalive.interval': 'Интервал (секунды)',
  'hostDetails.keepalive.countMax': 'Макс. число пропущенных keepalive',
  'hostDetails.keepalive.disabledHint': 'Интервал = 0 отключает keepalive для этого хоста. Для определения разорванного соединения сессия будет полагаться на TCP-таймауты.',
  'hostDetails.backspaceBehavior': 'Поведение Backspace',
  'hostDetails.backspaceBehavior.default': 'По умолчанию',
  'hostDetails.jumpHosts': 'Прокси через хосты',
  'hostDetails.jumpHosts.hops': '{count} hop(s)',
  'hostDetails.jumpHosts.direct': 'Напрямую',
  'hostDetails.jumpHosts.configure': 'Настроить прокси-хосты',
  'hostDetails.proxy': 'Прокси через HTTP/SOCKS5/Command',
  'hostDetails.proxy.none': 'Нет',
  'hostDetails.proxy.edit': 'Редактировать прокси',
  'hostDetails.proxy.configure': 'Настроить прокси',
  'hostDetails.proxyPanel.title': 'Прокси через HTTP/SOCKS5/Command',
  'hostDetails.proxyPanel.hostPlaceholder': 'Прокси-хост',
  'hostDetails.proxyPanel.command': 'ProxyCommand',
  'hostDetails.proxyPanel.commandPlaceholder': 'cloudflared access ssh --hostname %h',
  'hostDetails.proxyPanel.commandHelp': 'Используйте %h для целевого хоста, %p для целевого порта и %% для символа процента.',
  'hostDetails.proxyPanel.credentials': 'Учётные данные',
  'hostDetails.proxyPanel.usernamePlaceholder': 'Имя пользователя',
  'hostDetails.proxyPanel.passwordPlaceholder': 'Пароль',
  'hostDetails.proxyPanel.identities': 'Идентификаторы',
  'hostDetails.proxyPanel.remove': 'Удалить прокси',
  'hostDetails.proxyPanel.savedProxy': 'Сохранённый прокси',
  'hostDetails.proxyPanel.selectSaved': 'Выбрать сохранённый прокси',
  'hostDetails.proxyPanel.customProxy': 'Пользовательский прокси',
  'hostDetails.proxyPanel.missing': 'Отсутствует',
  'hostDetails.proxyPanel.missingSaved': 'Сохранённый прокси отсутствует',
  'hostDetails.proxyPanel.error.required': 'Требуются хост и порт прокси или ProxyCommand.',
  'hostDetails.envVars': 'Переменные окружения',
  'hostDetails.envVars.add': 'Добавить переменную окружения',
  'hostDetails.envVars.title': 'Переменные окружения',
  'hostDetails.envVars.desc': 'Задайте переменную окружения для {host}.',
  'hostDetails.envVars.note': 'Некоторые SSH-серверы по умолчанию разрешают только переменные с префиксом LC_ и LANG_.',
  'hostDetails.envVars.variable': 'Переменная',
  'hostDetails.envVars.value': 'Значение',
  'hostDetails.envVars.newVariable': 'Новая переменная',
  'hostDetails.envVars.variableName': 'Имя переменной',
  'hostDetails.chain.title': 'Редактировать цепочку',
  'hostDetails.chain.desc': 'Добавление ещё одного хоста создаст подключение к {host}.',
  'hostDetails.chain.addHost': 'Добавить хост',
  'hostDetails.chain.target': 'Цель',
  'hostDetails.chain.availableHosts': 'Доступные хосты',
  'hostDetails.chain.clear': 'Очистить',
  'hostDetails.group.title': 'Новая группа',
  'hostDetails.group.general': 'Общие',
  'hostDetails.group.namePlaceholder': 'Имя группы',
  'hostDetails.group.parentPlaceholder': 'Родительская группа',
  'hostDetails.group.cloudSync': 'Облачная синхронизация',
  'hostDetails.group.addProtocol': 'Добавить протокол',
  'hostDetails.startupCommand': 'Команда запуска',
  'hostDetails.startupCommand.placeholder': 'Команда для запуска при подключении (например, cd /app && ls)',
  'hostDetails.startupCommand.help':
    'This command will be executed automatically after SSH connection is established.',
  'hostDetails.otherProtocols': 'Другие протоколы',
  'hostDetails.telnetOn': 'Telnet на',
  'hostDetails.port': 'порт',
  'hostDetails.telnet.credentials': 'Учётные данные',
  'hostDetails.telnet.username': 'Имя пользователя Telnet',
  'hostDetails.telnet.password': 'Пароль Telnet',
  'hostDetails.charset.placeholder': 'Кодировка (например, UTF-8)',
  'hostDetails.telnet.add': 'Добавить протокол Telnet',
  'hostDetails.telnet.setDefault': 'Подключаться по Telnet по умолчанию',
  'hostDetails.tags': 'Теги',
  'hostDetails.group': 'Группа',
  'hostDetails.selectGroup': 'Выберите группу',
  'hostDetails.addTag': 'Добавить тег...',
  'hostDetails.createTag': 'Создать тег',
  'hostDetails.createGroup': 'Создать группу',

  // Host form (legacy modal)
  'hostForm.title.edit': 'Редактировать хост',
  'hostForm.title.new': 'Новый хост',
  'hostForm.desc.edit': 'Обновите параметры подключения для этого хоста',
  'hostForm.desc.new': 'Создайте новую запись SSH-хоста',
  'hostForm.field.label': 'Метка',
  'hostForm.placeholder.label': 'Мой production-сервер',
  'hostForm.field.hostname': 'Имя хоста / IP',
  'hostForm.placeholder.hostname': '192.168.1.1',
  'hostForm.field.port': 'Порт',
  'hostForm.field.username': 'Имя пользователя',
  'hostForm.field.osType': 'Тип ОС',
  'hostForm.placeholder.selectOs': 'Выберите ОС',
  'hostForm.field.group': 'Группа',
  'hostForm.placeholder.group': 'например, AWS, DigitalOcean',
  'hostForm.field.tags': 'Теги',
  'hostForm.placeholder.addTag': 'Добавить тег...',
  'hostForm.auth.method': 'Метод аутентификации',
  'hostForm.auth.password': 'Пароль',
  'hostForm.auth.sshKey': 'SSH-ключ',
  'hostForm.auth.selectKey': 'Выберите SSH-ключ',
  'hostForm.auth.noKeys': 'Нет доступных ключей',
  'hostForm.auth.noKeysHint': 'В связке ключей не найдено SSH-ключей. Сначала создайте один.',
  'hostForm.saveHost': 'Сохранить хост',

};
