opt.: migrate to new fl_lib (#649)

Fixes #648
This commit is contained in:
lollipopkit🏳️‍⚧️
2024-12-02 21:06:44 +08:00
committed by GitHub
parent b882baeafa
commit ddd32e82d4
50 changed files with 10858 additions and 225 deletions

View File

@@ -106,4 +106,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: ec6ef69056f066e8b21a3391082f23b5ad2d37f8 PODFILE CHECKSUM: ec6ef69056f066e8b21a3391082f23b5ad2d37f8
COCOAPODS: 1.15.2 COCOAPODS: 1.16.2

View File

@@ -682,7 +682,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -818,7 +818,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -846,7 +846,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -880,7 +880,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
@@ -919,7 +919,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -955,7 +955,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
@@ -990,7 +990,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
@@ -1031,7 +1031,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
PRODUCT_NAME = ServerBox; PRODUCT_NAME = ServerBox;
@@ -1069,7 +1069,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
PRODUCT_NAME = ServerBox; PRODUCT_NAME = ServerBox;

View File

@@ -1,4 +1,6 @@
arb-dir: lib/l10n arb-dir: lib/l10n
template-arb-file: app_en.arb template-arb-file: app_en.arb
output-localization-file: l10n.dart output-localization-file: l10n.dart
output-dir: lib/generated/l10n
synthetic-package: false
untranslated-messages-file: untranlated.json untranslated-messages-file: untranlated.json

View File

@@ -1,12 +1,13 @@
import 'package:dynamic_color/dynamic_color.dart'; import 'package:dynamic_color/dynamic_color.dart';
import 'package:fl_lib/fl_lib.dart'; import 'package:fl_lib/fl_lib.dart';
import 'package:fl_lib/l10n/gen_l10n/lib_l10n.dart'; import 'package:fl_lib/generated/l10n/lib_l10n.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:server_box/core/extension/context/locale.dart'; import 'package:server_box/core/extension/context/locale.dart';
import 'package:server_box/data/res/build_data.dart'; import 'package:server_box/data/res/build_data.dart';
import 'package:server_box/data/res/rebuild.dart'; import 'package:server_box/data/res/rebuild.dart';
import 'package:server_box/data/res/store.dart'; import 'package:server_box/data/res/store.dart';
import 'package:server_box/generated/l10n/l10n.dart';
import 'package:server_box/view/page/home/home.dart'; import 'package:server_box/view/page/home/home.dart';
import 'package:icons_plus/icons_plus.dart'; import 'package:icons_plus/icons_plus.dart';

View File

@@ -1,4 +1,4 @@
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:server_box/generated/l10n/l10n.dart';
import 'package:flutter_gen/gen_l10n/l10n_en.dart'; import 'package:server_box/generated/l10n/l10n_en.dart';
AppLocalizations l10n = AppLocalizationsEn(); AppLocalizations l10n = AppLocalizationsEn();

View File

@@ -2,13 +2,19 @@ import 'dart:io';
import 'package:fl_lib/fl_lib.dart'; import 'package:fl_lib/fl_lib.dart';
import 'package:server_box/data/model/app/backup.dart'; import 'package:server_box/data/model/app/backup.dart';
import 'package:server_box/data/store/no_backup.dart';
const bakSync = BakSyncer._(); const bakSync = BakSyncer._();
final icloud = ICloud(containerId: 'iCloud.tech.lolli.serverbox');
final class BakSyncer extends SyncIface<Backup> { final class BakSyncer extends SyncIface<Backup> {
const BakSyncer._() : super(); const BakSyncer._() : super();
@override
void init() {
Webdav.shared.prefix = 'serverbox/';
}
@override @override
Future<void> saveToFile() => Backup.backup(); Future<void> saveToFile() => Backup.backup();
@@ -19,21 +25,12 @@ final class BakSyncer extends SyncIface<Backup> {
} }
@override @override
Future<RemoteStorage?> get remoteStorage async { RemoteStorage? get remoteStorage {
if (isMacOS || isIOS) await icloud.init('iCloud.tech.lolli.serverbox'); final icloudEnabled = PrefProps.icloudSync.get();
final settings = NoBackupStore.instance;
await webdav.init(WebdavInitArgs(
url: settings.webdavUrl.fetch(),
user: settings.webdavUser.fetch(),
pwd: settings.webdavPwd.fetch(),
prefix: 'serverbox/',
));
final icloudEnabled = settings.icloudSync.fetch();
if (icloudEnabled) return icloud; if (icloudEnabled) return icloud;
final webdavEnabled = settings.webdavSync.fetch(); final webdavEnabled = PrefProps.webdavSync.get();
if (webdavEnabled) return webdav; if (webdavEnabled) return Webdav.shared;
return null; return null;
} }

View File

@@ -32,7 +32,7 @@ enum GenSSHClientStatus {
} }
String getPrivateKey(String id) { String getPrivateKey(String id) {
final pki = Stores.key.get(id); final pki = Stores.key.fetchOne(id);
if (pki == null) { if (pki == null) {
throw SSHErr( throw SSHErr(
type: SSHErrType.noPrivateKey, type: SSHErrType.noPrivateKey,

View File

@@ -46,19 +46,24 @@ class Backup implements Mergeable {
Map<String, dynamic> toJson() => _$BackupToJson(this); Map<String, dynamic> toJson() => _$BackupToJson(this);
Backup.loadFromStore() static Future<Backup> loadFromStore() async {
: version = backupFormatVersion, final lastModTime = Stores.lastModTime?.millisecondsSinceEpoch;
date = DateTime.now().toString().split('.').firstOrNull ?? '', return Backup(
spis = Stores.server.fetch(), version: backupFormatVersion,
snippets = Stores.snippet.fetch(), date: DateTime.now().toString().split('.').firstOrNull ?? '',
keys = Stores.key.fetch(), spis: Stores.server.fetch(),
container = Stores.container.box.toJson(), snippets: Stores.snippet.fetch(),
lastModTime = Stores.lastModTime, keys: Stores.key.fetch(),
history = Stores.history.box.toJson(), container: await Stores.container.getAllMap(),
settings = Stores.setting.box.toJson(); lastModTime: lastModTime,
history: await Stores.history.getAllMap(),
settings: await Stores.setting.getAllMap(),
);
}
static Future<String> backup([String? name]) async { static Future<String> backup([String? name]) async {
final result = _diyEncrypt(json.encode(Backup.loadFromStore().toJson())); final bak = await Backup.loadFromStore();
final result = _diyEncrypt(json.encode(bak.toJson()));
final path = Paths.doc.joinPath(name ?? Miscs.bakFileName); final path = Paths.doc.joinPath(name ?? Miscs.bakFileName);
await File(path).writeAsString(result); await File(path).writeAsString(result);
return path; return path;
@@ -66,7 +71,7 @@ class Backup implements Mergeable {
@override @override
Future<void> merge({bool force = false}) async { Future<void> merge({bool force = false}) async {
final curTime = Stores.lastModTime ?? 0; final curTime = Stores.lastModTime?.millisecondsSinceEpoch ?? 0;
final bakTime = lastModTime ?? 0; final bakTime = lastModTime ?? 0;
final shouldRestore = force || curTime < bakTime; final shouldRestore = force || curTime < bakTime;
if (!shouldRestore) { if (!shouldRestore) {

View File

@@ -36,7 +36,7 @@ class _AbsolutePath {
_path = newPath; _path = newPath;
return; return;
} }
_path = _path.joinPath(newPath, seperator: _sep); _path = _path.joinPath(newPath, separator: _sep);
} }
bool undo() { bool undo() {

View File

@@ -21,7 +21,7 @@ class SftpReq {
} }
if (spi.jumpId != null) { if (spi.jumpId != null) {
jumpSpi = Stores.server.box.get(spi.jumpId); jumpSpi = Stores.server.box.get(spi.jumpId);
jumpPrivateKey = Stores.key.get(jumpSpi?.keyId)?.key; jumpPrivateKey = Stores.key.fetchOne(jumpSpi?.keyId)?.key;
} }
} }
} }

View File

@@ -3,6 +3,6 @@
abstract class BuildData { abstract class BuildData {
static const String name = "ServerBox"; static const String name = "ServerBox";
static const int build = 1104; static const int build = 1110;
static const int script = 58; static const int script = 59;
} }

View File

@@ -16,7 +16,7 @@ abstract final class Stores {
static final history = HistoryStore.instance; static final history = HistoryStore.instance;
/// All stores that need backup /// All stores that need backup
static final List<PersistentStore> _allBackup = [ static final List<HiveStore> _allBackup = [
SettingStore.instance, SettingStore.instance,
ServerStore.instance, ServerStore.instance,
ContainerStore.instance, ContainerStore.instance,
@@ -30,11 +30,16 @@ abstract final class Stores {
await NoBackupStore.instance.init(); await NoBackupStore.instance.init();
} }
static int? get lastModTime { static DateTime? get lastModTime {
int? lastModTime = 0; DateTime? lastModTime;
for (final store in _allBackup) { for (final store in _allBackup) {
final last = store.box.lastModified ?? 0; final last = store.lastUpdateTs;
if (last > (lastModTime ?? 0)) { if (last == null) {
continue;
}
if (lastModTime == null) {
lastModTime = last;
} else if (last.isAfter(lastModTime)) {
lastModTime = last; lastModTime = last;
} }
} }

View File

@@ -4,7 +4,7 @@ import 'package:server_box/data/res/store.dart';
const _keyConfig = 'providerConfig'; const _keyConfig = 'providerConfig';
class ContainerStore extends PersistentStore { class ContainerStore extends HiveStore {
ContainerStore._() : super('docker'); ContainerStore._() : super('docker');
static final instance = ContainerStore._(); static final instance = ContainerStore._();
@@ -15,7 +15,7 @@ class ContainerStore extends PersistentStore {
void put(String id, String host) { void put(String id, String host) {
box.put(id, host); box.put(id, host);
box.updateLastModified(); updateLastUpdateTs();
} }
ContainerType getType([String id = '']) { ContainerType getType([String id = '']) {
@@ -30,7 +30,7 @@ class ContainerStore extends PersistentStore {
} }
ContainerType get defaultType { ContainerType get defaultType {
if (Stores.setting.usePodman.fetch()) return ContainerType.podman; if (Stores.setting.usePodman.get()) return ContainerType.podman;
return ContainerType.docker; return ContainerType.docker;
} }
@@ -40,6 +40,6 @@ class ContainerStore extends PersistentStore {
} else { } else {
box.put(_keyConfig + id, type.toString()); box.put(_keyConfig + id, type.toString());
} }
box.updateLastModified(); updateLastUpdateTs();
} }
} }

View File

@@ -18,7 +18,6 @@ class _ListHistory {
_history.remove(path); _history.remove(path);
_history.insert(0, path); _history.insert(0, path);
_box.put(_name, _history); _box.put(_name, _history);
_box.updateLastModified();
} }
List get all => _history; List get all => _history;
@@ -39,13 +38,12 @@ class _MapHistory {
void put(String id, String val) { void put(String id, String val) {
_history[id] = val; _history[id] = val;
_box.put(_name, _history); _box.put(_name, _history);
_box.updateLastModified();
} }
String? fetch(String id) => _history[id]; String? fetch(String id) => _history[id];
} }
class HistoryStore extends PersistentStore { class HistoryStore extends HiveStore {
HistoryStore._() : super('history'); HistoryStore._() : super('history');
static final instance = HistoryStore._(); static final instance = HistoryStore._();
@@ -58,5 +56,6 @@ class HistoryStore extends PersistentStore {
late final sshCmds = _ListHistory(box: box, name: 'sshCmds'); late final sshCmds = _ListHistory(box: box, name: 'sshCmds');
/// Notify users that this app will write script to server to works properly /// Notify users that this app will write script to server to works properly
late final writeScriptTipShown = property('writeScriptTipShown', false); late final writeScriptTipShown =
propertyDefault('writeScriptTipShown', false);
} }

View File

@@ -1,49 +1,72 @@
// ignore_for_file: non_constant_identifier_names
import 'package:fl_lib/fl_lib.dart'; import 'package:fl_lib/fl_lib.dart';
import 'package:server_box/data/res/build_data.dart';
import 'package:server_box/data/res/store.dart'; import 'package:server_box/data/res/store.dart';
final class NoBackupStore extends PersistentStore { final class NoBackupStore extends HiveStore {
NoBackupStore._() : super('no_backup'); NoBackupStore._() : super('no_backup');
static final instance = NoBackupStore._(); static final instance = NoBackupStore._();
/// Only valid on iOS and macOS /// Only valid on iOS and macOS
late final icloudSync = property('icloudSync', false); late final _icloudSync = propertyDefault('icloudSync', false);
/// Webdav sync /// Webdav sync
late final webdavSync = property('webdavSync', false); late final webdavSync = propertyDefault('webdavSync', false);
late final webdavUrl = property('webdavUrl', ''); late final webdavUrl = propertyDefault('webdavUrl', '');
late final webdavUser = property('webdavUser', ''); late final webdavUser = propertyDefault('webdavUser', '');
late final webdavPwd = property('webdavPwd', ''); late final webdavPwd = propertyDefault('webdavPwd', '');
void migrate() { void migrate(int lastVer) {
if (BuildData.build > 1076) return; if (lastVer > 1104) return;
// Settings store -> NoBackup store
final settings = Stores.setting; final settings = Stores.setting;
final icloudSync_ = settings.box.get('icloudSync'); final icloudSync_ = settings.box.get('icloudSync');
if (icloudSync_ is bool) { if (icloudSync_ is bool) {
icloudSync.put(icloudSync_); _icloudSync.set(icloudSync_);
settings.box.delete('icloudSync'); settings.box.delete('icloudSync');
} }
final webdavSync_ = settings.box.get('webdavSync'); final webdavSync_ = settings.box.get('webdavSync');
if (webdavSync_ is bool) { if (webdavSync_ is bool) {
webdavSync.put(webdavSync_); webdavSync.set(webdavSync_);
settings.box.delete('webdavSync'); settings.box.delete('webdavSync');
} }
final webdavUrl_ = settings.box.get('webdavUrl'); final webdavUrl_ = settings.box.get('webdavUrl');
if (webdavUrl_ is String) { if (webdavUrl_ is String) {
webdavUrl.put(webdavUrl_); webdavUrl.set(webdavUrl_);
settings.box.delete('webdavUrl'); settings.box.delete('webdavUrl');
} }
final webdavUser_ = settings.box.get('webdavUser'); final webdavUser_ = settings.box.get('webdavUser');
if (webdavUser_ is String) { if (webdavUser_ is String) {
webdavUser.put(webdavUser_); webdavUser.set(webdavUser_);
settings.box.delete('webdavUser'); settings.box.delete('webdavUser');
} }
final webdavPwd_ = settings.box.get('webdavPwd'); final webdavPwd_ = settings.box.get('webdavPwd');
if (webdavPwd_ is String) { if (webdavPwd_ is String) {
webdavPwd.put(webdavPwd_); webdavPwd.set(webdavPwd_);
settings.box.delete('webdavPwd'); settings.box.delete('webdavPwd');
} }
// NoBackup store -> Pref store
final icloudSync__ = _icloudSync.get();
PrefProps.icloudSync.set(icloudSync__);
_icloudSync.remove();
final webdavSync__ = webdavSync.get();
PrefProps.webdavSync.set(webdavSync__);
webdavSync.remove();
final webdavUrl__ = webdavUrl.get();
PrefProps.webdavUrl.set(webdavUrl__);
webdavUrl.remove();
final webdavUser__ = webdavUser.get();
PrefProps.webdavUser.set(webdavUser__);
webdavUser.remove();
final webdavPwd__ = webdavPwd.get();
PrefProps.webdavPwd.set(webdavPwd__);
webdavPwd.remove();
} }
} }

View File

@@ -2,14 +2,13 @@ import 'package:fl_lib/fl_lib.dart';
import 'package:server_box/data/model/server/private_key_info.dart'; import 'package:server_box/data/model/server/private_key_info.dart';
class PrivateKeyStore extends PersistentStore { class PrivateKeyStore extends HiveStore {
PrivateKeyStore._() : super('key'); PrivateKeyStore._() : super('key');
static final instance = PrivateKeyStore._(); static final instance = PrivateKeyStore._();
void put(PrivateKeyInfo info) { void put(PrivateKeyInfo info) {
box.put(info.id, info); set(info.id, info);
box.updateLastModified();
} }
List<PrivateKeyInfo> fetch() { List<PrivateKeyInfo> fetch() {
@@ -24,13 +23,12 @@ class PrivateKeyStore extends PersistentStore {
return ps; return ps;
} }
PrivateKeyInfo? get(String? id) { PrivateKeyInfo? fetchOne(String? id) {
if (id == null) return null; if (id == null) return null;
return box.get(id); return box.get(id);
} }
void delete(PrivateKeyInfo s) { void delete(PrivateKeyInfo s) {
box.delete(s.id); remove(s.id);
box.updateLastModified();
} }
} }

View File

@@ -2,14 +2,15 @@ import 'package:fl_lib/fl_lib.dart';
import 'package:server_box/data/model/server/server_private_info.dart'; import 'package:server_box/data/model/server/server_private_info.dart';
class ServerStore extends PersistentStore { class ServerStore extends HiveStore {
ServerStore._() : super('server'); ServerStore._() : super('server');
static final instance = ServerStore._(); static final instance = ServerStore._();
void put(Spi info) { void put(Spi info) {
box.put(info.id, info); // box.put(info.id, info);
box.updateLastModified(); // box.updateLastModified();
set(info.id, info);
} }
List<Spi> fetch() { List<Spi> fetch() {
@@ -25,13 +26,11 @@ class ServerStore extends PersistentStore {
} }
void delete(String id) { void delete(String id) {
box.delete(id); remove(id);
box.updateLastModified();
} }
void deleteAll() { void deleteAll() {
box.clear(); clear();
box.updateLastModified();
} }
void update(Spi old, Spi newInfo) { void update(Spi old, Spi newInfo) {

View File

@@ -6,7 +6,7 @@ import 'package:server_box/data/model/ssh/virtual_key.dart';
import 'package:server_box/data/model/app/net_view.dart'; import 'package:server_box/data/model/app/net_view.dart';
import 'package:server_box/data/res/default.dart'; import 'package:server_box/data/res/default.dart';
class SettingStore extends PersistentStore { class SettingStore extends HiveStore {
SettingStore._() : super('setting'); SettingStore._() : super('setting');
static final instance = SettingStore._(); static final instance = SettingStore._();
@@ -18,19 +18,19 @@ class SettingStore extends PersistentStore {
// item in the drawer of the home page) // item in the drawer of the home page)
/// Discussion #146 /// Discussion #146
late final serverTabUseOldUI = property('serverTabUseOldUI', false); late final serverTabUseOldUI = propertyDefault('serverTabUseOldUI', false);
/// Time out for server connect and more... /// Time out for server connect and more...
late final timeout = property('timeOut', 5); late final timeout = propertyDefault('timeOut', 5);
/// Record history of SFTP path and etc. /// Record history of SFTP path and etc.
late final recordHistory = property('recordHistory', true); late final recordHistory = propertyDefault('recordHistory', true);
/// Lanch page idx /// Lanch page idx
// late final launchPage = property('launchPage', Defaults.launchPageIdx); // late final launchPage = property('launchPage', Defaults.launchPageIdx);
/// Disk view: amount / IO /// Disk view: amount / IO
late final serverTabPreferDiskAmount = property( late final serverTabPreferDiskAmount = propertyDefault(
'serverTabPreferDiskAmount', 'serverTabPreferDiskAmount',
false, false,
); );
@@ -40,59 +40,60 @@ class SettingStore extends PersistentStore {
/// Bigger for bigger font size /// Bigger for bigger font size
/// 1.0 means 100% /// 1.0 means 100%
/// Warning: This may cause some UI issues /// Warning: This may cause some UI issues
late final textFactor = property('textFactor', 1.0); late final textFactor = propertyDefault('textFactor', 1.0);
/// The seed of color scheme /// The seed of color scheme
late final colorSeed = property('primaryColor', 4287106639); late final colorSeed = propertyDefault('primaryColor', 4287106639);
late final serverStatusUpdateInterval = property( late final serverStatusUpdateInterval = propertyDefault(
'serverStatusUpdateInterval', 'serverStatusUpdateInterval',
Defaults.updateInterval, Defaults.updateInterval,
); );
// Max retry count when connect to server // Max retry count when connect to server
late final maxRetryCount = property('maxRetryCount', 2); late final maxRetryCount = propertyDefault('maxRetryCount', 2);
// Night mode: 0 -> auto, 1 -> light, 2 -> dark, 3 -> AMOLED, 4 -> AUTO-AMOLED // Night mode: 0 -> auto, 1 -> light, 2 -> dark, 3 -> AMOLED, 4 -> AUTO-AMOLED
late final themeMode = property('themeMode', 0); late final themeMode = propertyDefault('themeMode', 0);
// Font file path // Font file path
late final fontPath = property('fontPath', ''); late final fontPath = propertyDefault('fontPath', '');
// Backgroud running (Android) // Backgroud running (Android)
late final bgRun = property('bgRun', isAndroid); late final bgRun = propertyDefault('bgRun', isAndroid);
// Server order // Server order
late final serverOrder = listProperty<String>('serverOrder', []); late final serverOrder = propertyDefault<List<String>>('serverOrder', []);
late final snippetOrder = listProperty<String>('snippetOrder', []); late final snippetOrder = propertyDefault<List<String>>('snippetOrder', []);
// Server details page cards order // Server details page cards order
late final detailCardOrder = listProperty( late final detailCardOrder = propertyDefault(
'detailCardOrder', 'detailCardOrder',
ServerDetailCards.values.map((e) => e.name).toList(), ServerDetailCards.values.map((e) => e.name).toList(),
); );
// SSH term font size // SSH term font size
late final termFontSize = property('termFontSize', 13.0); late final termFontSize = propertyDefault('termFontSize', 13.0);
// Locale // Locale
late final locale = property('locale', ''); late final locale = propertyDefault('locale', '');
// SSH virtual key (ctrl | alt) auto turn off // SSH virtual key (ctrl | alt) auto turn off
late final sshVirtualKeyAutoOff = property('sshVirtualKeyAutoOff', true); late final sshVirtualKeyAutoOff =
propertyDefault('sshVirtualKeyAutoOff', true);
late final editorFontSize = property('editorFontSize', 12.5); late final editorFontSize = propertyDefault('editorFontSize', 12.5);
// Editor theme // Editor theme
late final editorTheme = property('editorTheme', Defaults.editorTheme); late final editorTheme = propertyDefault('editorTheme', Defaults.editorTheme);
late final editorDarkTheme = late final editorDarkTheme =
property('editorDarkTheme', Defaults.editorDarkTheme); propertyDefault('editorDarkTheme', Defaults.editorDarkTheme);
late final fullScreen = property('fullScreen', false); late final fullScreen = propertyDefault('fullScreen', false);
late final fullScreenJitter = property('fullScreenJitter', true); late final fullScreenJitter = propertyDefault('fullScreenJitter', true);
// late final fullScreenRotateQuarter = property( // late final fullScreenRotateQuarter = property(
// 'fullScreenRotateQuarter', // 'fullScreenRotateQuarter',
@@ -104,140 +105,145 @@ class SettingStore extends PersistentStore {
// TextInputType.text.index, // TextInputType.text.index,
// ); // );
late final sshVirtKeys = listProperty( late final sshVirtKeys = propertyDefault(
'sshVirtKeys', 'sshVirtKeys',
VirtKeyX.defaultOrder.map((e) => e.index).toList(), VirtKeyX.defaultOrder.map((e) => e.index).toList(),
); );
late final netViewType = property('netViewType', NetViewType.speed); late final netViewType = propertyDefault('netViewType', NetViewType.speed);
// Only valid on iOS // Only valid on iOS
late final autoUpdateHomeWidget = property('autoUpdateHomeWidget', isIOS); late final autoUpdateHomeWidget =
propertyDefault('autoUpdateHomeWidget', isIOS);
late final autoCheckAppUpdate = property('autoCheckAppUpdate', true); late final autoCheckAppUpdate = propertyDefault('autoCheckAppUpdate', true);
/// Display server tab function buttons on the bottom of each server card if [true] /// Display server tab function buttons on the bottom of each server card if [true]
/// ///
/// Otherwise, display them on the top of server detail page /// Otherwise, display them on the top of server detail page
late final moveServerFuncs = property('moveOutServerTabFuncBtns', false); late final moveServerFuncs =
propertyDefault('moveOutServerTabFuncBtns', false);
/// Whether use `rm -r` to delete directory on SFTP /// Whether use `rm -r` to delete directory on SFTP
late final sftpRmrDir = property('sftpRmrDir', false); late final sftpRmrDir = propertyDefault('sftpRmrDir', false);
/// Whether use system's primary color as the app's primary color /// Whether use system's primary color as the app's primary color
late final useSystemPrimaryColor = property('useSystemPrimaryColor', false); late final useSystemPrimaryColor =
propertyDefault('useSystemPrimaryColor', false);
/// Only valid on iOS / Android / Windows /// Only valid on iOS / Android / Windows
late final useBioAuth = property('useBioAuth', false); late final useBioAuth = propertyDefault('useBioAuth', false);
/// The performance of highlight is bad /// The performance of highlight is bad
late final editorHighlight = property('editorHighlight', true); late final editorHighlight = propertyDefault('editorHighlight', true);
/// Open SFTP with last viewed path /// Open SFTP with last viewed path
late final sftpOpenLastPath = property('sftpOpenLastPath', true); late final sftpOpenLastPath = propertyDefault('sftpOpenLastPath', true);
/// Show folders first in SFTP file browser /// Show folders first in SFTP file browser
late final sftpShowFoldersFirst = property('sftpShowFoldersFirst', true); late final sftpShowFoldersFirst =
propertyDefault('sftpShowFoldersFirst', true);
/// Show tip of suspend /// Show tip of suspend
late final showSuspendTip = property('showSuspendTip', true); late final showSuspendTip = propertyDefault('showSuspendTip', true);
/// Whether collapse UI items by default /// Whether collapse UI items by default
late final collapseUIDefault = property('collapseUIDefault', true); late final collapseUIDefault = propertyDefault('collapseUIDefault', true);
late final serverFuncBtns = listProperty( late final serverFuncBtns = propertyDefault(
'serverBtns', 'serverBtns',
ServerFuncBtn.defaultIdxs, ServerFuncBtn.defaultIdxs,
); );
/// Docker is more popular than podman, set to `false` to use docker /// Docker is more popular than podman, set to `false` to use docker
late final usePodman = property('usePodman', false); late final usePodman = propertyDefault('usePodman', false);
/// Try to use `sudo` to run docker command /// Try to use `sudo` to run docker command
late final containerTrySudo = property('containerTrySudo', true); late final containerTrySudo = propertyDefault('containerTrySudo', true);
/// Keep previous server status when err occurs /// Keep previous server status when err occurs
late final keepStatusWhenErr = property('keepStatusWhenErr', false); late final keepStatusWhenErr = propertyDefault('keepStatusWhenErr', false);
/// Parse container stat /// Parse container stat
late final containerParseStat = property('containerParseStat', true); late final containerParseStat = propertyDefault('containerParseStat', true);
/// Auto refresh container status /// Auto refresh container status
late final contaienrAutoRefresh = property('contaienrAutoRefresh', true); late final contaienrAutoRefresh =
propertyDefault('contaienrAutoRefresh', true);
/// Use double column servers page on Desktop /// Use double column servers page on Desktop
late final doubleColumnServersPage = property( late final doubleColumnServersPage = propertyDefault(
'doubleColumnServersPage', 'doubleColumnServersPage',
true, true,
); );
/// Ignore local network device (eg: br-xxx, ovs-system...) /// Ignore local network device (eg: br-xxx, ovs-system...)
/// when building traffic view on server tab /// when building traffic view on server tab
//late final ignoreLocalNet = property('ignoreLocalNet', true); //late final ignoreLocalNet = propertyDefault('ignoreLocalNet', true);
/// Remerber pwd in memory /// Remerber pwd in memory
/// Used for [DialogX.showPwdDialog] /// Used for [DialogX.showPwdDialog]
late final rememberPwdInMem = property('rememberPwdInMem', true); late final rememberPwdInMem = propertyDefault('rememberPwdInMem', true);
/// SSH Term Theme /// SSH Term Theme
/// 0: follow app theme, 1: light, 2: dark /// 0: follow app theme, 1: light, 2: dark
late final termTheme = property('termTheme', 0); late final termTheme = propertyDefault('termTheme', 0);
/// Compatiablity for Chinese Android. /// Compatiablity for Chinese Android.
/// Set it to true, if you use Safe Keyboard on Chinese Android /// Set it to true, if you use Safe Keyboard on Chinese Android
// late final cnKeyboardComp = property('cnKeyboardComp', false); // late final cnKeyboardComp = propertyDefault('cnKeyboardComp', false);
late final lastVer = property('lastVer', 0); late final lastVer = propertyDefault('lastVer', 0);
/// Use CupertinoPageRoute for all routes /// Use CupertinoPageRoute for all routes
late final cupertinoRoute = property('cupertinoRoute', isIOS); late final cupertinoRoute = propertyDefault('cupertinoRoute', isIOS);
/// Hide title bar on desktop /// Hide title bar on desktop
late final hideTitleBar = property('hideTitleBar', isDesktop); late final hideTitleBar = propertyDefault('hideTitleBar', isDesktop);
/// Display CPU view as progress, also called as old CPU view /// Display CPU view as progress, also called as old CPU view
late final cpuViewAsProgress = property('cpuViewAsProgress', false); late final cpuViewAsProgress = propertyDefault('cpuViewAsProgress', false);
late final displayCpuIndex = property('displayCpuIndex', true); late final displayCpuIndex = propertyDefault('displayCpuIndex', true);
late final editorSoftWrap = property('editorSoftWrap', isIOS); late final editorSoftWrap = propertyDefault('editorSoftWrap', isIOS);
late final sshTermHelpShown = property('sshTermHelpShown', false); late final sshTermHelpShown = propertyDefault('sshTermHelpShown', false);
late final horizonVirtKey = property('horizonVirtKey', false); late final horizonVirtKey = propertyDefault('horizonVirtKey', false);
/// general wake lock /// general wake lock
late final generalWakeLock = property('generalWakeLock', false); late final generalWakeLock = propertyDefault('generalWakeLock', false);
/// ssh page /// ssh page
late final sshWakeLock = property('sshWakeLock', true); late final sshWakeLock = propertyDefault('sshWakeLock', true);
/// fmt: https://example.com/{DIST}-{BRIGHT}.png /// fmt: https://example.com/{DIST}-{BRIGHT}.png
late final serverLogoUrl = property('serverLogoUrl', ''); late final serverLogoUrl = propertyDefault('serverLogoUrl', '');
late final betaTest = property('betaTest', false); late final betaTest = propertyDefault('betaTest', false);
/// If it's empty, skip change window size. /// If it's empty, skip change window size.
/// Format: {width}x{height} /// Format: {width}x{height}
late final windowSize = property('windowSize', ''); late final windowSize = propertyDefault('windowSize', '');
late final introVer = property('introVer', 0); late final introVer = propertyDefault('introVer', 0);
late final letterCache = property('letterCache', false); late final letterCache = propertyDefault('letterCache', false);
/// Set it to `$EDITOR`, `vim` and etc. to use remote system editor in SSH terminal. /// Set it to `$EDITOR`, `vim` and etc. to use remote system editor in SSH terminal.
/// Set it empty to use local editor GUI. /// Set it empty to use local editor GUI.
late final sftpEditor = property('sftpEditor', ''); late final sftpEditor = propertyDefault('sftpEditor', '');
// Never show these settings for users // Never show these settings for users
// //
// ------BEGIN------ // ------BEGIN------
/// Version of store db /// Version of store db
late final storeVersion = property('storeVersion', 0); late final storeVersion = propertyDefault('storeVersion', 0);
/// Have notified user for notificaiton permission or not /// Have notified user for notificaiton permission or not
late final noNotiPerm = property('noNotiPerm', false); late final noNotiPerm = propertyDefault('noNotiPerm', false);
// ------END------ // ------END------
} }

View File

@@ -2,14 +2,15 @@ import 'package:fl_lib/fl_lib.dart';
import 'package:server_box/data/model/server/snippet.dart'; import 'package:server_box/data/model/server/snippet.dart';
class SnippetStore extends PersistentStore { class SnippetStore extends HiveStore {
SnippetStore._() : super('snippet'); SnippetStore._() : super('snippet');
static final instance = SnippetStore._(); static final instance = SnippetStore._();
void put(Snippet snippet) { void put(Snippet snippet) {
box.put(snippet.name, snippet); // box.put(snippet.name, snippet);
box.updateLastModified(); // box.updateLastModified();
set(snippet.name, snippet);
} }
List<Snippet> fetch() { List<Snippet> fetch() {
@@ -25,7 +26,8 @@ class SnippetStore extends PersistentStore {
} }
void delete(Snippet s) { void delete(Snippet s) {
box.delete(s.name); // box.delete(s.name);
box.updateLastModified(); // box.updateLastModified();
remove(s.name);
} }
} }

1507
lib/generated/l10n/l10n.dart Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for German (`de`).
class AppLocalizationsDe extends AppLocalizations {
AppLocalizationsDe([String locale = 'de']) : super(locale);
@override
String get aboutThanks => 'Vielen Dank an die folgenden Personen, die daran teilgenommen haben.\n';
@override
String get acceptBeta => 'Akzeptieren Sie Testversion-Updates';
@override
String get addSystemPrivateKeyTip => 'Derzeit haben Sie keinen privaten Schlüssel, fügen Sie den Schlüssel hinzu, der mit dem System geliefert wird (~/.ssh/id_rsa)?';
@override
String get added2List => 'Zur Aufgabenliste hinzugefügt';
@override
String get addr => 'Adresse';
@override
String get alreadyLastDir => 'Bereits im letzten Verzeichnis.';
@override
String get authFailTip => 'Authentifizierung fehlgeschlagen, bitte überprüfen Sie, ob das Passwort/Schlüssel/Host/Benutzer usw. falsch sind.';
@override
String get autoBackupConflict => 'Es kann nur eine automatische Sicherung gleichzeitig aktiviert werden.';
@override
String get autoConnect => 'Automatisch verbinden';
@override
String get autoRun => 'Automatischer Start';
@override
String get autoUpdateHomeWidget => 'Home-Widget automatisch aktualisieren';
@override
String get backupTip => 'Das Backup wird nur einfach verschlüsselt.\nBitte bewahre die Datei sicher auf.';
@override
String get backupVersionNotMatch => 'Die Backup-Version stimmt nicht überein.';
@override
String get battery => 'Batterie';
@override
String get bgRun => 'Hintergrundaktualisierung';
@override
String get bgRunTip => 'Dieser Schalter bedeutet nur, dass die App versuchen wird, im Hintergrund zu laufen. Ob sie im Hintergrund laufen kann, hängt davon ab, ob die Berechtigungen aktiviert sind oder nicht. Bei nativem Android deaktivieren Sie bitte \"Batterieoptimierung\" in dieser App, und bei miui ändern Sie bitte die Energiesparrichtlinie auf \"Unbegrenzt\".';
@override
String get cmd => 'Command';
@override
String get collapseUITip => 'Ob lange Listen in der Benutzeroberfläche standardmäßig eingeklappt werden sollen oder nicht';
@override
String get conn => 'Verbindung';
@override
String get container => 'Container';
@override
String get containerTrySudoTip => 'Zum Beispiel: In der App ist der Benutzer auf aaa eingestellt, aber Docker ist unter dem Root-Benutzer installiert. In diesem Fall müssen Sie diese Option aktivieren';
@override
String get convert => 'Konvertieren';
@override
String get copyPath => 'Pfad kopieren';
@override
String get cpuViewAsProgressTip => 'Zeigen Sie die Auslastung jedes CPUs in einem Fortschrittsbalken-Stil an (alter Stil)';
@override
String get cursorType => 'Cursor-Typ';
@override
String get customCmd => 'Benutzerdefinierte Befehle';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Befehlsname\": \"Befehl\"';
@override
String get decode => 'Decode';
@override
String get decompress => 'Dekomprimieren';
@override
String get deleteServers => 'Batch-Löschung von Servern';
@override
String get dirEmpty => 'Stelle sicher, dass der Ordner leer ist.';
@override
String get disconnected => 'Disconnected';
@override
String get disk => 'Festplatte';
@override
String get diskIgnorePath => 'Pfad für Datenträger ignorieren';
@override
String get displayCpuIndex => 'Zeigen Sie den CPU-Index an';
@override
String dl2Local(Object fileName) {
return 'Datei \"$fileName\" herunterladen?';
}
@override
String get dockerEmptyRunningItems => 'Es gibt keine laufenden Container.\nDas könnte daran liegen:\n- Der Docker-Installationsbenutzer ist nicht mit dem in der App konfigurierten Benutzernamen identisch.\n- Die Umgebungsvariable DOCKER_HOST wurde nicht korrekt gelesen. Sie können sie ermitteln, indem Sie `echo \$DOCKER_HOST` im Terminal ausführen.';
@override
String dockerImagesFmt(Object count) {
return '$count Image(s)';
}
@override
String get dockerNotInstalled => 'Docker ist nicht installiert';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount aktiv, $stoppedCount container gestoppt.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count Container aktiv';
}
@override
String get doubleColumnMode => 'Doppelspaltiger Modus';
@override
String get doubleColumnTip => 'Diese Option aktiviert nur die Funktion, ob sie tatsächlich aktiviert werden kann, hängt auch von der Breite des Geräts ab';
@override
String get editVirtKeys => 'Virtuelle Tasten bearbeiten';
@override
String get editor => 'Editor';
@override
String get editorHighlightTip => 'Die Leistung der aktuellen Codehervorhebung ist schlechter und kann zur Verbesserung optional ausgeschaltet werden.';
@override
String get encode => 'Encode';
@override
String get envVars => 'Umgebungsvariable';
@override
String get experimentalFeature => 'Experimentelles Feature';
@override
String get extraArgs => 'Extra args';
@override
String get fallbackSshDest => 'SSH-Fallback-Ziel';
@override
String get fdroidReleaseTip => 'Wenn Sie diese App von F-Droid heruntergeladen haben, wird empfohlen, diese Option zu deaktivieren.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'Datei \'$file\' ist zu groß $size, max $sizeMax';
}
@override
String get followSystem => 'System verfolgen';
@override
String get font => 'Schriftarten';
@override
String get fontSize => 'Schriftgröße';
@override
String get force => 'freiwillig';
@override
String get fullScreen => 'Vollbildmodus';
@override
String get fullScreenJitter => 'Jitter im Vollbildmodus';
@override
String get fullScreenJitterHelp => 'Einbrennen des Bildschirms verhindern';
@override
String get fullScreenTip => 'Soll der Vollbildmodus aktiviert werden, wenn das Gerät in den Quermodus gedreht wird? Diese Option gilt nur für die Server-Registerkarte.';
@override
String get goBackQ => 'Zurückkommen?';
@override
String get goto => 'Pfad öffnen';
@override
String get hideTitleBar => 'Titelleiste ausblenden';
@override
String get highlight => 'Code highlight';
@override
String get homeWidgetUrlConfig => 'Home-Widget-Link konfigurieren';
@override
String get host => 'Host';
@override
String httpFailedWithCode(Object code) {
return 'Anfrage fehlgeschlagen, Statuscode: $code';
}
@override
String get ignoreCert => 'Zertifikat ignorieren';
@override
String get image => 'Image';
@override
String get imagesList => 'Images';
@override
String get init => 'Initialisieren';
@override
String get inner => 'Eingebaut';
@override
String get install => 'install';
@override
String get installDockerWithUrl => 'Bitte installiere docker zuerst. https://docs.docker.com/engine/install';
@override
String get invalid => 'Ungültig';
@override
String get jumpServer => 'Server springen';
@override
String get keepForeground => 'Stelle sicher, dass die App geöffnet bleibt.';
@override
String get keepStatusWhenErr => 'Den letzten Serverstatus beibehalten';
@override
String get keepStatusWhenErrTip => 'Nur im Fehlerfall während der Ausführung des Skripts';
@override
String get keyAuth => 'Schlüsselauthentifzierung';
@override
String get letterCache => 'Buchstaben-Caching';
@override
String get letterCacheTip => 'Empfohlen, zu deaktivieren, aber nach dem Deaktivieren können keine CJK-Zeichen eingegeben werden.';
@override
String get license => 'Lizenzen';
@override
String get location => 'Standort';
@override
String get loss => 'loss';
@override
String madeWithLove(Object myGithub) {
return 'Erstellt mit ❤️ von $myGithub';
}
@override
String get manual => 'Handbuch';
@override
String get max => 'max';
@override
String get maxRetryCount => 'Anzahl an Verbindungsversuchen';
@override
String get maxRetryCountEqual0 => 'Unbegrenzte Verbindungsversuche zum Server';
@override
String get min => 'min';
@override
String get mission => 'Mission';
@override
String get more => 'Mehr';
@override
String get moveOutServerFuncBtnsHelp => 'Ein: kann unter jeder Karte auf der Registerkarte \"Server\" angezeigt werden. Aus: kann oben auf der Seite \"Serverdetails\" angezeigt werden.';
@override
String get ms => 'ms';
@override
String get needHomeDir => 'Wenn Sie ein Synology-Benutzer sind, [sehen Sie hier](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Benutzer anderer Systeme müssen suchen, wie man ein Home-Verzeichnis erstellt.';
@override
String get needRestart => 'App muss neugestartet werden';
@override
String get net => 'Netzwerk';
@override
String get netViewType => 'Netzwerkansicht Typ';
@override
String get newContainer => 'Neuer Container';
@override
String get noLineChart => 'Verwenden Sie keine Liniendiagramme';
@override
String get noLineChartForCpu => 'Verwenden Sie keine Liniendiagramme für CPU';
@override
String get noPrivateKeyTip => 'Der private Schlüssel existiert nicht, möglicherweise wurde er gelöscht oder es liegt ein Konfigurationsfehler vor.';
@override
String get noPromptAgain => 'Nicht mehr nachfragen';
@override
String get node => 'Knoten';
@override
String get notAvailable => 'Nicht verfügbar';
@override
String get onServerDetailPage => 'in Detailansicht des Servers';
@override
String get onlyOneLine => 'Nur als eine Zeile anzeigen (scrollbar)';
@override
String get onlyWhenCoreBiggerThan8 => 'Wirksam nur, wenn die Anzahl der Kerne > 8 ist.';
@override
String get openLastPath => 'Öffnen Sie den letzten Pfad';
@override
String get openLastPathTip => 'Verschiedene Server haben unterschiedliche Einträge, und der Eintrag ist der Pfad zum Ausgang';
@override
String get parseContainerStatsTip => 'Das Analysieren des Belegungsstatus durch Docker ist relativ langsam';
@override
String percentOfSize(Object percent, Object size) {
return '$percent% von $size';
}
@override
String get permission => 'Berechtigungen';
@override
String get pingAvg => 'Avg:';
@override
String get pingInputIP => 'Bitte gib eine Ziel-IP/Domain ein.';
@override
String get pingNoServer => 'Kein Server zum Anpingen.\nBitte füge einen Server hinzu.';
@override
String get pkg => 'Pkg';
@override
String get plugInType => 'Einfügetyp';
@override
String get port => 'Port';
@override
String get preview => 'Vorschau';
@override
String get privateKey => 'Private Key';
@override
String get process => 'Prozess';
@override
String get pushToken => 'Push Token';
@override
String get pveIgnoreCertTip => 'Nicht empfohlen, Achten Sie auf Sicherheitsrisiken! Wenn Sie das Standardzertifikat von PVE verwenden, müssen Sie diese Option aktivieren.';
@override
String get pveLoginFailed => 'Anmeldung fehlgeschlagen. Kann nicht mit Benutzername/Passwort aus der Serverkonfiguration angemeldet werden, um sich über Linux PAM anzumelden.';
@override
String get pveVersionLow => 'Diese Funktion befindet sich derzeit in der Testphase und wurde nur auf PVE 8+ getestet. Bitte verwenden Sie sie mit Vorsicht.';
@override
String get pwd => 'Passwort';
@override
String get read => 'Lesen';
@override
String get reboot => 'Neustart';
@override
String get rememberPwdInMem => 'Passwort im Speicher behalten';
@override
String get rememberPwdInMemTip => 'Für Container, Aufhängen usw.';
@override
String get rememberWindowSize => 'Fenstergröße merken';
@override
String get remotePath => 'Entfernte Pfade';
@override
String get restart => 'Neustart';
@override
String get result => 'Result';
@override
String get rotateAngel => 'Rotationswinkel';
@override
String get route => 'Routen';
@override
String get run => 'Ausführen';
@override
String get running => 'läuft';
@override
String get sameIdServerExist => 'Ein Server mit derselben ID existiert bereits';
@override
String get save => 'Speichern';
@override
String get saved => 'Gerettet';
@override
String get second => 's';
@override
String get sensors => 'Sensor';
@override
String get sequence => 'Sequenz';
@override
String get server => 'Server';
@override
String get serverDetailOrder => 'Reihenfolge der Widgets auf der Detailseite';
@override
String get serverFuncBtns => 'Server-Funktionsschaltflächen';
@override
String get serverOrder => 'Server-Bestellung';
@override
String get sftpDlPrepare => 'Verbindung vorbereiten...';
@override
String get sftpEditorTip => 'Wenn leer, verwenden Sie den im App integrierten Dateieditor. Wenn ein Wert vorhanden ist, wird der Editor des Remote-Servers verwendet, z.B. `vim` (es wird empfohlen, automatisch gemäß `EDITOR` zu ermitteln).';
@override
String get sftpRmrDirSummary => 'Verwenden Sie \"rm -r\", um das Verzeichnis in SFTP zu löschen.';
@override
String get sftpSSHConnected => 'SFTP Verbunden';
@override
String get sftpShowFoldersFirst => 'Ordner zuerst anzeigen';
@override
String get showDistLogo => 'Distributionslogo anzeigen';
@override
String get shutdown => 'Abschaltung';
@override
String get size => 'Größe';
@override
String get snippet => 'Snippet';
@override
String get softWrap => 'Weicher Umbruch';
@override
String get specifyDev => 'Gerät angeben';
@override
String get specifyDevTip => 'Zum Beispiel bezieht sich die Standard-Netzwerkverkehrsstatistik auf alle Geräte. Hier können Sie ein bestimmtes Gerät angeben.';
@override
String get speed => 'Tempo';
@override
String spentTime(Object time) {
return 'Benötigte Zeit: $time';
}
@override
String get sshTermHelp => 'Wenn das Terminal scrollbar ist, kann durch horizontales Ziehen Text ausgewählt werden. Durch Klicken auf die Tastentaste wird die Tastatur ein- oder ausgeschaltet. Das Dateisymbol öffnet den aktuellen Pfad SFTP. Die Zwischenablage-Schaltfläche kopiert den Inhalt, wenn Text ausgewählt ist, und fügt Inhalte aus der Zwischenablage in das Terminal ein, wenn kein Text ausgewählt ist und Inhalte in der Zwischenablage vorhanden sind. Das Codesymbol fügt Code-Schnipsel ins Terminal ein und führt sie aus.';
@override
String sshTip(Object url) {
return 'Diese Funktion befindet sich jetzt in der Experimentierphase.\n\nBitte melde Bugs auf $url oder mach mit bei der Entwicklung.';
}
@override
String get sshVirtualKeyAutoOff => 'Automatische Umschaltung der virtuellen Tasten';
@override
String get start => 'Start';
@override
String get stat => 'Statistik';
@override
String get stats => 'Statistik';
@override
String get stop => 'Stop';
@override
String get stopped => 'Ausgelaufen';
@override
String get storage => 'Speicher';
@override
String get supportFmtArgs => 'Die folgenden Formatierungsparameter werden unterstützt:';
@override
String get suspend => 'Suspend';
@override
String get suspendTip => 'Die Suspend-Funktion erfordert Root-Rechte und systemd-Unterstützung.';
@override
String switchTo(Object val) {
return 'Wechseln zu $val';
}
@override
String get sync => 'Sync';
@override
String get syncTip => 'Damit einige Änderungen wirksam werden, kann ein Neustart erforderlich sein.';
@override
String get system => 'Systeme';
@override
String get tag => 'Tags';
@override
String get temperature => 'Temperatur';
@override
String get termFontSizeTip => 'Diese Einstellung beeinflusst die Größe des Terminals (Breite und Höhe). Sie können die Terminalseite zoomen, um die Schriftgröße der aktuellen Sitzung anzupassen.';
@override
String get terminal => 'Terminal';
@override
String get test => 'Prüfung';
@override
String get textScaler => 'Skalierung der Schriftart';
@override
String get textScalerTip => '1.0 => 100% (Originalgröße), funktioniert nur auf der Serverseite Teil der Schrift, nicht empfohlen zu ändern.';
@override
String get theme => 'Themen';
@override
String get time => 'Zeit';
@override
String get times => 'x';
@override
String get total => 'Total';
@override
String get traffic => 'Durchflussmenge';
@override
String get trySudo => 'Versuche es mit sudo';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Unbekannt';
@override
String get unkownConvertMode => 'Unbekannter Konvertierungsmodus';
@override
String get update => 'Update';
@override
String get updateIntervalEqual0 => 'Wenn du den Wert 0 einstellst, wird nicht automatisch aktualisiert.\nDer CPU-Status kann nicht berechnet werden.';
@override
String get updateServerStatusInterval => 'Aktualisierungsintervall des Serverstatus';
@override
String get upload => 'Hochladen';
@override
String get upsideDown => 'Upside Down';
@override
String get uptime => 'Betriebszeit';
@override
String get useCdn => 'Verwenden von CDN';
@override
String get useCdnTip => 'Nicht-chinesischen Benutzern wird die Verwendung eines CDN empfohlen. Möchten Sie es verwenden?';
@override
String get useNoPwd => 'Es wird kein Passwort verwendet';
@override
String get usePodmanByDefault => 'Standardmäßige Verwendung von Podman';
@override
String get used => 'Gebraucht';
@override
String get view => 'Ansicht';
@override
String get viewErr => 'Fehler anzeigen';
@override
String get virtKeyHelpClipboard => 'In die Zwischenablage kopieren, wenn das ausgewählte Terminal nicht leer ist, andernfalls den Inhalt der Zwischenablage in das Terminal einfügen.';
@override
String get virtKeyHelpIME => 'Tastatur ein-/ausschalten';
@override
String get virtKeyHelpSFTP => 'Aktuelles Verzeichnis in SFTP öffnen.';
@override
String get waitConnection => 'Bitte warte, bis die Verbindung hergestellt wurde.';
@override
String get wakeLock => 'Wach halten';
@override
String get watchNotPaired => 'Keine gekoppelte Apple Watch';
@override
String get webdavSettingEmpty => 'Webdav-Einstellungen sind leer';
@override
String get whenOpenApp => 'Beim Öffnen der App';
@override
String get wolTip => 'Nach der Konfiguration von WOL (Wake-on-LAN) wird jedes Mal, wenn der Server verbunden wird, eine WOL-Anfrage gesendet.';
@override
String get write => 'Schreiben';
@override
String get writeScriptFailTip => 'Das Schreiben des Skripts ist fehlgeschlagen, möglicherweise aufgrund fehlender Berechtigungen oder das Verzeichnis existiert nicht.';
@override
String get writeScriptTip => 'Nach der Verbindung mit dem Server wird ein Skript in ~/.config/server_box geschrieben, um den Systemstatus zu überwachen. Sie können den Skriptinhalt überprüfen.';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for English (`en`).
class AppLocalizationsEn extends AppLocalizations {
AppLocalizationsEn([String locale = 'en']) : super(locale);
@override
String get aboutThanks => 'Thanks to the following people who participated in.';
@override
String get acceptBeta => 'Accept beta version updates';
@override
String get addSystemPrivateKeyTip => 'Currently private keys don\'t exist, do you want to add the one that comes with the system (~/.ssh/id_rsa)?';
@override
String get added2List => 'Added to task list';
@override
String get addr => 'Address';
@override
String get alreadyLastDir => 'Already in last directory.';
@override
String get authFailTip => 'Authentication failed, please check whether credentials are correct';
@override
String get autoBackupConflict => 'Only one automatic backup can be turned on at the same time.';
@override
String get autoConnect => 'Auto connect';
@override
String get autoRun => 'Auto run';
@override
String get autoUpdateHomeWidget => 'Automatic home widget update';
@override
String get backupTip => 'The exported data is weakly encrypted. \nPlease keep it safe.';
@override
String get backupVersionNotMatch => 'Backup version is not match.';
@override
String get battery => 'Battery';
@override
String get bgRun => 'Run in background';
@override
String get bgRunTip => 'This switch only means the program will try to run in the background. Whether it can run in the background depends on whether the permission is enabled or not. For AOSP-based Android ROMs, please disable \"Battery Optimization\" in this app. For MIUI / HyperOS, please change the power saving policy to \"Unlimited\".';
@override
String get cmd => 'Command';
@override
String get collapseUITip => 'Whether to collapse long lists present in the UI by default';
@override
String get conn => 'Connection';
@override
String get container => 'Container';
@override
String get containerTrySudoTip => 'For example: In the app, the user is set to aaa, but Docker is installed under the root user. In this case, you need to enable this option.';
@override
String get convert => 'Convert';
@override
String get copyPath => 'Copy path';
@override
String get cpuViewAsProgressTip => 'Display the usage of each CPU in a progress bar style (old style)';
@override
String get cursorType => 'Cursor type';
@override
String get customCmd => 'Custom commands';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Command Name\": \"Command\"';
@override
String get decode => 'Decode';
@override
String get decompress => 'Decompress';
@override
String get deleteServers => 'Batch delete servers';
@override
String get dirEmpty => 'Make sure the folder is empty.';
@override
String get disconnected => 'Disconnected';
@override
String get disk => 'Disk';
@override
String get diskIgnorePath => 'Ignore path for disk';
@override
String get displayCpuIndex => 'Display CPU index';
@override
String dl2Local(Object fileName) {
return 'Download $fileName to local?';
}
@override
String get dockerEmptyRunningItems => 'There are no running containers.\nThis could be because:\n- The Docker installation user is not the same as the username configured within the App.\n- The environment variable DOCKER_HOST was not read correctly. You can get it by running `echo \$DOCKER_HOST` in the terminal.';
@override
String dockerImagesFmt(Object count) {
return '$count images';
}
@override
String get dockerNotInstalled => 'Docker not installed';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount running, $stoppedCount container stopped.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count container running.';
}
@override
String get doubleColumnMode => 'Double column mode';
@override
String get doubleColumnTip => 'This option only enables the feature, whether it can actually be enabled depends on the width of the device';
@override
String get editVirtKeys => 'Edit virtual keys';
@override
String get editor => 'Editor';
@override
String get editorHighlightTip => 'The current code highlighting performance is not ideal and can be optionally turned off to improve.';
@override
String get encode => 'Encode';
@override
String get envVars => 'Environment variable';
@override
String get experimentalFeature => 'Experimental feature';
@override
String get extraArgs => 'Extra arguments';
@override
String get fallbackSshDest => 'Fallback SSH destination';
@override
String get fdroidReleaseTip => 'If you downloaded this app from F-Droid, it is recommended to turn off this option.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'File \'$file\' too large $size, max $sizeMax';
}
@override
String get followSystem => 'Follow system';
@override
String get font => 'Font';
@override
String get fontSize => 'Font size';
@override
String get force => 'Force';
@override
String get fullScreen => 'Full screen mode';
@override
String get fullScreenJitter => 'Full screen jitter';
@override
String get fullScreenJitterHelp => 'To avoid screen burn-in';
@override
String get fullScreenTip => 'Should full-screen mode be enabled when the device is rotated to landscape mode? This option only applies to the server tab.';
@override
String get goBackQ => 'Go back?';
@override
String get goto => 'Go to';
@override
String get hideTitleBar => 'Hide title bar';
@override
String get highlight => 'Code highlighting';
@override
String get homeWidgetUrlConfig => 'Config home widget url';
@override
String get host => 'Host';
@override
String httpFailedWithCode(Object code) {
return 'request failed, status code: $code';
}
@override
String get ignoreCert => 'Ignore certificate';
@override
String get image => 'Image';
@override
String get imagesList => 'Images list';
@override
String get init => 'Initialize';
@override
String get inner => 'Inner';
@override
String get install => 'install';
@override
String get installDockerWithUrl => 'Please https://docs.docker.com/engine/install docker first.';
@override
String get invalid => 'Invalid';
@override
String get jumpServer => 'Jump server';
@override
String get keepForeground => 'Keep app foreground!';
@override
String get keepStatusWhenErr => 'Preserve the last server state';
@override
String get keepStatusWhenErrTip => 'Only in the event of an error during script execution';
@override
String get keyAuth => 'Key Auth';
@override
String get letterCache => 'Letter caching';
@override
String get letterCacheTip => 'Recommended to disable, but after disabling, it will be impossible to input CJK characters.';
@override
String get license => 'License';
@override
String get location => 'Location';
@override
String get loss => 'loss';
@override
String madeWithLove(Object myGithub) {
return 'Made with ❤️ by $myGithub';
}
@override
String get manual => 'Manual';
@override
String get max => 'max';
@override
String get maxRetryCount => 'Number of server reconnections';
@override
String get maxRetryCountEqual0 => 'Will retry again and again.';
@override
String get min => 'min';
@override
String get mission => 'Mission';
@override
String get more => 'More';
@override
String get moveOutServerFuncBtnsHelp => 'On: can be displayed below each card on the Server Tab page. Off: can be displayed at the top of the Server Details page.';
@override
String get ms => 'ms';
@override
String get needHomeDir => 'If you are a Synology user, [see here](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Users of other systems need to search for how to create a home directory.';
@override
String get needRestart => 'App needs to be restarted';
@override
String get net => 'Network';
@override
String get netViewType => 'Network view type';
@override
String get newContainer => 'New container';
@override
String get noLineChart => 'Do not use line charts';
@override
String get noLineChartForCpu => 'Do not use line charts for CPU';
@override
String get noPrivateKeyTip => 'The private key does not exist, it may have been deleted or there is a configuration error.';
@override
String get noPromptAgain => 'Do not prompt again';
@override
String get node => 'Node';
@override
String get notAvailable => 'Unavailable';
@override
String get onServerDetailPage => 'On server detail page';
@override
String get onlyOneLine => 'Only display as one line (scrollable)';
@override
String get onlyWhenCoreBiggerThan8 => 'Works only when the number of cores is greater than 8';
@override
String get openLastPath => 'Open the last path';
@override
String get openLastPathTip => 'Different servers will have different logs, and the log is the path to the exit';
@override
String get parseContainerStatsTip => 'Parsing the occupancy status of Docker is relatively slow.';
@override
String percentOfSize(Object percent, Object size) {
return '$percent% of $size';
}
@override
String get permission => 'Permissions';
@override
String get pingAvg => 'Avg:';
@override
String get pingInputIP => 'Please input a target IP / domain.';
@override
String get pingNoServer => 'No server to ping.\nPlease add a server in server tab.';
@override
String get pkg => 'Pkg';
@override
String get plugInType => 'Insertion Type';
@override
String get port => 'Port';
@override
String get preview => 'Preview';
@override
String get privateKey => 'Private Key';
@override
String get process => 'Process';
@override
String get pushToken => 'Push token';
@override
String get pveIgnoreCertTip => 'Not recommended to enable, beware of security risks! If you are using the default certificate from PVE, you need to enable this option.';
@override
String get pveLoginFailed => 'Login failed. Unable to authenticate with username/password from server configuration for Linux PAM login.';
@override
String get pveVersionLow => 'This feature is currently in the testing phase and has only been tested on PVE 8+. Please use it with caution.';
@override
String get pwd => 'Password';
@override
String get read => 'Read';
@override
String get reboot => 'Reboot';
@override
String get rememberPwdInMem => 'Remember password in memory';
@override
String get rememberPwdInMemTip => 'Used for containers, suspending, etc.';
@override
String get rememberWindowSize => 'Remember window size';
@override
String get remotePath => 'Remote path';
@override
String get restart => 'Restart';
@override
String get result => 'Result';
@override
String get rotateAngel => 'Rotation angle';
@override
String get route => 'Routing';
@override
String get run => 'Run';
@override
String get running => 'Running';
@override
String get sameIdServerExist => 'A server with the same ID already exists';
@override
String get save => 'Save';
@override
String get saved => 'Saved';
@override
String get second => 's';
@override
String get sensors => 'Sensor';
@override
String get sequence => 'Sequence';
@override
String get server => 'Server';
@override
String get serverDetailOrder => 'Detail page widget order';
@override
String get serverFuncBtns => 'Server function buttons';
@override
String get serverOrder => 'Server order';
@override
String get sftpDlPrepare => 'Preparing to connect...';
@override
String get sftpEditorTip => 'If empty, use the built-in file editor of the app. If a value is present, use the remote servers editor, e.g., `vim` (recommended to automatically detect according to `EDITOR`).';
@override
String get sftpRmrDirSummary => 'Use `rm -r` to delete a folder in SFTP.';
@override
String get sftpSSHConnected => 'SFTP Connected';
@override
String get sftpShowFoldersFirst => 'Display folders first';
@override
String get showDistLogo => 'Show distribution logo';
@override
String get shutdown => 'Shutdown';
@override
String get size => 'Size';
@override
String get snippet => 'Snippet';
@override
String get softWrap => 'Soft wrap';
@override
String get specifyDev => 'Specify device';
@override
String get specifyDevTip => 'For example, network traffic statistics are by default for all devices. You can specify a particular device here.';
@override
String get speed => 'Speed';
@override
String spentTime(Object time) {
return 'Spent time: $time';
}
@override
String get sshTermHelp => 'When the terminal is scrollable, dragging horizontally can select text. Clicking the keyboard button turns the keyboard on/off. The file icon opens the current path SFTP. The clipboard button copies the content when text is selected, and pastes content from the clipboard into the terminal when no text is selected and there is content on the clipboard. The code icon pastes code snippets into the terminal and executes them.';
@override
String sshTip(Object url) {
return 'This function is now in the experimental stage.\n\nPlease report bugs on $url or join our development.';
}
@override
String get sshVirtualKeyAutoOff => 'Auto switching of virtual keys';
@override
String get start => 'Start';
@override
String get stat => 'Statistics';
@override
String get stats => 'Statistics';
@override
String get stop => 'Stop';
@override
String get stopped => 'Stopped';
@override
String get storage => 'Storage';
@override
String get supportFmtArgs => 'The following formatting parameters are supported:';
@override
String get suspend => 'Suspend';
@override
String get suspendTip => 'The suspend function requires root permission and systemd support.';
@override
String switchTo(Object val) {
return 'Switch to $val';
}
@override
String get sync => 'Sync';
@override
String get syncTip => 'A restart may be required for some changes to take effect.';
@override
String get system => 'System';
@override
String get tag => 'Tags';
@override
String get temperature => 'Temperature';
@override
String get termFontSizeTip => 'This setting will affect the terminal size (width and height). You can zoom in on the terminal page to adjust the font size of the current session.';
@override
String get terminal => 'Terminal';
@override
String get test => 'Test';
@override
String get textScaler => 'Text scaler';
@override
String get textScalerTip => '1.0 => 100% (original size), only works on server page part of the font, not recommended to change.';
@override
String get theme => 'Theme';
@override
String get time => 'Time';
@override
String get times => 'Times';
@override
String get total => 'Total';
@override
String get traffic => 'Traffic';
@override
String get trySudo => 'Try using sudo';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Unknown';
@override
String get unkownConvertMode => 'Unknown conversion mode';
@override
String get update => 'Update';
@override
String get updateIntervalEqual0 => 'You set to 0, will not update automatically.\nCan\'t calculate CPU status.';
@override
String get updateServerStatusInterval => 'Server status update interval';
@override
String get upload => 'Upload';
@override
String get upsideDown => 'Upside Down';
@override
String get uptime => 'Uptime';
@override
String get useCdn => 'Using CDN';
@override
String get useCdnTip => 'Non-Chinese users are recommended to use CDN. Would you like to use it?';
@override
String get useNoPwd => 'No password will be used';
@override
String get usePodmanByDefault => 'Use Podman by default';
@override
String get used => 'Used';
@override
String get view => 'View';
@override
String get viewErr => 'See error';
@override
String get virtKeyHelpClipboard => 'Copy to the clipboard if the selected terminal is not empty, otherwise paste the content of the clipboard to the terminal.';
@override
String get virtKeyHelpIME => 'Turn on/off the keyboard';
@override
String get virtKeyHelpSFTP => 'Open current directory in SFTP.';
@override
String get waitConnection => 'Please wait for the connection to be established.';
@override
String get wakeLock => 'Keep awake';
@override
String get watchNotPaired => 'No paired Apple Watch';
@override
String get webdavSettingEmpty => 'WebDav setting is empty';
@override
String get whenOpenApp => 'When opening the app';
@override
String get wolTip => 'After configuring WOL (Wake-on-LAN), a WOL request is sent each time the server is connected.';
@override
String get write => 'Write';
@override
String get writeScriptFailTip => 'Writing to the script failed, possibly due to lack of permissions or the directory does not exist.';
@override
String get writeScriptTip => 'After connecting to the server, a script will be written to ~/.config/server_box to monitor the system status. You can review the script content.';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for Spanish Castilian (`es`).
class AppLocalizationsEs extends AppLocalizations {
AppLocalizationsEs([String locale = 'es']) : super(locale);
@override
String get aboutThanks => 'Gracias a los siguientes participantes.';
@override
String get acceptBeta => 'Aceptar actualizaciones de la versión de prueba';
@override
String get addSystemPrivateKeyTip => 'Actualmente no hay ninguna llave privada, ¿quieres agregar la que viene por defecto en el sistema (~/.ssh/id_rsa)?';
@override
String get added2List => 'Añadido a la lista de tareas';
@override
String get addr => 'Dirección';
@override
String get alreadyLastDir => 'Ya estás en el directorio superior';
@override
String get authFailTip => 'La autenticación ha fallado, por favor verifica si la contraseña/llave/host/usuario, etc., son incorrectos.';
@override
String get autoBackupConflict => 'Solo se puede activar una copia de seguridad automática a la vez';
@override
String get autoConnect => 'Conexión automática';
@override
String get autoRun => 'Ejecución automática';
@override
String get autoUpdateHomeWidget => 'Actualizar automáticamente el widget del escritorio';
@override
String get backupTip => 'Los datos exportados solo están encriptados de manera básica, por favor guárdalos en un lugar seguro.';
@override
String get backupVersionNotMatch => 'La versión de la copia de seguridad no coincide, no se puede restaurar';
@override
String get battery => 'Batería';
@override
String get bgRun => 'Ejecución en segundo plano';
@override
String get bgRunTip => 'Este interruptor solo indica que la aplicación intentará correr en segundo plano, si puede hacerlo o no depende de si tiene el permiso correspondiente. En Android puro, por favor desactiva la “optimización de batería” para esta app, en MIUI por favor cambia la estrategia de ahorro de energía a “Sin restricciones”.';
@override
String get cmd => 'Comando';
@override
String get collapseUITip => '¿Colapsar por defecto las listas largas en la UI?';
@override
String get conn => 'Conectar';
@override
String get container => 'Contenedor';
@override
String get containerTrySudoTip => 'Por ejemplo: si configuras el usuario dentro de la app como aaa, pero Docker está instalado bajo el usuario root, entonces necesitarás habilitar esta opción';
@override
String get convert => 'Convertir';
@override
String get copyPath => 'Copiar ruta';
@override
String get cpuViewAsProgressTip => 'Muestre la tasa de uso de cada CPU en estilo de barra de progreso (estilo antiguo)';
@override
String get cursorType => 'Tipo de cursor';
@override
String get customCmd => 'Comandos personalizados';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Nombre del comando\": \"Comando\"';
@override
String get decode => 'Decodificar';
@override
String get decompress => 'Descomprimir';
@override
String get deleteServers => 'Eliminar servidores en lote';
@override
String get dirEmpty => 'Asegúrate de que el directorio esté vacío';
@override
String get disconnected => 'Desconectado';
@override
String get disk => 'Disco';
@override
String get diskIgnorePath => 'Rutas de disco ignoradas';
@override
String get displayCpuIndex => 'Muestre el índice de CPU';
@override
String dl2Local(Object fileName) {
return '¿Descargar $fileName a local?';
}
@override
String get dockerEmptyRunningItems => 'No hay contenedores en ejecución.\nEsto podría deberse a que:\n- El usuario con el que se instaló Docker es diferente al configurado en la app\n- La variable de entorno DOCKER_HOST no se ha leído correctamente. Puedes obtenerla ejecutando `echo \$DOCKER_HOST` en el terminal.';
@override
String dockerImagesFmt(Object count) {
return 'Total de $count imágenes';
}
@override
String get dockerNotInstalled => 'Docker no está instalado';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount en ejecución, $stoppedCount detenidos';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count contenedores en ejecución';
}
@override
String get doubleColumnMode => 'Modo de doble columna';
@override
String get doubleColumnTip => 'Esta opción solo habilita la función, si se puede activar o no depende del ancho del dispositivo';
@override
String get editVirtKeys => 'Editar teclas virtuales';
@override
String get editor => 'Editor';
@override
String get editorHighlightTip => 'El rendimiento del resaltado de código es bastante pobre actualmente, puedes elegir desactivarlo para mejorar.';
@override
String get encode => 'Codificar';
@override
String get envVars => 'Variable de entorno';
@override
String get experimentalFeature => 'Función experimental';
@override
String get extraArgs => 'Argumentos extra';
@override
String get fallbackSshDest => 'Destino SSH alternativo';
@override
String get fdroidReleaseTip => 'Si descargaste esta aplicación desde F-Droid, se recomienda desactivar esta opción.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'El archivo \'$file\' es demasiado grande \'$size\', supera el $sizeMax';
}
@override
String get followSystem => 'Seguir al sistema';
@override
String get font => 'Fuente';
@override
String get fontSize => 'Tamaño de fuente';
@override
String get force => 'Forzar';
@override
String get fullScreen => 'Modo pantalla completa';
@override
String get fullScreenJitter => 'Temblores en modo pantalla completa';
@override
String get fullScreenJitterHelp => 'Prevención de quemaduras de pantalla';
@override
String get fullScreenTip => '¿Debe habilitarse el modo de pantalla completa cuando el dispositivo se rote al modo horizontal? Esta opción solo se aplica a la pestaña del servidor.';
@override
String get goBackQ => '¿Regresar?';
@override
String get goto => 'Ir a';
@override
String get hideTitleBar => 'Ocultar barra de título';
@override
String get highlight => 'Resaltar código';
@override
String get homeWidgetUrlConfig => 'Configuración de URL del widget de inicio';
@override
String get host => 'Anfitrión';
@override
String httpFailedWithCode(Object code) {
return 'Fallo en la solicitud, código de estado: $code';
}
@override
String get ignoreCert => 'Ignorar certificado';
@override
String get image => 'Imagen';
@override
String get imagesList => 'Lista de imágenes';
@override
String get init => 'Inicializar';
@override
String get inner => 'Interno';
@override
String get install => 'Instalar';
@override
String get installDockerWithUrl => 'Por favor instala Docker primero desde https://docs.docker.com/engine/install';
@override
String get invalid => 'Inválido';
@override
String get jumpServer => 'Servidor de salto';
@override
String get keepForeground => '¡Por favor, mantén la app en primer plano!';
@override
String get keepStatusWhenErr => 'Mantener el estado anterior del servidor';
@override
String get keepStatusWhenErrTip => 'Solo aplica cuando hay errores al ejecutar scripts';
@override
String get keyAuth => 'Autenticación con llave';
@override
String get letterCache => 'Caché de letras';
@override
String get letterCacheTip => 'Recomendado desactivar, pero después de desactivarlo, no se podrán ingresar caracteres CJK.';
@override
String get license => 'Licencia de código abierto';
@override
String get location => 'Ubicación';
@override
String get loss => 'Tasa de pérdida';
@override
String madeWithLove(Object myGithub) {
return 'Hecho con ❤️ por $myGithub';
}
@override
String get manual => 'Manual';
@override
String get max => 'Máximo';
@override
String get maxRetryCount => 'Número máximo de reintentos de conexión al servidor';
@override
String get maxRetryCountEqual0 => 'Reintentará infinitamente';
@override
String get min => 'Mínimo';
@override
String get mission => 'Misión';
@override
String get more => 'Más';
@override
String get moveOutServerFuncBtnsHelp => 'Activado: se mostrará debajo de cada tarjeta en la página de servidores. Desactivado: se mostrará en la parte superior de los detalles del servidor.';
@override
String get ms => 'milisegundos';
@override
String get needHomeDir => 'Si eres usuario de Synology, [consulta aquí](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Los usuarios de otros sistemas deben buscar cómo crear un directorio home.';
@override
String get needRestart => 'Necesita reiniciar la app';
@override
String get net => 'Red';
@override
String get netViewType => 'Tipo de vista de red';
@override
String get newContainer => 'Crear contenedor nuevo';
@override
String get noLineChart => 'No utilice gráficos de líneas';
@override
String get noLineChartForCpu => 'No utilice gráficos lineales para la CPU';
@override
String get noPrivateKeyTip => 'La clave privada no existe, puede haber sido eliminada o hay un error de configuración.';
@override
String get noPromptAgain => 'No volver a preguntar';
@override
String get node => 'Nodo';
@override
String get notAvailable => 'No disponible';
@override
String get onServerDetailPage => 'En la página de detalles del servidor';
@override
String get onlyOneLine => 'Mostrar solo en una línea (desplazable)';
@override
String get onlyWhenCoreBiggerThan8 => 'Efectivo solo cuando el número de núcleos > 8';
@override
String get openLastPath => 'Abrir el último camino';
@override
String get openLastPathTip => 'Los diferentes servidores tendrán diferentes registros, y lo que se registra es la ruta de salida';
@override
String get parseContainerStatsTip => 'El análisis del estado de uso de Docker es bastante lento';
@override
String percentOfSize(Object percent, Object size) {
return 'El $percent% de $size';
}
@override
String get permission => 'Permisos';
@override
String get pingAvg => 'Promedio:';
@override
String get pingInputIP => 'Por favor, introduce la IP de destino o el dominio';
@override
String get pingNoServer => 'No hay servidores disponibles para hacer Ping\nPor favor, añade un servidor en la pestaña de servidores y vuelve a intentarlo';
@override
String get pkg => 'Gestión de paquetes';
@override
String get plugInType => 'Tipo de inserción';
@override
String get port => 'Puerto';
@override
String get preview => 'Vista previa';
@override
String get privateKey => 'Llave privada';
@override
String get process => 'Proceso';
@override
String get pushToken => 'Token de notificaciones';
@override
String get pveIgnoreCertTip => 'No se recomienda activarlo, ¡tenga cuidado con los riesgos de seguridad! Si está utilizando el certificado predeterminado de PVE, debe habilitar esta opción.';
@override
String get pveLoginFailed => 'Fallo al iniciar sesión. No se puede autenticar con el nombre de usuario/contraseña de la configuración del servidor para el inicio de sesión de Linux PAM.';
@override
String get pveVersionLow => 'Esta función está actualmente en fase de prueba y solo se ha probado en PVE 8+. Úsela con precaución.';
@override
String get pwd => 'Contraseña';
@override
String get read => 'Leer';
@override
String get reboot => 'Reiniciar';
@override
String get rememberPwdInMem => 'Recordar contraseña en la memoria';
@override
String get rememberPwdInMemTip => 'Utilizado para contenedores, suspensión, etc.';
@override
String get rememberWindowSize => 'Recordar el tamaño de la ventana';
@override
String get remotePath => 'Ruta remota';
@override
String get restart => 'Reiniciar';
@override
String get result => 'Resultado';
@override
String get rotateAngel => 'Ángulo de rotación';
@override
String get route => 'Enrutamiento';
@override
String get run => 'Ejecutar';
@override
String get running => 'En ejecución';
@override
String get sameIdServerExist => 'Ya existe un servidor con el mismo ID';
@override
String get save => 'Guardar';
@override
String get saved => 'Guardado';
@override
String get second => 'Segundo';
@override
String get sensors => 'Sensores';
@override
String get sequence => 'Secuencia';
@override
String get server => 'Servidor';
@override
String get serverDetailOrder => 'Orden de los componentes en la página de detalles del servidor';
@override
String get serverFuncBtns => 'Botones de función del servidor';
@override
String get serverOrder => 'Orden del servidor';
@override
String get sftpDlPrepare => 'Preparando para conectar al servidor...';
@override
String get sftpEditorTip => 'Si está vacío, use el editor de archivos incorporado de la aplicación. Si hay un valor, use el editor del servidor remoto, por ejemplo, `vim` (se recomienda detectar automáticamente según `EDITOR`).';
@override
String get sftpRmrDirSummary => 'Usar `rm -r` en SFTP para eliminar directorios';
@override
String get sftpSSHConnected => 'SFTP conectado...';
@override
String get sftpShowFoldersFirst => 'Mostrar carpetas primero';
@override
String get showDistLogo => 'Mostrar logo de distribución';
@override
String get shutdown => 'Apagar';
@override
String get size => 'Tamaño';
@override
String get snippet => 'Fragmento de código';
@override
String get softWrap => 'Salto de línea suave';
@override
String get specifyDev => 'Especificar dispositivo';
@override
String get specifyDevTip => 'Por ejemplo, las estadísticas de tráfico de red son por defecto para todos los dispositivos. Aquí puede especificar un dispositivo en particular.';
@override
String get speed => 'Velocidad';
@override
String spentTime(Object time) {
return 'Tiempo gastado: $time';
}
@override
String get sshTermHelp => 'Cuando el terminal es desplazable, arrastrar horizontalmente puede seleccionar texto. Hacer clic en el botón del teclado enciende/apaga el teclado. El icono de archivo abre el SFTP de la ruta actual. El botón del portapapeles copia el contenido cuando se selecciona texto y pega el contenido del portapapeles en el terminal cuando no se selecciona texto y hay contenido en el portapapeles. El icono de código pega fragmentos de código en el terminal y los ejecuta.';
@override
String sshTip(Object url) {
return 'Esta función está en fase de pruebas.\n\nPor favor, informa los problemas en $url, o únete a nuestro desarrollo.';
}
@override
String get sshVirtualKeyAutoOff => 'Desactivación automática de teclas virtuales';
@override
String get start => 'Iniciar';
@override
String get stat => 'Estadísticas';
@override
String get stats => 'Estadísticas';
@override
String get stop => 'Detener';
@override
String get stopped => 'Detenido';
@override
String get storage => 'Almacenamiento';
@override
String get supportFmtArgs => 'Soporta los siguientes argumentos de formato:';
@override
String get suspend => 'Suspender';
@override
String get suspendTip => 'La función de suspender necesita permisos de root y soporte de systemd.';
@override
String switchTo(Object val) {
return 'Cambiar a $val';
}
@override
String get sync => 'Sincronizar';
@override
String get syncTip => 'Puede que necesites reiniciar para que algunos cambios tengan efecto.';
@override
String get system => 'Sistema';
@override
String get tag => 'Etiqueta';
@override
String get temperature => 'Temperatura';
@override
String get termFontSizeTip => 'Este ajuste afectará el tamaño del terminal (ancho y alto). Puedes hacer zoom en la página del terminal para ajustar el tamaño de fuente de la sesión actual.';
@override
String get terminal => 'Terminal';
@override
String get test => 'Prueba';
@override
String get textScaler => 'Escalar texto';
@override
String get textScalerTip => '1.0 => 100% (tamaño original), solo afecta a ciertas fuentes en la página del servidor, no se recomienda modificar.';
@override
String get theme => 'Tema';
@override
String get time => 'Tiempo';
@override
String get times => 'Veces';
@override
String get total => 'Total';
@override
String get traffic => 'Tráfico';
@override
String get trySudo => 'Intentar con sudo';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Desconocido';
@override
String get unkownConvertMode => 'Modo de conversión desconocido';
@override
String get update => 'Actualizar';
@override
String get updateIntervalEqual0 => 'Si configuras esto a 0, el estado del servidor no se refrescará automáticamente.\nY no se podrá calcular el uso de CPU.';
@override
String get updateServerStatusInterval => 'Intervalo de actualización del estado del servidor';
@override
String get upload => 'Subir';
@override
String get upsideDown => 'Invertir arriba por abajo';
@override
String get uptime => 'Tiempo de actividad';
@override
String get useCdn => 'Usando CDN';
@override
String get useCdnTip => 'Se recomienda a los usuarios no chinos utilizar CDN. ¿Le gustaría utilizarlo?';
@override
String get useNoPwd => 'Se usará sin contraseña';
@override
String get usePodmanByDefault => 'Usar Podman por defecto';
@override
String get used => 'Usado';
@override
String get view => 'Vista';
@override
String get viewErr => 'Ver error';
@override
String get virtKeyHelpClipboard => 'Si el terminal tiene caracteres seleccionados, entonces copiará los caracteres seleccionados al portapapeles, de lo contrario, pegará el contenido del portapapeles al terminal.';
@override
String get virtKeyHelpIME => 'Encender/apagar el teclado';
@override
String get virtKeyHelpSFTP => 'Abrir la ruta actual en SFTP.';
@override
String get waitConnection => 'Por favor, espera a que la conexión se establezca';
@override
String get wakeLock => 'Mantener despierto';
@override
String get watchNotPaired => 'No hay un Apple Watch emparejado';
@override
String get webdavSettingEmpty => 'La configuración de Webdav está vacía';
@override
String get whenOpenApp => 'Al abrir la App';
@override
String get wolTip => 'Después de configurar WOL (Wake-on-LAN), se envía una solicitud de WOL cada vez que se conecta el servidor.';
@override
String get write => 'Escribir';
@override
String get writeScriptFailTip => 'La escritura en el script falló, posiblemente por falta de permisos o porque el directorio no existe.';
@override
String get writeScriptTip => 'Después de conectarse al servidor, se escribirá un script en ~/.config/server_box para monitorear el estado del sistema. Puedes revisar el contenido del script.';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for French (`fr`).
class AppLocalizationsFr extends AppLocalizations {
AppLocalizationsFr([String locale = 'fr']) : super(locale);
@override
String get aboutThanks => 'Merci aux personnes suivantes qui ont participé.';
@override
String get acceptBeta => 'Accepter les mises à jour de la version de test';
@override
String get addSystemPrivateKeyTip => 'Actuellement, vous n\'avez aucune clé privée. Souhaitez-vous ajouter celle qui vient avec le système (~/.ssh/id_rsa) ?';
@override
String get added2List => 'Ajouté à la liste des tâches';
@override
String get addr => 'Adresse';
@override
String get alreadyLastDir => 'Déjà dans le dernier répertoire.';
@override
String get authFailTip => 'Échec de l\'authentification. Veuillez vérifier si le mot de passe/clé/hôte/utilisateur, etc., est incorrect.';
@override
String get autoBackupConflict => 'Un seul sauvegarde automatique peut être activé en même temps.';
@override
String get autoConnect => 'Connexion automatique';
@override
String get autoRun => 'Exécution automatique';
@override
String get autoUpdateHomeWidget => 'Mise à jour automatique du widget d\'accueil';
@override
String get backupTip => 'Les données exportées sont simplement chiffrées. \nVeuillez les garder en sécurité.';
@override
String get backupVersionNotMatch => 'La version de sauvegarde ne correspond pas.';
@override
String get battery => 'Batterie';
@override
String get bgRun => 'Exécution en arrière-plan';
@override
String get bgRunTip => 'Cette option signifie seulement que le programme essaiera de s\'exécuter en arrière-plan, que cela soit possible dépend de l\'autorisation activée ou non. Pour Android natif, veuillez désactiver l\'« Optimisation de la batterie » dans cette application, et pour MIUI, veuillez changer la politique d\'économie d\'énergie en « Illimité ».';
@override
String get cmd => 'Commande';
@override
String get collapseUITip => 'Indique si les longues listes présentées dans l\'interface utilisateur doivent être réduites par défaut.';
@override
String get conn => 'Connexion';
@override
String get container => 'Conteneur';
@override
String get containerTrySudoTip => 'Par exemple : Dans l\'application, l\'utilisateur est défini comme aaa, mais Docker est installé sous l\'utilisateur root. Dans ce cas, vous devez activer cette option.';
@override
String get convert => 'Convertir';
@override
String get copyPath => 'Copier le chemin';
@override
String get cpuViewAsProgressTip => 'Afficher le taux d\'utilisation de chaque CPU sous forme de barre de progression (ancien style)';
@override
String get cursorType => 'Type de curseur';
@override
String get customCmd => 'Commandes personnalisées';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Nom de la commande\": \"Commande\"';
@override
String get decode => 'Décoder';
@override
String get decompress => 'Décompresser';
@override
String get deleteServers => 'Supprimer des serveurs en lot';
@override
String get dirEmpty => 'Assurez-vous que le répertoire est vide.';
@override
String get disconnected => 'Déconnecté';
@override
String get disk => 'Disque';
@override
String get diskIgnorePath => 'Chemin à ignorer pour le disque';
@override
String get displayCpuIndex => 'Afficher l\'index CPU';
@override
String dl2Local(Object fileName) {
return 'Télécharger $fileName localement ?';
}
@override
String get dockerEmptyRunningItems => 'Aucun conteneur en cours d\'exécution.\nCela peut être dû à :\n- L\'utilisateur d\'installation de Docker n\'est pas le même que celui configuré dans l\'application.\n- La variable d\'environnement DOCKER_HOST n\'a pas été lue correctement. Vous pouvez l\'obtenir en exécutant `echo \$DOCKER_HOST` dans le terminal.';
@override
String dockerImagesFmt(Object count) {
return '$count images';
}
@override
String get dockerNotInstalled => 'Docker non installé';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount en cours d\'exécution, $stoppedCount conteneur arrêté.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count conteneur en cours d\'exécution.';
}
@override
String get doubleColumnMode => 'Mode double colonne';
@override
String get doubleColumnTip => 'Cette option n\'active que la fonctionnalité, qu\'elle puisse être activée dépend de la largeur de l\'appareil.';
@override
String get editVirtKeys => 'Modifier les touches virtuelles';
@override
String get editor => 'Éditeur';
@override
String get editorHighlightTip => 'La performance actuelle de mise en surbrillance du code est pire et peut être désactivée en option pour s\'améliorer.';
@override
String get encode => 'Encoder';
@override
String get envVars => 'Variable denvironnement';
@override
String get experimentalFeature => 'Fonctionnalité expérimentale';
@override
String get extraArgs => 'Arguments supplémentaires';
@override
String get fallbackSshDest => 'Destino SSH alternativo';
@override
String get fdroidReleaseTip => 'Si vous avez téléchargé cette application depuis F-Droid, il est recommandé de désactiver cette option.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'Fichier \'$file\' trop volumineux $size, max $sizeMax';
}
@override
String get followSystem => 'Suivre le système';
@override
String get font => 'Police';
@override
String get fontSize => 'Taille de la police';
@override
String get force => 'Forcer';
@override
String get fullScreen => 'Mode plein écran';
@override
String get fullScreenJitter => 'Secousse en plein écran';
@override
String get fullScreenJitterHelp => 'Pour éviter les brûlures d\'écran';
@override
String get fullScreenTip => 'Le mode plein écran doit-il être activé lorsque l\'appareil est orienté en mode paysage ? Cette option s\'applique uniquement à l\'onglet serveur.';
@override
String get goBackQ => 'Revenir en arrière ?';
@override
String get goto => 'Aller à';
@override
String get hideTitleBar => 'Masquer la barre de titre';
@override
String get highlight => 'Mise en surbrillance du code';
@override
String get homeWidgetUrlConfig => 'Configurer l\'URL du widget d\'accueil';
@override
String get host => 'Hôte';
@override
String httpFailedWithCode(Object code) {
return 'Échec de la requête, code d\'état : $code';
}
@override
String get ignoreCert => 'Ignorer le certificat';
@override
String get image => 'Image';
@override
String get imagesList => 'Liste des images';
@override
String get init => 'Initialiser';
@override
String get inner => 'Interne';
@override
String get install => 'Installer';
@override
String get installDockerWithUrl => 'Veuillez d\'abord installer docker depuis https://docs.docker.com/engine/install.';
@override
String get invalid => 'Invalide';
@override
String get jumpServer => 'Aller au serveur';
@override
String get keepForeground => 'Garder l\'application en premier plan !';
@override
String get keepStatusWhenErr => 'Conserver l\'état du dernier serveur';
@override
String get keepStatusWhenErrTip => 'Uniquement en cas d\'erreur lors de l\'exécution du script';
@override
String get keyAuth => 'Authentification par clé';
@override
String get letterCache => 'Mise en cache des lettres';
@override
String get letterCacheTip => 'Recommandé de désactiver, mais après désactivation, il sera impossible de saisir des caractères CJK.';
@override
String get license => 'Licence';
@override
String get location => 'Emplacement';
@override
String get loss => 'Perte';
@override
String madeWithLove(Object myGithub) {
return 'Fabriqué avec ❤️ par $myGithub';
}
@override
String get manual => 'Manuel';
@override
String get max => 'max';
@override
String get maxRetryCount => 'Nombre de reconnexions au serveur';
@override
String get maxRetryCountEqual0 => 'Il va réessayer encore et encore.';
@override
String get min => 'min';
@override
String get mission => 'Mission';
@override
String get more => 'Plus';
@override
String get moveOutServerFuncBtnsHelp => 'Activé : peut être affiché sous chaque carte sur la page de l\'onglet Serveur. Désactivé : peut être affiché en haut de la page de détails du serveur.';
@override
String get ms => 'ms';
@override
String get needHomeDir => 'Si vous êtes utilisateur Synology, [consultez ici](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Les utilisateurs d\'autres systèmes doivent rechercher comment créer un répertoire personnel.';
@override
String get needRestart => 'Nécessite un redémarrage de l\'application';
@override
String get net => 'Réseau';
@override
String get netViewType => 'Type de vue réseau';
@override
String get newContainer => 'Nouveau conteneur';
@override
String get noLineChart => 'Ne pas utiliser de graphiques linéaires';
@override
String get noLineChartForCpu => 'Ne pas utiliser de graphiques linéaires pour l\'unité centrale';
@override
String get noPrivateKeyTip => 'La clé privée n\'existe pas, elle a peut-être été supprimée ou il y a une erreur de configuration.';
@override
String get noPromptAgain => 'Ne pas demander à nouveau';
@override
String get node => 'Nœud';
@override
String get notAvailable => 'Indisponible';
@override
String get onServerDetailPage => 'Sur la page de détails du serveur';
@override
String get onlyOneLine => 'Afficher uniquement en une seule ligne (défilement)';
@override
String get onlyWhenCoreBiggerThan8 => 'Fonctionne uniquement lorsque le nombre de cœurs est > 8';
@override
String get openLastPath => 'Ouvrir le dernier chemin';
@override
String get openLastPathTip => 'Les différents serveurs auront des journaux différents, et le journal est le chemin vers la sortie';
@override
String get parseContainerStatsTip => 'L\'analyse de l\'occupation des conteneurs Docker est relativement lente.';
@override
String percentOfSize(Object percent, Object size) {
return '$percent% de $size';
}
@override
String get permission => 'Permissions';
@override
String get pingAvg => 'Moy.:';
@override
String get pingInputIP => 'Veuillez saisir une adresse IP / un domaine cible.';
@override
String get pingNoServer => 'Aucun serveur à pinger.\nVeuillez ajouter un serveur dans l\'onglet serveur.';
@override
String get pkg => 'Pkg';
@override
String get plugInType => 'Type d\'insertion';
@override
String get port => 'Port';
@override
String get preview => 'Aperçu';
@override
String get privateKey => 'Clé privée';
@override
String get process => 'Processus';
@override
String get pushToken => 'Jeton d\'identification';
@override
String get pveIgnoreCertTip => 'Il n\'est pas recommandé de l\'activer, attention aux risques de sécurité ! Si vous utilisez le certificat par défaut de PVE, vous devez activer cette option.';
@override
String get pveLoginFailed => 'Échec de la connexion. Impossible d\'authentifier avec le nom d\'utilisateur / mot de passe de la configuration du serveur pour la connexion Linux PAM.';
@override
String get pveVersionLow => 'Cette fonctionnalité est actuellement en phase de test et n\'a été testée que sur PVE 8+. Veuillez l\'utiliser avec prudence.';
@override
String get pwd => 'Mot de passe';
@override
String get read => 'Lire';
@override
String get reboot => 'Redémarrer';
@override
String get rememberPwdInMem => 'Mémoriser le mot de passe en mémoire';
@override
String get rememberPwdInMemTip => 'Utilisé pour les conteneurs, la suspension, etc.';
@override
String get rememberWindowSize => 'Se souvenir de la taille de la fenêtre';
@override
String get remotePath => 'Chemin distant';
@override
String get restart => 'Redémarrer';
@override
String get result => 'Résultat';
@override
String get rotateAngel => 'Angle de rotation';
@override
String get route => 'Routage';
@override
String get run => 'Exécuter';
@override
String get running => 'En cours d\'exécution';
@override
String get sameIdServerExist => 'Un serveur avec le même ID existe déjà';
@override
String get save => 'Enregistrer';
@override
String get saved => 'Enregistré';
@override
String get second => 's';
@override
String get sensors => 'Capteurs';
@override
String get sequence => 'Séquence';
@override
String get server => 'Serveur';
@override
String get serverDetailOrder => 'Ordre des widgets de la page de détails du serveur';
@override
String get serverFuncBtns => 'Boutons de fonction du serveur';
@override
String get serverOrder => 'Ordre du serveur';
@override
String get sftpDlPrepare => 'Préparation de la connexion...';
@override
String get sftpEditorTip => 'Si vide, utilisez léditeur de fichiers intégré de lapplication. Si une valeur est présente, utilisez léditeur du serveur distant, par exemple `vim` (il est recommandé de détecter automatiquement selon `EDITOR`).';
@override
String get sftpRmrDirSummary => 'Utilisez `rm -r` pour supprimer un dossier en SFTP.';
@override
String get sftpSSHConnected => 'SFTP Connecté';
@override
String get sftpShowFoldersFirst => 'Afficher d\'abord les dossiers';
@override
String get showDistLogo => 'Afficher le logo de la distribution';
@override
String get shutdown => 'Éteindre';
@override
String get size => 'Taille';
@override
String get snippet => 'Extrait';
@override
String get softWrap => 'Retour à la ligne souple';
@override
String get specifyDev => 'Spécifier l\'appareil';
@override
String get specifyDevTip => 'Par exemple, les statistiques de trafic réseau concernent par défaut tous les appareils. Vous pouvez spécifier ici un appareil particulier.';
@override
String get speed => 'Vitesse';
@override
String spentTime(Object time) {
return 'Temps écoulé : $time';
}
@override
String get sshTermHelp => 'Lorsque le terminal est défilable, faire glisser horizontalement permet de sélectionner du texte. En cliquant sur le bouton du clavier, vous activez/désactivez le clavier. L\'icône de fichier ouvre le chemin actuel SFTP. Le bouton du presse-papiers copie le contenu lorsque du texte est sélectionné, et colle le contenu du presse-papiers dans le terminal lorsqu\'aucun texte n\'est sélectionné et qu\'il y a du contenu dans le presse-papiers. L\'icône de code colle des extraits de code dans le terminal et les exécute.';
@override
String sshTip(Object url) {
return 'Cette fonctionnalité est actuellement à l\'étape expérimentale.\n\nVeuillez signaler les bugs sur $url ou rejoindre notre développement.';
}
@override
String get sshVirtualKeyAutoOff => 'Activation automatique des touches virtuelles';
@override
String get start => 'Démarrer';
@override
String get stat => 'Statistiques';
@override
String get stats => 'Statistiques';
@override
String get stop => 'Arrêter';
@override
String get stopped => 'Arrêté';
@override
String get storage => 'Stockage';
@override
String get supportFmtArgs => 'Les paramètres de mise en forme suivants sont pris en charge :';
@override
String get suspend => 'Suspendre';
@override
String get suspendTip => 'La fonction de suspension nécessite des privilèges root et le support de systemd.';
@override
String switchTo(Object val) {
return 'Passer à $val';
}
@override
String get sync => 'Sync';
@override
String get syncTip => 'Un redémarrage peut être nécessaire pour que certains changements prennent effet.';
@override
String get system => 'Système';
@override
String get tag => 'Étiquettes';
@override
String get temperature => 'Température';
@override
String get termFontSizeTip => 'Ce paramètre affectera la taille du terminal (largeur et hauteur). Vous pouvez zoomer sur la page du terminal pour ajuster la taille de la police de la session en cours.';
@override
String get terminal => 'Terminal';
@override
String get test => 'Tester';
@override
String get textScaler => 'Mise à l\'échelle du texte';
@override
String get textScalerTip => '1.0 => 100% (taille originale), fonctionne uniquement sur la partie de la police de la page du serveur, il est déconseillé de la modifier.';
@override
String get theme => 'Thème';
@override
String get time => 'Temps';
@override
String get times => 'Fois';
@override
String get total => 'Total';
@override
String get traffic => 'Trafic';
@override
String get trySudo => 'Essayer d\'utiliser sudo';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Inconnu';
@override
String get unkownConvertMode => 'Mode de conversion inconnu';
@override
String get update => 'Mettre à jour';
@override
String get updateIntervalEqual0 => 'Vous avez défini à 0, la mise à jour ne se fera pas automatiquement.\nImpossible de calculer l\'état du CPU.';
@override
String get updateServerStatusInterval => 'Intervalle de mise à jour de l\'état du serveur';
@override
String get upload => 'Télécharger';
@override
String get upsideDown => 'À l\'envers';
@override
String get uptime => 'Temps d\'activité';
@override
String get useCdn => 'Utiliser CDN';
@override
String get useCdnTip => 'Il est recommandé aux utilisateurs non chinois d\'utiliser le CDN. Souhaitez-vous l\'utiliser ?';
@override
String get useNoPwd => 'Aucun mot de passe ne sera utilisé';
@override
String get usePodmanByDefault => 'Par défaut avec Podman';
@override
String get used => 'Utilisé';
@override
String get view => 'Vue';
@override
String get viewErr => 'Voir erreur';
@override
String get virtKeyHelpClipboard => 'Copiez dans le presse-papiers si le terminal sélectionné n\'est pas vide, sinon collez le contenu du presse-papiers dans le terminal.';
@override
String get virtKeyHelpIME => 'Activer/désactiver le clavier';
@override
String get virtKeyHelpSFTP => 'Ouvrir le répertoire actuel en SFTP.';
@override
String get waitConnection => 'Veuillez attendre que la connexion soit établie.';
@override
String get wakeLock => 'Maintenir éveillé';
@override
String get watchNotPaired => 'Aucune Apple Watch associée';
@override
String get webdavSettingEmpty => 'Le paramètre Webdav est vide';
@override
String get whenOpenApp => 'À l\'ouverture de l\'application';
@override
String get wolTip => 'Après avoir configuré le WOL (Wake-on-LAN), une requête WOL est envoyée chaque fois que le serveur est connecté.';
@override
String get write => 'Écrire';
@override
String get writeScriptFailTip => 'Échec de l\'écriture dans le script, probablement en raison d\'un manque de permissions ou que le répertoire n\'existe pas.';
@override
String get writeScriptTip => 'Après la connexion au serveur, un script sera écrit dans ~/.config/server_box pour surveiller létat du système. Vous pouvez examiner le contenu du script.';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for Indonesian (`id`).
class AppLocalizationsId extends AppLocalizations {
AppLocalizationsId([String locale = 'id']) : super(locale);
@override
String get aboutThanks => 'Terima kasih kepada orang -orang berikut yang berpartisipasi.';
@override
String get acceptBeta => 'Terima pembaruan versi uji coba';
@override
String get addSystemPrivateKeyTip => 'Saat ini tidak memiliki kunci privat, apakah Anda menambahkan kunci yang disertakan dengan sistem (~/.ssh/id_rsa)?';
@override
String get added2List => 'Ditambahkan ke Daftar Tugas';
@override
String get addr => 'Alamat';
@override
String get alreadyLastDir => 'Sudah di direktori terakhir.';
@override
String get authFailTip => 'Otentikasi gagal, silakan periksa apakah kata sandi/kunci/host/pengguna, dll, salah.';
@override
String get autoBackupConflict => 'Hanya satu pencadangan otomatis yang dapat diaktifkan pada saat yang bersamaan.';
@override
String get autoConnect => 'Hubungkan otomatis';
@override
String get autoRun => 'Berjalan Otomatis';
@override
String get autoUpdateHomeWidget => 'Widget Rumah Pembaruan Otomatis';
@override
String get backupTip => 'Data yang diekspor hanya dienkripsi.\nTolong jaga keamanannya.';
@override
String get backupVersionNotMatch => 'Versi cadangan tidak cocok.';
@override
String get battery => 'Baterai';
@override
String get bgRun => 'Jalankan di Backgroud';
@override
String get bgRunTip => 'Sakelar ini hanya berarti aplikasi akan mencoba berjalan di latar belakang, apakah aplikasi dapat berjalan di latar belakang tergantung pada apakah izin diaktifkan atau tidak. Untuk Android asli, nonaktifkan \"Pengoptimalan Baterai\" di aplikasi ini, dan untuk miui, ubah kebijakan penghematan daya ke \"Tidak Terbatas\".';
@override
String get cmd => 'Memerintah';
@override
String get collapseUITip => 'Apakah akan menciutkan daftar panjang yang ada di UI secara default atau tidak';
@override
String get conn => 'Koneksi';
@override
String get container => 'Wadah';
@override
String get containerTrySudoTip => 'Contohnya: Di dalam aplikasi, pengguna diatur sebagai aaa, tetapi Docker diinstal di bawah pengguna root. Dalam kasus ini, Anda perlu mengaktifkan opsi ini.';
@override
String get convert => 'Mengubah';
@override
String get copyPath => 'Path Copy';
@override
String get cpuViewAsProgressTip => 'Tampilkan tingkat penggunaan setiap CPU dalam gaya bilah kemajuan (gaya lama)';
@override
String get cursorType => 'Jenis kursor';
@override
String get customCmd => 'Perintah kustom';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Nama Perintah\": \"Perintah\"';
@override
String get decode => 'Membaca sandi';
@override
String get decompress => 'Dekompresi';
@override
String get deleteServers => 'Penghapusan server secara batch';
@override
String get dirEmpty => 'Pastikan dir kosong.';
@override
String get disconnected => 'Terputus';
@override
String get disk => 'Disk';
@override
String get diskIgnorePath => 'Abaikan jalan untuk disk';
@override
String get displayCpuIndex => 'Tampilkan indeks CPU';
@override
String dl2Local(Object fileName) {
return 'Unduh $fileName ke lokal?';
}
@override
String get dockerEmptyRunningItems => 'Tidak ada wadah yang sedang berjalan.\nHal ini dapat terjadi karena:\n- Pengguna instalasi Docker tidak sama dengan nama pengguna yang dikonfigurasi di dalam Aplikasi.\n- Variabel lingkungan DOCKER_HOST tidak terbaca dengan benar. Anda bisa mendapatkannya dengan menjalankan `echo \$DOCKER_HOST` di terminal.';
@override
String dockerImagesFmt(Object count) {
return '$count gambar';
}
@override
String get dockerNotInstalled => 'Docker tidak terpasang';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount running, $stoppedCount container stopped.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count wadah berjalan.';
}
@override
String get doubleColumnMode => 'Mode kolom ganda';
@override
String get doubleColumnTip => 'Opsi ini hanya mengaktifkan fitur, apakah itu benar-benar dapat diaktifkan tergantung pada lebar perangkat';
@override
String get editVirtKeys => 'Edit kunci virtual';
@override
String get editor => 'Editor';
@override
String get editorHighlightTip => 'Performa penyorotan kode saat ini lebih buruk, dan dapat dimatikan secara opsional untuk perbaikan.';
@override
String get encode => 'Menyandi';
@override
String get envVars => 'Variabel lingkungan';
@override
String get experimentalFeature => 'Fitur eksperimental';
@override
String get extraArgs => 'Args ekstra';
@override
String get fallbackSshDest => 'Tujuan SSH mundur';
@override
String get fdroidReleaseTip => 'Jika Anda mengunduh aplikasi ini dari F-Droid, disarankan untuk mematikan opsi ini.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'File \'$file\' terlalu besar $size, max $sizeMax';
}
@override
String get followSystem => 'Ikuti sistem';
@override
String get font => 'Font';
@override
String get fontSize => 'Ukuran huruf';
@override
String get force => 'sukarela';
@override
String get fullScreen => 'Mode Layar Penuh';
@override
String get fullScreenJitter => 'Jitter layar penuh';
@override
String get fullScreenJitterHelp => 'Untuk menghindari pembakaran layar';
@override
String get fullScreenTip => 'Apakah mode layar penuh diaktifkan ketika perangkat diputar ke modus lanskap? Opsi ini hanya berlaku untuk tab server.';
@override
String get goBackQ => 'Datang kembali?';
@override
String get goto => 'Pergi ke';
@override
String get hideTitleBar => 'Sembunyikan bilah judul';
@override
String get highlight => 'Sorotan kode';
@override
String get homeWidgetUrlConfig => 'Konfigurasi URL Widget Rumah';
@override
String get host => 'Host';
@override
String httpFailedWithCode(Object code) {
return 'Permintaan gagal, kode status: $code';
}
@override
String get ignoreCert => 'Abaikan sertifikat';
@override
String get image => 'Gambar';
@override
String get imagesList => 'Daftar gambar';
@override
String get init => 'Menginisialisasi';
@override
String get inner => 'Batin';
@override
String get install => 'Install';
@override
String get installDockerWithUrl => 'Silakan https://docs.docker.com/engine/install Docker pertama.';
@override
String get invalid => 'Tidak valid';
@override
String get jumpServer => 'Lompat server';
@override
String get keepForeground => 'Simpan Aplikasi Foreground!';
@override
String get keepStatusWhenErr => 'Menyimpan status server terakhir';
@override
String get keepStatusWhenErrTip => 'Hanya ketika terjadi kesalahan saat menjalankan skrip';
@override
String get keyAuth => 'Auth kunci';
@override
String get letterCache => 'Caching huruf';
@override
String get letterCacheTip => 'Direkomendasikan untuk menonaktifkan, tetapi setelah dinonaktifkan, tidak mungkin untuk memasukkan karakter CJK.';
@override
String get license => 'Lisensi';
@override
String get location => 'Lokasi';
@override
String get loss => 'kehilangan';
@override
String madeWithLove(Object myGithub) {
return 'Dibuat dengan ❤️ oleh $myGithub';
}
@override
String get manual => 'Manual';
@override
String get max => 'Max';
@override
String get maxRetryCount => 'Jumlah penyambungan kembali server';
@override
String get maxRetryCountEqual0 => 'Akan mencoba lagi lagi dan lagi.';
@override
String get min => 'Min';
@override
String get mission => 'Misi';
@override
String get more => 'Lebih Banyak';
@override
String get moveOutServerFuncBtnsHelp => 'Aktif: dapat ditampilkan di bawah setiap kartu pada halaman Tab Server. Nonaktif: dapat ditampilkan di bagian atas halaman Rincian Server.';
@override
String get ms => 'MS';
@override
String get needHomeDir => 'Jika Anda pengguna Synology, [lihat di sini](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Pengguna sistem lain perlu mencari cara membuat direktori home.';
@override
String get needRestart => 'Perlu memulai ulang aplikasi';
@override
String get net => 'Jaringan';
@override
String get netViewType => 'Jenis tampilan bersih';
@override
String get newContainer => 'Wadah baru';
@override
String get noLineChart => 'Jangan gunakan grafik garis';
@override
String get noLineChartForCpu => 'Jangan gunakan diagram garis untuk CPU';
@override
String get noPrivateKeyTip => 'Kunci privat tidak ada, mungkin telah dihapus atau ada kesalahan konfigurasi.';
@override
String get noPromptAgain => 'Jangan tanya lagi';
@override
String get node => 'Node';
@override
String get notAvailable => 'Tidak tersedia';
@override
String get onServerDetailPage => 'Di halaman detail server';
@override
String get onlyOneLine => 'Hanya tampilkan sebagai satu baris (dapat digulir)';
@override
String get onlyWhenCoreBiggerThan8 => 'Berlaku hanya ketika jumlah inti > 8';
@override
String get openLastPath => 'Buka jalur terakhir';
@override
String get openLastPathTip => 'Server yang berbeda akan memiliki catatan yang berbeda, dan catatan tersebut adalah jalur menuju pintu keluar';
@override
String get parseContainerStatsTip => 'Parsing status okupansi oleh Docker agak lambat';
@override
String percentOfSize(Object percent, Object size) {
return '$percent% dari $size';
}
@override
String get permission => 'Izin';
@override
String get pingAvg => 'Rata -rata:';
@override
String get pingInputIP => 'Harap masukkan IP / domain target.';
@override
String get pingNoServer => 'Tidak ada server untuk melakukan ping.\nHarap tambahkan server di tab Server.';
@override
String get pkg => 'Pkg';
@override
String get plugInType => 'Jenis Penyisipan';
@override
String get port => 'Port';
@override
String get preview => 'Pratinjau';
@override
String get privateKey => 'Kunci Pribadi';
@override
String get process => 'Proses';
@override
String get pushToken => 'Dorong token';
@override
String get pveIgnoreCertTip => 'Tidak disarankan untuk diaktifkan, waspadai risiko keamanan! Jika Anda menggunakan sertifikat default dari PVE, Anda perlu mengaktifkan opsi ini.';
@override
String get pveLoginFailed => 'Login gagal. Tidak dapat mengautentikasi dengan nama pengguna/kata sandi dari konfigurasi server untuk login Linux PAM.';
@override
String get pveVersionLow => 'Fitur ini saat ini sedang dalam tahap pengujian dan hanya diuji pada PVE 8+. Gunakan dengan hati-hati.';
@override
String get pwd => 'Kata sandi';
@override
String get read => 'Baca';
@override
String get reboot => 'Reboot';
@override
String get rememberPwdInMem => 'Ingat kata sandi di dalam memori';
@override
String get rememberPwdInMemTip => 'Digunakan untuk kontainer, menangguhkan, dll.';
@override
String get rememberWindowSize => 'Ingat ukuran jendela';
@override
String get remotePath => 'Jalur jarak jauh';
@override
String get restart => 'Mengulang kembali';
@override
String get result => 'Hasil';
@override
String get rotateAngel => 'Sudut rotasi';
@override
String get route => 'Routing';
@override
String get run => 'Berlari';
@override
String get running => 'berlari';
@override
String get sameIdServerExist => 'Server dengan ID yang sama sudah ada';
@override
String get save => 'Menyimpan';
@override
String get saved => 'Diselamatkan';
@override
String get second => 'S';
@override
String get sensors => 'Sensor';
@override
String get sequence => 'Urutan';
@override
String get server => 'Server';
@override
String get serverDetailOrder => 'Detail pesanan widget halaman';
@override
String get serverFuncBtns => 'Tombol fungsi server';
@override
String get serverOrder => 'Pesanan server';
@override
String get sftpDlPrepare => 'Bersiap untuk terhubung ...';
@override
String get sftpEditorTip => 'Jika kosong, gunakan editor file bawaan aplikasi. Jika ada nilai, gunakan editor server jarak jauh, misalnya `vim` (disarankan untuk mendeteksi secara otomatis sesuai `EDITOR`).';
@override
String get sftpRmrDirSummary => 'Gunakan `rm -r` untuk menghapus dir di SFTP';
@override
String get sftpSSHConnected => 'Sftp terhubung';
@override
String get sftpShowFoldersFirst => 'Folder ditampilkan lebih dulu';
@override
String get showDistLogo => 'Tampilkan logo distribusi';
@override
String get shutdown => 'Matikan';
@override
String get size => 'Ukuran';
@override
String get snippet => 'Snippet';
@override
String get softWrap => 'Pembungkus lembut';
@override
String get specifyDev => 'Tentukan perangkat';
@override
String get specifyDevTip => 'Misalnya, statistik lalu lintas jaringan secara default adalah untuk semua perangkat. Anda dapat menentukan perangkat tertentu di sini.';
@override
String get speed => 'Kecepatan';
@override
String spentTime(Object time) {
return 'Menghabiskan waktu: $time';
}
@override
String get sshTermHelp => 'Ketika terminal dapat digulirkan, menggeser secara horizontal dapat memilih teks. Mengklik tombol keyboard mengaktifkan/menonaktifkan keyboard. Ikon file membuka SFTP jalur saat ini. Tombol papan klip menyalin konten saat teks dipilih, dan menempelkan konten dari papan klip ke terminal saat tidak ada teks yang dipilih dan ada konten di papan klip. Ikon kode menempelkan potongan kode ke terminal dan mengeksekusinya.';
@override
String sshTip(Object url) {
return 'Fungsi ini sekarang dalam tahap eksperimen.\n\nHarap laporkan bug di $url atau bergabunglah dengan pengembangan kami.';
}
@override
String get sshVirtualKeyAutoOff => 'Switching Otomatis Kunci Virtual';
@override
String get start => 'Awal';
@override
String get stat => 'Statistik';
@override
String get stats => 'Statistik';
@override
String get stop => 'Berhenti';
@override
String get stopped => 'dihentikan';
@override
String get storage => 'Penyimpanan';
@override
String get supportFmtArgs => 'Parameter pemformatan berikut ini didukung:';
@override
String get suspend => 'Suspend';
@override
String get suspendTip => 'Fungsi penangguhan memerlukan hak akses root dan dukungan systemd.';
@override
String switchTo(Object val) {
return 'Beralih ke $val';
}
@override
String get sync => 'Sinkronisasi';
@override
String get syncTip => 'Pengaktifan ulang mungkin diperlukan agar beberapa perubahan dapat diterapkan.';
@override
String get system => 'Sistem';
@override
String get tag => 'Tag';
@override
String get temperature => 'Suhu';
@override
String get termFontSizeTip => 'Pengaturan ini akan memengaruhi ukuran terminal (lebar dan tinggi). Anda dapat melakukan zoom pada halaman terminal untuk menyesuaikan ukuran font sesi saat ini.';
@override
String get terminal => 'Terminal';
@override
String get test => 'pengujian';
@override
String get textScaler => 'Penskalaan font';
@override
String get textScalerTip => '1.0 => 100% (ukuran asli), hanya berfungsi pada bagian halaman server font, tidak disarankan untuk diubah.';
@override
String get theme => ' Tema';
@override
String get time => 'Waktu';
@override
String get times => 'Waktu';
@override
String get total => 'Total';
@override
String get traffic => 'Lalu lintas';
@override
String get trySudo => 'Cobalah menggunakan sudo';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Tidak dikenal';
@override
String get unkownConvertMode => 'Mode Konversi Tidak Diketahui';
@override
String get update => 'Memperbarui';
@override
String get updateIntervalEqual0 => 'Anda mengatur ke 0, tidak akan memperbarui secara otomatis.\nTidak dapat menghitung status CPU.';
@override
String get updateServerStatusInterval => 'Interval Pembaruan Status Server';
@override
String get upload => 'Mengunggah';
@override
String get upsideDown => 'Terbalik';
@override
String get uptime => 'Uptime';
@override
String get useCdn => 'Menggunakan CDN';
@override
String get useCdnTip => 'Pengguna non-Cina disarankan menggunakan CDN. Apakah Anda ingin menggunakannya?';
@override
String get useNoPwd => 'Tidak ada kata sandi yang akan digunakan';
@override
String get usePodmanByDefault => 'Menggunakan Podman sebagai bawaan';
@override
String get used => 'Digunakan';
@override
String get view => 'Tampilan';
@override
String get viewErr => 'Lihat kesalahan';
@override
String get virtKeyHelpClipboard => 'Salin ke clipboard jika terminal yang dipilih tidak kosong, jika tidak, tempel isi clipboard ke terminal.';
@override
String get virtKeyHelpIME => 'Menyalakan/mematikan keyboard';
@override
String get virtKeyHelpSFTP => 'Buka direktori saat ini di SFTP.';
@override
String get waitConnection => 'Harap tunggu koneksi akan dibuat.';
@override
String get wakeLock => 'Tetap terjaga';
@override
String get watchNotPaired => 'Tidak ada Apple Watch yang dipasangkan';
@override
String get webdavSettingEmpty => 'Pengaturan webdav kosong';
@override
String get whenOpenApp => 'Saat membuka aplikasi';
@override
String get wolTip => 'Setelah mengonfigurasi WOL (Wake-on-LAN), permintaan WOL dikirim setiap kali server terhubung.';
@override
String get write => 'Tulis';
@override
String get writeScriptFailTip => 'Penulisan ke skrip gagal, mungkin karena tidak ada izin atau direktori tidak ada.';
@override
String get writeScriptTip => 'Setelah terhubung ke server, sebuah skrip akan ditulis ke ~/.config/server_box untuk memantau status sistem. Anda dapat meninjau konten skrip tersebut.';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for Japanese (`ja`).
class AppLocalizationsJa extends AppLocalizations {
AppLocalizationsJa([String locale = 'ja']) : super(locale);
@override
String get aboutThanks => '以下の参加者に感謝します。';
@override
String get acceptBeta => 'テストバージョンの更新を受け入れる';
@override
String get addSystemPrivateKeyTip => '現在秘密鍵がありません。システムのデフォルト(~/.ssh/id_rsa)を追加しますか?';
@override
String get added2List => 'タスクリストに追加されました';
@override
String get addr => 'アドレス';
@override
String get alreadyLastDir => 'すでに最上位のディレクトリです';
@override
String get authFailTip => '認証に失敗しました。パスワード/鍵/ホスト/ユーザーなどが間違っていないか確認してください。';
@override
String get autoBackupConflict => '自動バックアップは一度に一つしか開始できません';
@override
String get autoConnect => '自動接続';
@override
String get autoRun => '自動実行';
@override
String get autoUpdateHomeWidget => 'ホームウィジェットを自動更新';
@override
String get backupTip => 'エクスポートされたデータは簡単に暗号化されています。適切に保管してください。';
@override
String get backupVersionNotMatch => 'バックアップバージョンが一致しないため、復元できません';
@override
String get battery => 'バッテリー';
@override
String get bgRun => 'バックグラウンド実行';
@override
String get bgRunTip => 'このスイッチはプログラムがバックグラウンドで実行を試みることを意味しますが、実際にバックグラウンドで実行できるかどうかは、権限が有効になっているかに依存します。AOSPベースのAndroid ROMでは、このアプリの「バッテリー最適化」をオフにしてください。MIUIでは、省エネモードを「無制限」に変更してください。';
@override
String get cmd => 'コマンド';
@override
String get collapseUITip => 'UIの長いリストをデフォルトで折りたたむかどうか';
@override
String get conn => '接続';
@override
String get container => 'コンテナ';
@override
String get containerTrySudoTip => 'アプリ内でユーザーをaaaに設定しているが、Dockerがrootユーザーでインストールされている場合、このオプションを有効にする必要があります';
@override
String get convert => '変換';
@override
String get copyPath => 'パスをコピー';
@override
String get cpuViewAsProgressTip => '各CPUの使用率をプログレスバースタイルで表示する旧スタイル';
@override
String get cursorType => 'カーソルタイプ';
@override
String get customCmd => 'カスタムコマンド';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"コマンド名\": \"コマンド\"';
@override
String get decode => 'デコード';
@override
String get decompress => '解凍';
@override
String get deleteServers => 'サーバーを一括削除';
@override
String get dirEmpty => 'フォルダーが空であることを確認してください';
@override
String get disconnected => '接続が切断されました';
@override
String get disk => 'ディスク';
@override
String get diskIgnorePath => '無視されたディスクパス';
@override
String get displayCpuIndex => 'CPUインデックスを表示する';
@override
String dl2Local(Object fileName) {
return '$fileNameをローカルにダウンロードしますか';
}
@override
String get dockerEmptyRunningItems => '実行中のコンテナがありません。\nこれは次の理由による可能性があります:\n- Dockerのインストールユーザーとアプリ内の設定されたユーザー名が異なる\n- 環境変数DOCKER_HOSTが正しく読み込まれていない。ターミナルで`echo \$DOCKER_HOST`を実行して取得できます。';
@override
String dockerImagesFmt(Object count) {
return '合計$countイメージ';
}
@override
String get dockerNotInstalled => 'Dockerがインストールされていません';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount個が実行中$stoppedCount個が停止中';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count個のコンテナが実行中';
}
@override
String get doubleColumnMode => 'ダブルカラムモード';
@override
String get doubleColumnTip => 'このオプションは機能を有効にするだけで、実際に有効にできるかどうかはデバイスの幅に依存します';
@override
String get editVirtKeys => '仮想キーを編集';
@override
String get editor => 'エディター';
@override
String get editorHighlightTip => '現在のコードハイライトのパフォーマンスはかなり悪いため、改善するために無効にすることを選択できます。';
@override
String get encode => 'エンコード';
@override
String get envVars => '環境変数';
@override
String get experimentalFeature => '実験的な機能';
@override
String get extraArgs => '追加引数';
@override
String get fallbackSshDest => 'フォールバックSSH宛先';
@override
String get fdroidReleaseTip => 'このアプリをF-Droidからダウンロードした場合、このオプションをオフにすることをお勧めします。';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'ファイル \'$file\' は大きすぎます \'$size\'$sizeMax を超えています';
}
@override
String get followSystem => 'システムに従う';
@override
String get font => 'フォント';
@override
String get fontSize => 'フォントサイズ';
@override
String get force => '強制';
@override
String get fullScreen => 'フルスクリーンモード';
@override
String get fullScreenJitter => 'フルスクリーンモードのジッター';
@override
String get fullScreenJitterHelp => '焼き付き防止';
@override
String get fullScreenTip => 'デバイスが横向きに回転したときにフルスクリーンモードを有効にしますか?このオプションはサーバータブにのみ適用されます。';
@override
String get goBackQ => '戻りますか?';
@override
String get goto => '移動';
@override
String get hideTitleBar => 'タイトルバーを非表示にする';
@override
String get highlight => 'コードハイライト';
@override
String get homeWidgetUrlConfig => 'ホームウィジェットURL設定';
@override
String get host => 'ホスト';
@override
String httpFailedWithCode(Object code) {
return 'リクエスト失敗、ステータスコード: $code';
}
@override
String get ignoreCert => '証明書を無視する';
@override
String get image => 'イメージ';
@override
String get imagesList => 'イメージリスト';
@override
String get init => '初期化する';
@override
String get inner => '内蔵';
@override
String get install => 'インストール';
@override
String get installDockerWithUrl => '最初に https://docs.docker.com/engine/install dockerをインストールしてください';
@override
String get invalid => '無効';
@override
String get jumpServer => 'ジャンプサーバー';
@override
String get keepForeground => 'アプリを前面に保ってください!';
@override
String get keepStatusWhenErr => 'エラー時に前回のサーバーステータスを保持';
@override
String get keepStatusWhenErrTip => 'スクリプトの実行エラーに限ります';
@override
String get keyAuth => 'キー認証';
@override
String get letterCache => '文字キャッシング';
@override
String get letterCacheTip => '無効にすることを推奨しますが、無効にした後はCJK文字を入力することができなくなります。';
@override
String get license => 'オープンソースライセンス';
@override
String get location => '場所';
@override
String get loss => 'パケットロス';
@override
String madeWithLove(Object myGithub) {
return '$myGithubによって❤️で作成済み';
}
@override
String get manual => 'マニュアル';
@override
String get max => '最大';
@override
String get maxRetryCount => 'サーバーの再接続試行回数';
@override
String get maxRetryCountEqual0 => '無限に再試行します';
@override
String get min => '最小';
@override
String get mission => 'ミッション';
@override
String get more => 'もっと';
@override
String get moveOutServerFuncBtnsHelp => '有効にする:サーバータブの各カードの下に表示されます。無効にする:サーバーの詳細ページの上部に表示されます。';
@override
String get ms => 'ミリ秒';
@override
String get needHomeDir => 'Synologyユーザーの場合は、[こちらをご覧ください](https://kb.synology.com/DSM/tutorial/user_enable_home_service)。他のシステムのユーザーは、ホームディレクトリの作成方法を検索する必要があります。';
@override
String get needRestart => 'アプリを再起動する必要があります';
@override
String get net => 'ネットワーク';
@override
String get netViewType => 'ネットワークビュータイプ';
@override
String get newContainer => '新しいコンテナを作成';
@override
String get noLineChart => '折れ線グラフを使用しない';
@override
String get noLineChartForCpu => 'CPUに折れ線グラフを使わない';
@override
String get noPrivateKeyTip => '秘密鍵が存在しません。削除されたか、設定ミスがある可能性があります。';
@override
String get noPromptAgain => '再度確認しない';
@override
String get node => 'ノード';
@override
String get notAvailable => '利用不可';
@override
String get onServerDetailPage => 'サーバーの詳細ページで';
@override
String get onlyOneLine => '一行のみ表示(スクロール可能)';
@override
String get onlyWhenCoreBiggerThan8 => 'コア数が8より大きい場合にのみ有効';
@override
String get openLastPath => '最後のパスを開く';
@override
String get openLastPathTip => '異なるサーバーには異なる記録があり、記録されているのは退出時のパスです';
@override
String get parseContainerStatsTip => 'Dockerの使用状況の解析は比較的遅いです';
@override
String percentOfSize(Object percent, Object size) {
return '$size$percent%';
}
@override
String get permission => '権限';
@override
String get pingAvg => '平均:';
@override
String get pingInputIP => '対象のIPまたはドメインを入力してください';
@override
String get pingNoServer => 'Pingに使用するサーバーがありません\nサーバータブでサーバーを追加してから再試行してください';
@override
String get pkg => 'パッケージ管理';
@override
String get plugInType => '挿入タイプ';
@override
String get port => 'ポート';
@override
String get preview => 'プレビュー';
@override
String get privateKey => '秘密鍵';
@override
String get process => 'プロセス';
@override
String get pushToken => 'プッシュトークン';
@override
String get pveIgnoreCertTip => 'オプションを有効にすることは推奨されません、セキュリティリスクに注意してくださいPVEのデフォルト証明書を使用している場合は、このオプションを有効にする必要があります。';
@override
String get pveLoginFailed => 'ログインに失敗しました。Linux PAMログインのためにサーバー構成からのユーザー名/パスワードで認証できません。';
@override
String get pveVersionLow => 'この機能は現在テスト段階にあり、PVE 8+でのみテストされています。ご利用の際は慎重に。';
@override
String get pwd => 'パスワード';
@override
String get read => '読み取り';
@override
String get reboot => '再起動';
@override
String get rememberPwdInMem => 'メモリにパスワードを記憶する';
@override
String get rememberPwdInMemTip => 'コンテナ、一時停止などに使用されます。';
@override
String get rememberWindowSize => 'ウィンドウサイズを記憶する';
@override
String get remotePath => 'リモートパス';
@override
String get restart => '再開';
@override
String get result => '結果';
@override
String get rotateAngel => '回転角度';
@override
String get route => 'ルーティング';
@override
String get run => '実行';
@override
String get running => '実行中';
@override
String get sameIdServerExist => '同じIDのサーバーが既に存在します';
@override
String get save => '保存';
@override
String get saved => '保存されました';
@override
String get second => '';
@override
String get sensors => 'センサー';
@override
String get sequence => '順序';
@override
String get server => 'サーバー';
@override
String get serverDetailOrder => '詳細ページのウィジェット順序';
@override
String get serverFuncBtns => 'サーバー機能ボタン';
@override
String get serverOrder => 'サーバー順序';
@override
String get sftpDlPrepare => 'サーバーへの接続を準備中...';
@override
String get sftpEditorTip => '空の場合は、アプリ内蔵のファイルエディタを使用します。値がある場合は、リモートサーバーのエディタ(例:`vim`)を使用します(`EDITOR` に従って自動検出することをお勧めします)。';
@override
String get sftpRmrDirSummary => 'SFTPで`rm -r`を使用してフォルダーを削除';
@override
String get sftpSSHConnected => 'SFTPに接続されました...';
@override
String get sftpShowFoldersFirst => 'フォルダーを先に表示';
@override
String get showDistLogo => 'ディストリビューションのロゴを表示';
@override
String get shutdown => 'シャットダウン';
@override
String get size => 'サイズ';
@override
String get snippet => 'スニペット';
@override
String get softWrap => 'ソフトラップ';
@override
String get specifyDev => 'デバイスを指定';
@override
String get specifyDevTip => '例えば、ネットワークトラフィック統計はデフォルトですべてのデバイスに対するものです。ここで特定のデバイスを指定できます。';
@override
String get speed => '速度';
@override
String spentTime(Object time) {
return '費した時間: $time';
}
@override
String get sshTermHelp => 'ターミナルがスクロール可能な場合、横にドラッグするとテキストを選択できます。キーボードボタンをクリックするとキーボードのオン/オフが切り替わります。ファイルアイコンは現在のパスSFTPを開きます。クリップボードボタンは、テキストが選択されているときに内容をコピーし、テキストが選択されておらずクリップボードに内容がある場合には、その内容をターミナルに貼り付けます。コードアイコンは、コードスニペットをターミナルに貼り付けて実行します。';
@override
String sshTip(Object url) {
return 'この機能は現在テスト段階にあります。\n\n問題がある場合は、$urlでフィードバックしてください';
}
@override
String get sshVirtualKeyAutoOff => '仮想キーの自動オフ';
@override
String get start => '開始';
@override
String get stat => '統計';
@override
String get stats => '統計';
@override
String get stop => '停止';
@override
String get stopped => '停止しました';
@override
String get storage => 'ストレージ';
@override
String get supportFmtArgs => '以下のフォーマット引数がサポートされています:';
@override
String get suspend => '中断';
@override
String get suspendTip => 'suspend機能はroot権限とsystemdのサポートが必要です。';
@override
String switchTo(Object val) {
return '$valに切り替える';
}
@override
String get sync => '同期する';
@override
String get syncTip => '再起動が必要な場合があります。一部の変更はその後に有効になります。';
@override
String get system => 'システム';
@override
String get tag => 'タグ';
@override
String get temperature => '温度';
@override
String get termFontSizeTip => 'この設定は端末のサイズ(幅と高さ)に影響します。現在のセッションのフォントサイズを調整するために、端末ページを拡大縮小できます。';
@override
String get terminal => 'ターミナル';
@override
String get test => 'テスト';
@override
String get textScaler => 'テキストスケーラー';
@override
String get textScalerTip => '1.0 => 100%(デフォルトサイズ)。サーバーページの一部のテキストにのみ適用されます。変更をお勧めしません。';
@override
String get theme => 'テーマ';
@override
String get time => '時間';
@override
String get times => '';
@override
String get total => '合計';
@override
String get traffic => 'トラフィック';
@override
String get trySudo => 'sudoを試みる';
@override
String get ttl => 'TTL';
@override
String get unknown => '不明';
@override
String get unkownConvertMode => '未知の変換モード';
@override
String get update => '更新';
@override
String get updateIntervalEqual0 => '0に設定すると、サーバーの状態は自動的に更新されず、CPU使用率も計算できません。';
@override
String get updateServerStatusInterval => 'サーバー状態の更新間隔';
@override
String get upload => 'アップロード';
@override
String get upsideDown => '上下逆転';
@override
String get uptime => '稼働時間';
@override
String get useCdn => 'CDNの使用';
@override
String get useCdnTip => '中国以外のユーザーにはCDNの使用が推奨されています。ご利用しますか';
@override
String get useNoPwd => 'パスワードなしで使用します';
@override
String get usePodmanByDefault => 'デフォルトでPodmanを使用';
@override
String get used => '使用済み';
@override
String get view => 'ビュー';
@override
String get viewErr => 'エラーを表示';
@override
String get virtKeyHelpClipboard => '端末に選択された文字がある場合は、選択された文字をクリップボードにコピーします。そうでない場合は、クリップボードの内容を端末に貼り付けます。';
@override
String get virtKeyHelpIME => 'キーボードのオン/オフ';
@override
String get virtKeyHelpSFTP => '現在のパスでSFTPを開く。';
@override
String get waitConnection => '接続の確立を待ってください';
@override
String get wakeLock => '起動を保つ';
@override
String get watchNotPaired => 'ペアリングされたApple Watchがありません';
@override
String get webdavSettingEmpty => 'Webdavの設定が空です';
@override
String get whenOpenApp => 'アプリを開くとき';
@override
String get wolTip => 'WOLWake-on-LANを設定した後、サーバーに接続するたびにWOLリクエストが送信されます。';
@override
String get write => '書き込み';
@override
String get writeScriptFailTip => 'スクリプトの書き込みに失敗しました。権限がないかディレクトリが存在しない可能性があります。';
@override
String get writeScriptTip => 'サーバーに接続すると、システムの状態を監視するためのスクリプトが ~/.config/server_box に書き込まれます。スクリプトの内容を確認できます。';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for Dutch Flemish (`nl`).
class AppLocalizationsNl extends AppLocalizations {
AppLocalizationsNl([String locale = 'nl']) : super(locale);
@override
String get aboutThanks => 'Met dank aan de volgende mensen die hebben deelgenomen aan.';
@override
String get acceptBeta => 'Accepteer testversie-updates';
@override
String get addSystemPrivateKeyTip => 'Er is momenteel geen privésleutel, wilt u degene toevoegen die bij het systeem wordt geleverd (~/.ssh/id_rsa)?';
@override
String get added2List => 'Toegevoegd aan takenlijst';
@override
String get addr => 'Adres';
@override
String get alreadyLastDir => 'Al in de laatst gebruikte map.';
@override
String get authFailTip => 'Authenticatie mislukt, controleer of het wachtwoord/sleutel/host/gebruiker, enz., incorrect zijn.';
@override
String get autoBackupConflict => 'Er kan slechts één automatische back-up tegelijk worden ingeschakeld.';
@override
String get autoConnect => 'Automatisch verbinden';
@override
String get autoRun => 'Automatisch uitvoeren';
@override
String get autoUpdateHomeWidget => 'Automatische update van home-widget';
@override
String get backupTip => 'De geëxporteerde gegevens zijn simpelweg versleuteld. \nBewaar deze aub veilig.';
@override
String get backupVersionNotMatch => 'Back-upversie komt niet overeen.';
@override
String get battery => 'Batterij';
@override
String get bgRun => 'Uitvoeren op de achtergrond';
@override
String get bgRunTip => 'Deze schakelaar betekent alleen dat het programma zal proberen op de achtergrond uit te voeren, of het in de achtergrond kan worden uitgevoerd, hangt af van of de toestemming is ingeschakeld of niet. Voor native Android, schakel \"Batterijoptimalisatie\" uit in deze app, en voor miui, wijzig de energiebesparingsbeleid naar \"Onbeperkt\".';
@override
String get cmd => 'Opdracht';
@override
String get collapseUITip => 'Of lange lijsten in de UI standaard moeten worden ingeklapt';
@override
String get conn => 'Verbinding';
@override
String get container => 'Container';
@override
String get containerTrySudoTip => 'Bijvoorbeeld: in de app is de gebruiker ingesteld op aaa, maar Docker is geïnstalleerd onder de rootgebruiker. In dit geval moet u deze optie inschakelen.';
@override
String get convert => 'Converteren';
@override
String get copyPath => 'Pad kopiëren';
@override
String get cpuViewAsProgressTip => 'Toon het gebruik van elke CPU in een voortgangsbalkstijl (oude stijl)';
@override
String get cursorType => 'Cursortype';
@override
String get customCmd => 'Aangepaste opdrachten';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Opdrachtnaam\": \"Opdracht\"';
@override
String get decode => 'Decoderen';
@override
String get decompress => 'Decomprimeren';
@override
String get deleteServers => 'Servers batchgewijs verwijderen';
@override
String get dirEmpty => 'Zorg ervoor dat de map leeg is.';
@override
String get disconnected => 'Verbroken';
@override
String get disk => 'Schijf';
@override
String get diskIgnorePath => 'Pad negeren voor schijf';
@override
String get displayCpuIndex => 'Toon de CPU-index';
@override
String dl2Local(Object fileName) {
return 'Download $fileName naar lokaal?';
}
@override
String get dockerEmptyRunningItems => 'Er zijn geen actieve containers.\nDit kan komen doordat:\n- De Docker-installatiegebruiker niet overeenkomt met de gebruikersnaam die is geconfigureerd binnen de app.\n- De omgevingsvariabele DOCKER_HOST is niet correct gelezen. U kunt deze krijgen door `echo \$DOCKER_HOST` in de terminal uit te voeren.';
@override
String dockerImagesFmt(Object count) {
return '$count afbeeldingen';
}
@override
String get dockerNotInstalled => 'Docker niet geïnstalleerd';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount actief, $stoppedCount container gestopt.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count container actief.';
}
@override
String get doubleColumnMode => 'Dubbele kolommodus';
@override
String get doubleColumnTip => 'Deze optie schakelt alleen de functie in, of deze daadwerkelijk kan worden ingeschakeld, hangt af van de breedte van het apparaat';
@override
String get editVirtKeys => 'Virtuele toetsen bewerken';
@override
String get editor => 'Editor';
@override
String get editorHighlightTip => 'De huidige codehighlighting-prestaties zijn slechter en kunnen optioneel worden uitgeschakeld om te verbeteren.';
@override
String get encode => 'Coderen';
@override
String get envVars => 'Omgevingsvariabele';
@override
String get experimentalFeature => 'Experimentele functie';
@override
String get extraArgs => 'Extra argumenten';
@override
String get fallbackSshDest => 'Fallback SSH-bestemming';
@override
String get fdroidReleaseTip => 'Als u deze app van F-Droid heeft gedownload, wordt aanbevolen deze optie uit te schakelen.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'Bestand \'$file\' te groot $size, max $sizeMax';
}
@override
String get followSystem => 'Volg systeem';
@override
String get font => 'Lettertype';
@override
String get fontSize => 'Lettergrootte';
@override
String get force => 'Forceer';
@override
String get fullScreen => 'Volledig schermmodus';
@override
String get fullScreenJitter => 'Volledig scherm trilling';
@override
String get fullScreenJitterHelp => 'Om inbranden van het scherm te voorkomen';
@override
String get fullScreenTip => 'Moet de volledig schermmodus worden ingeschakeld wanneer het apparaat naar de liggende modus wordt gedraaid? Deze optie is alleen van toepassing op het servertabblad.';
@override
String get goBackQ => 'Terug gaan?';
@override
String get goto => 'Ga naar';
@override
String get hideTitleBar => 'Titelbalk verbergen';
@override
String get highlight => 'Code-highlight';
@override
String get homeWidgetUrlConfig => 'Home-widget-url configureren';
@override
String get host => 'Host';
@override
String httpFailedWithCode(Object code) {
return 'verzoek mislukt, statuscode: $code';
}
@override
String get ignoreCert => 'Certificaat negeren';
@override
String get image => 'Afbeelding';
@override
String get imagesList => 'Lijst met afbeeldingen';
@override
String get init => 'Initialiseren';
@override
String get inner => 'Intern';
@override
String get install => 'Installeren';
@override
String get installDockerWithUrl => 'Installeer eerst docker via https://docs.docker.com/engine/install.';
@override
String get invalid => 'Ongeldig';
@override
String get jumpServer => 'Spring naar server';
@override
String get keepForeground => 'Houd de app op de voorgrond!';
@override
String get keepStatusWhenErr => 'Behoud de laatste serverstatus';
@override
String get keepStatusWhenErrTip => 'Alleen in geval van een fout tijdens de scriptuitvoering';
@override
String get keyAuth => 'Sleutelauthenticatie';
@override
String get letterCache => 'Lettercaching';
@override
String get letterCacheTip => 'Aanbevolen om uit te schakelen, maar na het uitschakelen is het niet mogelijk om CJK-tekens in te voeren.';
@override
String get license => 'Licentie';
@override
String get location => 'Locatie';
@override
String get loss => 'verlies';
@override
String madeWithLove(Object myGithub) {
return 'Gemaakt met ❤️ door $myGithub';
}
@override
String get manual => 'Handleiding';
@override
String get max => 'max';
@override
String get maxRetryCount => 'Aantal serverherverbindingen';
@override
String get maxRetryCountEqual0 => 'Zal opnieuw blijven proberen.';
@override
String get min => 'min';
@override
String get mission => 'Missie';
@override
String get more => 'Meer';
@override
String get moveOutServerFuncBtnsHelp => 'Aan: kan worden weergegeven onder elke kaart op de Server-tabbladpagina. Uit: kan worden weergegeven bovenaan de Serverdetails-pagina.';
@override
String get ms => 'ms';
@override
String get needHomeDir => 'Als u een Synology-gebruiker bent, [zie hier](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Gebruikers van andere systemen moeten zoeken hoe ze een home directory kunnen creëren.';
@override
String get needRestart => 'App moet opnieuw worden gestart';
@override
String get net => 'Netwerk';
@override
String get netViewType => 'Netweergavetype';
@override
String get newContainer => 'Nieuwe container';
@override
String get noLineChart => 'lijndiagrammen gebruiken';
@override
String get noLineChartForCpu => 'Gebruik geen lijndiagrammen voor CPU';
@override
String get noPrivateKeyTip => 'De privésleutel bestaat niet, deze is mogelijk verwijderd of er is een configuratiefout.';
@override
String get noPromptAgain => 'Niet meer vragen';
@override
String get node => 'Node';
@override
String get notAvailable => 'Niet beschikbaar';
@override
String get onServerDetailPage => 'Op serverdetailspagina';
@override
String get onlyOneLine => 'Alleen als één regel weergeven (scrollbaar)';
@override
String get onlyWhenCoreBiggerThan8 => 'Alleen effectief wanneer het aantal cores > 8';
@override
String get openLastPath => 'Open het laatste pad';
@override
String get openLastPathTip => 'Verschillende servers hebben verschillende logs, en de log is het pad naar de uitgang';
@override
String get parseContainerStatsTip => 'Het parsen van de bezettingsstatus van Docker is relatief langzaam.';
@override
String percentOfSize(Object percent, Object size) {
return '$percent% van $size';
}
@override
String get permission => 'Machtigingen';
@override
String get pingAvg => 'Gem:';
@override
String get pingInputIP => 'Voer een doel-IP / domein in.';
@override
String get pingNoServer => 'Geen server om te pingen.\nVoeg een server toe in het servertabblad.';
@override
String get pkg => 'Pkg';
@override
String get plugInType => 'Invoegingstype';
@override
String get port => 'Poort';
@override
String get preview => 'Voorbeeld';
@override
String get privateKey => 'Privésleutel';
@override
String get process => 'Proces';
@override
String get pushToken => 'Push-token';
@override
String get pveIgnoreCertTip => 'Niet aanbevolen om in te schakelen, let op beveiligingsrisico\'s! Als u de standaardcertificaat van PVE gebruikt, moet u deze optie inschakelen.';
@override
String get pveLoginFailed => 'Aanmelden mislukt. Kan niet authenticeren met gebruikersnaam/wachtwoord van serverconfiguratie voor Linux PAM-login.';
@override
String get pveVersionLow => 'Deze functie bevindt zich momenteel in de testfase en is alleen getest op PVE 8+. Gebruik het met voorzichtigheid.';
@override
String get pwd => 'Wachtwoord';
@override
String get read => 'Lezen';
@override
String get reboot => 'Herstart';
@override
String get rememberPwdInMem => 'Wachtwoord onthouden in geheugen';
@override
String get rememberPwdInMemTip => 'Gebruikt voor containers, opschorting, enz.';
@override
String get rememberWindowSize => 'Venstergrootte onthouden';
@override
String get remotePath => 'Extern pad';
@override
String get restart => 'Herstarten';
@override
String get result => 'Resultaat';
@override
String get rotateAngel => 'Rotatiehoek';
@override
String get route => 'Route';
@override
String get run => 'Uitvoeren';
@override
String get running => 'Uitgevoerd';
@override
String get sameIdServerExist => 'Er bestaat al een server met dezelfde ID';
@override
String get save => 'Opslaan';
@override
String get saved => 'Opgeslagen';
@override
String get second => 's';
@override
String get sensors => 'Sensor';
@override
String get sequence => 'Volgorde';
@override
String get server => 'Server';
@override
String get serverDetailOrder => 'Volgorde van widget op detailpagina';
@override
String get serverFuncBtns => 'Server functieknoppen';
@override
String get serverOrder => 'Servervolgorde';
@override
String get sftpDlPrepare => 'Voorbereiden om verbinding te maken...';
@override
String get sftpEditorTip => 'Indien leeg, gebruik de ingebouwde bestandseditor van de app. Indien een waarde aanwezig is, gebruik de editor van de externe server, bijvoorbeeld `vim` (aanbevolen om automatisch te detecteren volgens `EDITOR`).';
@override
String get sftpRmrDirSummary => 'Gebruik `rm -r` om een map te verwijderen in SFTP.';
@override
String get sftpSSHConnected => 'SFTP Verbonden';
@override
String get sftpShowFoldersFirst => 'Mappen eerst weergeven';
@override
String get showDistLogo => 'Distributielogo weergeven';
@override
String get shutdown => 'Afsluiten';
@override
String get size => 'Grootte';
@override
String get snippet => 'Fragment';
@override
String get softWrap => 'Zachte wrap';
@override
String get specifyDev => 'Apparaat specificeren';
@override
String get specifyDevTip => 'Bijvoorbeeld, netwerkverkeersstatistieken zijn standaard voor alle apparaten. Hier kunt u een specifiek apparaat opgeven.';
@override
String get speed => 'Snelheid';
@override
String spentTime(Object time) {
return 'Gebruikte tijd: $time';
}
@override
String get sshTermHelp => 'Wanneer het terminal scrollbaar is, kan horizontaal slepen tekst selecteren. Klikken op de toetsenbordknop schakelt het toetsenbord aan/uit. Het bestandsicoon opent de huidige pad SFTP. De klembordknop kopieert de inhoud wanneer tekst is geselecteerd en plakt inhoud van het klembord in de terminal wanneer geen tekst is geselecteerd en er inhoud op het klembord staat. Het code-icoon plakt codefragmenten in de terminal en voert ze uit.';
@override
String sshTip(Object url) {
return 'Deze functie bevindt zich momenteel in de experimentele fase.\n\nMeld alstublieft bugs op $url of sluit je aan bij onze ontwikkeling.';
}
@override
String get sshVirtualKeyAutoOff => 'Automatisch schakelen van virtuele toetsen';
@override
String get start => 'Starten';
@override
String get stat => 'Statistieken';
@override
String get stats => 'Statistieken';
@override
String get stop => 'Stoppen';
@override
String get stopped => 'Gestopt';
@override
String get storage => 'Opslag';
@override
String get supportFmtArgs => 'De volgende opmaakparameters worden ondersteund:';
@override
String get suspend => 'Ophangen';
@override
String get suspendTip => 'De opschortfunctie vereist rootrechten en systemd-ondersteuning.';
@override
String switchTo(Object val) {
return 'Overschakelen naar $val';
}
@override
String get sync => 'Sync';
@override
String get syncTip => 'Een herstart kan nodig zijn voor sommige wijzigingen om van kracht te worden.';
@override
String get system => 'Systeem';
@override
String get tag => 'Labels';
@override
String get temperature => 'Temperatuur';
@override
String get termFontSizeTip => 'Deze instelling heeft invloed op de terminalgrootte (breedte en hoogte). U kunt inzoomen op de terminalpagina om de lettergrootte van de huidige sessie aan te passen.';
@override
String get terminal => 'Terminal';
@override
String get test => 'Testen';
@override
String get textScaler => 'Tekstschaler';
@override
String get textScalerTip => '1.0 => 100% (oorspronkelijke grootte), werkt alleen op het gedeelte van de serverpagina van het lettertype, niet aanbevolen om te wijzigen.';
@override
String get theme => 'Thema';
@override
String get time => 'Tijd';
@override
String get times => 'Keer';
@override
String get total => 'Totaal';
@override
String get traffic => 'Verkeer';
@override
String get trySudo => 'Probeer sudo te gebruiken';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Onbekend';
@override
String get unkownConvertMode => 'Onbekende conversiemodus';
@override
String get update => 'Bijwerken';
@override
String get updateIntervalEqual0 => 'Het staat op 0, het zal niet automatisch bijwerken\nCPU status kan niet berekend worden.';
@override
String get updateServerStatusInterval => 'Interne server status bijwerking interval';
@override
String get upload => 'Upload';
@override
String get upsideDown => 'Ondersteboven';
@override
String get uptime => 'Uptime';
@override
String get useCdn => 'Gebruikt CDN';
@override
String get useCdnTip => 'Niet-chinese gebruikers worden aangeraden om deze CDN te gebruiken. Wil je dat?';
@override
String get useNoPwd => 'Er zal geen wachtwoord gebruikt worden';
@override
String get usePodmanByDefault => 'Valt terug op Podman';
@override
String get used => 'Gebruikt';
@override
String get view => 'Weergave';
@override
String get viewErr => 'Zie foutmelding';
@override
String get virtKeyHelpClipboard => 'Kopiëren naar het klembord als de geselecteerde terminal niet leeg is, anders de inhoud van het klembord plakken in de terminal.';
@override
String get virtKeyHelpIME => 'Toetsenbord aan/uit zetten';
@override
String get virtKeyHelpSFTP => 'Huidige map openen in SFTP.';
@override
String get waitConnection => 'Wacht alstublieft tot de verbinding tot stand is gebracht.';
@override
String get wakeLock => 'Wakker houden';
@override
String get watchNotPaired => 'Geen gekoppelde Apple Watch';
@override
String get webdavSettingEmpty => 'Webdav-instelling is leeg';
@override
String get whenOpenApp => 'Bij het openen van de app';
@override
String get wolTip => 'Na het configureren van WOL (Wake-on-LAN), wordt elke keer dat de server wordt verbonden een WOL-verzoek verzonden.';
@override
String get write => 'Schrijven';
@override
String get writeScriptFailTip => 'Het schrijven naar het script is mislukt, mogelijk door gebrek aan rechten of omdat de map niet bestaat.';
@override
String get writeScriptTip => 'Na het verbinden met de server wordt een script geschreven naar ~/.config/server_box om de systeemstatus te monitoren. U kunt de inhoud van het script controleren.';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for Portuguese (`pt`).
class AppLocalizationsPt extends AppLocalizations {
AppLocalizationsPt([String locale = 'pt']) : super(locale);
@override
String get aboutThanks => 'Agradecimentos a todos os participantes.';
@override
String get acceptBeta => 'Aceitar atualizações da versão de teste';
@override
String get addSystemPrivateKeyTip => 'Atualmente, não há nenhuma chave privada. Gostaria de adicionar a chave do sistema (~/.ssh/id_rsa)?';
@override
String get added2List => 'Adicionado à lista de tarefas';
@override
String get addr => 'Endereço';
@override
String get alreadyLastDir => 'Já é o diretório mais alto';
@override
String get authFailTip => 'Autenticação falhou, por favor verifique se a senha/chave/host/usuário, etc., estão incorretos.';
@override
String get autoBackupConflict => 'Apenas um backup automático pode ser ativado por vez';
@override
String get autoConnect => 'Conexão automática';
@override
String get autoRun => 'Execução automática';
@override
String get autoUpdateHomeWidget => 'Atualização automática do widget da tela inicial';
@override
String get backupTip => 'Os dados exportados são criptografados de forma simples, por favor, guarde-os com segurança.';
@override
String get backupVersionNotMatch => 'Versão de backup não compatível, não é possível restaurar';
@override
String get battery => 'Bateria';
@override
String get bgRun => 'Execução em segundo plano';
@override
String get bgRunTip => 'Este interruptor indica que o programa tentará rodar em segundo plano, mas a capacidade de fazer isso depende das permissões concedidas. No Android nativo, desative a \'Otimização de bateria\' para este app, no MIUI, altere a estratégia de economia de energia para \'Sem restrições\'.';
@override
String get cmd => 'Comando';
@override
String get collapseUITip => 'Deve colapsar listas longas na UI por padrão?';
@override
String get conn => 'Conectar';
@override
String get container => 'Contêiner';
@override
String get containerTrySudoTip => 'Por exemplo: se o usuário for definido como aaa dentro do app, mas o Docker estiver instalado sob o usuário root, esta opção precisará ser ativada';
@override
String get convert => 'Converter';
@override
String get copyPath => 'Copiar caminho';
@override
String get cpuViewAsProgressTip => 'Exiba a taxa de uso de cada CPU em estilo de barra de progresso (estilo antigo)';
@override
String get cursorType => 'Tipo de cursor';
@override
String get customCmd => 'Comandos personalizados';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Nome do comando\": \"Comando\"';
@override
String get decode => 'Decodificar';
@override
String get decompress => 'Descomprimir';
@override
String get deleteServers => 'Excluir servidores em lote';
@override
String get dirEmpty => 'Certifique-se de que a pasta está vazia';
@override
String get disconnected => 'Desconectado';
@override
String get disk => 'Disco';
@override
String get diskIgnorePath => 'Caminhos de disco ignorados';
@override
String get displayCpuIndex => 'Exiba o índice de CPU';
@override
String dl2Local(Object fileName) {
return 'Baixar $fileName para o local?';
}
@override
String get dockerEmptyRunningItems => 'Não há contêineres em execução.\nIsso pode ser porque:\n- O usuário que instalou o Docker difere do usuário configurado no app\n- A variável de ambiente DOCKER_HOST não foi lida corretamente. Você pode verificar isso executando `echo \$DOCKER_HOST` no terminal.';
@override
String dockerImagesFmt(Object count) {
return 'Total de $count imagens';
}
@override
String get dockerNotInstalled => 'Docker não instalado';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount em execução, $stoppedCount parados';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count contêiner(es) em execução';
}
@override
String get doubleColumnMode => 'Modo de coluna dupla';
@override
String get doubleColumnTip => 'Esta opção apenas ativa a funcionalidade, se ela será ativada depende também da largura do dispositivo';
@override
String get editVirtKeys => 'Editar teclas virtuais';
@override
String get editor => 'Editor';
@override
String get editorHighlightTip => 'O desempenho do destaque de código atualmente é ruim, pode optar por desativá-lo para melhorar.';
@override
String get encode => 'Codificar';
@override
String get envVars => 'Variável de ambiente';
@override
String get experimentalFeature => 'Recurso experimental';
@override
String get extraArgs => 'Argumentos extras';
@override
String get fallbackSshDest => 'Destino SSH de fallback';
@override
String get fdroidReleaseTip => 'Se você baixou este aplicativo do F-Droid, é recomendado desativar esta opção.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'Arquivo \'$file\' muito grande \'$size\', excedendo $sizeMax';
}
@override
String get followSystem => 'Seguir sistema';
@override
String get font => 'Fonte';
@override
String get fontSize => 'Tamanho da fonte';
@override
String get force => 'Forçar';
@override
String get fullScreen => 'Modo tela cheia';
@override
String get fullScreenJitter => 'Tremulação em tela cheia';
@override
String get fullScreenJitterHelp => 'Prevenir burn-in de tela';
@override
String get fullScreenTip => 'Deve ser ativado o modo de tela cheia quando o dispositivo é girado para o modo paisagem? Esta opção aplica-se apenas à aba do servidor.';
@override
String get goBackQ => 'Voltar?';
@override
String get goto => 'Ir para';
@override
String get hideTitleBar => 'Ocultar barra de título';
@override
String get highlight => 'Destaque de código';
@override
String get homeWidgetUrlConfig => 'Configuração de URL do widget da tela inicial';
@override
String get host => 'Host';
@override
String httpFailedWithCode(Object code) {
return 'Falha na solicitação, código de status: $code';
}
@override
String get ignoreCert => 'Ignorar certificado';
@override
String get image => 'Imagem';
@override
String get imagesList => 'Lista de imagens';
@override
String get init => 'Inicializar';
@override
String get inner => 'Interno';
@override
String get install => 'Instalar';
@override
String get installDockerWithUrl => 'Por favor, instale o Docker primeiro em https://docs.docker.com/engine/install';
@override
String get invalid => 'Inválido';
@override
String get jumpServer => 'Servidor de salto';
@override
String get keepForeground => 'Por favor, mantenha o app em primeiro plano!';
@override
String get keepStatusWhenErr => 'Manter o status anterior do servidor';
@override
String get keepStatusWhenErrTip => 'Limitado a erros de execução de scripts';
@override
String get keyAuth => 'Autenticação por chave';
@override
String get letterCache => 'Cache de letras';
@override
String get letterCacheTip => 'Recomendado desativar, mas após desativar, será impossível inserir caracteres CJK.';
@override
String get license => 'Licença de código aberto';
@override
String get location => 'Localização';
@override
String get loss => 'Taxa de perda';
@override
String madeWithLove(Object myGithub) {
return 'Feito com ❤️ por $myGithub';
}
@override
String get manual => 'Manual';
@override
String get max => 'Máximo';
@override
String get maxRetryCount => 'Número de tentativas de reconexão com o servidor';
@override
String get maxRetryCountEqual0 => 'Irá tentar indefinidamente';
@override
String get min => 'Mínimo';
@override
String get mission => 'Missão';
@override
String get more => 'Mais';
@override
String get moveOutServerFuncBtnsHelp => 'Ativado: Mostra abaixo de cada cartão na aba do servidor. Desativado: Mostra no topo da página de detalhes do servidor.';
@override
String get ms => 'ms';
@override
String get needHomeDir => 'Se você é usuário de Synology, [veja aqui](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Usuários de outros sistemas precisam pesquisar como criar um diretório home.';
@override
String get needRestart => 'Necessita reiniciar o app';
@override
String get net => 'Rede';
@override
String get netViewType => 'Tipo de visualização de rede';
@override
String get newContainer => 'Novo contêiner';
@override
String get noLineChart => 'Não usar gráficos de linha';
@override
String get noLineChartForCpu => 'Não utilizar gráficos de linhas para a CPU';
@override
String get noPrivateKeyTip => 'A chave privada não existe, pode ter sido deletada ou há um erro de configuração.';
@override
String get noPromptAgain => 'Não perguntar novamente';
@override
String get node => '';
@override
String get notAvailable => 'Indisponível';
@override
String get onServerDetailPage => 'Na página de detalhes do servidor';
@override
String get onlyOneLine => 'Exibir apenas como uma linha (rolável)';
@override
String get onlyWhenCoreBiggerThan8 => 'Efetivo apenas quando o número de núcleos > 8';
@override
String get openLastPath => 'Abrir o último caminho';
@override
String get openLastPathTip => 'Registros diferentes para servidores diferentes, e registra o caminho ao sair';
@override
String get parseContainerStatsTip => 'Análise de status do Docker pode ser lenta';
@override
String percentOfSize(Object percent, Object size) {
return '$percent% de $size';
}
@override
String get permission => 'Permissões';
@override
String get pingAvg => 'Média:';
@override
String get pingInputIP => 'Por favor, insira o IP ou domínio alvo';
@override
String get pingNoServer => 'Nenhum servidor disponível para Ping\nPor favor, adicione um servidor na aba de servidores e tente novamente';
@override
String get pkg => 'Gerenciamento de pacotes';
@override
String get plugInType => 'Tipo de Inserção';
@override
String get port => 'Porta';
@override
String get preview => 'Pré-visualização';
@override
String get privateKey => 'Chave privada';
@override
String get process => 'Processo';
@override
String get pushToken => 'Token de notificação push';
@override
String get pveIgnoreCertTip => 'Não recomendado para ativar, cuidado com os riscos de segurança! Se estiver usando o certificado padrão do PVE, você precisa habilitar esta opção.';
@override
String get pveLoginFailed => 'Falha no login. Não é possível autenticar com o nome de usuário/senha da configuração do servidor para login no Linux PAM.';
@override
String get pveVersionLow => 'Esta funcionalidade está atualmente em fase de teste e foi testada apenas no PVE 8+. Por favor, use com cautela.';
@override
String get pwd => 'Senha';
@override
String get read => 'Leitura';
@override
String get reboot => 'Reiniciar';
@override
String get rememberPwdInMem => 'Lembrar senha na memória';
@override
String get rememberPwdInMemTip => 'Usado para contêineres, suspensão, etc.';
@override
String get rememberWindowSize => 'Lembrar o tamanho da janela';
@override
String get remotePath => 'Caminho remoto';
@override
String get restart => 'Reiniciar';
@override
String get result => 'Resultado';
@override
String get rotateAngel => 'Ângulo de rotação';
@override
String get route => 'Roteamento';
@override
String get run => 'Executar';
@override
String get running => 'Executando';
@override
String get sameIdServerExist => 'Já existe um servidor com o mesmo ID';
@override
String get save => 'Salvar';
@override
String get saved => 'Salvo';
@override
String get second => 'Segundo';
@override
String get sensors => 'Sensores';
@override
String get sequence => 'Sequência';
@override
String get server => 'Servidor';
@override
String get serverDetailOrder => 'Ordem dos componentes na página de detalhes do servidor';
@override
String get serverFuncBtns => 'Botões de função do servidor';
@override
String get serverOrder => 'Ordem do servidor';
@override
String get sftpDlPrepare => 'Preparando para conectar ao servidor...';
@override
String get sftpEditorTip => 'Se vazio, use o editor de arquivos integrado do aplicativo. Se houver um valor, use o editor do servidor remoto, por exemplo, `vim` (recomendado detectar automaticamente de acordo com `EDITOR`).';
@override
String get sftpRmrDirSummary => 'Usar `rm -r` em SFTP para excluir pastas';
@override
String get sftpSSHConnected => 'SFTP conectado...';
@override
String get sftpShowFoldersFirst => 'Mostrar pastas primeiro';
@override
String get showDistLogo => 'Mostrar logo da distribuição';
@override
String get shutdown => 'Desligar';
@override
String get size => 'Tamanho';
@override
String get snippet => 'Snippet';
@override
String get softWrap => 'Quebra de linha suave';
@override
String get specifyDev => 'Especificar dispositivo';
@override
String get specifyDevTip => 'Por exemplo, as estatísticas de tráfego de rede são por padrão para todos os dispositivos. Você pode especificar um dispositivo específico aqui.';
@override
String get speed => 'Velocidade';
@override
String spentTime(Object time) {
return 'Tempo gasto: $time';
}
@override
String get sshTermHelp => 'Quando o terminal é rolável, arrastar horizontalmente pode selecionar texto. Clicar no botão do teclado ativa/desativa o teclado. O ícone de arquivo abre o SFTP do caminho atual. O botão da área de transferência copia o conteúdo quando o texto é selecionado e cola o conteúdo da área de transferência no terminal quando nenhum texto é selecionado e há conteúdo na área de transferência. O ícone de código cola trechos de código no terminal e os executa.';
@override
String sshTip(Object url) {
return 'Esta funcionalidade está em fase de teste.\n\nPor favor, reporte problemas em $url ou junte-se a nós no desenvolvimento.';
}
@override
String get sshVirtualKeyAutoOff => 'Desativação automática das teclas virtuais';
@override
String get start => 'Iniciar';
@override
String get stat => 'Estatísticas';
@override
String get stats => 'Estatísticas';
@override
String get stop => 'Parar';
@override
String get stopped => 'Parado';
@override
String get storage => 'Armazenamento';
@override
String get supportFmtArgs => 'Suporta os seguintes argumentos formatados:';
@override
String get suspend => 'Suspender';
@override
String get suspendTip => 'A função de suspensão requer permissões de root e suporte do systemd.';
@override
String switchTo(Object val) {
return 'Mudar para $val';
}
@override
String get sync => 'Sincronizar';
@override
String get syncTip => 'Pode ser necessário reiniciar para algumas mudanças surtirem efeito.';
@override
String get system => 'Sistema';
@override
String get tag => 'Tag';
@override
String get temperature => 'Temperatura';
@override
String get termFontSizeTip => 'Esta configuração afetará o tamanho do terminal (largura e altura). Você pode dar zoom na página do terminal para ajustar o tamanho da fonte da sessão atual.';
@override
String get terminal => 'Terminal';
@override
String get test => 'Teste';
@override
String get textScaler => 'Escala de texto';
@override
String get textScalerTip => '1.0 => 100% (tamanho original), afeta apenas algumas fontes na página do servidor, não é recomendado alterar.';
@override
String get theme => 'Tema';
@override
String get time => 'Tempo';
@override
String get times => 'Vezes';
@override
String get total => 'Total';
@override
String get traffic => 'Tráfego';
@override
String get trySudo => 'Tentar usar sudo';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Desconhecido';
@override
String get unkownConvertMode => 'Modo de conversão desconhecido';
@override
String get update => 'Atualizar';
@override
String get updateIntervalEqual0 => 'Se definido como 0, o estado do servidor não será atualizado automaticamente.\nE o uso da CPU não poderá ser calculado.';
@override
String get updateServerStatusInterval => 'Intervalo de atualização do estado do servidor';
@override
String get upload => 'Upload';
@override
String get upsideDown => 'Inverter verticalmente';
@override
String get uptime => 'Tempo de atividade';
@override
String get useCdn => 'Utilizando CDN';
@override
String get useCdnTip => 'Recomenda-se que usuários não chineses usem CDN. Gostaria de usá-lo?';
@override
String get useNoPwd => 'Será usado sem senha';
@override
String get usePodmanByDefault => 'Usar Podman por padrão';
@override
String get used => 'Usado';
@override
String get view => 'Visualização';
@override
String get viewErr => 'Ver erro';
@override
String get virtKeyHelpClipboard => 'Se houver texto selecionado no terminal, copia para a área de transferência, caso contrário, cola o conteúdo da área de transferência no terminal.';
@override
String get virtKeyHelpIME => 'Ligar/desligar o teclado';
@override
String get virtKeyHelpSFTP => 'Abre o caminho atual em SFTP.';
@override
String get waitConnection => 'Por favor, aguarde a conexão ser estabelecida';
@override
String get wakeLock => 'Manter acordado';
@override
String get watchNotPaired => 'Não há Apple Watch pareado';
@override
String get webdavSettingEmpty => 'Configurações de Webdav estão vazias';
@override
String get whenOpenApp => 'Ao abrir o app';
@override
String get wolTip => 'Após configurar o WOL (Wake-on-LAN), um pedido de WOL é enviado cada vez que o servidor é conectado.';
@override
String get write => 'Escrita';
@override
String get writeScriptFailTip => 'Falha ao escrever no script, possivelmente devido à falta de permissões ou o diretório não existe.';
@override
String get writeScriptTip => 'Após conectar ao servidor, um script será escrito em ~/.config/server_box para monitorar o status do sistema. Você pode revisar o conteúdo do script.';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for Russian (`ru`).
class AppLocalizationsRu extends AppLocalizations {
AppLocalizationsRu([String locale = 'ru']) : super(locale);
@override
String get aboutThanks => 'Благодарности всем участникам.';
@override
String get acceptBeta => 'Принять обновления тестовой версии';
@override
String get addSystemPrivateKeyTip => 'В данный момент приватные ключи отсутствуют. Добавить системный приватный ключ (~/.ssh/id_rsa)?';
@override
String get added2List => 'Добавлено в список задач';
@override
String get addr => 'Адрес';
@override
String get alreadyLastDir => 'Уже в корневом каталоге';
@override
String get authFailTip => 'Аутентификация не удалась, пожалуйста, проверьте, правильны ли пароль/ключ/хост/пользователь и т.д.';
@override
String get autoBackupConflict => 'Может быть включено только одно автоматическое резервное копирование';
@override
String get autoConnect => 'Автоматическое подключение';
@override
String get autoRun => 'Автозапуск';
@override
String get autoUpdateHomeWidget => 'Автоматическое обновление виджета на главном экране';
@override
String get backupTip => 'Экспортированные данные зашифрованы простым способом \nПожалуйста, храните их в безопасности.';
@override
String get backupVersionNotMatch => 'Версия резервной копии не совпадает, восстановление невозможно';
@override
String get battery => 'Батарея';
@override
String get bgRun => 'Работа в фоновом режиме';
@override
String get bgRunTip => 'Этот переключатель означает, что программа будет пытаться работать в фоновом режиме, но фактическое выполнение зависит от того, включено ли разрешение. Для нативного Android отключите «Оптимизацию батареи» для этого приложения, для MIUI измените контроль активности на «Нет ограничений».';
@override
String get cmd => 'Команда';
@override
String get collapseUITip => 'Свернуть длинные списки в UI по умолчанию';
@override
String get conn => 'Подключение';
@override
String get container => 'Контейнер';
@override
String get containerTrySudoTip => 'Например: если пользователь в приложении установлен как aaa, но Docker установлен под пользователем root, тогда нужно включить эту опцию';
@override
String get convert => 'Конвертировать';
@override
String get copyPath => 'Копировать путь';
@override
String get cpuViewAsProgressTip => 'Отобразите уровень использования каждого процессора в виде индикатора выполнения (старый стиль)';
@override
String get cursorType => 'Тип курсора';
@override
String get customCmd => 'Пользовательские команды';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Имя команды\": \"Команда\"';
@override
String get decode => 'Декодировать';
@override
String get decompress => 'Разархивировать';
@override
String get deleteServers => 'Удалить серверы пакетно';
@override
String get dirEmpty => 'Пожалуйста, убедитесь, что папка пуста';
@override
String get disconnected => 'Отключено';
@override
String get disk => 'Диск';
@override
String get diskIgnorePath => 'Игнорировать путь к диску';
@override
String get displayCpuIndex => 'Отобразить индекс ЦП';
@override
String dl2Local(Object fileName) {
return 'Загрузить $fileName на локальный диск?';
}
@override
String get dockerEmptyRunningItems => 'Нет запущенных контейнеров.\nЭто может быть из-за:\n- пользователя Docker, отличного от пользователя, настроенного в приложении\n- переменной окружения DOCKER_HOST, которая не была правильно считана. Вы можете выполнить `echo \$DOCKER_HOST` в терминале, чтобы увидеть ее значение.';
@override
String dockerImagesFmt(Object count) {
return 'Всего $count образов';
}
@override
String get dockerNotInstalled => 'Docker не установлен';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount запущено, $stoppedCount остановлено';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count контейнеров запущено';
}
@override
String get doubleColumnMode => 'Режим двойной колонки';
@override
String get doubleColumnTip => 'Эта опция лишь включает функцию; фактическое применение зависит от ширины устройства';
@override
String get editVirtKeys => 'Редактировать виртуальные клавиши';
@override
String get editor => 'Редактор';
@override
String get editorHighlightTip => 'Текущая производительность подсветки кода неудовлетворительна, можно отключить для улучшения.';
@override
String get encode => 'Кодировать';
@override
String get envVars => 'Переменная окружения';
@override
String get experimentalFeature => 'Экспериментальная функция';
@override
String get extraArgs => 'Дополнительные аргументы';
@override
String get fallbackSshDest => 'Резервное место назначения SSH';
@override
String get fdroidReleaseTip => 'Если вы скачали это приложение с F-Droid, рекомендуется отключить эту опцию.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'Файл \'$file\' слишком большой \'$size\', превышает $sizeMax';
}
@override
String get followSystem => 'Следовать за системой';
@override
String get font => 'Шрифт';
@override
String get fontSize => 'Размер шрифта';
@override
String get force => 'Принудительно';
@override
String get fullScreen => 'Полноэкранный режим';
@override
String get fullScreenJitter => 'Вибрация в полноэкранном режиме';
@override
String get fullScreenJitterHelp => 'Предотвращение выгорания экрана';
@override
String get fullScreenTip => 'Следует ли включить полноэкранный режим, когда устройство поворачивается в альбомный режим? Эта опция применяется только к вкладке сервера.';
@override
String get goBackQ => 'Вернуться?';
@override
String get goto => 'Перейти к';
@override
String get hideTitleBar => 'Скрыть заголовок';
@override
String get highlight => 'Подсветка кода';
@override
String get homeWidgetUrlConfig => 'Конфигурация URL виджета домашнего экрана';
@override
String get host => 'Хост';
@override
String httpFailedWithCode(Object code) {
return 'ошибка запроса, код: $code';
}
@override
String get ignoreCert => 'Игнорировать сертификат';
@override
String get image => 'Образ';
@override
String get imagesList => 'Список образов';
@override
String get init => 'Инициализировать';
@override
String get inner => 'Встроенный';
@override
String get install => 'установить';
@override
String get installDockerWithUrl => 'Пожалуйста, сначала установите Docker по адресу https://docs.docker.com/engine/install';
@override
String get invalid => 'Недействительный';
@override
String get jumpServer => 'прыжковый сервер';
@override
String get keepForeground => 'Пожалуйста, держите приложение в фокусе!';
@override
String get keepStatusWhenErr => 'Сохранять статус сервера при ошибке';
@override
String get keepStatusWhenErrTip => 'Применимо только в случае ошибки выполнения скрипта';
@override
String get keyAuth => 'Аутентификация по ключу';
@override
String get letterCache => 'Кэширование букв';
@override
String get letterCacheTip => 'Рекомендуется отключить, но после отключения будет невозможно вводить символы CJK.';
@override
String get license => 'Лицензия';
@override
String get location => 'Местоположение';
@override
String get loss => 'Потери пакетов';
@override
String madeWithLove(Object myGithub) {
return 'Создано с ❤️ by $myGithub';
}
@override
String get manual => 'Вручную';
@override
String get max => 'максимум';
@override
String get maxRetryCount => 'Максимальное количество попыток переподключения к серверу';
@override
String get maxRetryCountEqual0 => 'Будет бесконечно пытаться переподключиться';
@override
String get min => 'минимум';
@override
String get mission => 'Задача';
@override
String get more => 'Больше';
@override
String get moveOutServerFuncBtnsHelp => 'Включено: кнопки функций сервера отображаются под каждой карточкой на вкладке сервера. Выключено: отображается в верхней части страницы деталей сервера.';
@override
String get ms => 'мс';
@override
String get needHomeDir => 'Если вы пользователь Synology, [смотрите здесь](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Пользователям других систем нужно искать, как создать домашний каталог.';
@override
String get needRestart => 'Требуется перезапуск приложения';
@override
String get net => 'Сеть';
@override
String get netViewType => 'Тип визуализации сети';
@override
String get newContainer => 'Создать контейнер';
@override
String get noLineChart => 'Не использовать линейные графики';
@override
String get noLineChartForCpu => 'Не используйте линейные графики для ЦП';
@override
String get noPrivateKeyTip => 'Приватный ключ не существует, возможно, он был удален или есть ошибка в настройках.';
@override
String get noPromptAgain => 'Больше не спрашивать';
@override
String get node => 'Узел';
@override
String get notAvailable => 'Недоступно';
@override
String get onServerDetailPage => 'На странице деталей сервера';
@override
String get onlyOneLine => 'Отображать только в одной строке (прокручивается)';
@override
String get onlyWhenCoreBiggerThan8 => 'Действует только при количестве ядер больше 8';
@override
String get openLastPath => 'Открыть последний путь';
@override
String get openLastPathTip => 'Для разных серверов будут сохранены разные записи, записывается путь при выходе';
@override
String get parseContainerStatsTip => 'Анализ статуса использования Docker может быть медленным';
@override
String percentOfSize(Object percent, Object size) {
return '$percent% от $size';
}
@override
String get permission => 'Разрешения';
@override
String get pingAvg => 'В среднем:';
@override
String get pingInputIP => 'Пожалуйста, введите целевой IP или домен';
@override
String get pingNoServer => 'Нет доступных серверов для Ping\nПожалуйста, добавьте их на вкладке «Сервер» и попробуйте снова';
@override
String get pkg => 'Менеджер пакетов';
@override
String get plugInType => 'Тип вставки';
@override
String get port => 'Порт';
@override
String get preview => 'Предпросмотр';
@override
String get privateKey => 'Приватный ключ';
@override
String get process => 'Процесс';
@override
String get pushToken => 'Токен уведомлений';
@override
String get pveIgnoreCertTip => 'Не рекомендуется включать, обратите внимание на риски безопасности! Если вы используете стандартный сертификат от PVE, вам нужно включить эту опцию.';
@override
String get pveLoginFailed => 'Ошибка входа. Невозможно аутентифицироваться с помощью имени пользователя/пароля из конфигурации сервера для входа в Linux PAM.';
@override
String get pveVersionLow => 'Эта функция в настоящее время находится на стадии тестирования и была протестирована только на PVE 8+. Используйте ее с осторожностью.';
@override
String get pwd => 'Пароль';
@override
String get read => 'Чтение';
@override
String get reboot => 'Перезагрузка';
@override
String get rememberPwdInMem => 'Запомнить пароль в памяти';
@override
String get rememberPwdInMemTip => 'Используется для контейнеров, приостановки и т. д.';
@override
String get rememberWindowSize => 'Запомнить размер окна';
@override
String get remotePath => 'Удаленный путь';
@override
String get restart => 'Перезапустить';
@override
String get result => 'Результат';
@override
String get rotateAngel => 'Угол поворота';
@override
String get route => 'Маршрутизация';
@override
String get run => 'Запустить';
@override
String get running => 'Запущено';
@override
String get sameIdServerExist => 'Сервер с таким ID уже существует';
@override
String get save => 'Сохранить';
@override
String get saved => 'Сохранено';
@override
String get second => 'с';
@override
String get sensors => 'Датчики';
@override
String get sequence => 'Последовательность';
@override
String get server => 'Сервер';
@override
String get serverDetailOrder => 'Порядок элементов на странице деталей сервера';
@override
String get serverFuncBtns => 'Кнопки функций сервера';
@override
String get serverOrder => 'Порядок серверов';
@override
String get sftpDlPrepare => 'Подготовка подключения...';
@override
String get sftpEditorTip => 'Если пусто, используйте встроенный редактор файлов приложения. Если значение указано, используйте редактор удаленного сервера, например, `vim` (рекомендуется автоматически определять согласно `EDITOR`).';
@override
String get sftpRmrDirSummary => 'Использовать `rm -r` в SFTP для удаления папок';
@override
String get sftpSSHConnected => 'SFTP подключен...';
@override
String get sftpShowFoldersFirst => 'Показывать папки в начале';
@override
String get showDistLogo => 'Показать лого дистрибутива';
@override
String get shutdown => 'Выключение';
@override
String get size => 'Размер';
@override
String get snippet => 'Фрагмент';
@override
String get softWrap => 'Мягкий перенос';
@override
String get specifyDev => 'Указать устройство';
@override
String get specifyDevTip => 'Например, статистика сетевого трафика по умолчанию относится ко всем устройствам. Здесь вы можете указать конкретное устройство.';
@override
String get speed => 'Скорость';
@override
String spentTime(Object time) {
return 'Затрачено времени: $time';
}
@override
String get sshTermHelp => 'Когда терминал можно прокручивать, горизонтальное перетаскивание позволяет выделить текст. Нажатие на кнопку клавиатуры включает/выключает клавиатуру. Иконка файла открывает текущий путь SFTP. Кнопка буфера обмена копирует содержимое, когда текст выделен, и вставляет содержимое из буфера обмена в терминал, когда текст не выделен, а в буфере есть содержимое. Иконка кода вставляет фрагменты кода в терминал и выполняет их.';
@override
String sshTip(Object url) {
return 'Эта функция находится в стадии тестирования.\n\nПожалуйста, отправляйте отчеты о проблемах на $url или присоединяйтесь к нашей разработке.';
}
@override
String get sshVirtualKeyAutoOff => 'Автоматическое переключение виртуальных клавиш';
@override
String get start => 'Старт';
@override
String get stat => 'Статистика';
@override
String get stats => 'Статистика';
@override
String get stop => 'Остановить';
@override
String get stopped => 'Остановлено';
@override
String get storage => 'Хранение';
@override
String get supportFmtArgs => 'Поддерживаются следующие форматы аргументов:';
@override
String get suspend => 'Приостановить';
@override
String get suspendTip => 'Функция приостановки требует прав root и поддержки systemd.';
@override
String switchTo(Object val) {
return 'Переключиться на $val';
}
@override
String get sync => 'Синхронизировать';
@override
String get syncTip => 'Возможно, потребуется перезагрузка, чтобы некоторые изменения вступили в силу.';
@override
String get system => 'Система';
@override
String get tag => 'Теги';
@override
String get temperature => 'Температура';
@override
String get termFontSizeTip => 'Эта настройка повлияет на размер терминала (ширина и высота). Вы можете масштабировать страницу терминала, чтобы调整 размер шрифта текущей сессии.';
@override
String get terminal => 'Терминал';
@override
String get test => 'Тест';
@override
String get textScaler => 'Масштабирование текста';
@override
String get textScalerTip => '1.0 => 100% (исходный размер), применяется только к части шрифтов на странице сервера, изменение не рекомендуется.';
@override
String get theme => 'Тема';
@override
String get time => 'Время';
@override
String get times => 'Раз';
@override
String get total => 'Всего';
@override
String get traffic => 'Трафик';
@override
String get trySudo => 'Попробовать использовать sudo';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Неизвестно';
@override
String get unkownConvertMode => 'Неизвестный режим конвертации';
@override
String get update => 'Обновление';
@override
String get updateIntervalEqual0 => 'Если установлено 0, статус сервера не будет автоматически обновляться.\nТакже не будет рассчитано использование ЦП.';
@override
String get updateServerStatusInterval => 'Интервал обновления статуса сервера';
@override
String get upload => 'Загрузить';
@override
String get upsideDown => 'Перевернуть';
@override
String get uptime => 'Время работы';
@override
String get useCdn => 'Использование CDN';
@override
String get useCdnTip => 'Не китайским пользователям рекомендуется использовать CDN. Хотели бы вы его использовать?';
@override
String get useNoPwd => 'Будет использоваться без пароля';
@override
String get usePodmanByDefault => 'Использовать Podman по умолчанию';
@override
String get used => 'Использовано';
@override
String get view => 'Вид';
@override
String get viewErr => 'Просмотр ошибок';
@override
String get virtKeyHelpClipboard => 'Если в терминале выделен текст, то он копируется в буфер обмена, в противном случае содержимое буфера вставляется в терминал.';
@override
String get virtKeyHelpIME => 'Включить/выключить клавиатуру';
@override
String get virtKeyHelpSFTP => 'Открыть текущий путь в SFTP.';
@override
String get waitConnection => 'Пожалуйста, дождитесь установки соединения';
@override
String get wakeLock => 'Держать включенным';
@override
String get watchNotPaired => 'Apple Watch не сопряжены';
@override
String get webdavSettingEmpty => 'Настройки Webdav пусты';
@override
String get whenOpenApp => 'При открытии приложения';
@override
String get wolTip => 'После настройки WOL (Wake-on-LAN) при каждом подключении к серверу отправляется запрос WOL.';
@override
String get write => 'Запись';
@override
String get writeScriptFailTip => 'Запись скрипта не удалась, возможно, из-за отсутствия прав или потому что, директории не существует.';
@override
String get writeScriptTip => 'После подключения к серверу скрипт будет записан в ~/.config/server_box для мониторинга состояния системы. Вы можете проверить содержимое скрипта.';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for Turkish (`tr`).
class AppLocalizationsTr extends AppLocalizations {
AppLocalizationsTr([String locale = 'tr']) : super(locale);
@override
String get aboutThanks => 'Katılım gösteren aşağıdaki kişilere teşekkür ederiz.';
@override
String get acceptBeta => 'Beta sürüm güncellemelerini kabul et';
@override
String get addSystemPrivateKeyTip => 'Şu anda özel anahtar yok, sistemle geleni (~/.ssh/id_rsa) eklemek ister misiniz?';
@override
String get added2List => 'Görev listesine eklendi';
@override
String get addr => 'Adres';
@override
String get alreadyLastDir => 'Zaten son klasörde.';
@override
String get authFailTip => 'Kimlik doğrulama başarısız, kimlik bilgilerinin doğru olup olmadığını kontrol edin';
@override
String get autoBackupConflict => 'Aynı anda yalnızca bir otomatik yedekleme etkinleştirilebilir.';
@override
String get autoConnect => 'Otomatik bağlan';
@override
String get autoRun => 'Otomatik çalıştır';
@override
String get autoUpdateHomeWidget => 'Ana widget\'ı otomatik güncelle';
@override
String get backupTip => 'Dışa aktarılan veriler zayıf bir şekilde şifrelenmiştir. \nLütfen güvenli bir yerde saklayın.';
@override
String get backupVersionNotMatch => 'Yedekleme sürümü uyumlu değil.';
@override
String get battery => 'Pil';
@override
String get bgRun => 'Arka planda çalıştır';
@override
String get bgRunTip => 'Bu anahtar yalnızca programın arka planda çalışmayı deneyeceğini ifade eder. Arka planda çalışıp çalışamayacağı, iznin etkinleştirilip etkinleştirilmediğine bağlıdır. AOSP tabanlı Android ROM\'larda, bu uygulamada \"Pil Optimizasyonunu\" devre dışı bırakın. MIUI / HyperOS için, güç tasarrufu politikasını \"Sınırsız\" olarak değiştirin.';
@override
String get cmd => 'Komut';
@override
String get collapseUITip => 'UI\'daki uzun listeleri varsayılan olarak gizleyip gizlememeyi belirler';
@override
String get conn => 'Bağlantı';
@override
String get container => 'Konteyner';
@override
String get containerTrySudoTip => 'Örneğin: Uygulamada kullanıcı aaa olarak ayarlanmış, ancak Docker root kullanıcısı altında kurulmuş. Bu durumda, bu seçeneği etkinleştirmeniz gerekir.';
@override
String get convert => 'Dönüştür';
@override
String get copyPath => 'Yolu kopyala';
@override
String get cpuViewAsProgressTip => 'Her CPU\'nun kullanımını bir ilerleme çubuğu tarzında görüntüle (eski tarz)';
@override
String get cursorType => 'İmleç türü';
@override
String get customCmd => 'Özel komutlar';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Komut Adı\": \"Komut\"';
@override
String get decode => 'Çöz';
@override
String get decompress => 'Sıkıştırmayı';
@override
String get deleteServers => 'Toplu sunucu silme';
@override
String get dirEmpty => 'Klasörün boş olduğundan emin olun.';
@override
String get disconnected => 'Bağlantı kesildi';
@override
String get disk => 'Disk';
@override
String get diskIgnorePath => 'Disk için göz ardı edilen yol';
@override
String get displayCpuIndex => 'CPU dizinini görüntüle';
@override
String dl2Local(Object fileName) {
return '$fileName dosyasını yerel olarak indirmek istiyor musunuz?';
}
@override
String get dockerEmptyRunningItems => 'Çalışan konteyner yok.\nBu şu sebeplerden kaynaklanabilir:\n- Docker kurulumu kullanıcı adı, uygulamada yapılandırılan kullanıcı adıyla aynı değil.\n- DOCKER_HOST ortam değişkeni doğru okunmadı. Terminalde `echo \$DOCKER_HOST` komutunu çalıştırarak elde edebilirsiniz.';
@override
String dockerImagesFmt(Object count) {
return '$count görüntü';
}
@override
String get dockerNotInstalled => 'Docker kurulu değil';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount çalışıyor, $stoppedCount konteyner durduruldu.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count konteyner çalışıyor.';
}
@override
String get doubleColumnMode => 'Çift sütun modu';
@override
String get doubleColumnTip => 'Bu seçenek yalnızca özelliği etkinleştirir, gerçekten etkinleştirilebilir olup olmadığını cihazın genişliği belirler';
@override
String get editVirtKeys => 'Sanal tuşları düzenle';
@override
String get editor => 'Editör';
@override
String get editorHighlightTip => 'Mevcut kod vurgulama performansı ideal değil ve isteğe bağlı olarak kapatılabilir.';
@override
String get encode => 'Kodla';
@override
String get envVars => 'Ortam değişkeni';
@override
String get experimentalFeature => 'Deneysel özellik';
@override
String get extraArgs => 'Ek argümanlar';
@override
String get fallbackSshDest => 'Yedek SSH hedefi';
@override
String get fdroidReleaseTip => 'Bu uygulamayı F-Droid\'den indirdiyseniz, bu seçeneği kapatmanız önerilir.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return '\'$file\' dosyası çok büyük $size, maksimum $sizeMax';
}
@override
String get followSystem => 'Sistemi takip et';
@override
String get font => 'Yazı tipi';
@override
String get fontSize => 'Yazı tipi boyutu';
@override
String get force => 'Zorla';
@override
String get fullScreen => 'Tam ekran modu';
@override
String get fullScreenJitter => 'Tam ekran titremesi';
@override
String get fullScreenJitterHelp => 'Ekran yanıklarını önlemek için';
@override
String get fullScreenTip => 'Cihaz yatay moda döndürüldüğünde tam ekran modu etkinleştirilsin mi? Bu seçenek yalnızca sunucu sekmesi için geçerlidir.';
@override
String get goBackQ => 'Geri dön?';
@override
String get goto => 'Git';
@override
String get hideTitleBar => 'Başlık çubuğunu gizle';
@override
String get highlight => 'Kod vurgulama';
@override
String get homeWidgetUrlConfig => 'Ana sayfa widget URL\'sini yapılandır';
@override
String get host => 'Sunucu';
@override
String httpFailedWithCode(Object code) {
return 'İstek başarısız oldu, durum kodu: $code';
}
@override
String get ignoreCert => 'Sertifikayı yoksay';
@override
String get image => 'Resim';
@override
String get imagesList => 'Resim listesi';
@override
String get init => 'Başlat';
@override
String get inner => 'İç';
@override
String get install => 'Kur';
@override
String get installDockerWithUrl => 'Lütfen önce Docker\'ı https://docs.docker.com/engine/install adresinden kurun.';
@override
String get invalid => 'Geçersiz';
@override
String get jumpServer => 'Atlama sunucusu';
@override
String get keepForeground => 'Uygulama ön planda kalsın!';
@override
String get keepStatusWhenErr => 'Son sunucu durumunu koru';
@override
String get keepStatusWhenErrTip => 'Yalnızca betik yürütme sırasında bir hata oluştuğunda';
@override
String get keyAuth => 'Anahtar Doğrulama';
@override
String get letterCache => 'Harf önbelleği';
@override
String get letterCacheTip => 'Devre dışı bırakılması önerilir, ancak devre dışı bırakıldıktan sonra CJK karakterleri girilemez.';
@override
String get license => 'Lisans';
@override
String get location => 'Konum';
@override
String get loss => 'kayıp';
@override
String madeWithLove(Object myGithub) {
return '$myGithub tarafından ❤️ ile yapıldı';
}
@override
String get manual => 'Kılavuz';
@override
String get max => 'maks';
@override
String get maxRetryCount => 'Sunucu yeniden bağlanma sayısı';
@override
String get maxRetryCountEqual0 => 'Sürekli olarak tekrar denenecek.';
@override
String get min => 'min';
@override
String get mission => 'Görev';
@override
String get more => 'Daha fazla';
@override
String get moveOutServerFuncBtnsHelp => 'ık: Sunucu sekmesi sayfasındaki her kartın altında görüntülenebilir. Kapalı: Sunucu Detayları sayfasının üst kısmında görüntülenebilir.';
@override
String get ms => 'ms';
@override
String get needHomeDir => 'Synology kullanıcısıysanız, [buraya bakın](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Diğer sistem kullanıcılarının bir ana dizin oluşturmayı öğrenmeleri gerekir.';
@override
String get needRestart => 'Uygulamanın yeniden başlatılması gerekiyor';
@override
String get net => '';
@override
String get netViewType => 'Ağ görünümü türü';
@override
String get newContainer => 'Yeni konteyner';
@override
String get noLineChart => 'Çizgi grafik kullanma';
@override
String get noLineChartForCpu => 'CPU için çizgi grafik kullanma';
@override
String get noPrivateKeyTip => 'Özel anahtar mevcut değil, silinmiş olabilir veya bir yapılandırma hatası vardır.';
@override
String get noPromptAgain => 'Tekrar hatırlatma';
@override
String get node => 'Düğüm';
@override
String get notAvailable => 'Kullanılamaz';
@override
String get onServerDetailPage => 'Sunucu detay sayfasında';
@override
String get onlyOneLine => 'Yalnızca bir satır olarak göster (kaydırılabilir)';
@override
String get onlyWhenCoreBiggerThan8 => 'Yalnızca çekirdek sayısı 8\'den fazla olduğunda çalışır';
@override
String get openLastPath => 'Son yolu aç';
@override
String get openLastPathTip => 'Farklı sunucuların farklı günlükleri olacaktır ve çıkış yolu log dosyasıdır';
@override
String get parseContainerStatsTip => 'Docker\'ın işgal durumunu analiz etmek nispeten yavaştır.';
@override
String percentOfSize(Object percent, Object size) {
return '$size\'nin %$percent\'i';
}
@override
String get permission => 'İzinler';
@override
String get pingAvg => 'Ortalama:';
@override
String get pingInputIP => 'Lütfen bir hedef IP / etki alanı girin.';
@override
String get pingNoServer => 'Ping yapılacak sunucu yok.\nLütfen sunucu sekmesine bir sunucu ekleyin.';
@override
String get pkg => 'Paket';
@override
String get plugInType => 'Takma Türü';
@override
String get port => 'Port';
@override
String get preview => 'Önizleme';
@override
String get privateKey => 'Özel Anahtar';
@override
String get process => 'Süreç';
@override
String get pushToken => 'Push token';
@override
String get pveIgnoreCertTip => 'Etkinleştirilmesi önerilmez, güvenlik risklerine dikkat edin! PVE\'nin varsayılan sertifikasını kullanıyorsanız, bu seçeneği etkinleştirmeniz gerekir.';
@override
String get pveLoginFailed => 'Giriş başarısız. Linux PAM girişi için sunucu yapılandırmasındaki kullanıcı adı/şifre ile kimlik doğrulaması yapılamadı.';
@override
String get pveVersionLow => 'Bu özellik şu anda test aşamasında ve sadece PVE 8+ üzerinde test edilmiştir. Lütfen dikkatli kullanın.';
@override
String get pwd => 'Şifre';
@override
String get read => 'Oku';
@override
String get reboot => 'Yeniden başlat';
@override
String get rememberPwdInMem => 'Şifreyi bellekte sakla';
@override
String get rememberPwdInMemTip => 'Konteynerler, askıya alma vb. için kullanılır.';
@override
String get rememberWindowSize => 'Pencere boyutunu hatırla';
@override
String get remotePath => 'Uzak yol';
@override
String get restart => 'Yeniden başlat';
@override
String get result => 'Sonuç';
@override
String get rotateAngel => 'Dönme açısı';
@override
String get route => 'Yönlendirme';
@override
String get run => 'Çalıştır';
@override
String get running => 'Çalışıyor';
@override
String get sameIdServerExist => 'Aynı kimliğe sahip bir sunucu zaten var';
@override
String get save => 'Kaydet';
@override
String get saved => 'Kaydedildi';
@override
String get second => 's';
@override
String get sensors => 'Sensör';
@override
String get sequence => 'Dizi';
@override
String get server => 'Sunucu';
@override
String get serverDetailOrder => 'Ayrıntı sayfası widget sırası';
@override
String get serverFuncBtns => 'Sunucu işlev düğmeleri';
@override
String get serverOrder => 'Sunucu sırası';
@override
String get sftpDlPrepare => 'Bağlantı hazırlığı yapılıyor...';
@override
String get sftpEditorTip => 'Boşsa, uygulamanın yerleşik dosya düzenleyicisini kullanın. Bir değer varsa, uzak sunucunun düzenleyicisini kullanın, örneğin, `vim` (otomatik olarak `EDITOR`\'a göre algılamanız önerilir).';
@override
String get sftpRmrDirSummary => 'SFTP\'de bir klasörü silmek için `rm -r` kullanın.';
@override
String get sftpSSHConnected => 'SFTP Bağlantısı';
@override
String get sftpShowFoldersFirst => 'Önce klasörleri göster';
@override
String get showDistLogo => 'Dağıtım logosunu göster';
@override
String get shutdown => 'Kapat';
@override
String get size => 'Boyut';
@override
String get snippet => 'Parça';
@override
String get softWrap => 'Yumuşak kaydırma';
@override
String get specifyDev => 'Cihazı belirle';
@override
String get specifyDevTip => 'Örneğin, ağ trafiği istatistikleri varsayılan olarak tüm cihazlar içindir. Burada belirli bir cihazı belirtebilirsiniz.';
@override
String get speed => 'Hız';
@override
String spentTime(Object time) {
return 'Harcanan zaman: $time';
}
@override
String get sshTermHelp => 'Terminal kaydırılabilir olduğunda, yatay sürükleme metni seçebilir. Klavye düğmesine tıklamak klavyeyi açar/kapatır. Dosya simgesi mevcut yolu SFTP\'de açar. Pano düğmesi metin seçildiğinde içeriği kopyalar ve metin seçilmediğinde ve panoda içerik olduğunda panodaki içeriği terminale yapıştırır. Kod simgesi kod parçacıklarını terminale yapıştırır ve çalıştırır.';
@override
String sshTip(Object url) {
return 'Bu işlev şu anda deneme aşamasındadır.\n\nLütfen hataları $url adresine bildirin veya geliştirmemize katılın.';
}
@override
String get sshVirtualKeyAutoOff => 'Sanal tuşların otomatik geçişi';
@override
String get start => 'Başlat';
@override
String get stat => 'İstatistik';
@override
String get stats => 'İstatistikler';
@override
String get stop => 'Durdur';
@override
String get stopped => 'Durduruldu';
@override
String get storage => 'Depolama';
@override
String get supportFmtArgs => 'Aşağıdaki biçimlendirme parametreleri desteklenir:';
@override
String get suspend => 'Askıya al';
@override
String get suspendTip => 'Askıya alma işlevi kök izinleri ve systemd desteği gerektirir.';
@override
String switchTo(Object val) {
return '$val öğesine geç';
}
@override
String get sync => 'Senkronize et';
@override
String get syncTip => 'Bazı değişikliklerin etkili olması için yeniden başlatma gerekebilir.';
@override
String get system => 'Sistem';
@override
String get tag => 'Etiketler';
@override
String get temperature => 'Sıcaklık';
@override
String get termFontSizeTip => 'Bu ayar terminal boyutunu (genişlik ve yükseklik) etkileyecektir. Terminal sayfasında yakınlaştırarak mevcut oturumun yazı tipi boyutunu ayarlayabilirsiniz.';
@override
String get terminal => 'Terminal';
@override
String get test => 'Test';
@override
String get textScaler => 'Metin ölçekleyici';
@override
String get textScalerTip => '1.0 => %100 (orijinal boyut), yalnızca sunucu sayfası kısmındaki yazı tipine çalışır, değiştirilmesi önerilmez.';
@override
String get theme => 'Tema';
@override
String get time => 'Zaman';
@override
String get times => 'Zamanlar';
@override
String get total => 'Toplam';
@override
String get traffic => 'Trafik';
@override
String get trySudo => 'Sudo kullanmayı deneyin';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Bilinmeyen';
@override
String get unkownConvertMode => 'Bilinmeyen dönüştürme modu';
@override
String get update => 'Güncelle';
@override
String get updateIntervalEqual0 => '0 olarak ayarladınız, otomatik olarak güncellenmeyecek.\nCPU durumunu hesaplayamıyor.';
@override
String get updateServerStatusInterval => 'Sunucu durumu güncelleme aralığı';
@override
String get upload => 'Yükle';
@override
String get upsideDown => 'Ters';
@override
String get uptime => 'Çalışma süresi';
@override
String get useCdn => 'CDN kullanılıyor';
@override
String get useCdnTip => 'Çin dışındaki kullanıcıların CDN kullanması önerilir. Kullanmak ister misiniz?';
@override
String get useNoPwd => 'Şifre kullanılmayacak';
@override
String get usePodmanByDefault => 'Varsayılan olarak Podman kullan';
@override
String get used => 'Kullanıldı';
@override
String get view => 'Görünüm';
@override
String get viewErr => 'Hataya bakın';
@override
String get virtKeyHelpClipboard => 'Seçilen terminal boş değilse panoya kopyalayın, aksi takdirde panodaki içeriği terminale yapıştırın.';
@override
String get virtKeyHelpIME => 'Klavye aç/kapat';
@override
String get virtKeyHelpSFTP => 'Geçerli dizini SFTP\'de açın.';
@override
String get waitConnection => 'Lütfen bağlantının kurulmasını bekleyin.';
@override
String get wakeLock => 'Uyanık tut';
@override
String get watchNotPaired => 'Eşlenmiş Apple Watch yok';
@override
String get webdavSettingEmpty => 'WebDav ayarı boş';
@override
String get whenOpenApp => 'Uygulamayı açarken';
@override
String get wolTip => 'WOL (Wake-on-LAN) yapılandırıldıktan sonra, her sunucuya bağlandığınızda bir WOL isteği gönderilir.';
@override
String get write => 'Yaz';
@override
String get writeScriptFailTip => 'Komut dosyasına yazma başarısız oldu, muhtemelen izin eksikliğinden veya dizin mevcut olmadığından kaynaklanıyor olabilir.';
@override
String get writeScriptTip => 'Sunucuya bağlandıktan sonra, sistem durumunu izlemek için ~/.config/server_box\'a bir komut dosyası yazılacaktır. Komut dosyası içeriğini inceleyebilirsiniz.';
}

View File

@@ -0,0 +1,699 @@
import 'l10n.dart';
// ignore_for_file: type=lint
/// The translations for Ukrainian (`uk`).
class AppLocalizationsUk extends AppLocalizations {
AppLocalizationsUk([String locale = 'uk']) : super(locale);
@override
String get aboutThanks => 'Дякуємо наступним особам, які взяли участь.';
@override
String get acceptBeta => 'Прийняти оновлення бета-версії';
@override
String get addSystemPrivateKeyTip => 'Наразі приватних ключів нема, хочете додати той, що йде з системою (~/.ssh/id_rsa)?';
@override
String get added2List => 'Додано до списку завдань';
@override
String get addr => 'Адреса';
@override
String get alreadyLastDir => 'Вже в останньому каталозі.';
@override
String get authFailTip => 'Авторизація не вдалася, будь ласка, перевірте правильність облікових даних';
@override
String get autoBackupConflict => 'Тільки одне автоматичне резервне копіювання може бути активне одночасно.';
@override
String get autoConnect => 'Авто підключення';
@override
String get autoRun => 'Авто запуск';
@override
String get autoUpdateHomeWidget => 'Автоматичне оновлення віджетів на головному екрані';
@override
String get backupTip => 'Експортовані дані слабо зашифровані. \nБудь ласка, зберігайте їх у безпеці.';
@override
String get backupVersionNotMatch => 'Версія резервного копіювання не збіглася.';
@override
String get battery => 'Акумулятор';
@override
String get bgRun => 'Запуск у фоновому режимі';
@override
String get bgRunTip => 'Цей перемикач лише вказує на те, що програма намагатиметься працювати у фоновому режимі. Чи може вона працювати у фоновому режимі, залежить від прав доступу. Для AOSP-орієнтованих Android ROM, будь ласка, вимкніть \"Оптимізацію акумулятора\" в цьому додатку. Для MIUI / HyperOS, будь ласка, змініть політику економії енергії на \"Нескінченна\".';
@override
String get cmd => 'Команда';
@override
String get collapseUITip => 'Сховати довгі списки, що є у UI за замовчуванням';
@override
String get conn => 'З\'єднання';
@override
String get container => 'Контейнер';
@override
String get containerTrySudoTip => 'Наприклад: У застосунку користувач це aaa, але Docker встановлений під користувачем root. У цьому випадку вам потрібно активувати цю опцію.';
@override
String get convert => 'Конвертувати';
@override
String get copyPath => 'Скопіювати шлях';
@override
String get cpuViewAsProgressTip => 'Відобразити використання кожного процесора у вигляді стовпчикової діаграми (старий стиль)';
@override
String get cursorType => 'Тип курсора';
@override
String get customCmd => 'Користувацькі команди';
@override
String get customCmdDocUrl => 'https://github.com/lollipopkit/flutter_server_box/wiki#custom-commands';
@override
String get customCmdHint => '\"Ім\'я Команди\": \"Команда\"';
@override
String get decode => 'Декодувати';
@override
String get decompress => 'Розпакувати';
@override
String get deleteServers => 'Масове видалення серверів';
@override
String get dirEmpty => 'Переконайтеся, що директорія пуста.';
@override
String get disconnected => 'Відключено';
@override
String get disk => 'Диск';
@override
String get diskIgnorePath => 'Ігнорувати шлях для диска';
@override
String get displayCpuIndex => 'Відобразити індекс ЦП';
@override
String dl2Local(Object fileName) {
return 'Завантажити $fileName на локальний комп\'ютер?';
}
@override
String get dockerEmptyRunningItems => 'Немає запущених контейнерів.\nЦе може бути через:\n- Користувача Docker, відмінного від користувача, налаштованого в додатку\n- змінну оточення DOCKER_HOST, яка не була правильно зчитана. Ви можете виконати `echo \$DOCKER_HOST` у терміналі, щоб побачити її значення.';
@override
String dockerImagesFmt(Object count) {
return 'Всього $count образів';
}
@override
String get dockerNotInstalled => 'Docker не встановлено';
@override
String dockerStatusRunningAndStoppedFmt(Object runningCount, Object stoppedCount) {
return '$runningCount запущено, $stoppedCount контейнерів зупинено.';
}
@override
String dockerStatusRunningFmt(Object count) {
return '$count контейнер(и) запущено.';
}
@override
String get doubleColumnMode => 'Режим подвійної колонки';
@override
String get doubleColumnTip => 'Ця опція лише активує функцію, чи можна її насправді включити, залежить від ширини пристрою';
@override
String get editVirtKeys => 'Редагувати віртуальні клавіші';
@override
String get editor => 'Редактор';
@override
String get editorHighlightTip => 'Поточна підсвітка коду не ідеальна і може бути вимкнена для покращення.';
@override
String get encode => 'Кодувати';
@override
String get envVars => 'Змінні середовища';
@override
String get experimentalFeature => 'Експериментальна функція';
@override
String get extraArgs => 'Додаткові аргументи';
@override
String get fallbackSshDest => 'Резервна SSH адреса';
@override
String get fdroidReleaseTip => 'Якщо ви завантажили цей застосунок з F-Droid, рекомендується відключити цю опцію.';
@override
String fileTooLarge(Object file, Object size, Object sizeMax) {
return 'Файл \'$file\' занадто великий ($size), макс $sizeMax';
}
@override
String get followSystem => 'Слідувати системі';
@override
String get font => 'Шрифт';
@override
String get fontSize => 'Розмір шрифту';
@override
String get force => 'Примусово';
@override
String get fullScreen => 'Повноекранний режим';
@override
String get fullScreenJitter => 'Тремтіння в повноекранному режимі';
@override
String get fullScreenJitterHelp => 'Щоб уникнути вигоряння екрану';
@override
String get fullScreenTip => 'Чи слід увімкнути повноекранний режим під час повороту пристрою в горизонтальне положення? Ця опція стосується лише вкладки сервера.';
@override
String get goBackQ => 'Повернутися назад?';
@override
String get goto => 'Перейти до';
@override
String get hideTitleBar => 'Сховати заголовок';
@override
String get highlight => 'Підсвітка коду';
@override
String get homeWidgetUrlConfig => 'Налаштувати URL віджета на головному екрані';
@override
String get host => 'Хост';
@override
String httpFailedWithCode(Object code) {
return 'Запит не вдався, код статусу: $code';
}
@override
String get ignoreCert => 'Ігнорувати сертифікат';
@override
String get image => 'Зображення';
@override
String get imagesList => 'Список зображень';
@override
String get init => 'Ініціалізувати';
@override
String get inner => 'Внутрішній';
@override
String get install => 'Встановити';
@override
String get installDockerWithUrl => 'Будь ласка, спочатку встановіть Docker. (https://docs.docker.com/engine/install)';
@override
String get invalid => 'Недійсний';
@override
String get jumpServer => 'Стрибковий Сервер';
@override
String get keepForeground => 'Тримати застосунок на передньому плані!';
@override
String get keepStatusWhenErr => 'Зберегати останній стан сервера';
@override
String get keepStatusWhenErrTip => 'Тільки в разі виникнення помилки під час виконання скрипту';
@override
String get keyAuth => 'Аутентифікація ключем';
@override
String get letterCache => 'Кешування букв';
@override
String get letterCacheTip => 'Рекомендується відключити, але після вимкнення стане неможливим введення CJK (китайських, японських, корейських) символів.';
@override
String get license => 'Ліцензія';
@override
String get location => 'Місцезнаходження';
@override
String get loss => 'втрата пакетів';
@override
String madeWithLove(Object myGithub) {
return 'Зроблено з ❤️ від $myGithub';
}
@override
String get manual => 'Посібник';
@override
String get max => 'макс.';
@override
String get maxRetryCount => 'Кількість повторних спроб підключення до сервера';
@override
String get maxRetryCountEqual0 => 'Знову і знову буде намагатися повторно підключитися.';
@override
String get min => 'мін.';
@override
String get mission => 'Місія';
@override
String get more => 'Більше';
@override
String get moveOutServerFuncBtnsHelp => 'Включено: може відображатися під кожною карткою на вкладці Сервер. Вимкнено: може відображатися вгорі на сторінці деталей сервера.';
@override
String get ms => 'мс.';
@override
String get needHomeDir => 'Якщо ви користувач Synology, [дивіться тут](https://kb.synology.com/DSM/tutorial/user_enable_home_service). Користувачі інших систем повинні знайти інформацію про те, як створити домашній каталог.';
@override
String get needRestart => 'Необхідно перезапустити застосунок';
@override
String get net => 'Мережа';
@override
String get netViewType => 'Тип перегляду мережі';
@override
String get newContainer => 'Новий контейнер';
@override
String get noLineChart => 'Не використовувати лінійні діаграми';
@override
String get noLineChartForCpu => 'Не використовувати лінійні діаграми для ЦП';
@override
String get noPrivateKeyTip => 'Приватного ключа немає, можливо, він був видалений або сталася помилка конфігурації.';
@override
String get noPromptAgain => 'Більше не запитувати';
@override
String get node => 'Вузол';
@override
String get notAvailable => 'Недоступний';
@override
String get onServerDetailPage => 'На сторінці деталі сервера';
@override
String get onlyOneLine => 'Відображати лише в один рядок (прокрутка)';
@override
String get onlyWhenCoreBiggerThan8 => 'Працює лише тоді, коли кількість ядер перевищує 8';
@override
String get openLastPath => 'Відкрити останній шлях';
@override
String get openLastPathTip => 'Для різних серверів будуть збережені різні логи. Записується шлях при виході';
@override
String get parseContainerStatsTip => 'Парсинг статусу зайнятості Docker є відносно повільним.';
@override
String percentOfSize(Object percent, Object size) {
return '$percent% з $size';
}
@override
String get permission => 'Дозволи';
@override
String get pingAvg => 'Середнє:';
@override
String get pingInputIP => 'Будь ласка, введіть цільовий IP / Домен.';
@override
String get pingNoServer => 'Немає сервера для пінгування.\nБудь ласка, додайте сервер у вкладці `Сервер`.';
@override
String get pkg => 'Пакет';
@override
String get plugInType => 'Тип вставки';
@override
String get port => 'Порт';
@override
String get preview => 'Попередній перегляд';
@override
String get privateKey => 'Приватний ключ';
@override
String get process => 'Процес';
@override
String get pushToken => 'Надіслати токен';
@override
String get pveIgnoreCertTip => 'Не рекомендується включати, будьте обережні з ризиками безпеки! Якщо ви використовуєте стандартний сертифікат від PVE, вам потрібно увімкнути цю опцію.';
@override
String get pveLoginFailed => 'Не вдалося увійти. Неможливо пройти аутентифікацію за допомогою імені користувача/пароля з конфігурації сервера для входу Linux PAM.';
@override
String get pveVersionLow => 'Ця функція наразі перебуває на стадії тестування та випробувалася лише на PVE 8+. Будь ласка, використовуйте її з обережністю.';
@override
String get pwd => 'Пароль';
@override
String get read => 'Читати';
@override
String get reboot => 'Перезавантажити';
@override
String get rememberPwdInMem => 'Запам\'ятати пароль у пам\'яті';
@override
String get rememberPwdInMemTip => 'Використовується для контейнерів, призупинення тощо.';
@override
String get rememberWindowSize => 'Запам\'ятати розмір вікна';
@override
String get remotePath => 'Віддалений шлях';
@override
String get restart => 'Перезапустити';
@override
String get result => 'Результат';
@override
String get rotateAngel => 'Кут повороту';
@override
String get route => 'Маршрут';
@override
String get run => 'Запустити';
@override
String get running => 'Виконання';
@override
String get sameIdServerExist => 'Сервер з таким ID вже існує';
@override
String get save => 'Зберегти';
@override
String get saved => 'Збережено';
@override
String get second => 'сек.';
@override
String get sensors => 'Датчики';
@override
String get sequence => 'Послідовність';
@override
String get server => 'Сервер';
@override
String get serverDetailOrder => 'Порядок віджетів на сторінці деталі';
@override
String get serverFuncBtns => 'Кнопки функцій сервера';
@override
String get serverOrder => 'Порядок сервера';
@override
String get sftpDlPrepare => 'Підготовка до підключення...';
@override
String get sftpEditorTip => 'Якщо порожньо, використовуйте вбудований редактор файлів програми. Якщо є значення, використовуйте редактор віддаленого сервера, наприклад, `vim` (рекомендується автоматично визначити відповідно до `EDITOR`).';
@override
String get sftpRmrDirSummary => 'Використовуйте `rm -r`, щоб видалити папку в SFTP.';
@override
String get sftpSSHConnected => 'SFTP підключено';
@override
String get sftpShowFoldersFirst => 'Спочатку відображати директорії';
@override
String get showDistLogo => 'Показати логотип дистрибутива';
@override
String get shutdown => 'Вимкнення';
@override
String get size => 'Розмір';
@override
String get snippet => 'Фрагмент';
@override
String get softWrap => 'М\'ягкий перенос';
@override
String get specifyDev => 'Вказати пристрій';
@override
String get specifyDevTip => 'Наприклад, статистика мережевого трафіку за замовчуванням є для всіх пристроїв. Ви можете вказати певний пристрій тут.';
@override
String get speed => 'Швидкість';
@override
String spentTime(Object time) {
return 'Витрачений час: $time';
}
@override
String get sshTermHelp => 'Коли термінал прокрутний, горизонтальне проведення вибирає текст. Натискання кнопки клавіатури вмикає/вимикає клавіатуру. Іконка файлу відкриває поточний шлях SFTP. Кнопка буфера обміну копіює вміст, коли текст вибрано, і вставляє вміст з буфера обміну в термінал, коли текст не вибрано і є вміст у буфері обміну. Іконка коду вставляє фрагменти коду в термінал і виконує їх.';
@override
String sshTip(Object url) {
return 'Ця функція наразі в експериментальній стадії. Будь ласка, повідомте про помилки за адресою $url або приєднуйтеся до нашої розробки.';
}
@override
String get sshVirtualKeyAutoOff => 'Автоматичне переключення віртуальних клавіш';
@override
String get start => 'Старт';
@override
String get stat => 'Статистика';
@override
String get stats => 'Статистики';
@override
String get stop => 'Зупинити';
@override
String get stopped => 'Зупинено';
@override
String get storage => 'Сховище';
@override
String get supportFmtArgs => 'Підтримуються такі параметри форматування:';
@override
String get suspend => 'Призупинити';
@override
String get suspendTip => 'Функція призупинення потребує адміністративних прав та підтримки systemd.';
@override
String switchTo(Object val) {
return 'Переключитися на $val';
}
@override
String get sync => 'Синхронізація';
@override
String get syncTip => 'Може знадобитися перезапуск, щоб деякі зміни набрали чинності.';
@override
String get system => 'Система';
@override
String get tag => 'Теги';
@override
String get temperature => 'Температура';
@override
String get termFontSizeTip => 'Це налаштування вплине на розмір терміналу (ширину та висоту). Ви можете масштабувати на сторінці терміналу, щоб налаштувати розмір шрифту поточної сесії.';
@override
String get terminal => 'Термінал';
@override
String get test => 'Тест';
@override
String get textScaler => 'Масштабування тексту';
@override
String get textScalerTip => '1.0 => 100% (оригінальний розмір), працює лише на частині шрифта сторінки сервера, не рекомендується змінювати.';
@override
String get theme => 'Тема';
@override
String get time => 'Час';
@override
String get times => 'Рази';
@override
String get total => 'Всього';
@override
String get traffic => 'Трафік';
@override
String get trySudo => 'Спробуйте використовувати sudo';
@override
String get ttl => 'TTL';
@override
String get unknown => 'Невідомо';
@override
String get unkownConvertMode => 'Невідомий режим конвертації';
@override
String get update => 'Оновити';
@override
String get updateIntervalEqual0 => 'Ви встановили 0, автоматичне оновлення не відбудеться.\nНе можна розрахувати статус ЦП.';
@override
String get updateServerStatusInterval => 'Інтервал оновлення статусу сервера';
@override
String get upload => 'Завантаження';
@override
String get upsideDown => 'Доверху дном';
@override
String get uptime => 'Час роботи';
@override
String get useCdn => 'Використання CDN';
@override
String get useCdnTip => 'Нереспонсивним користувачам рекомендується використовувати CDN. Чи хочете ви його використовувати?';
@override
String get useNoPwd => 'Пароль не буде використовуватися';
@override
String get usePodmanByDefault => 'Використовувати Podman за замовчуванням';
@override
String get used => 'Використано';
@override
String get view => 'Переглянути';
@override
String get viewErr => 'Переглянути помилку';
@override
String get virtKeyHelpClipboard => 'Копіювати в буфер обміну, якщо вибраний термінал не порожній, в іншому випадку вставити вміст буфера обміну в термінал.';
@override
String get virtKeyHelpIME => 'Увімкнути/вимкнути клавіатуру';
@override
String get virtKeyHelpSFTP => 'Відкрити поточний каталог у SFTP.';
@override
String get waitConnection => 'Будь ласка, зачекайте, доки з\'єднання буде встановлено.';
@override
String get wakeLock => 'Залишити активним';
@override
String get watchNotPaired => 'Немає спарованого Apple Watch';
@override
String get webdavSettingEmpty => 'Налаштування WebDav порожнє';
@override
String get whenOpenApp => 'При відкритті програми';
@override
String get wolTip => 'Після налаштування WOL (Wake-on-LAN), при кожному підключенні до сервера відправляється запит WOL.';
@override
String get write => 'Записати';
@override
String get writeScriptFailTip => 'Запис у скрипт не вдався, можливо, через брак дозволів або каталог не існує.';
@override
String get writeScriptTip => 'Після підключення до сервера скрипт буде записано у ~/.config/server_box для моніторингу стану системи. Ви можете переглянути вміст скрипта.';
}

File diff suppressed because it is too large Load Diff

View File

@@ -59,8 +59,10 @@ final class _IntroPage extends StatelessWidget {
).cardx, ).cardx,
ListTile( ListTile(
leading: const Icon(Icons.update), leading: const Icon(Icons.update),
title: Text(libL10n.autoCheckUpdate), title: Text(libL10n.checkUpdate),
subtitle: Text(l10n.fdroidReleaseTip, style: UIs.textGrey), subtitle: isAndroid
? Text(l10n.fdroidReleaseTip, style: UIs.textGrey)
: null,
trailing: StoreSwitch(prop: _setting.autoCheckAppUpdate), trailing: StoreSwitch(prop: _setting.autoCheckAppUpdate),
).cardx, ).cardx,
ListTile( ListTile(

View File

@@ -81,7 +81,7 @@ Future<void> _initData() async {
Hive.registerAdapter(ServerCustomAdapter()); // 7 Hive.registerAdapter(ServerCustomAdapter()); // 7
Hive.registerAdapter(WakeOnLanCfgAdapter()); // 8 Hive.registerAdapter(WakeOnLanCfgAdapter()); // 8
await PrefStore.init(); // Call this before accessing any store await PrefStore.shared.init(); // Call this before accessing any store
await Stores.init(); await Stores.init();
// DO NOT change the order of these providers. // DO NOT change the order of these providers.
@@ -112,7 +112,7 @@ void _doPlatformRelated() async {
FlutterDisplayMode.setHighRefreshRate(); FlutterDisplayMode.setHighRefreshRate();
} }
final serversCount = Stores.server.box.keys.length; final serversCount = Stores.server.keys().length;
// Plus 1 to avoid 0. // Plus 1 to avoid 0.
Computer.shared.turnOn(workersCount: (serversCount / 3).round() + 1); Computer.shared.turnOn(workersCount: (serversCount / 3).round() + 1);
@@ -121,14 +121,14 @@ void _doPlatformRelated() async {
// It may contains some async heavy funcs. // It may contains some async heavy funcs.
Future<void> _doVersionRelated() async { Future<void> _doVersionRelated() async {
final curVer = Stores.setting.lastVer.fetch(); final lastVer = Stores.setting.lastVer.fetch();
const newVer = BuildData.build; const newVer = BuildData.build;
// It's only the version upgrade trigger logic. // It's only the version upgrade trigger logic.
// How to upgrade the data is inside each own func. // How to upgrade the data is inside each own func.
if (curVer < newVer) { if (lastVer < newVer) {
ServerDetailCards.autoAddNewCards(newVer); ServerDetailCards.autoAddNewCards(newVer);
ServerFuncBtn.autoAddNewFuncs(newVer); ServerFuncBtn.autoAddNewFuncs(newVer);
NoBackupStore.instance.migrate(); NoBackupStore.instance.migrate(lastVer);
Stores.setting.lastVer.put(newVer); Stores.setting.lastVer.put(newVer);
} }
} }

View File

@@ -14,6 +14,7 @@ import 'package:server_box/data/res/misc.dart';
import 'package:server_box/data/res/store.dart'; import 'package:server_box/data/res/store.dart';
import 'package:icons_plus/icons_plus.dart'; import 'package:icons_plus/icons_plus.dart';
import 'package:server_box/data/store/no_backup.dart'; import 'package:server_box/data/store/no_backup.dart';
import 'package:webdav_client/webdav_client.dart';
class BackupPage extends StatefulWidget { class BackupPage extends StatefulWidget {
const BackupPage({super.key}); const BackupPage({super.key});
@@ -105,7 +106,7 @@ final class _BackupPageState extends State<BackupPage>
leading: const Icon(Icons.cloud), leading: const Icon(Icons.cloud),
title: const Text('iCloud'), title: const Text('iCloud'),
trailing: StoreSwitch( trailing: StoreSwitch(
prop: _noBak.icloudSync, prop: PrefProps.icloudSync,
validator: (p0) { validator: (p0) {
if (p0 && _noBak.webdavSync.fetch()) { if (p0 && _noBak.webdavSync.fetch()) {
context.showSnackBar(l10n.autoBackupConflict); context.showSnackBar(l10n.autoBackupConflict);
@@ -150,7 +151,7 @@ final class _BackupPageState extends State<BackupPage>
return false; return false;
} }
} }
if (_noBak.icloudSync.fetch()) { if (PrefProps.icloudSync.get()) {
context.showSnackBar(l10n.autoBackupConflict); context.showSnackBar(l10n.autoBackupConflict);
return false; return false;
} }
@@ -159,7 +160,7 @@ final class _BackupPageState extends State<BackupPage>
callback: (val) async { callback: (val) async {
if (val) { if (val) {
webdavLoading.value = true; webdavLoading.value = true;
await bakSync.sync(rs: webdav); await bakSync.sync(rs: Webdav.shared);
webdavLoading.value = false; webdavLoading.value = false;
} }
}, },
@@ -326,7 +327,7 @@ final class _BackupPageState extends State<BackupPage>
Future<void> _onTapWebdavDl(BuildContext context) async { Future<void> _onTapWebdavDl(BuildContext context) async {
webdavLoading.value = true; webdavLoading.value = true;
try { try {
final files = await webdav.list(); final files = await Webdav.shared.list();
if (files.isEmpty) return context.showSnackBar(l10n.dirEmpty); if (files.isEmpty) return context.showSnackBar(l10n.dirEmpty);
final fileName = await context.showPickSingleDialog( final fileName = await context.showPickSingleDialog(
@@ -335,7 +336,7 @@ final class _BackupPageState extends State<BackupPage>
); );
if (fileName == null) return; if (fileName == null) return;
await webdav.download(relativePath: fileName); await Webdav.shared.download(relativePath: fileName);
final dlFile = await File('${Paths.doc}/$fileName').readAsString(); final dlFile = await File('${Paths.doc}/$fileName').readAsString();
final dlBak = await Computer.shared.start(Backup.fromJsonString, dlFile); final dlBak = await Computer.shared.start(Backup.fromJsonString, dlFile);
await dlBak.merge(force: true); await dlBak.merge(force: true);
@@ -353,7 +354,7 @@ final class _BackupPageState extends State<BackupPage>
final bakName = '$date-${Miscs.bakFileName}'; final bakName = '$date-${Miscs.bakFileName}';
try { try {
await Backup.backup(bakName); await Backup.backup(bakName);
await webdav.upload(relativePath: bakName); await Webdav.shared.upload(relativePath: bakName);
Loggers.app.info('Upload webdav backup success'); Loggers.app.info('Upload webdav backup success');
} catch (e, s) { } catch (e, s) {
context.showErrDialog(e, s, l10n.upload); context.showErrDialog(e, s, l10n.upload);
@@ -403,12 +404,8 @@ final class _BackupPageState extends State<BackupPage>
try { try {
await Webdav.test(url.text, user.text, pwd.text); await Webdav.test(url.text, user.text, pwd.text);
context.showSnackBar(libL10n.success); context.showSnackBar(libL10n.success);
webdav.init(WebdavInitArgs( Webdav.shared.client =
url: url.text, WebdavClient(url: url.text, user: user.text, pwd: pwd.text);
user: user.text,
pwd: pwd.text,
prefix: 'serverbox/',
));
} catch (e, s) { } catch (e, s) {
context.showErrDialog(e, s, 'Webdav'); context.showErrDialog(e, s, 'Webdav');
} }

View File

@@ -175,7 +175,7 @@ class _ContainerPageState extends State<ContainerPage> {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text(_container.type.name.upperFirst), Text(_container.type.name.capitalize),
Text(_container.version ?? l10n.unknown), Text(_container.version ?? l10n.unknown),
], ],
), ),

View File

@@ -144,7 +144,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
Widget _buildLogo(Server si) { Widget _buildLogo(Server si) {
var logoUrl = si.spi.custom?.logoUrl ?? var logoUrl = si.spi.custom?.logoUrl ??
_settings.serverLogoUrl.fetch().selfIfNotNullEmpty; _settings.serverLogoUrl.fetch().selfNotEmptyOrNull;
if (logoUrl == null) return UIs.placeholder; if (logoUrl == null) return UIs.placeholder;
final dist = si.status.more[StatusCmdType.sys]?.dist; final dist = si.status.more[StatusCmdType.sys]?.dist;

View File

@@ -438,7 +438,7 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
leading: const Icon(MingCute.doc_line), leading: const Icon(MingCute.doc_line),
title: Text(libL10n.doc), title: Text(libL10n.doc),
trailing: const Icon(Icons.open_in_new, size: 17), trailing: const Icon(Icons.open_in_new, size: 17),
onTap: () => l10n.customCmdDocUrl.launch(), onTap: l10n.customCmdDocUrl.launchUrl,
).cardx, ).cardx,
], ],
); );
@@ -572,13 +572,13 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
} }
final customCmds = _customCmds.value; final customCmds = _customCmds.value;
final custom = ServerCustom( final custom = ServerCustom(
pveAddr: _pveAddrCtrl.text.selfIfNotNullEmpty, pveAddr: _pveAddrCtrl.text.selfNotEmptyOrNull,
pveIgnoreCert: _pveIgnoreCert.value, pveIgnoreCert: _pveIgnoreCert.value,
cmds: customCmds.isEmpty ? null : customCmds, cmds: customCmds.isEmpty ? null : customCmds,
preferTempDev: _preferTempDevCtrl.text.selfIfNotNullEmpty, preferTempDev: _preferTempDevCtrl.text.selfNotEmptyOrNull,
logoUrl: _logoUrlCtrl.text.selfIfNotNullEmpty, logoUrl: _logoUrlCtrl.text.selfNotEmptyOrNull,
netDev: _netDevCtrl.text.selfIfNotNullEmpty, netDev: _netDevCtrl.text.selfNotEmptyOrNull,
scriptDir: _scriptDirCtrl.text.selfIfNotNullEmpty, scriptDir: _scriptDirCtrl.text.selfNotEmptyOrNull,
); );
final wolEmpty = _wolMacCtrl.text.isEmpty && final wolEmpty = _wolMacCtrl.text.isEmpty &&
@@ -589,7 +589,7 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
: WakeOnLanCfg( : WakeOnLanCfg(
mac: _wolMacCtrl.text, mac: _wolMacCtrl.text,
ip: _wolIpCtrl.text, ip: _wolIpCtrl.text,
pwd: _wolPwdCtrl.text.selfIfNotNullEmpty, pwd: _wolPwdCtrl.text.selfNotEmptyOrNull,
); );
if (wol != null) { if (wol != null) {
final wolValidation = wol.validate(); final wolValidation = wol.validate();
@@ -606,12 +606,12 @@ class _ServerEditPageState extends State<ServerEditPage> with AfterLayoutMixin {
ip: _ipController.text, ip: _ipController.text,
port: int.parse(_portController.text), port: int.parse(_portController.text),
user: _usernameController.text, user: _usernameController.text,
pwd: _passwordController.text.selfIfNotNullEmpty, pwd: _passwordController.text.selfNotEmptyOrNull,
keyId: _keyIdx.value != null keyId: _keyIdx.value != null
? PrivateKeyProvider.pkis.value.elementAt(_keyIdx.value!).id ? PrivateKeyProvider.pkis.value.elementAt(_keyIdx.value!).id
: null, : null,
tags: _tags.value.isEmpty ? null : _tags.value.toList(), tags: _tags.value.isEmpty ? null : _tags.value.toList(),
alterUrl: _altUrlController.text.selfIfNotNullEmpty, alterUrl: _altUrlController.text.selfNotEmptyOrNull,
autoConnect: _autoConnect.value, autoConnect: _autoConnect.value,
jumpId: _jumpServer.value, jumpId: _jumpServer.value,
custom: custom, custom: custom,

View File

@@ -4,7 +4,8 @@ import 'dart:io';
import 'package:fl_lib/fl_lib.dart'; import 'package:fl_lib/fl_lib.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_highlight/theme_map.dart'; import 'package:flutter_highlight/theme_map.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:server_box/generated/l10n/l10n.dart';
import 'package:icons_plus/icons_plus.dart'; import 'package:icons_plus/icons_plus.dart';
import 'package:server_box/core/extension/context/locale.dart'; import 'package:server_box/core/extension/context/locale.dart';
import 'package:server_box/data/res/github_id.dart'; import 'package:server_box/data/res/github_id.dart';
@@ -140,12 +141,12 @@ final class _AppAboutPageState extends State<AppAboutPage>
Btn.elevated( Btn.elevated(
icon: const Icon(Icons.edit_document), icon: const Icon(Icons.edit_document),
text: 'Wiki', text: 'Wiki',
onTap: Urls.appWiki.launch, onTap: Urls.appWiki.launchUrl,
), ),
Btn.elevated( Btn.elevated(
icon: const Icon(Icons.feedback), icon: const Icon(Icons.feedback),
text: libL10n.feedback, text: libL10n.feedback,
onTap: Urls.appHelp.launch, onTap: Urls.appHelp.launchUrl,
), ),
Btn.elevated( Btn.elevated(
icon: const Icon(MingCute.question_fill), icon: const Icon(MingCute.question_fill),
@@ -298,7 +299,7 @@ final class _AppSettingsPageState extends State<AppSettingsPage> {
Widget _buildCheckUpdate() { Widget _buildCheckUpdate() {
return ListTile( return ListTile(
leading: const Icon(Icons.update), leading: const Icon(Icons.update),
title: Text(libL10n.autoCheckUpdate), title: Text(libL10n.checkUpdate),
subtitle: ValBuilder( subtitle: ValBuilder(
listenable: AppUpdateIface.newestBuild, listenable: AppUpdateIface.newestBuild,
builder: (val) { builder: (val) {
@@ -404,7 +405,7 @@ final class _AppSettingsPageState extends State<AppSettingsPage> {
} }
void _onSaveColor(String s) { void _onSaveColor(String s) {
final color = s.hexToColor; final color = s.fromColorHex;
if (color == null) { if (color == null) {
context.showSnackBar(libL10n.fail); context.showSnackBar(libL10n.fail);
return; return;
@@ -837,15 +838,10 @@ final class _AppSettingsPageState extends State<AppSettingsPage> {
leading: const Icon(Icons.delete_forever), leading: const Icon(Icons.delete_forever),
trailing: const Icon(Icons.keyboard_arrow_right), trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () async { onTap: () async {
final keys = Stores.server.box.keys.toList(); final keys = Stores.server.keys();
keys.removeWhere((element) => element == BoxX.lastModifiedKey);
final strKeys = List<String>.empty(growable: true);
for (final key in keys) {
if (key is String) strKeys.add(key);
}
final deleteKeys = await context.showPickDialog<String>( final deleteKeys = await context.showPickDialog<String>(
clearable: true, clearable: true,
items: strKeys, items: keys.toList(),
); );
if (deleteKeys == null) return; if (deleteKeys == null) return;
@@ -965,8 +961,8 @@ final class _AppSettingsPageState extends State<AppSettingsPage> {
); );
} }
void _showFontSizeDialog(StorePropertyBase<double> property) { void _showFontSizeDialog(HiveProp<double> property) {
final ctrller = TextEditingController(text: property.fetch().toString()); final ctrller = TextEditingController(text: property.get().toString());
void onSave() { void onSave() {
context.pop(); context.pop();
final fontSize = double.tryParse(ctrller.text); final fontSize = double.tryParse(ctrller.text);
@@ -977,7 +973,7 @@ final class _AppSettingsPageState extends State<AppSettingsPage> {
); );
return; return;
} }
property.put(fontSize); property.set(fontSize);
} }
context.showRoundDialog( context.showRoundDialog(
@@ -1081,7 +1077,7 @@ final class _AppSettingsPageState extends State<AppSettingsPage> {
return ExpandTile( return ExpandTile(
leading: const Icon(MingCute.more_3_fill), leading: const Icon(MingCute.more_3_fill),
title: Text(l10n.more), title: Text(l10n.more),
initiallyExpanded: isDesktop, initiallyExpanded: false,
children: [ children: [
_buildRememberPwdInMem(), _buildRememberPwdInMem(),
_buildTextScaler(), _buildTextScaler(),
@@ -1144,7 +1140,7 @@ final class _AppSettingsPageState extends State<AppSettingsPage> {
return ExpandTile( return ExpandTile(
leading: const Icon(MingCute.more_3_fill), leading: const Icon(MingCute.more_3_fill),
title: Text(l10n.more), title: Text(l10n.more),
initiallyExpanded: isDesktop, initiallyExpanded: false,
children: [ children: [
_buildBeta(), _buildBeta(),
if (isMobile) _buildWakeLock(), if (isMobile) _buildWakeLock(),
@@ -1249,7 +1245,7 @@ final class _AppSettingsPageState extends State<AppSettingsPage> {
ListTile( ListTile(
title: Text(libL10n.doc), title: Text(libL10n.doc),
trailing: const Icon(Icons.open_in_new), trailing: const Icon(Icons.open_in_new),
onTap: () => Urls.appWiki.launch(), onTap: Urls.appWiki.launchUrl,
), ),
], ],
), ),
@@ -1326,7 +1322,7 @@ final class _AppSettingsPageState extends State<AppSettingsPage> {
} }
Future<void> _editRawSettings() async { Future<void> _editRawSettings() async {
final map = Stores.setting.box.toJson(includeInternal: false); final map = await Stores.setting.getAllMap(includeInternalKeys: true);
final keys = map.keys; final keys = map.keys;
/// Encode [map] to String with indent `\t` /// Encode [map] to String with indent `\t`

View File

@@ -42,11 +42,11 @@ class _AndroidSettingsPageState extends State<AndroidSettingsPage> {
final keysDel = old.keys.toSet().difference(map.keys.toSet()); final keysDel = old.keys.toSet().difference(map.keys.toSet());
for (final key in keysDel) { for (final key in keysDel) {
if (!key.startsWith(_homeWidgetPrefPrefix)) continue; if (!key.startsWith(_homeWidgetPrefPrefix)) continue;
PrefStore.remove(key); PrefStore.shared.remove(key);
} }
for (final entry in map.entries) { for (final entry in map.entries) {
if (!entry.key.startsWith(_homeWidgetPrefPrefix)) continue; if (!entry.key.startsWith(_homeWidgetPrefPrefix)) continue;
PrefStore.set(entry.key, entry.value); PrefStore.shared.set(entry.key, entry.value);
} }
context.showSnackBar(libL10n.success); context.showSnackBar(libL10n.success);
} catch (e) { } catch (e) {
@@ -60,8 +60,10 @@ class _AndroidSettingsPageState extends State<AndroidSettingsPage> {
trailing: const Icon(Icons.keyboard_arrow_right), trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () async { onTap: () async {
final data = <String, String>{}; final data = <String, String>{};
for (final key in PrefStore.keys()) { final keys = await PrefStore.shared.keys();
final val = PrefStore.get<String>(key);
for (final key in keys) {
final val = PrefStore.shared.get<String>(key);
if (val != null) { if (val != null) {
data[key] = val; data[key] = val;
} }

View File

@@ -112,7 +112,7 @@ class SSHPageState extends State<SSHPage>
2 => true, 2 => true,
_ => context.isDark, _ => context.isDark,
}; };
_media = context.media; _media = context.mediaQuery;
_terminalTheme = _isDark ? TerminalThemes.dark : TerminalThemes.light; _terminalTheme = _isDark ? TerminalThemes.dark : TerminalThemes.light;
_terminalTheme = _terminalTheme.copyWith(selectionCursor: UIs.primaryColor); _terminalTheme = _terminalTheme.copyWith(selectionCursor: UIs.primaryColor);

View File

@@ -268,7 +268,7 @@ class _AddPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
const viewPadding = 7.0; const viewPadding = 7.0;
final viewWidth = context.media.size.width - 2 * viewPadding; final viewWidth = context.mediaQuery.size.width - 2 * viewPadding;
final itemCount = ServerProvider.servers.length; final itemCount = ServerProvider.servers.length;
const itemPadding = 1.0; const itemPadding = 1.0;

View File

@@ -51,7 +51,7 @@ class _LocalFilePageState extends State<LocalFilePage>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
final title = _path.path.fileName ?? libL10n.file; final title = _path.path.fileNameGetter ?? libL10n.file;
return Scaffold( return Scaffold(
appBar: CustomAppBar( appBar: CustomAppBar(
title: AnimatedSwitcher( title: AnimatedSwitcher(

View File

@@ -591,7 +591,7 @@ class _SftpPageState extends State<SftpPage> with AfterLayoutMixin {
String _getRemotePath(SftpName name) { String _getRemotePath(SftpName name) {
final prePath = _status.path.path; final prePath = _status.path.path;
// Only support Linux as remote now, so the seperator is '/' // Only support Linux as remote now, so the seperator is '/'
return prePath.joinPath(name.filename, seperator: '/'); return prePath.joinPath(name.filename, separator: '/');
} }
/// Local file dir + server id + remote path /// Local file dir + server id + remote path

View File

@@ -137,22 +137,22 @@ final class _SystemdPageState extends State<SystemdPage> {
children: [ children: [
Icon(func.icon, size: 19), Icon(func.icon, size: 19),
const SizedBox(width: 10), const SizedBox(width: 10),
Text(func.name.upperFirst), Text(func.name.capitalize),
], ],
), ),
); );
} }
Widget _buildScopeTag(SystemdUnitScope scope) { Widget _buildScopeTag(SystemdUnitScope scope) {
return _buildTag(scope.name.upperFirst, scope.color, true); return _buildTag(scope.name.capitalize, scope.color, true);
} }
Widget _buildStateTag(SystemdUnitState state) { Widget _buildStateTag(SystemdUnitState state) {
return _buildTag(state.name.upperFirst, state.color); return _buildTag(state.name.capitalize, state.color);
} }
Widget _buildTypeTag(SystemdUnitType type) { Widget _buildTypeTag(SystemdUnitType type) {
return _buildTag(type.name.upperFirst); return _buildTag(type.name.capitalize);
} }
Widget _buildTag(String tag, [Color? color, bool noPad = false]) { Widget _buildTag(String tag, [Color? color, bool noPad = false]) {

View File

@@ -88,4 +88,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 8cdf29216ea1ab6b9743188287968d22b4579c1d PODFILE CHECKSUM: 8cdf29216ea1ab6b9743188287968d22b4579c1d
COCOAPODS: 1.15.2 COCOAPODS: 1.16.2

View File

@@ -481,7 +481,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.15; MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "Server Box"; PRODUCT_NAME = "Server Box";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@@ -618,7 +618,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.15; MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "Server Box"; PRODUCT_NAME = "Server Box";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@@ -649,7 +649,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.15; MACOSX_DEPLOYMENT_TARGET = 10.15;
MARKETING_VERSION = 1.0.1104; MARKETING_VERSION = 1.0.1110;
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "Server Box"; PRODUCT_NAME = "Server Box";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";

View File

@@ -385,6 +385,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.0" version: "1.3.0"
encrypt:
dependency: transitive
description:
name: encrypt
sha256: "62d9aa4670cc2a8798bab89b39fc71b6dfbacf615de6cf5001fb39f7e4a996a2"
url: "https://pub.dev"
source: hosted
version: "5.0.3"
equatable: equatable:
dependency: transitive dependency: transitive
description: description:
@@ -470,8 +478,8 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." path: "."
ref: "v1.0.187" ref: "v1.0.217"
resolved-ref: "9c69e55fd227428935de8de938c265ab5c099451" resolved-ref: a07b1d2a004574b3d083f87a295a428286524ef7
url: "https://github.com/lppcg/fl_lib" url: "https://github.com/lppcg/fl_lib"
source: git source: git
version: "0.0.1" version: "0.0.1"

View File

@@ -1,7 +1,7 @@
name: server_box name: server_box
description: server status & toolbox app. description: server status & toolbox app.
publish_to: 'none' publish_to: 'none'
version: 1.0.1104+1104 version: 1.0.1110+1110
environment: environment:
sdk: ">=3.0.0" sdk: ">=3.0.0"
@@ -60,7 +60,7 @@ dependencies:
fl_lib: fl_lib:
git: git:
url: https://github.com/lppcg/fl_lib url: https://github.com/lppcg/fl_lib
ref: v1.0.187 ref: v1.0.217
dependency_overrides: dependency_overrides:
# dartssh2: # dartssh2: