opt.: confirm of suspend & etc.

This commit is contained in:
lollipopkit
2023-10-05 17:08:21 +08:00
parent 153bfc191d
commit ef144e27cb
20 changed files with 182 additions and 235 deletions

View File

@@ -158,6 +158,12 @@ abstract class S {
/// **'Alter url'** /// **'Alter url'**
String get alterUrl; String get alterUrl;
/// No description provided for @askContinue.
///
/// In en, this message translates to:
/// **'{msg}, continue?'**
String askContinue(Object msg);
/// No description provided for @attention. /// No description provided for @attention.
/// ///
/// In en, this message translates to: /// In en, this message translates to:
@@ -368,6 +374,12 @@ abstract class S {
/// **'Batch delete servers'** /// **'Batch delete servers'**
String get deleteServers; String get deleteServers;
/// No description provided for @dirEmpty.
///
/// In en, this message translates to:
/// **'Make sure dir is empty.'**
String get dirEmpty;
/// No description provided for @disabled. /// No description provided for @disabled.
/// ///
/// In en, this message translates to: /// In en, this message translates to:
@@ -1088,12 +1100,6 @@ abstract class S {
/// **'Restore success. Restart app to apply.'** /// **'Restore success. Restart app to apply.'**
String get restoreSuccess; String get restoreSuccess;
/// No description provided for @restoreSureWithDate.
///
/// In en, this message translates to:
/// **'Are you sure to restore from {date} ?'**
String restoreSureWithDate(Object date);
/// No description provided for @result. /// No description provided for @result.
/// ///
/// In en, this message translates to: /// In en, this message translates to:
@@ -1268,36 +1274,6 @@ abstract class S {
/// **'Success'** /// **'Success'**
String get success; String get success;
/// No description provided for @sureDelete.
///
/// In en, this message translates to:
/// **'Are you sure to delete [{name}]?'**
String sureDelete(Object name);
/// No description provided for @sureDirEmpty.
///
/// In en, this message translates to:
/// **'Make sure dir is empty.'**
String get sureDirEmpty;
/// No description provided for @sureNoPwd.
///
/// In en, this message translates to:
/// **'Are you sure to use no password?'**
String get sureNoPwd;
/// No description provided for @sureStop.
///
/// In en, this message translates to:
/// **'Sure to stop [{item}] ?'**
String sureStop(Object item);
/// No description provided for @sureToDeleteServer.
///
/// In en, this message translates to:
/// **'Are you sure to delete server [{server}]?'**
String sureToDeleteServer(Object server);
/// No description provided for @suspendTip. /// No description provided for @suspendTip.
/// ///
/// In en, this message translates to: /// In en, this message translates to:
@@ -1430,6 +1406,12 @@ abstract class S {
/// **'URL or JSON'** /// **'URL or JSON'**
String get urlOrJson; String get urlOrJson;
/// No description provided for @useNoPwd.
///
/// In en, this message translates to:
/// **'No password will be used.'**
String get useNoPwd;
/// No description provided for @user. /// No description provided for @user.
/// ///
/// In en, this message translates to: /// In en, this message translates to:

View File

@@ -34,6 +34,11 @@ class SDe extends S {
@override @override
String get alterUrl => 'Url ändern'; String get alterUrl => 'Url ändern';
@override
String askContinue(Object msg) {
return '$msg, weiter?';
}
@override @override
String get attention => 'Achtung'; String get attention => 'Achtung';
@@ -139,6 +144,9 @@ class SDe extends S {
@override @override
String get deleteServers => 'Batch-Löschung von Servern'; String get deleteServers => 'Batch-Löschung von Servern';
@override
String get dirEmpty => 'Stelle sicher, dass der Ordner leer ist.';
@override @override
String get disabled => 'Behinderte'; String get disabled => 'Behinderte';
@@ -523,11 +531,6 @@ class SDe extends S {
@override @override
String get restoreSuccess => 'Wiederherstellung erfolgreich. App neustarten um Änderungen anzuwenden.'; String get restoreSuccess => 'Wiederherstellung erfolgreich. App neustarten um Änderungen anzuwenden.';
@override
String restoreSureWithDate(Object date) {
return 'Bist du sicher, dass du das Backup vom $date wiederherstellen möchtest?';
}
@override @override
String get result => 'Result'; String get result => 'Result';
@@ -619,27 +622,6 @@ class SDe extends S {
@override @override
String get success => 'Erfolgreich'; String get success => 'Erfolgreich';
@override
String sureDelete(Object name) {
return 'Soll [$name] wirklich gelöscht werden?';
}
@override
String get sureDirEmpty => 'Stelle sicher, dass der Ordner leer ist.';
@override
String get sureNoPwd => 'Bist du sicher, dass du kein Passwort verwenden willst?';
@override
String sureStop(Object item) {
return 'Sind Sie sicher, dass Sie [$item] stoppen möchten?';
}
@override
String sureToDeleteServer(Object server) {
return 'Bist du sicher, dass du [$server] löschen willst?';
}
@override @override
String get suspendTip => 'Die Suspend-Funktion erfordert Root-Rechte und systemd-Unterstützung.'; String get suspendTip => 'Die Suspend-Funktion erfordert Root-Rechte und systemd-Unterstützung.';
@@ -710,6 +692,9 @@ class SDe extends S {
@override @override
String get urlOrJson => 'URL oder JSON'; String get urlOrJson => 'URL oder JSON';
@override
String get useNoPwd => 'Es wird kein Passwort verwendet.';
@override @override
String get user => 'Benutzer'; String get user => 'Benutzer';

View File

@@ -34,6 +34,11 @@ class SEn extends S {
@override @override
String get alterUrl => 'Alter url'; String get alterUrl => 'Alter url';
@override
String askContinue(Object msg) {
return '$msg, continue?';
}
@override @override
String get attention => 'Attention'; String get attention => 'Attention';
@@ -139,6 +144,9 @@ class SEn extends S {
@override @override
String get deleteServers => 'Batch delete servers'; String get deleteServers => 'Batch delete servers';
@override
String get dirEmpty => 'Make sure dir is empty.';
@override @override
String get disabled => 'Disabled'; String get disabled => 'Disabled';
@@ -523,11 +531,6 @@ class SEn extends S {
@override @override
String get restoreSuccess => 'Restore success. Restart app to apply.'; String get restoreSuccess => 'Restore success. Restart app to apply.';
@override
String restoreSureWithDate(Object date) {
return 'Are you sure to restore from $date ?';
}
@override @override
String get result => 'Result'; String get result => 'Result';
@@ -619,27 +622,6 @@ class SEn extends S {
@override @override
String get success => 'Success'; String get success => 'Success';
@override
String sureDelete(Object name) {
return 'Are you sure to delete [$name]?';
}
@override
String get sureDirEmpty => 'Make sure dir is empty.';
@override
String get sureNoPwd => 'Are you sure to use no password?';
@override
String sureStop(Object item) {
return 'Sure to stop [$item] ?';
}
@override
String sureToDeleteServer(Object server) {
return 'Are you sure to delete server [$server]?';
}
@override @override
String get suspendTip => 'The suspend function requires root privileges and systemd support.'; String get suspendTip => 'The suspend function requires root privileges and systemd support.';
@@ -710,6 +692,9 @@ class SEn extends S {
@override @override
String get urlOrJson => 'URL or JSON'; String get urlOrJson => 'URL or JSON';
@override
String get useNoPwd => 'No password will be used.';
@override @override
String get user => 'User'; String get user => 'User';

View File

@@ -34,6 +34,11 @@ class SId extends S {
@override @override
String get alterUrl => 'Alter url'; String get alterUrl => 'Alter url';
@override
String askContinue(Object msg) {
return '$msg, lanjutkan?';
}
@override @override
String get attention => 'Perhatian'; String get attention => 'Perhatian';
@@ -139,6 +144,9 @@ class SId extends S {
@override @override
String get deleteServers => 'Penghapusan server secara batch'; String get deleteServers => 'Penghapusan server secara batch';
@override
String get dirEmpty => 'Pastikan dir kosong.';
@override @override
String get disabled => 'Dengan disabilitas'; String get disabled => 'Dengan disabilitas';
@@ -523,11 +531,6 @@ class SId extends S {
@override @override
String get restoreSuccess => 'Kembalikan kesuksesan. Mulai ulang aplikasi untuk diterapkan.'; String get restoreSuccess => 'Kembalikan kesuksesan. Mulai ulang aplikasi untuk diterapkan.';
@override
String restoreSureWithDate(Object date) {
return 'Apakah Anda pasti akan memulihkan dari $date?';
}
@override @override
String get result => 'Hasil'; String get result => 'Hasil';
@@ -619,27 +622,6 @@ class SId extends S {
@override @override
String get success => 'Kesuksesan'; String get success => 'Kesuksesan';
@override
String sureDelete(Object name) {
return 'Apakah Anda pasti akan menghapus [$name]?';
}
@override
String get sureDirEmpty => 'Pastikan dir kosong.';
@override
String get sureNoPwd => 'Apakah Anda pasti tidak menggunakan kata sandi?';
@override
String sureStop(Object item) {
return 'Anda yakin ingin menghentikan [$item]?';
}
@override
String sureToDeleteServer(Object server) {
return 'Apakah Anda pasti akan menghapus server [$server]?';
}
@override @override
String get suspendTip => 'Fungsi penangguhan memerlukan hak akses root dan dukungan systemd.'; String get suspendTip => 'Fungsi penangguhan memerlukan hak akses root dan dukungan systemd.';
@@ -710,6 +692,9 @@ class SId extends S {
@override @override
String get urlOrJson => 'URL atau JSON'; String get urlOrJson => 'URL atau JSON';
@override
String get useNoPwd => 'Tidak ada kata sandi yang akan digunakan.';
@override @override
String get user => 'Username'; String get user => 'Username';

View File

@@ -34,6 +34,11 @@ class SZh extends S {
@override @override
String get alterUrl => '备选链接'; String get alterUrl => '备选链接';
@override
String askContinue(Object msg) {
return '$msg,继续吗?';
}
@override @override
String get attention => '注意'; String get attention => '注意';
@@ -139,6 +144,9 @@ class SZh extends S {
@override @override
String get deleteServers => '批量删除服务器'; String get deleteServers => '批量删除服务器';
@override
String get dirEmpty => '请确保文件夹为空';
@override @override
String get disabled => '已禁用'; String get disabled => '已禁用';
@@ -523,11 +531,6 @@ class SZh extends S {
@override @override
String get restoreSuccess => '恢复成功需要重启App来应用更改'; String get restoreSuccess => '恢复成功需要重启App来应用更改';
@override
String restoreSureWithDate(Object date) {
return '确定恢复 $date 的备份吗?';
}
@override @override
String get result => '结果'; String get result => '结果';
@@ -619,27 +622,6 @@ class SZh extends S {
@override @override
String get success => '成功'; String get success => '成功';
@override
String sureDelete(Object name) {
return '确定删除 [$name]';
}
@override
String get sureDirEmpty => '请确保文件夹为空';
@override
String get sureNoPwd => '确认使用无密码?';
@override
String sureStop(Object item) {
return '确定要停止 [$item] 吗?';
}
@override
String sureToDeleteServer(Object server) {
return '你确定要删除服务器 [$server] 吗?';
}
@override @override
String get suspendTip => 'suspend 功能需要 root 权限及 systemd 支持。'; String get suspendTip => 'suspend 功能需要 root 权限及 systemd 支持。';
@@ -710,6 +692,9 @@ class SZh extends S {
@override @override
String get urlOrJson => '链接或JSON'; String get urlOrJson => '链接或JSON';
@override
String get useNoPwd => '将会使用无密码。';
@override @override
String get user => '用户'; String get user => '用户';
@@ -784,6 +769,11 @@ class SZhTw extends SZh {
@override @override
String get alterUrl => '備選鏈接'; String get alterUrl => '備選鏈接';
@override
String askContinue(Object msg) {
return '$msg,繼續嗎?';
}
@override @override
String get attention => '注意'; String get attention => '注意';
@@ -889,6 +879,9 @@ class SZhTw extends SZh {
@override @override
String get deleteServers => '批量刪除服務器'; String get deleteServers => '批量刪除服務器';
@override
String get dirEmpty => '請確保文件夾為空';
@override @override
String get disabled => '已禁用'; String get disabled => '已禁用';
@@ -1273,11 +1266,6 @@ class SZhTw extends SZh {
@override @override
String get restoreSuccess => '恢復成功需要重啓App來應用更改'; String get restoreSuccess => '恢復成功需要重啓App來應用更改';
@override
String restoreSureWithDate(Object date) {
return '確定恢復 $date 的備份嗎?';
}
@override @override
String get result => '結果'; String get result => '結果';
@@ -1369,27 +1357,6 @@ class SZhTw extends SZh {
@override @override
String get success => '成功'; String get success => '成功';
@override
String sureDelete(Object name) {
return '確定刪除 [$name]';
}
@override
String get sureDirEmpty => '請確保文件夾為空';
@override
String get sureNoPwd => '確認使用無密碼?';
@override
String sureStop(Object item) {
return '確定要停止 [$item] 嗎?';
}
@override
String sureToDeleteServer(Object server) {
return '你確定要刪除服務器 [$server] 嗎?';
}
@override @override
String get suspendTip => 'suspend 功能需要 root 權限及 systemd 支持。'; String get suspendTip => 'suspend 功能需要 root 權限及 systemd 支持。';
@@ -1460,6 +1427,9 @@ class SZhTw extends SZh {
@override @override
String get urlOrJson => '鏈接或JSON'; String get urlOrJson => '鏈接或JSON';
@override
String get useNoPwd => '将使用無密碼。';
@override @override
String get user => '用戶'; String get user => '用戶';

View File

@@ -10,6 +10,7 @@
"all": "Alle", "all": "Alle",
"alreadyLastDir": "Bereits im letzten Verzeichnis.", "alreadyLastDir": "Bereits im letzten Verzeichnis.",
"alterUrl": "Url ändern", "alterUrl": "Url ändern",
"askContinue": "{msg}, weiter?",
"attention": "Achtung", "attention": "Achtung",
"authRequired": "Autorisierung erforderlich", "authRequired": "Autorisierung erforderlich",
"auto": "System folgen", "auto": "System folgen",
@@ -45,6 +46,7 @@
"decompress": "Dekomprimieren", "decompress": "Dekomprimieren",
"delete": "Löschen", "delete": "Löschen",
"deleteServers": "Batch-Löschung von Servern", "deleteServers": "Batch-Löschung von Servern",
"dirEmpty": "Stelle sicher, dass der Ordner leer ist.",
"disabled": "Behinderte", "disabled": "Behinderte",
"disconnected": "Disconnected", "disconnected": "Disconnected",
"diskIgnorePath": "Pfad für Datenträger ignorieren", "diskIgnorePath": "Pfad für Datenträger ignorieren",
@@ -165,7 +167,6 @@
"restart": "Neustart", "restart": "Neustart",
"restore": "Wiederherstellen", "restore": "Wiederherstellen",
"restoreSuccess": "Wiederherstellung erfolgreich. App neustarten um Änderungen anzuwenden.", "restoreSuccess": "Wiederherstellung erfolgreich. App neustarten um Änderungen anzuwenden.",
"restoreSureWithDate": "Bist du sicher, dass du das Backup vom {date} wiederherstellen möchtest?",
"result": "Result", "result": "Result",
"rotateAngel": "Rotationswinkel", "rotateAngel": "Rotationswinkel",
"run": "Ausführen", "run": "Ausführen",
@@ -195,11 +196,6 @@
"stats": "Statistik", "stats": "Statistik",
"stop": "Stop", "stop": "Stop",
"success": "Erfolgreich", "success": "Erfolgreich",
"sureDelete": "Soll [{name}] wirklich gelöscht werden?",
"sureDirEmpty": "Stelle sicher, dass der Ordner leer ist.",
"sureNoPwd": "Bist du sicher, dass du kein Passwort verwenden willst?",
"sureStop": "Sind Sie sicher, dass Sie [{item}] stoppen möchten?",
"sureToDeleteServer": "Bist du sicher, dass du [{server}] löschen willst?",
"suspendTip": "Die Suspend-Funktion erfordert Root-Rechte und systemd-Unterstützung.", "suspendTip": "Die Suspend-Funktion erfordert Root-Rechte und systemd-Unterstützung.",
"syncTip": "Nach der automatischen Synchronisierung kann es erforderlich sein, die App neu zu starten, damit bestimmte Änderungen wirksam werden.", "syncTip": "Nach der automatischen Synchronisierung kann es erforderlich sein, die App neu zu starten, damit bestimmte Änderungen wirksam werden.",
"system": "Systeme", "system": "Systeme",
@@ -222,6 +218,7 @@
"upload": "Hochladen", "upload": "Hochladen",
"upsideDown": "Upside Down", "upsideDown": "Upside Down",
"urlOrJson": "URL oder JSON", "urlOrJson": "URL oder JSON",
"useNoPwd": "Es wird kein Passwort verwendet.",
"user": "Benutzer", "user": "Benutzer",
"versionHaveUpdate": "Gefunden: v1.0.{build}, klicke zum Aktualisieren", "versionHaveUpdate": "Gefunden: v1.0.{build}, klicke zum Aktualisieren",
"versionUnknownUpdate": "Aktuell: v1.0.{build}. Klicken Sie hier, um nach Updates zu suchen", "versionUnknownUpdate": "Aktuell: v1.0.{build}. Klicken Sie hier, um nach Updates zu suchen",

View File

@@ -10,6 +10,7 @@
"all": "All", "all": "All",
"alreadyLastDir": "Already in last directory.", "alreadyLastDir": "Already in last directory.",
"alterUrl": "Alter url", "alterUrl": "Alter url",
"askContinue": "{msg}, continue?",
"attention": "Attention", "attention": "Attention",
"authRequired": "Auth required", "authRequired": "Auth required",
"auto": "Auto", "auto": "Auto",
@@ -45,6 +46,7 @@
"decompress": "Decompress", "decompress": "Decompress",
"delete": "Delete", "delete": "Delete",
"deleteServers": "Batch delete servers", "deleteServers": "Batch delete servers",
"dirEmpty": "Make sure dir is empty.",
"disabled": "Disabled", "disabled": "Disabled",
"disconnected": "Disconnected", "disconnected": "Disconnected",
"diskIgnorePath": "Ignore path for disk", "diskIgnorePath": "Ignore path for disk",
@@ -165,7 +167,6 @@
"restart": "Restart", "restart": "Restart",
"restore": "Restore", "restore": "Restore",
"restoreSuccess": "Restore success. Restart app to apply.", "restoreSuccess": "Restore success. Restart app to apply.",
"restoreSureWithDate": "Are you sure to restore from {date} ?",
"result": "Result", "result": "Result",
"rotateAngel": "Rotation angle", "rotateAngel": "Rotation angle",
"run": "Run", "run": "Run",
@@ -195,11 +196,6 @@
"stats": "Stats", "stats": "Stats",
"stop": "Stop", "stop": "Stop",
"success": "Success", "success": "Success",
"sureDelete": "Are you sure to delete [{name}]?",
"sureDirEmpty": "Make sure dir is empty.",
"sureNoPwd": "Are you sure to use no password?",
"sureStop": "Sure to stop [{item}] ?",
"sureToDeleteServer": "Are you sure to delete server [{server}]?",
"suspendTip": "The suspend function requires root privileges and systemd support.", "suspendTip": "The suspend function requires root privileges and systemd support.",
"syncTip": "After auto sync, a restart may be required for some changes to take effect.", "syncTip": "After auto sync, a restart may be required for some changes to take effect.",
"system": "System", "system": "System",
@@ -222,6 +218,7 @@
"upload": "Upload", "upload": "Upload",
"upsideDown": "Upside Down", "upsideDown": "Upside Down",
"urlOrJson": "URL or JSON", "urlOrJson": "URL or JSON",
"useNoPwd": "No password will be used.",
"user": "User", "user": "User",
"versionHaveUpdate": "Found: v1.0.{build}, click to update", "versionHaveUpdate": "Found: v1.0.{build}, click to update",
"versionUnknownUpdate": "Current: v1.0.{build}, click to check updates", "versionUnknownUpdate": "Current: v1.0.{build}, click to check updates",

View File

@@ -10,6 +10,7 @@
"all": "Semua", "all": "Semua",
"alreadyLastDir": "Sudah di direktori terakhir.", "alreadyLastDir": "Sudah di direktori terakhir.",
"alterUrl": "Alter url", "alterUrl": "Alter url",
"askContinue": "{msg}, lanjutkan?",
"attention": "Perhatian", "attention": "Perhatian",
"authRequired": "Auth diperlukan", "authRequired": "Auth diperlukan",
"auto": "Auto", "auto": "Auto",
@@ -45,6 +46,7 @@
"decompress": "Dekompresi", "decompress": "Dekompresi",
"delete": "Menghapus", "delete": "Menghapus",
"deleteServers": "Penghapusan server secara batch", "deleteServers": "Penghapusan server secara batch",
"dirEmpty": "Pastikan dir kosong.",
"disabled": "Dengan disabilitas", "disabled": "Dengan disabilitas",
"disconnected": "Terputus", "disconnected": "Terputus",
"diskIgnorePath": "Abaikan jalan untuk disk", "diskIgnorePath": "Abaikan jalan untuk disk",
@@ -165,7 +167,6 @@
"restart": "Mengulang kembali", "restart": "Mengulang kembali",
"restore": "Memulihkan", "restore": "Memulihkan",
"restoreSuccess": "Kembalikan kesuksesan. Mulai ulang aplikasi untuk diterapkan.", "restoreSuccess": "Kembalikan kesuksesan. Mulai ulang aplikasi untuk diterapkan.",
"restoreSureWithDate": "Apakah Anda pasti akan memulihkan dari {date}?",
"result": "Hasil", "result": "Hasil",
"rotateAngel": "Sudut rotasi", "rotateAngel": "Sudut rotasi",
"run": "Berlari", "run": "Berlari",
@@ -195,11 +196,6 @@
"stats": "Statistik", "stats": "Statistik",
"stop": "Berhenti", "stop": "Berhenti",
"success": "Kesuksesan", "success": "Kesuksesan",
"sureDelete": "Apakah Anda pasti akan menghapus [{name}]?",
"sureDirEmpty": "Pastikan dir kosong.",
"sureNoPwd": "Apakah Anda pasti tidak menggunakan kata sandi?",
"sureStop": "Anda yakin ingin menghentikan [{item}]?",
"sureToDeleteServer": "Apakah Anda pasti akan menghapus server [{server}]?",
"suspendTip": "Fungsi penangguhan memerlukan hak akses root dan dukungan systemd.", "suspendTip": "Fungsi penangguhan memerlukan hak akses root dan dukungan systemd.",
"syncTip": "Setelah sinkronisasi otomatis, mungkin perlu memulai ulang aplikasi agar perubahan tertentu dapat diterapkan.", "syncTip": "Setelah sinkronisasi otomatis, mungkin perlu memulai ulang aplikasi agar perubahan tertentu dapat diterapkan.",
"system": "Sistem", "system": "Sistem",
@@ -222,6 +218,7 @@
"upload": "Mengunggah", "upload": "Mengunggah",
"upsideDown": "Terbalik", "upsideDown": "Terbalik",
"urlOrJson": "URL atau JSON", "urlOrJson": "URL atau JSON",
"useNoPwd": "Tidak ada kata sandi yang akan digunakan.",
"user": "Username", "user": "Username",
"versionHaveUpdate": "Ditemukan: v1.0.{build}, klik untuk memperbarui", "versionHaveUpdate": "Ditemukan: v1.0.{build}, klik untuk memperbarui",
"versionUnknownUpdate": "Saat ini: v1.0.{build}. Klik untuk memeriksa pembaruan.", "versionUnknownUpdate": "Saat ini: v1.0.{build}. Klik untuk memeriksa pembaruan.",

View File

@@ -10,6 +10,7 @@
"all": "所有", "all": "所有",
"alreadyLastDir": "已经是最上层目录了", "alreadyLastDir": "已经是最上层目录了",
"alterUrl": "备选链接", "alterUrl": "备选链接",
"askContinue": "{msg},继续吗?",
"attention": "注意", "attention": "注意",
"authRequired": "需要认证", "authRequired": "需要认证",
"auto": "自动", "auto": "自动",
@@ -45,6 +46,7 @@
"decompress": "解压缩", "decompress": "解压缩",
"delete": "删除", "delete": "删除",
"deleteServers": "批量删除服务器", "deleteServers": "批量删除服务器",
"dirEmpty": "请确保文件夹为空",
"disabled": "已禁用", "disabled": "已禁用",
"disconnected": "连接断开", "disconnected": "连接断开",
"diskIgnorePath": "忽略的磁盘路径", "diskIgnorePath": "忽略的磁盘路径",
@@ -165,7 +167,6 @@
"restart": "重启", "restart": "重启",
"restore": "恢复", "restore": "恢复",
"restoreSuccess": "恢复成功需要重启App来应用更改", "restoreSuccess": "恢复成功需要重启App来应用更改",
"restoreSureWithDate": "确定恢复 {date} 的备份吗?",
"result": "结果", "result": "结果",
"rotateAngel": "旋转角度", "rotateAngel": "旋转角度",
"run": "运行", "run": "运行",
@@ -195,11 +196,6 @@
"stats": "统计", "stats": "统计",
"stop": "停止", "stop": "停止",
"success": "成功", "success": "成功",
"sureDelete": "确定删除 [{name}]",
"sureDirEmpty": "请确保文件夹为空",
"sureNoPwd": "确认使用无密码?",
"sureStop": "确定要停止 [{item}] 吗?",
"sureToDeleteServer": "你确定要删除服务器 [{server}] 吗?",
"suspendTip": "suspend 功能需要 root 权限及 systemd 支持。", "suspendTip": "suspend 功能需要 root 权限及 systemd 支持。",
"syncTip": "在自动同步后,可能需要重新启动,某些更改才能生效。", "syncTip": "在自动同步后,可能需要重新启动,某些更改才能生效。",
"system": "系统", "system": "系统",
@@ -222,6 +218,7 @@
"upload": "上传", "upload": "上传",
"upsideDown": "上下交换", "upsideDown": "上下交换",
"urlOrJson": "链接或JSON", "urlOrJson": "链接或JSON",
"useNoPwd": "将会使用无密码。",
"user": "用户", "user": "用户",
"versionHaveUpdate": "找到新版本v1.0.{build}, 点击更新", "versionHaveUpdate": "找到新版本v1.0.{build}, 点击更新",
"versionUnknownUpdate": "当前v1.0.{build},点击检查更新", "versionUnknownUpdate": "当前v1.0.{build},点击检查更新",

View File

@@ -10,6 +10,7 @@
"all": "所有", "all": "所有",
"alreadyLastDir": "已經是最上層目錄了", "alreadyLastDir": "已經是最上層目錄了",
"alterUrl": "備選鏈接", "alterUrl": "備選鏈接",
"askContinue": "{msg},繼續嗎?",
"attention": "注意", "attention": "注意",
"authRequired": "需要認證", "authRequired": "需要認證",
"auto": "自動", "auto": "自動",
@@ -45,6 +46,7 @@
"decompress": "解壓縮", "decompress": "解壓縮",
"delete": "刪除", "delete": "刪除",
"deleteServers": "批量刪除服務器", "deleteServers": "批量刪除服務器",
"dirEmpty": "請確保文件夾為空",
"disabled": "已禁用", "disabled": "已禁用",
"disconnected": "連接斷開", "disconnected": "連接斷開",
"diskIgnorePath": "忽略的磁盤路徑", "diskIgnorePath": "忽略的磁盤路徑",
@@ -165,7 +167,6 @@
"restart": "重啓", "restart": "重啓",
"restore": "恢復", "restore": "恢復",
"restoreSuccess": "恢復成功需要重啓App來應用更改", "restoreSuccess": "恢復成功需要重啓App來應用更改",
"restoreSureWithDate": "確定恢復 {date} 的備份嗎?",
"result": "結果", "result": "結果",
"rotateAngel": "旋轉角度", "rotateAngel": "旋轉角度",
"run": "運行", "run": "運行",
@@ -195,11 +196,6 @@
"stats": "統計", "stats": "統計",
"stop": "停止", "stop": "停止",
"success": "成功", "success": "成功",
"sureDelete": "確定刪除 [{name}]",
"sureDirEmpty": "請確保文件夾為空",
"sureNoPwd": "確認使用無密碼?",
"sureStop": "確定要停止 [{item}] 嗎?",
"sureToDeleteServer": "你確定要刪除服務器 [{server}] 嗎?",
"suspendTip": "suspend 功能需要 root 權限及 systemd 支持。", "suspendTip": "suspend 功能需要 root 權限及 systemd 支持。",
"syncTip": "在自動同步後,可能需要重新啟動,某些更改才能生效。", "syncTip": "在自動同步後,可能需要重新啟動,某些更改才能生效。",
"system": "系統", "system": "系統",
@@ -222,6 +218,7 @@
"upload": "上傳", "upload": "上傳",
"upsideDown": "上下交換", "upsideDown": "上下交換",
"urlOrJson": "鏈接或JSON", "urlOrJson": "鏈接或JSON",
"useNoPwd": "将使用無密碼。",
"user": "用戶", "user": "用戶",
"versionHaveUpdate": "找到新版本v1.0.{build}, 點擊更新", "versionHaveUpdate": "找到新版本v1.0.{build}, 點擊更新",
"versionUnknownUpdate": "當前v1.0.{build},點擊檢查更新", "versionUnknownUpdate": "當前v1.0.{build},點擊檢查更新",

View File

@@ -153,7 +153,9 @@ class BackupPage extends StatelessWidget {
await context.showRoundDialog( await context.showRoundDialog(
title: Text(l10n.restore), title: Text(l10n.restore),
child: Text(l10n.restoreSureWithDate(backup.date)), child: Text(l10n.askContinue(
'${l10n.restore} ${l10n.backup}(${backup.date})',
)),
actions: [ actions: [
TextButton( TextButton(
onPressed: () => context.pop(), onPressed: () => context.pop(),

View File

@@ -249,7 +249,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
void _showImageRmDialog(DockerImage e) { void _showImageRmDialog(DockerImage e) {
context.showRoundDialog( context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.sureDelete(e.repo)), child: Text(l10n.askContinue('${l10n.delete} Image(${e.repo})')),
actions: [ actions: [
TextButton( TextButton(
onPressed: () => context.pop(), onPressed: () => context.pop(),
@@ -365,7 +365,9 @@ class _DockerManagePageState extends State<DockerManagePage> {
case DockerMenuType.rm: case DockerMenuType.rm:
context.showRoundDialog( context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.sureDelete(dItem.name)), child: Text(l10n.askContinue(
'${l10n.delete} Container(${dItem.name})',
)),
actions: [ actions: [
TextButton( TextButton(
onPressed: () async { onPressed: () async {

View File

@@ -91,7 +91,9 @@ class _PrivateKeyEditPageState extends State<PrivateKeyEditPage> {
onPressed: () { onPressed: () {
context.showRoundDialog( context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.sureDelete(widget.pki!.id)), child: Text(l10n.askContinue(
'${l10n.delete} ${l10n.privateKey}(${widget.pki!.id})',
)),
actions: [ actions: [
TextButton( TextButton(
onPressed: () { onPressed: () {

View File

@@ -160,7 +160,9 @@ class _ProcessPageState extends State<ProcessPage> {
onLongPress: () { onLongPress: () {
context.showRoundDialog( context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.sureStop(proc.pid)), child: Text(l10n.askContinue(
'${l10n.stop} ${l10n.process}(${proc.pid})',
)),
actions: [ actions: [
TextButton( TextButton(
onPressed: () async { onPressed: () async {

View File

@@ -111,7 +111,9 @@ class _ServerEditPageState extends State<ServerEditPage> {
onPressed: () { onPressed: () {
context.showRoundDialog( context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.sureToDeleteServer(widget.spi!.name)), child: Text(l10n.askContinue(
'${l10n.delete} ${l10n.server}(${widget.spi!.name})',
)),
actions: [ actions: [
TextButton( TextButton(
onPressed: () { onPressed: () {
@@ -315,14 +317,14 @@ class _ServerEditPageState extends State<ServerEditPage> {
} }
void _onSave() async { void _onSave() async {
if (_ipController.text == '') { if (_ipController.text.isEmpty) {
context.showSnackBar(l10n.plzEnterHost); context.showSnackBar(l10n.plzEnterHost);
return; return;
} }
if (_keyIdx.value == null && _passwordController.text == '') { if (_keyIdx.value == null && _passwordController.text.isEmpty) {
final cancel = await context.showRoundDialog<bool>( final cancel = await context.showRoundDialog<bool>(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.sureNoPwd), child: Text(l10n.askContinue(l10n.useNoPwd)),
actions: [ actions: [
TextButton( TextButton(
onPressed: () => context.pop(false), onPressed: () => context.pop(false),

View File

@@ -3,6 +3,7 @@ import 'package:circle_chart/circle_chart.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart'; import 'package:get_it/get_it.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:toolbox/core/extension/context/common.dart';
import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/dialog.dart';
import 'package:toolbox/core/extension/context/locale.dart'; import 'package:toolbox/core/extension/context/locale.dart';
import 'package:toolbox/core/extension/media_queryx.dart'; import 'package:toolbox/core/extension/media_queryx.dart';
@@ -244,35 +245,38 @@ class _ServerPageState extends State<ServerPage>
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [ children: [
IconButton( IconButton(
onPressed: () async { onPressed: () => _askFor(
if (Stores.first.showSuspendTip.fetch()) { func: () async {
await context.showRoundDialog( if (Stores.first.showSuspendTip.fetch()) {
title: Text(l10n.attention), await context.showRoundDialog(
child: Text(l10n.suspendTip), title: Text(l10n.attention),
child: Text(l10n.suspendTip),
);
Stores.first.showSuspendTip.put(false);
}
srv.client?.execWithPwd(
ShellFunc.suspend.exec,
context: context,
); );
Stores.first.showSuspendTip.put(false); },
} msg: 'Suspend ${srv.spi.name}',
srv.client?.execWithPwd( ),
ShellFunc.suspend.exec,
context: context,
);
},
icon: const Icon(Icons.stop), icon: const Icon(Icons.stop),
tooltip: 'Suspend', tooltip: 'Suspend',
), ),
IconButton( IconButton(
onPressed: () => srv.client?.execWithPwd( onPressed: () => _askFor(func: () => srv.client?.execWithPwd(
ShellFunc.shutdown.exec, ShellFunc.shutdown.exec,
context: context, context: context,
), ), msg: 'Shutdown ${srv.spi.name}',),
icon: const Icon(Icons.power_off), icon: const Icon(Icons.power_off),
tooltip: 'Shutdown', tooltip: 'Shutdown',
), ),
IconButton( IconButton(
onPressed: () => srv.client?.execWithPwd( onPressed: () => _askFor(func: () => srv.client?.execWithPwd(
ShellFunc.reboot.exec, ShellFunc.reboot.exec,
context: context, context: context,
), ), msg: 'Reboot ${srv.spi.name}',),
icon: const Icon(Icons.restart_alt), icon: const Icon(Icons.restart_alt),
tooltip: 'Reboot', tooltip: 'Reboot',
), ),
@@ -531,4 +535,20 @@ class _ServerPageState extends State<ServerPage>
} }
return 107; return 107;
} }
void _askFor({required void Function() func, required String msg}) {
context.showRoundDialog(
title: Text(l10n.attention),
child: Text(l10n.askContinue(msg)),
actions: [
TextButton(
onPressed: () {
context.pop();
func();
},
child: Text(l10n.ok),
),
],
);
}
} }

View File

@@ -105,7 +105,9 @@ class _SettingPageState extends State<SettingPage> {
child: InkWell( child: InkWell(
onTap: () => context.showRoundDialog( onTap: () => context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.sureDelete(l10n.all)), child: Text(l10n.askContinue(
'${l10n.delete}: **${l10n.all}** ${l10n.setting}',
)),
actions: [ actions: [
TextButton( TextButton(
onPressed: () { onPressed: () {
@@ -113,8 +115,10 @@ class _SettingPageState extends State<SettingPage> {
context.pop(); context.pop();
context.showSnackBar(l10n.success); context.showSnackBar(l10n.success);
}, },
child: Text(l10n.ok, child: Text(
style: const TextStyle(color: Colors.red)), l10n.ok,
style: const TextStyle(color: Colors.red),
),
), ),
], ],
), ),
@@ -880,7 +884,9 @@ class _SettingPageState extends State<SettingPage> {
(e) => TextButton( (e) => TextButton(
onPressed: () => context.showRoundDialog( onPressed: () => context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.sureDelete(e)), child: Text(l10n.askContinue(
'${l10n.delete} ${l10n.server}($e)',
)),
actions: [ actions: [
TextButton( TextButton(
onPressed: () => Pros.server.delServer(e), onPressed: () => Pros.server.delServer(e),

View File

@@ -1,6 +1,7 @@
import 'package:after_layout/after_layout.dart'; import 'package:after_layout/after_layout.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/common.dart';
import 'package:toolbox/core/extension/context/dialog.dart';
import 'package:toolbox/core/extension/context/locale.dart'; import 'package:toolbox/core/extension/context/locale.dart';
import 'package:toolbox/core/extension/context/snackbar.dart'; import 'package:toolbox/core/extension/context/snackbar.dart';
import 'package:toolbox/data/res/provider.dart'; import 'package:toolbox/data/res/provider.dart';
@@ -56,8 +57,22 @@ class _SnippetEditPageState extends State<SnippetEditPage>
return [ return [
IconButton( IconButton(
onPressed: () { onPressed: () {
Pros.snippet.del(widget.snippet!); context.showRoundDialog(
context.pop(); title: Text(l10n.attention),
child: Text(l10n.askContinue(
'${l10n.delete} ${l10n.snippet}(${widget.snippet!.name})',
)),
actions: [
TextButton(
onPressed: () {
Pros.snippet.del(widget.snippet!);
context.pop();
context.pop();
},
child: Text(l10n.ok, style: UIs.textRed),
),
],
);
}, },
tooltip: l10n.delete, tooltip: l10n.delete,
icon: const Icon(Icons.delete), icon: const Icon(Icons.delete),

View File

@@ -410,8 +410,9 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
context.pop(); context.pop();
final isDir = file.attr.isDirectory; final isDir = file.attr.isDirectory;
final useRmrf = Stores.setting.sftpRmrfDir.fetch(); final useRmrf = Stores.setting.sftpRmrfDir.fetch();
final dirText = (isDir && !useRmrf) ? '\n${l10n.sureDirEmpty}' : ''; final dirText = (isDir && !useRmrf) ? '\n${l10n.dirEmpty}' : '';
final text = '${l10n.sureDelete(file.filename)}$dirText'; final text = l10n.askContinue(
'${l10n.delete} ${l10n.files}(${file.filename})\n$dirText');
final child = Text(text); final child = Text(text);
context.showRoundDialog( context.showRoundDialog(
child: child, child: child,
@@ -475,7 +476,7 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
), ),
TextButton( TextButton(
onPressed: () async { onPressed: () async {
if (textController.text == '') { if (textController.text.isEmpty) {
context.showRoundDialog( context.showRoundDialog(
child: Text(l10n.fieldMustNotEmpty), child: Text(l10n.fieldMustNotEmpty),
actions: [ actions: [
@@ -512,7 +513,7 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
actions: [ actions: [
TextButton( TextButton(
onPressed: () async { onPressed: () async {
if (textController.text == '') { if (textController.text.isEmpty) {
context.showRoundDialog( context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.fieldMustNotEmpty), child: Text(l10n.fieldMustNotEmpty),
@@ -553,7 +554,7 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
TextButton(onPressed: () => context.pop(), child: Text(l10n.cancel)), TextButton(onPressed: () => context.pop(), child: Text(l10n.cancel)),
TextButton( TextButton(
onPressed: () async { onPressed: () async {
if (textController.text == '') { if (textController.text.isEmpty) {
context.showRoundDialog( context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.fieldMustNotEmpty), child: Text(l10n.fieldMustNotEmpty),
@@ -566,7 +567,7 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
); );
return; return;
} }
await _status.client!.rename(file.filename, textController.text); await _status.client?.rename(file.filename, textController.text);
context.pop(); context.pop();
_listDir(); _listDir();
}, },
@@ -610,7 +611,8 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
/// Only return true if the path is changed /// Only return true if the path is changed
Future<bool> _listDir() async { Future<bool> _listDir() async {
context.showLoadingDialog(); // Allow dismiss, because may this op will take a long time
context.showLoadingDialog(barrierDismiss: true);
if (_status.client == null) { if (_status.client == null) {
final sftpc = await _client?.sftp(); final sftpc = await _client?.sftp();
_status.client = sftpc; _status.client = sftpc;

View File

@@ -137,7 +137,9 @@ class _SftpMissionPageState extends State<SftpMissionPage> {
return IconButton( return IconButton(
onPressed: () => context.showRoundDialog( onPressed: () => context.showRoundDialog(
title: Text(l10n.attention), title: Text(l10n.attention),
child: Text(l10n.sureDelete(name)), child: Text(l10n.askContinue(
'${l10n.delete} ${l10n.mission}($name)',
)),
actions: [ actions: [
TextButton( TextButton(
onPressed: () { onPressed: () {