feat: import servers from ~/.ssh/config (#873)

This commit is contained in:
lollipopkit🏳️‍⚧️
2025-08-31 19:33:29 +08:00
committed by GitHub
parent a97b3cf43e
commit 12a243d139
42 changed files with 2850 additions and 334 deletions

View File

@@ -46,16 +46,20 @@ class AppLocalizationsRu extends AppLocalizations {
'Автоматическое обновление виджета на главном экране';
@override
String get backupTip =>
'Экспортированные данные могут быть зашифрованы паролем. \nПожалуйста, храните их в безопасности.';
String get backupEncrypted => 'Резервная копия зашифрована';
@override
String get backupVersionNotMatch =>
'Версия резервной копии не совпадает, восстановление невозможно';
String get backupNotEncrypted => 'Резервная копия не зашифрована';
@override
String get backupPassword => 'Пароль резервной копии';
@override
String get backupPasswordRemoved => 'Пароль резервной копии удален';
@override
String get backupPasswordSet => 'Пароль резервной копии установлен';
@override
String get backupPasswordTip =>
'Установите пароль для шифрования файлов резервных копий. Оставьте пустым, чтобы отключить шифрование.';
@@ -64,16 +68,12 @@ class AppLocalizationsRu extends AppLocalizations {
String get backupPasswordWrong => 'Неверный пароль резервной копии';
@override
String get backupEncrypted => 'Резервная копия зашифрована';
String get backupTip =>
'Экспортированные данные могут быть зашифрованы паролем. \nПожалуйста, храните их в безопасности.';
@override
String get backupNotEncrypted => 'Резервная копия не зашифрована';
@override
String get backupPasswordSet => 'Пароль резервной копии установлен';
@override
String get backupPasswordRemoved => 'Пароль резервной копии удален';
String get backupVersionNotMatch =>
'Версия резервной копии не совпадает, восстановление невозможно';
@override
String get battery => 'Батарея';
@@ -607,6 +607,60 @@ class AppLocalizationsRu extends AppLocalizations {
return 'Затрачено времени: $time';
}
@override
String sshConfigAllExist(Object duplicateCount) {
return 'Все серверы уже существуют (найдено $duplicateCount дубликатов)';
}
@override
String sshConfigDuplicatesSkipped(Object duplicateCount) {
return '$duplicateCount дубликатов будут пропущены';
}
@override
String get sshConfigFound => 'Мы нашли SSH-конфигурацию в вашей системе';
@override
String sshConfigFoundServers(Object totalCount) {
return 'Найдено $totalCount серверов';
}
@override
String get sshConfigImport => 'Импорт SSH Конфигурации';
@override
String get sshConfigImportHelp =>
'Можно импортировать только базовую информацию, например: IP/порт.';
@override
String get sshConfigImportPermission =>
'Хотите ли вы дать разрешение на чтение ~/.ssh/config и автоматический импорт настроек сервера?';
@override
String get sshConfigImportTip =>
'Предложение прочитать ~/.ssh/config при создании первого сервера';
@override
String sshConfigImported(Object count) {
return 'Импортировано $count серверов из SSH-конфигурации';
}
@override
String get sshConfigManualSelect =>
'Хотели бы вы вручную выбрать файл конфигурации SSH?';
@override
String get sshConfigNoServers => 'Серверы не найдены в SSH-конфигурации';
@override
String get sshConfigPermissionDenied =>
'Невозможно получить доступ к файлу конфигурации SSH из-за разрешений macOS.';
@override
String sshConfigServersToImport(Object importCount) {
return '$importCount серверов будут импортированы';
}
@override
String get sshTermHelp =>
'Когда терминал можно прокручивать, горизонтальное перетаскивание позволяет выделить текст. Нажатие на кнопку клавиатуры включает/выключает клавиатуру. Иконка файла открывает текущий путь SFTP. Кнопка буфера обмена копирует содержимое, когда текст выделен, и вставляет содержимое из буфера обмена в терминал, когда текст не выделен, а в буфере есть содержимое. Иконка кода вставляет фрагменты кода в терминал и выполняет их.';