diff --git a/pkg/embed/locales/backend.pot b/pkg/embed/locales/backend.pot index 6391fff1..3a16a981 100644 --- a/pkg/embed/locales/backend.pot +++ b/pkg/embed/locales/backend.pot @@ -7,2062 +7,2069 @@ msgstr "" "Language: \n" "X-Generator: xgotext\n" -#: internal/service/toolbox_log.go:257 +#: internal/service/toolbox_log.go:258 msgid "%d images" msgstr "" -#: internal/data/database.go:253 +#: internal/biz/database.go:228 msgid "%s does not support database comment" msgstr "" -#: internal/service/environment_dotnet.go:34 +#: internal/service/environment_dotnet.go:35 msgid ".NET-%s is not installed" msgstr "" -#: internal/service/cli.go:337 +#: internal/service/cli.go:338 msgid "2FA disabled for user %s" msgstr "" -#: internal/service/cli.go:345 +#: internal/service/cli.go:346 msgid "2FA url: %s" msgstr "" -#: internal/service/environment_php.go:384 +#: internal/service/environment_php.go:385 msgid "APCu is a user-level cache for PHP, providing fast in-memory key-value storage" msgstr "" -#: internal/bootstrap/cli.go:18 +#: internal/bootstrap/cli.go:21 msgid "AUTHOR" msgstr "" -#: internal/service/environment_php.go:184 +#: internal/service/environment_php.go:185 msgid "Accepted Connections" msgstr "" -#: internal/service/home.go:70 +#: internal/service/home.go:71 msgid "AcePanel" msgstr "" -#: internal/bootstrap/cli.go:39 +#: internal/bootstrap/cli.go:47 msgid "AcePanel CLI Tool" msgstr "" -#: internal/service/cli.go:101 +#: internal/service/cli.go:102 msgid "AcePanel service restarted" msgstr "" -#: internal/service/cli.go:117 +#: internal/service/cli.go:118 msgid "AcePanel service started" msgstr "" -#: internal/service/cli.go:92 +#: internal/service/cli.go:93 msgid "AcePanel service status: %s" msgstr "" -#: internal/service/cli.go:109 +#: internal/service/cli.go:110 msgid "AcePanel service stopped" msgstr "" -#: internal/apps/mysql/app.go:127 +#: internal/apps/mysql/app.go:128 msgid "Active Connections" msgstr "" -#: internal/apps/elasticsearch/app.go:86 -#: internal/apps/opensearch/app.go:86 +#: internal/apps/elasticsearch/app.go:87 +#: internal/apps/opensearch/app.go:88 msgid "Active Primary Shards" msgstr "" -#: internal/service/environment_php.go:189 +#: internal/service/environment_php.go:190 msgid "Active Processes" msgstr "" -#: internal/apps/clickhouse/app.go:98 +#: internal/apps/clickhouse/app.go:99 msgid "Active Queries" msgstr "" -#: internal/apps/elasticsearch/app.go:85 -#: internal/apps/opensearch/app.go:85 +#: internal/apps/elasticsearch/app.go:86 +#: internal/apps/opensearch/app.go:87 msgid "Active Shards" msgstr "" -#: internal/apps/nginx/app.go:138 +#: internal/apps/nginx/app.go:140 msgid "Active connections" msgstr "" -#: internal/route/cli.go:254 +#: internal/command/database.go:22 msgid "Add database server" msgstr "" -#: internal/route/cli.go:501 +#: internal/command/app.go:43 msgid "Add panel application mark (use only under guidance)" msgstr "" -#: internal/service/cert.go:60 +#: internal/service/cert.go:61 msgid "Aliyun" msgstr "" -#: internal/service/cli.go:377 +#: internal/service/cli.go:378 msgid "All passkeys cleared for user %s" msgstr "" -#: internal/service/cli.go:1037 +#: internal/service/cli.go:1038 msgid "Already initialized" msgstr "" -#: internal/data/app.go:390 +#: internal/data/app.go:255 msgid "App %s %s" msgstr "" -#: internal/service/cli.go:886 +#: internal/service/cli.go:887 msgid "App %s installed successfully" msgstr "" -#: internal/service/cli.go:900 +#: internal/service/cli.go:901 msgid "App %s uninstalled successfully" msgstr "" -#: internal/service/cli.go:914 +#: internal/service/cli.go:915 msgid "App %s updated successfully" msgstr "" -#: internal/service/cli.go:883 +#: internal/service/cli.go:884 msgid "App install failed: %v" msgstr "" -#: internal/service/cli.go:897 +#: internal/service/cli.go:898 msgid "App uninstall failed: %v" msgstr "" -#: internal/service/cli.go:911 +#: internal/service/cli.go:912 msgid "App update failed: %v" msgstr "" -#: internal/service/environment_php.go:181 +#: internal/service/environment_php.go:182 msgid "Application Pool" msgstr "" -#: internal/route/cli.go:482 +#: internal/command/app.go:18 msgid "Application management" msgstr "" -#: internal/data/backup.go:1436 +#: internal/data/backup.go:1443 msgid "Applying update failed: %v" msgstr "" -#: internal/data/backup.go:1434 +#: internal/data/backup.go:1441 msgid "Applying update..." msgstr "" -#: internal/data/backup.go:1398 +#: internal/data/backup.go:1405 msgid "Backing up panel data..." msgstr "" -#: internal/service/backup.go:71 +#: internal/service/backup.go:72 msgid "Backup %s: %s" msgstr "" -#: internal/route/cli.go:330 +#: internal/command/backup.go:42 msgid "Backup database" msgstr "" -#: internal/route/cli.go:354 +#: internal/command/backup.go:68 msgid "Backup directory" msgstr "" -#: internal/service/cli.go:716 +#: internal/service/cli.go:717 msgid "Backup failed: %v" msgstr "" -#: internal/route/cli.go:390 +#: internal/command/backup.go:107 msgid "Backup file" msgstr "" -#: internal/route/cli.go:372 +#: internal/command/backup.go:88 msgid "Backup panel" msgstr "" -#: internal/route/cli.go:384 +#: internal/command/backup.go:101 msgid "Backup type" msgstr "" -#: internal/route/cli.go:312 +#: internal/command/backup.go:22 msgid "Backup website" msgstr "" -#: internal/service/cli.go:539 +#: internal/service/cli.go:540 msgid "Bind IP disabled" msgstr "" -#: internal/service/cli.go:555 +#: internal/service/cli.go:556 msgid "Bind UA disabled" msgstr "" -#: internal/service/cli.go:523 +#: internal/service/cli.go:524 msgid "Bind domain disabled" msgstr "" -#: internal/apps/rocketmq/app.go:64 +#: internal/apps/rocketmq/app.go:66 msgid "Broker Name" msgstr "" -#: internal/apps/rocketmq/app.go:67 +#: internal/apps/rocketmq/app.go:69 msgid "Broker Role" msgstr "" -#: internal/apps/rocketmq/app.go:63 +#: internal/apps/rocketmq/app.go:65 msgid "Broker Status" msgstr "" -#: internal/apps/apache/app.go:135 +#: internal/apps/apache/app.go:136 msgid "Busy Workers" msgstr "" -#: internal/apps/mysql/app.go:126 -#: internal/apps/mysql/app.go:145 +#: internal/apps/mysql/app.go:127 +#: internal/apps/mysql/app.go:146 msgid "Bytes Received" msgstr "" -#: internal/apps/mysql/app.go:125 -#: internal/apps/mysql/app.go:145 +#: internal/apps/mysql/app.go:126 +#: internal/apps/mysql/app.go:146 msgid "Bytes Sent" msgstr "" -#: internal/apps/apache/app.go:156 +#: internal/apps/apache/app.go:157 msgid "Bytes/sec" msgstr "" -#: internal/service/environment_php.go:429 +#: internal/service/environment_php.go:430 msgid "Bzip2 is a library for compressing and decompressing files" msgstr "" -#: internal/bootstrap/cli.go:24 +#: internal/bootstrap/cli.go:27 msgid "CATEGORY" msgstr "" -#: internal/bootstrap/cli.go:19 -#: internal/bootstrap/cli.go:30 +#: internal/bootstrap/cli.go:22 +#: internal/bootstrap/cli.go:33 msgid "COMMANDS" msgstr "" -#: internal/bootstrap/cli.go:21 +#: internal/bootstrap/cli.go:24 msgid "COPYRIGHT" msgstr "" -#: internal/service/environment_php.go:469 +#: internal/service/environment_php.go:470 msgid "Calendar is a library for handling dates" msgstr "" -#: internal/route/cli.go:87 +#: internal/command/user.go:36 msgid "Change a user's password" msgstr "" -#: internal/route/cli.go:82 +#: internal/command/user.go:29 msgid "Change a user's username" msgstr "" -#: internal/route/cli.go:174 +#: internal/command/panel.go:73 msgid "Change the AcePanel listening port" msgstr "" -#: internal/service/cli.go:735 -#: internal/service/cli.go:740 +#: internal/service/cli.go:736 +#: internal/service/cli.go:741 msgid "Cleaning failed: %v" msgstr "" -#: internal/data/backup.go:1300 +#: internal/data/backup.go:1296 msgid "Cleaning temporary directory failed: %v" msgstr "" -#: internal/data/backup.go:389 -#: internal/data/backup.go:453 +#: internal/data/backup.go:388 +#: internal/data/backup.go:449 msgid "Cleanup failed: %v" msgstr "" -#: internal/route/cli.go:97 +#: internal/command/user.go:50 msgid "Clear all passkeys for a user" msgstr "" -#: internal/route/cli.go:545 +#: internal/command/panel.go:97 msgid "Clear all tasks in the task queue if they are stuck (use only under guidance)" msgstr "" -#: internal/route/cli.go:378 +#: internal/command/backup.go:96 msgid "Clear backups" msgstr "" -#: internal/route/cli.go:450 +#: internal/command/cutoff.go:62 msgid "Clear rotated logs" msgstr "" -#: internal/service/cert.go:92 +#: internal/service/cert.go:93 msgid "ClouDNS" msgstr "" -#: internal/service/cert.go:76 +#: internal/service/cert.go:77 msgid "CloudFlare" msgstr "" -#: internal/apps/elasticsearch/app.go:81 -#: internal/apps/opensearch/app.go:81 +#: internal/apps/elasticsearch/app.go:82 +#: internal/apps/opensearch/app.go:83 msgid "Cluster Name" msgstr "" -#: internal/apps/elasticsearch/app.go:82 -#: internal/apps/opensearch/app.go:82 +#: internal/apps/elasticsearch/app.go:83 +#: internal/apps/opensearch/app.go:84 msgid "Cluster Status" msgstr "" -#: internal/apps/redis/app.go:95 -#: internal/apps/valkey/app.go:95 -msgid "Commands Per Second" -msgstr "" - -#: internal/service/file.go:571 -msgid "Compress %v" -msgstr "" - -#: internal/apps/prometheus/app.go:100 -msgid "Config Reload Success" -msgstr "" - -#: internal/apps/redis/app.go:88 -#: internal/apps/valkey/app.go:88 -msgid "Connected Clients" -msgstr "" - -#: internal/route/cli.go:432 -msgid "Container" -msgstr "" - -#: internal/service/cli.go:798 -msgid "Container %s has no log file" -msgstr "" - -#: internal/route/cli.go:438 -msgid "Container name" -msgstr "" - -#: internal/route/cli.go:183 -msgid "Create new website" -msgstr "" - -#: internal/apps/mongodb/app.go:95 -msgid "Current Connections" -msgstr "" - -#: internal/bootstrap/cli.go:17 -#: internal/bootstrap/cli.go:25 -msgid "DESCRIPTION" -msgstr "" - -#: internal/route/cli.go:308 -msgid "Data backup" -msgstr "" - -#: internal/service/cli.go:159 -msgid "Data synchronized successfully" -msgstr "" - -#: internal/apps/grafana/app.go:88 -#: internal/service/toolbox_migration.go:506 -msgid "Database" -msgstr "" - -#: internal/service/toolbox_migration.go:620 -msgid "Database User" -msgstr "" - -#: internal/route/cli.go:250 -msgid "Database management" -msgstr "" - -#: internal/route/cli.go:342 -msgid "Database name" -msgstr "" - -#: internal/service/cli.go:677 -msgid "Database server %s added successfully" -msgstr "" - -#: internal/service/cli.go:691 -msgid "Database server %s deleted successfully" -msgstr "" - -#: internal/route/cli.go:336 -msgid "Database type" -msgstr "" - -#: internal/apps/clickhouse/app.go:100 -msgid "Databases" -msgstr "" - -#: internal/apps/mongodb/app.go:100 -msgid "Delete Operations" -msgstr "" - -#: internal/route/cli.go:293 -msgid "Delete database server" -msgstr "" - -#: internal/route/cli.go:229 -msgid "Delete website (including website directory, database with the same name)" -msgstr "" - -#: internal/route/cli.go:360 -msgid "Directory path" -msgstr "" - -#: internal/route/cli.go:113 -msgid "Disable HTTPS" -msgstr "" - -#: internal/route/cli.go:156 -msgid "Disable IP binding" -msgstr "" - -#: internal/route/cli.go:167 -msgid "Disable UA binding" -msgstr "" - -#: internal/route/cli.go:134 -msgid "Disable access entrance" -msgstr "" - -#: internal/route/cli.go:145 -msgid "Disable domain binding" -msgstr "" - -#: internal/service/toolbox_log.go:268 -msgid "Docker container logs: %d files" -msgstr "" - -#: internal/service/cli.go:130 -msgid "Download URL is empty" -msgstr "" - -#: internal/data/backup.go:1409 -#: internal/data/backup.go:1412 -msgid "Download failed: %v" -msgstr "" - -#: internal/data/backup.go:1415 -msgid "Download file check failed" -msgstr "" - -#: internal/service/file.go:443 -msgid "Download remote file %v" -msgstr "" - -#: internal/data/backup.go:1407 -msgid "Downloading new version..." -msgstr "" - -#: internal/apps/prometheus/app.go:408 -msgid "Elasticsearch metrics" -msgstr "" - -#: internal/route/cli.go:108 -msgid "Enable HTTPS" -msgstr "" - -#: internal/route/cli.go:129 -msgid "Enable access entrance" -msgstr "" - -#: internal/service/environment_php.go:459 -msgid "Enchant is a spell-checking library" -msgstr "" - -#: internal/service/cli.go:507 -msgid "Entrance disabled" -msgstr "" - -#: internal/service/cli.go:490 -msgid "Entrance enabled" -msgstr "" - -#: internal/service/cli.go:219 -#: internal/service/cli.go:491 -msgid "Entrance: %s" -msgstr "" - -#: internal/service/environment_php.go:439 -msgid "Event is a library for handling events" -msgstr "" - -#: internal/service/environment_php.go:394 -msgid "Exif is a library for reading and writing image metadata" -msgstr "" - -#: internal/data/backup.go:1425 -msgid "Extracting new version..." -msgstr "" - -#: internal/service/cli.go:335 -msgid "Failed to change 2FA status: %v" -msgstr "" - -#: internal/service/cli.go:310 -msgid "Failed to change password: %v" -msgstr "" - -#: internal/service/cli.go:279 -msgid "Failed to change username: %v" -msgstr "" - -#: internal/data/backup.go:1391 -msgid "Failed to clean up temporary directory: %v" -msgstr "" - -#: internal/service/cli.go:374 -msgid "Failed to clear passkeys: %v" -msgstr "" - -#: internal/service/cli.go:974 -msgid "Failed to clear tasks: %v" -msgstr "" - -#: internal/data/backup.go:1405 -msgid "Failed to create temporary directory: %v" -msgstr "" - -#: internal/service/cli.go:949 -msgid "Failed to delete app: %v" -msgstr "" - -#: internal/service/cli.go:1028 -msgid "Failed to delete setting: %v" -msgstr "" - -#: internal/service/cli.go:343 -msgid "Failed to generate 2FA: %v" -msgstr "" - -#: internal/service/cli.go:183 -#: internal/service/cli.go:306 -msgid "Failed to generate password: %v" -msgstr "" - -#: internal/service/cli.go:449 -msgid "Failed to get ACME account: %v" -msgstr "" - -#: internal/service/cli.go:445 -msgid "Failed to get a panel user: %v" -msgstr "" - -#: internal/service/cli.go:929 -msgid "Failed to get app: %v" -msgstr "" - -#: internal/service/cli.go:794 -msgid "Failed to get container log path: %v" -msgstr "" - -#: internal/service/cli.go:209 -msgid "Failed to get entrance" -msgstr "" - -#: internal/service/cli.go:125 -msgid "Failed to get latest version: %v" -msgstr "" - -#: internal/service/cli.go:205 -msgid "Failed to get port" -msgstr "" - -#: internal/service/cli.go:1009 -#: internal/service/cli.go:992 -msgid "Failed to get setting: %v" -msgstr "" - -#: internal/service/cli.go:170 -msgid "Failed to get user info: %v" -msgstr "" - -#: internal/service/cli.go:249 -msgid "Failed to get user list: %v" -msgstr "" - -#: internal/service/cli.go:274 -#: internal/service/cli.go:301 -#: internal/service/cli.go:328 -#: internal/service/cli.go:370 -msgid "Failed to get user: %v" -msgstr "" - -#: internal/service/cli.go:455 -msgid "Failed to obtain panel certificate via ACME, using self-signed certificate" -msgstr "" - -#: internal/data/backup.go:1394 -msgid "Failed to optimize database: %v" -msgstr "" - -#: internal/service/cli.go:350 -msgid "Failed to read input: %v" -msgstr "" - -#: internal/data/backup.go:1251 -msgid "Failed to remove %s.db: %v" -msgstr "" - -#: internal/service/cli.go:936 -msgid "Failed to save app: %v" -msgstr "" - -#: internal/service/cli.go:1015 -#: internal/service/cli.go:194 -msgid "Failed to save setting: %v" -msgstr "" - -#: internal/service/cli.go:189 -msgid "Failed to save user info: %v" -msgstr "" - -#: internal/service/ws.go:202 -msgid "Failed to start command: %v" -msgstr "" - -#: internal/service/cli.go:150 -#: internal/service/cli.go:153 -#: internal/service/cli.go:156 -msgid "Failed to synchronize app data: %v" -msgstr "" - -#: internal/service/cli.go:147 -msgid "Failed to synchronize categories data: %v" -msgstr "" - -#: internal/service/cli.go:353 -msgid "Failed to update 2FA: %v" -msgstr "" - -#: internal/service/environment_php.go:359 -msgid "Fileinfo is a library used to identify file types" -msgstr "" - -#: internal/data/backup.go:1241 -msgid "Files are normal and do not need to be repaired, please run acepanel update to update the panel" -msgstr "" - -#: internal/data/backup.go:1440 -msgid "Finishing up..." -msgstr "" - -#: internal/data/backup.go:1442 -msgid "Finishing update failed: %v" -msgstr "" - -#: internal/route/cli.go:56 -msgid "Fix AcePanel upgrade issues" -msgstr "" - -#: internal/apps/rocketmq/app.go:68 -msgid "Flush Disk Type" -msgstr "" - -#: internal/route/cli.go:67 -msgid "Force reset password" -msgstr "" - -#: internal/bootstrap/cli.go:34 -msgid "Forum:https://tom.moe" -msgstr "" - -#: internal/apps/mysql/app.go:133 -msgid "Full Joins without Index" -msgstr "" - -#: internal/apps/mysql/app.go:134 -msgid "Full Range Joins without Index" -msgstr "" - -#: internal/bootstrap/cli.go:20 -msgid "GLOBAL OPTIONS" -msgstr "" - -#: internal/service/environment_php.go:474 -msgid "GMP is a library for handling large integers" -msgstr "" - -#: internal/service/cert.go:80 -msgid "Gcore" -msgstr "" - -#: internal/route/cli.go:26 -msgid "Get AcePanel service status" -msgstr "" - -#: internal/route/cli.go:520 -msgid "Get panel setting (use only under guidance)" -msgstr "" - -#: internal/service/environment_php.go:494 -msgid "Gettext is a library for handling multilingual support" -msgstr "" - -#: internal/service/environment_go.go:36 -#: internal/service/environment_go.go:56 -#: internal/service/environment_go.go:76 -msgid "Go-%s is not installed" -msgstr "" - -#: internal/apps/prometheus/app.go:98 -msgid "Goroutine Count" -msgstr "" - -#: internal/service/cli.go:474 -msgid "HTTPS certificate generated" -msgstr "" - -#: internal/service/cli.go:409 -msgid "HTTPS disabled" -msgstr "" - -#: internal/service/cli.go:393 -msgid "HTTPS enabled" -msgstr "" - -#: internal/apps/prometheus/app.go:403 -msgid "Hardware and OS metrics" -msgstr "" - -#: internal/service/cert.go:68 -msgid "Huawei Cloud" -msgstr "" - -#: internal/service/cli.go:253 -msgid "ID: %d, Username: %s, Email: %s, Created At: %s" -msgstr "" - -#: internal/service/environment_php.go:419 -msgid "IMAP module allows PHP to read, search, delete, download, and manage emails" -msgstr "" - -#: internal/service/environment_php.go:188 -msgid "Idle Processes" -msgstr "" - -#: internal/apps/apache/app.go:142 -msgid "Idle Workers" -msgstr "" - -#: internal/service/cli.go:239 -msgid "If you cannot access, please check whether the server's security group and firewall allow port %d" -msgstr "" - -#: internal/service/cli.go:240 -msgid "If you still cannot access, try running `acepanel https off` to turn off panel HTTPS" -msgstr "" - -#: internal/service/environment_php.go:369 -msgid "Igbinary is a library for serializing and deserializing data" -msgstr "" - -#: internal/service/environment_php.go:389 -msgid "ImageMagick is free software for creating, editing, and composing images" -msgstr "" - -#: internal/apps/mysql/app.go:129 -msgid "Index Hit Rate" -msgstr "" - -#: internal/service/cli.go:1084 -#: internal/service/cli.go:1089 -#: internal/service/cli.go:1094 -#: internal/service/cli.go:1136 -msgid "Initialization failed: %v" -msgstr "" - -#: internal/route/cli.go:551 -msgid "Initialize AcePanel (use only under guidance)" -msgstr "" - -#: internal/apps/mysql/app.go:130 -msgid "Innodb Index Hit Rate" -msgstr "" - -#: internal/apps/mongodb/app.go:98 -msgid "Insert Operations" -msgstr "" - -#: internal/service/environment_php.go:309 -msgid "Install PHP-%d %s module" -msgstr "" - -#: internal/apps/prometheus/app.go:262 -msgid "Install Prometheus exporter %s" -msgstr "" - -#: internal/data/app.go:223 -msgid "Install app %s" -msgstr "" - -#: internal/route/cli.go:486 -msgid "Install application" -msgstr "" - -#: internal/data/environment.go:203 -msgid "Install environment %s" -msgstr "" - -#: internal/service/environment_php.go:489 -msgid "Intl is a library for handling internationalization and localization" -msgstr "" - -#: internal/service/environment_java.go:34 -msgid "Java-%s is not installed" -msgstr "" - -#: internal/service/toolbox_log.go:391 -msgid "Journal logs" -msgstr "" - -#: internal/apps/prometheus/app.go:411 -msgid "Kafka metrics" -msgstr "" - -#: internal/apps/redis/app.go:96 -#: internal/apps/valkey/app.go:96 -msgid "Keyspace Hits" -msgstr "" - -#: internal/apps/redis/app.go:97 -#: internal/apps/valkey/app.go:97 -msgid "Keyspace Misses" -msgstr "" - -#: internal/service/environment_php.go:454 -msgid "LDAP is a protocol for accessing directory services" -msgstr "" - #: internal/apps/redis/app.go:98 #: internal/apps/valkey/app.go:98 -msgid "Latest Fork Time (ms)" +msgid "Commands Per Second" msgstr "" -#: internal/route/cli.go:77 -msgid "List all users" +#: internal/service/file.go:588 +msgid "Compress %v" msgstr "" -#: internal/route/cli.go:194 -msgid "List of domains associated with the website" -msgstr "" - -#: internal/route/cli.go:200 -msgid "List of listening addresses associated with the website" -msgstr "" - -#: internal/apps/rocketmq/app.go:65 -msgid "Listen Port" -msgstr "" - -#: internal/service/environment_php.go:185 -msgid "Listen Queue" -msgstr "" - -#: internal/service/environment_php.go:187 -msgid "Listen Queue Length" -msgstr "" - -#: internal/apps/kafka/app.go:55 -msgid "Listeners" -msgstr "" - -#: internal/service/cli.go:223 -msgid "Local IPv4: %s://%s:%d%s" -msgstr "" - -#: internal/service/cli.go:227 -msgid "Local IPv6: %s://[%s]:%d%s" -msgstr "" - -#: internal/data/backup.go:98 -#: internal/data/backup_storage.go:62 -msgid "Local Storage" -msgstr "" - -#: internal/apps/kafka/app.go:56 -msgid "Log Dirs" -msgstr "" - -#: internal/apps/kafka/app.go:58 -msgid "Log Retention Hours" -msgstr "" - -#: internal/apps/kafka/app.go:59 -msgid "Log Segment Bytes" -msgstr "" - -#: internal/route/cli.go:410 -msgid "Log rotation" -msgstr "" - -#: internal/service/environment_php.go:191 -msgid "Max Active Processes" -msgstr "" - -#: internal/service/environment_php.go:192 -msgid "Max Children Reached" -msgstr "" - -#: internal/service/environment_php.go:186 -msgid "Max Listen Queue" -msgstr "" - -#: internal/service/environment_php.go:379 -msgid "Memcached is a driver for connecting to Memcached servers" -msgstr "" - -#: internal/apps/prometheus/app.go:410 -msgid "Memcached metrics" -msgstr "" - -#: internal/apps/apache/app.go:114 -#: internal/apps/nginx/app.go:131 -msgid "Memory" -msgstr "" - -#: internal/apps/redis/app.go:92 -#: internal/apps/valkey/app.go:92 -msgid "Memory Fragmentation Ratio" -msgstr "" - -#: internal/apps/clickhouse/app.go:99 -msgid "Memory Usage (bytes)" -msgstr "" - -#: internal/service/toolbox_migration.go:418 -msgid "Migration completed" -msgstr "" - -#: internal/service/toolbox_migration.go:391 -msgid "Migration started" -msgstr "" - -#: internal/apps/prometheus/app.go:407 -msgid "MongoDB metrics" -msgstr "" - -#: internal/data/backup.go:1320 -msgid "Move acepanel file failed: %v" -msgstr "" - -#: internal/data/backup.go:1315 -msgid "Move panel file failed: %v" -msgstr "" - -#: internal/apps/prometheus/app.go:405 -msgid "MySQL database metrics" -msgstr "" - -#: internal/bootstrap/cli.go:14 -#: internal/bootstrap/cli.go:22 -#: internal/bootstrap/cli.go:27 -msgid "NAME" -msgstr "" - -#: internal/apps/rocketmq/app.go:66 -msgid "NameServer Address" -msgstr "" - -#: internal/apps/rocketmq/app.go:62 -msgid "NameServer Status" -msgstr "" - -#: internal/service/cert.go:88 -msgid "NameSilo" -msgstr "" - -#: internal/service/cli.go:267 -msgid "New username cannot be empty" -msgstr "" - -#: internal/apps/prometheus/app.go:404 -msgid "Nginx metrics" -msgstr "" - -#: internal/data/backup.go:1287 -msgid "No backup file found, unable to automatically repair" -msgstr "" - -#: internal/apps/kafka/app.go:54 -msgid "Node ID" -msgstr "" - -#: internal/service/environment_nodejs.go:36 -#: internal/service/environment_nodejs.go:56 -#: internal/service/environment_nodejs.go:76 -msgid "Node.js-%s is not installed" -msgstr "" - -#: internal/service/cli.go:658 -msgid "Not supported" -msgstr "" - -#: internal/service/home.go:265 -msgid "Not used" -msgstr "" - -#: internal/apps/kafka/app.go:57 -msgid "Num Partitions" -msgstr "" - -#: internal/apps/elasticsearch/app.go:84 -#: internal/apps/opensearch/app.go:84 -msgid "Number of Data Nodes" -msgstr "" - -#: internal/apps/elasticsearch/app.go:83 -#: internal/apps/opensearch/app.go:83 -msgid "Number of Nodes" -msgstr "" - -#: internal/route/cli.go:396 -msgid "Number of backups to keep" -msgstr "" - -#: internal/route/cli.go:468 -msgid "Number of logs to keep" -msgstr "" - -#: internal/bootstrap/cli.go:26 -#: internal/bootstrap/cli.go:31 -msgid "OPTIONS" -msgstr "" - -#: internal/service/environment_php.go:364 -msgid "OPcache stores precompiled PHP script bytecode in shared memory to improve PHP performance" -msgstr "" - -#: internal/route/cli.go:118 -msgid "Obtain a free certificate or generate a self-signed certificate" -msgstr "" - -#: internal/service/cli.go:264 -msgid "Old username cannot be empty" -msgstr "" - -#: internal/apps/mysql/app.go:132 -msgid "Open Tables" -msgstr "" - -#: internal/route/cli.go:104 -msgid "Operate AcePanel HTTPS" -msgstr "" - -#: internal/route/cli.go:152 -msgid "Operate AcePanel IP binding" -msgstr "" - -#: internal/route/cli.go:163 -msgid "Operate AcePanel UA binding" -msgstr "" - -#: internal/route/cli.go:125 -msgid "Operate AcePanel access entrance" -msgstr "" - -#: internal/route/cli.go:141 -msgid "Operate AcePanel domain binding" -msgstr "" - -#: internal/route/cli.go:73 -msgid "Operate AcePanel users" -msgstr "" - -#: internal/route/cli.go:61 -msgid "Output AcePanel basic information" -msgstr "" - -#: internal/route/cli.go:210 -msgid "PHP version used by the website (not used if not filled)" -msgstr "" - -#: internal/service/environment_php.go:109 -#: internal/service/environment_php.go:128 -#: internal/service/environment_php.go:148 -#: internal/service/environment_php.go:167 -#: internal/service/environment_php.go:232 -#: internal/service/environment_php.go:246 -#: internal/service/environment_php.go:260 -#: internal/service/environment_php.go:293 -#: internal/service/environment_php.go:327 -#: internal/service/environment_php.go:48 -#: internal/service/environment_php.go:609 -#: internal/service/environment_php.go:668 -#: internal/service/environment_php.go:68 -#: internal/service/environment_php.go:731 -#: internal/service/environment_php.go:89 -msgid "PHP-%d is not installed" -msgstr "" - -#: internal/service/cli.go:1003 -#: internal/service/cli.go:1024 -#: internal/service/cli.go:879 -#: internal/service/cli.go:893 -#: internal/service/cli.go:907 -#: internal/service/cli.go:923 -#: internal/service/cli.go:945 -#: internal/service/cli.go:984 -msgid "Parameters cannot be empty" -msgstr "" - -#: internal/service/user_passkey.go:179 -msgid "Passkey" -msgstr "" - -#: internal/service/cli.go:313 -msgid "Password for user %s changed successfully" -msgstr "" - -#: internal/service/cli.go:294 -msgid "Password length cannot be less than 6" -msgstr "" - -#: internal/service/cli.go:214 -msgid "Password: %s" -msgstr "" - -#: internal/service/cli.go:216 -msgid "Password: ******* (use -f to force reset)" -msgstr "" - -#: internal/route/cli.go:206 -msgid "Path where the website is hosted (default path if not filled)" -msgstr "" - -#: internal/apps/mysql/app.go:128 -msgid "Peak Connections" +#: internal/apps/prometheus/app.go:104 +msgid "Config Reload Success" msgstr "" #: internal/apps/redis/app.go:91 #: internal/apps/valkey/app.go:91 -msgid "Peak Memory Usage" +msgid "Connected Clients" msgstr "" -#: internal/service/environment_php.go:374 -msgid "PhpRedis connects to and operates on data in Redis databases (requires the igbinary module installed above)" +#: internal/command/cutoff.go:42 +msgid "Container" msgstr "" -#: internal/service/cli.go:238 -msgid "Please choose the appropriate address to access the panel based on your network situation" +#: internal/service/cli.go:799 +msgid "Container %s has no log file" msgstr "" -#: internal/service/cli.go:347 -msgid "Please enter the 2FA code: " +#: internal/command/cutoff.go:47 +msgid "Container name" msgstr "" -#: internal/service/cli.go:440 -msgid "Please set the panel IP in settings first for ACME certificate generation" +#: internal/command/website.go:22 +msgid "Create new website" msgstr "" -#: internal/service/toolbox_log.go:285 -msgid "Podman container logs: %d files" +#: internal/apps/mongodb/app.go:96 +msgid "Current Connections" msgstr "" -#: internal/service/cert.go:84 -msgid "Porkbun" +#: internal/bootstrap/cli.go:20 +#: internal/bootstrap/cli.go:28 +msgid "DESCRIPTION" msgstr "" -#: internal/service/cli.go:572 -msgid "Port already in use" +#: internal/command/backup.go:18 +msgid "Data backup" msgstr "" -#: internal/service/cli.go:598 -msgid "Port changed to %d" +#: internal/service/cli.go:160 +msgid "Data synchronized successfully" msgstr "" -#: internal/service/cli.go:562 -msgid "Port range error" +#: internal/apps/grafana/app.go:89 +#: internal/service/toolbox_migration.go:495 +msgid "Database" msgstr "" -#: internal/service/cli.go:218 -msgid "Port: %d" +#: internal/service/toolbox_migration.go:609 +msgid "Database User" msgstr "" -#: internal/apps/prometheus/app.go:406 -msgid "PostgreSQL database metrics" +#: internal/command/database.go:18 +msgid "Database management" msgstr "" -#: internal/data/backup.go:1389 -msgid "Preparing to update to %s..." +#: internal/command/backup.go:53 +msgid "Database name" msgstr "" -#: internal/apps/postgresql/app.go:173 -msgid "Process Count" +#: internal/service/cli.go:678 +msgid "Database server %s added successfully" msgstr "" -#: internal/service/environment_php.go:182 -msgid "Process Manager" +#: internal/service/cli.go:692 +msgid "Database server %s deleted successfully" msgstr "" -#: internal/apps/postgresql/app.go:172 -msgid "Process PID" -msgstr "" - -#: internal/service/toolbox_migration.go:700 -msgid "Project" -msgstr "" - -#: internal/service/environment_php.go:464 -msgid "Pspell is a spell-checking library" -msgstr "" - -#: internal/service/cli.go:231 -msgid "Public IPv4: %s://%s:%d%s" -msgstr "" - -#: internal/service/cli.go:235 -msgid "Public IPv6: %s://[%s]:%d%s" -msgstr "" - -#: internal/service/environment_python.go:36 -#: internal/service/environment_python.go:56 -#: internal/service/environment_python.go:76 -msgid "Python-%s is not installed" -msgstr "" - -#: internal/bootstrap/cli.go:35 -msgid "QQ Group:12370907" -msgstr "" - -#: internal/apps/mysql/app.go:192 -msgid "Query Cache Hit Rate" -msgstr "" - -#: internal/apps/mysql/app.go:180 -msgid "Query Cache Hits" -msgstr "" - -#: internal/apps/mysql/app.go:184 -msgid "Query Cache Inserts" -msgstr "" - -#: internal/apps/mysql/app.go:188 -msgid "Query Cache Not Cached" -msgstr "" - -#: internal/apps/mongodb/app.go:97 -msgid "Query Operations" -msgstr "" - -#: internal/apps/nginx/app.go:162 -msgid "Reading" -msgstr "" - -#: internal/service/environment_php.go:444 -msgid "Readline is a library for processing text" -msgstr "" - -#: internal/apps/prometheus/app.go:409 -msgid "Redis metrics" -msgstr "" - -#: internal/apps/elasticsearch/app.go:87 -#: internal/apps/opensearch/app.go:87 -msgid "Relocating Shards" -msgstr "" - -#: internal/route/cli.go:507 -msgid "Remove panel application mark (use only under guidance)" -msgstr "" - -#: internal/data/backup.go:1312 -msgid "Remove panel file failed: %v" -msgstr "" - -#: internal/route/cli.go:532 -msgid "Remove panel setting (use only under guidance)" -msgstr "" - -#: internal/route/cli.go:216 -msgid "Remove website" -msgstr "" - -#: internal/apps/apache/app.go:149 -msgid "Requests/sec" -msgstr "" - -#: internal/apps/mongodb/app.go:101 -msgid "Resident Memory (MB)" -msgstr "" - -#: internal/route/cli.go:31 -msgid "Restart AcePanel service" -msgstr "" - -#: internal/apps/mysql/app.go:124 -msgid "Rollbacks per Second" -msgstr "" - -#: internal/route/cli.go:456 -msgid "Rotation type" -msgstr "" - -#: internal/service/environment_php.go:449 -msgid "SNMP is a protocol for network management" -msgstr "" - -#: internal/service/log.go:154 -msgid "SSH log file not found" -msgstr "" - -#: internal/service/environment_php.go:434 -msgid "SSH2 is a library for connecting to SSH servers" -msgstr "" - -#: internal/route/cli.go:269 -msgid "Server address" -msgstr "" - -#: internal/route/cli.go:264 -#: internal/route/cli.go:298 -msgid "Server name" -msgstr "" - -#: internal/route/cli.go:283 -msgid "Server password" -msgstr "" - -#: internal/route/cli.go:274 -msgid "Server port" -msgstr "" - -#: internal/route/cli.go:287 -msgid "Server remark" -msgstr "" - -#: internal/route/cli.go:259 -msgid "Server type" -msgstr "" - -#: internal/route/cli.go:279 -msgid "Server username" -msgstr "" - -#: internal/service/environment_php.go:744 -msgid "Session save handler is not files, cannot clean" -msgstr "" - -#: internal/route/cli.go:515 -msgid "Setting management" -msgstr "" - -#: internal/service/cli.go:990 -msgid "Setting not exists" -msgstr "" - -#: internal/service/environment_php.go:193 -msgid "Slow Requests" -msgstr "" - -#: internal/apps/mysql/app.go:136 -msgid "Sort Merge Passes" -msgstr "" - -#: internal/route/cli.go:41 -msgid "Start AcePanel service" -msgstr "" - -#: internal/apps/postgresql/app.go:171 -#: internal/apps/prometheus/app.go:96 -#: internal/service/environment_php.go:183 -msgid "Start Time" -msgstr "" - -#: internal/route/cli.go:36 -msgid "Stop AcePanel service" -msgstr "" - -#: internal/apps/mongodb/app.go:102 -msgid "Storage Engine" -msgstr "" - -#: internal/route/cli.go:324 -#: internal/route/cli.go:348 -#: internal/route/cli.go:366 -#: internal/route/cli.go:402 -#: internal/route/cli.go:426 -#: internal/route/cli.go:444 -#: internal/route/cli.go:474 -msgid "Storage ID (local storage if not filled)" -msgstr "" - -#: internal/apps/prometheus/app.go:97 -msgid "Storage Retention" -msgstr "" - -#: internal/apps/postgresql/app.go:175 -msgid "Storage Usage" -msgstr "" - -#: internal/apps/mysql/app.go:135 -msgid "Subqueries without Index" -msgstr "" - -#: internal/service/cli.go:453 -msgid "Successfully obtained panel certificate via ACME" -msgstr "" - -#: internal/service/environment_php.go:554 -msgid "Swoole is a PHP module for building high-performance asynchronous concurrent servers" -msgstr "" - -#: internal/service/environment_php.go:563 -msgid "Swow is a PHP module for building high-performance asynchronous concurrent servers" -msgstr "" - -#: internal/route/cli.go:51 -msgid "Sync AcePanel cached data with cloud" -msgstr "" - -#: internal/route/cli.go:540 -msgid "Sync server time with NTP" -msgstr "" - -#: internal/service/environment_php.go:534 -msgid "Sysvmsg is a library for handling System V message queues" -msgstr "" - -#: internal/service/environment_php.go:539 -msgid "Sysvsem is a library for handling System V semaphores" -msgstr "" - -#: internal/service/environment_php.go:544 -msgid "Sysvshm is a library for handling System V shared memory" -msgstr "" - -#: internal/apps/redis/app.go:86 -#: internal/apps/valkey/app.go:86 -msgid "TCP Port" -msgstr "" - -#: internal/apps/mysql/app.go:137 -msgid "Table Locks Waited" +#: internal/command/backup.go:47 +msgid "Database type" msgstr "" #: internal/apps/clickhouse/app.go:101 -msgid "Tables" +msgid "Databases" msgstr "" -#: internal/route/cli.go:462 -msgid "Target name" +#: internal/apps/mongodb/app.go:101 +msgid "Delete Operations" msgstr "" -#: internal/service/cli.go:977 -msgid "Tasks cleared successfully" +#: internal/command/database.go:63 +msgid "Delete database server" +msgstr "" + +#: internal/command/website.go:72 +msgid "Delete website (including website directory, database with the same name)" +msgstr "" + +#: internal/command/backup.go:73 +msgid "Directory path" +msgstr "" + +#: internal/command/https.go:29 +msgid "Disable HTTPS" +msgstr "" + +#: internal/command/entrance.go:65 +msgid "Disable IP binding" +msgstr "" + +#: internal/command/entrance.go:83 +msgid "Disable UA binding" +msgstr "" + +#: internal/command/entrance.go:29 +msgid "Disable access entrance" +msgstr "" + +#: internal/command/entrance.go:47 +msgid "Disable domain binding" +msgstr "" + +#: internal/service/toolbox_log.go:269 +msgid "Docker container logs: %d files" +msgstr "" + +#: internal/service/cli.go:131 +msgid "Download URL is empty" +msgstr "" + +#: internal/data/backup.go:1416 +#: internal/data/backup.go:1419 +msgid "Download failed: %v" +msgstr "" + +#: internal/data/backup.go:1422 +msgid "Download file check failed" +msgstr "" + +#: internal/service/file.go:460 +msgid "Download remote file %v" +msgstr "" + +#: internal/data/backup.go:1414 +msgid "Downloading new version..." +msgstr "" + +#: internal/apps/prometheus/app.go:412 +msgid "Elasticsearch metrics" +msgstr "" + +#: internal/command/https.go:22 +msgid "Enable HTTPS" +msgstr "" + +#: internal/command/entrance.go:22 +msgid "Enable access entrance" +msgstr "" + +#: internal/service/environment_php.go:460 +msgid "Enchant is a spell-checking library" +msgstr "" + +#: internal/service/cli.go:508 +msgid "Entrance disabled" +msgstr "" + +#: internal/service/cli.go:491 +msgid "Entrance enabled" +msgstr "" + +#: internal/service/cli.go:220 +#: internal/service/cli.go:492 +msgid "Entrance: %s" +msgstr "" + +#: internal/service/environment_php.go:440 +msgid "Event is a library for handling events" +msgstr "" + +#: internal/service/environment_php.go:395 +msgid "Exif is a library for reading and writing image metadata" +msgstr "" + +#: internal/data/backup.go:1432 +msgid "Extracting new version..." +msgstr "" + +#: internal/service/cli.go:336 +msgid "Failed to change 2FA status: %v" +msgstr "" + +#: internal/service/cli.go:311 +msgid "Failed to change password: %v" +msgstr "" + +#: internal/service/cli.go:280 +msgid "Failed to change username: %v" +msgstr "" + +#: internal/data/backup.go:1398 +msgid "Failed to clean up temporary directory: %v" +msgstr "" + +#: internal/service/cli.go:375 +msgid "Failed to clear passkeys: %v" +msgstr "" + +#: internal/service/cli.go:975 +msgid "Failed to clear tasks: %v" +msgstr "" + +#: internal/data/backup.go:1412 +msgid "Failed to create temporary directory: %v" +msgstr "" + +#: internal/service/cli.go:950 +msgid "Failed to delete app: %v" +msgstr "" + +#: internal/service/cli.go:1029 +msgid "Failed to delete setting: %v" +msgstr "" + +#: internal/service/cli.go:344 +msgid "Failed to generate 2FA: %v" +msgstr "" + +#: internal/service/cli.go:184 +#: internal/service/cli.go:307 +msgid "Failed to generate password: %v" +msgstr "" + +#: internal/service/cli.go:450 +msgid "Failed to get ACME account: %v" +msgstr "" + +#: internal/service/cli.go:446 +msgid "Failed to get a panel user: %v" +msgstr "" + +#: internal/service/cli.go:930 +msgid "Failed to get app: %v" +msgstr "" + +#: internal/service/cli.go:795 +msgid "Failed to get container log path: %v" +msgstr "" + +#: internal/service/cli.go:210 +msgid "Failed to get entrance" +msgstr "" + +#: internal/service/cli.go:126 +msgid "Failed to get latest version: %v" +msgstr "" + +#: internal/service/cli.go:206 +msgid "Failed to get port" +msgstr "" + +#: internal/service/cli.go:1010 +#: internal/service/cli.go:993 +msgid "Failed to get setting: %v" +msgstr "" + +#: internal/service/cli.go:171 +msgid "Failed to get user info: %v" +msgstr "" + +#: internal/service/cli.go:250 +msgid "Failed to get user list: %v" +msgstr "" + +#: internal/service/cli.go:275 +#: internal/service/cli.go:302 +#: internal/service/cli.go:329 +#: internal/service/cli.go:371 +msgid "Failed to get user: %v" +msgstr "" + +#: internal/service/cli.go:456 +msgid "Failed to obtain panel certificate via ACME, using self-signed certificate" +msgstr "" + +#: internal/data/backup.go:1401 +msgid "Failed to optimize database: %v" +msgstr "" + +#: internal/service/cli.go:351 +msgid "Failed to read input: %v" +msgstr "" + +#: internal/data/backup.go:1247 +msgid "Failed to remove %s.db: %v" +msgstr "" + +#: internal/service/cli.go:937 +msgid "Failed to save app: %v" +msgstr "" + +#: internal/service/cli.go:1016 +#: internal/service/cli.go:195 +msgid "Failed to save setting: %v" +msgstr "" + +#: internal/service/cli.go:190 +msgid "Failed to save user info: %v" +msgstr "" + +#: internal/service/ws.go:203 +msgid "Failed to start command: %v" +msgstr "" + +#: internal/service/cli.go:151 +#: internal/service/cli.go:154 +#: internal/service/cli.go:157 +msgid "Failed to synchronize app data: %v" +msgstr "" + +#: internal/service/cli.go:148 +msgid "Failed to synchronize categories data: %v" +msgstr "" + +#: internal/service/cli.go:354 +msgid "Failed to update 2FA: %v" +msgstr "" + +#: internal/service/environment_php.go:360 +msgid "Fileinfo is a library used to identify file types" +msgstr "" + +#: internal/data/backup.go:1237 +msgid "Files are normal and do not need to be repaired, please run acepanel update to update the panel" +msgstr "" + +#: internal/data/backup.go:1447 +msgid "Finishing up..." +msgstr "" + +#: internal/data/backup.go:1449 +msgid "Finishing update failed: %v" +msgstr "" + +#: internal/command/panel.go:42 +msgid "Fix AcePanel upgrade issues" +msgstr "" + +#: internal/apps/rocketmq/app.go:70 +msgid "Flush Disk Type" +msgstr "" + +#: internal/command/panel.go:59 +msgid "Force reset password" +msgstr "" + +#: internal/bootstrap/cli.go:37 +msgid "Forum:https://tom.moe" +msgstr "" + +#: internal/apps/mysql/app.go:134 +msgid "Full Joins without Index" +msgstr "" + +#: internal/apps/mysql/app.go:135 +msgid "Full Range Joins without Index" +msgstr "" + +#: internal/bootstrap/cli.go:23 +msgid "GLOBAL OPTIONS" +msgstr "" + +#: internal/service/environment_php.go:475 +msgid "GMP is a library for handling large integers" +msgstr "" + +#: internal/service/cert.go:81 +msgid "Gcore" +msgstr "" + +#: internal/command/service.go:18 +msgid "Get AcePanel service status" +msgstr "" + +#: internal/command/setting.go:23 +msgid "Get panel setting (use only under guidance)" +msgstr "" + +#: internal/service/environment_php.go:495 +msgid "Gettext is a library for handling multilingual support" +msgstr "" + +#: internal/service/environment_go.go:37 +#: internal/service/environment_go.go:57 +#: internal/service/environment_go.go:77 +msgid "Go-%s is not installed" +msgstr "" + +#: internal/apps/prometheus/app.go:102 +msgid "Goroutine Count" +msgstr "" + +#: internal/service/cli.go:475 +msgid "HTTPS certificate generated" +msgstr "" + +#: internal/service/cli.go:410 +msgid "HTTPS disabled" +msgstr "" + +#: internal/service/cli.go:394 +msgid "HTTPS enabled" +msgstr "" + +#: internal/apps/prometheus/app.go:407 +msgid "Hardware and OS metrics" +msgstr "" + +#: internal/service/cert.go:69 +msgid "Huawei Cloud" +msgstr "" + +#: internal/service/cli.go:254 +msgid "ID: %d, Username: %s, Email: %s, Created At: %s" +msgstr "" + +#: internal/service/environment_php.go:420 +msgid "IMAP module allows PHP to read, search, delete, download, and manage emails" +msgstr "" + +#: internal/service/environment_php.go:189 +msgid "Idle Processes" +msgstr "" + +#: internal/apps/apache/app.go:143 +msgid "Idle Workers" +msgstr "" + +#: internal/service/cli.go:240 +msgid "If you cannot access, please check whether the server's security group and firewall allow port %d" +msgstr "" + +#: internal/service/cli.go:241 +msgid "If you still cannot access, try running `acepanel https off` to turn off panel HTTPS" +msgstr "" + +#: internal/service/environment_php.go:370 +msgid "Igbinary is a library for serializing and deserializing data" +msgstr "" + +#: internal/service/environment_php.go:390 +msgid "ImageMagick is free software for creating, editing, and composing images" +msgstr "" + +#: internal/apps/mysql/app.go:130 +msgid "Index Hit Rate" +msgstr "" + +#: internal/service/cli.go:1085 +#: internal/service/cli.go:1090 +#: internal/service/cli.go:1095 +#: internal/service/cli.go:1137 +msgid "Initialization failed: %v" +msgstr "" + +#: internal/command/panel.go:110 +msgid "Initialize AcePanel (use only under guidance)" msgstr "" #: internal/apps/mysql/app.go:131 -msgid "Temporary Tables Created on Disk" +msgid "Innodb Index Hit Rate" msgstr "" -#: internal/service/cert.go:64 -msgid "Tencent Cloud" +#: internal/apps/mongodb/app.go:99 +msgid "Insert Operations" msgstr "" -#: internal/data/backup.go:1191 -msgid "The number of files contained in the compressed file is not 1, actual %d" +#: internal/service/environment_php.go:310 +msgid "Install PHP-%d %s module" msgstr "" -#: internal/service/cli.go:965 -msgid "Time synchronized successfully" +#: internal/apps/prometheus/app.go:266 +msgid "Install Prometheus exporter %s" msgstr "" -#: internal/route/cli.go:92 -msgid "Toggle two-factor authentication for a user" +#: internal/biz/app.go:216 +msgid "Install app %s" msgstr "" -#: internal/apps/apache/app.go:121 -msgid "Total Accesses" +#: internal/command/app.go:22 +msgid "Install application" msgstr "" -#: internal/apps/redis/app.go:89 -#: internal/apps/valkey/app.go:89 -msgid "Total Allocated Memory" +#: internal/biz/environment.go:152 +msgid "Install environment %s" +msgstr "" + +#: internal/service/environment_php.go:490 +msgid "Intl is a library for handling internationalization and localization" +msgstr "" + +#: internal/service/environment_java.go:35 +msgid "Java-%s is not installed" +msgstr "" + +#: internal/service/toolbox_log.go:392 +msgid "Journal logs" +msgstr "" + +#: internal/apps/prometheus/app.go:415 +msgid "Kafka metrics" +msgstr "" + +#: internal/apps/redis/app.go:99 +#: internal/apps/valkey/app.go:99 +msgid "Keyspace Hits" +msgstr "" + +#: internal/apps/redis/app.go:100 +#: internal/apps/valkey/app.go:100 +msgid "Keyspace Misses" +msgstr "" + +#: internal/service/environment_php.go:455 +msgid "LDAP is a protocol for accessing directory services" +msgstr "" + +#: internal/apps/redis/app.go:101 +#: internal/apps/valkey/app.go:101 +msgid "Latest Fork Time (ms)" +msgstr "" + +#: internal/command/user.go:22 +msgid "List all users" +msgstr "" + +#: internal/command/website.go:32 +msgid "List of domains associated with the website" +msgstr "" + +#: internal/command/website.go:38 +msgid "List of listening addresses associated with the website" +msgstr "" + +#: internal/apps/rocketmq/app.go:67 +msgid "Listen Port" +msgstr "" + +#: internal/service/environment_php.go:186 +msgid "Listen Queue" +msgstr "" + +#: internal/service/environment_php.go:188 +msgid "Listen Queue Length" +msgstr "" + +#: internal/apps/kafka/app.go:56 +msgid "Listeners" +msgstr "" + +#: internal/service/cli.go:224 +msgid "Local IPv4: %s://%s:%d%s" +msgstr "" + +#: internal/service/cli.go:228 +msgid "Local IPv6: %s://[%s]:%d%s" +msgstr "" + +#: internal/biz/backup_storage.go:188 +#: internal/data/backup.go:110 +msgid "Local Storage" +msgstr "" + +#: internal/apps/kafka/app.go:57 +msgid "Log Dirs" +msgstr "" + +#: internal/apps/kafka/app.go:59 +msgid "Log Retention Hours" +msgstr "" + +#: internal/apps/kafka/app.go:60 +msgid "Log Segment Bytes" +msgstr "" + +#: internal/command/cutoff.go:18 +msgid "Log rotation" +msgstr "" + +#: internal/service/environment_php.go:192 +msgid "Max Active Processes" +msgstr "" + +#: internal/service/environment_php.go:193 +msgid "Max Children Reached" +msgstr "" + +#: internal/service/environment_php.go:187 +msgid "Max Listen Queue" +msgstr "" + +#: internal/service/environment_php.go:380 +msgid "Memcached is a driver for connecting to Memcached servers" +msgstr "" + +#: internal/apps/prometheus/app.go:414 +msgid "Memcached metrics" +msgstr "" + +#: internal/apps/apache/app.go:115 +#: internal/apps/nginx/app.go:133 +msgid "Memory" +msgstr "" + +#: internal/apps/redis/app.go:95 +#: internal/apps/valkey/app.go:95 +msgid "Memory Fragmentation Ratio" +msgstr "" + +#: internal/apps/clickhouse/app.go:100 +msgid "Memory Usage (bytes)" +msgstr "" + +#: internal/service/toolbox_migration.go:407 +msgid "Migration completed" +msgstr "" + +#: internal/service/toolbox_migration.go:380 +msgid "Migration started" +msgstr "" + +#: internal/apps/prometheus/app.go:411 +msgid "MongoDB metrics" +msgstr "" + +#: internal/data/backup.go:1327 +msgid "Move acepanel file failed: %v" +msgstr "" + +#: internal/data/backup.go:1318 +msgid "Move panel file failed: %v" +msgstr "" + +#: internal/apps/prometheus/app.go:409 +msgid "MySQL database metrics" +msgstr "" + +#: internal/bootstrap/cli.go:17 +#: internal/bootstrap/cli.go:25 +#: internal/bootstrap/cli.go:30 +msgid "NAME" +msgstr "" + +#: internal/apps/rocketmq/app.go:68 +msgid "NameServer Address" +msgstr "" + +#: internal/apps/rocketmq/app.go:64 +msgid "NameServer Status" +msgstr "" + +#: internal/service/cert.go:89 +msgid "NameSilo" +msgstr "" + +#: internal/service/cli.go:268 +msgid "New username cannot be empty" +msgstr "" + +#: internal/apps/prometheus/app.go:408 +msgid "Nginx metrics" +msgstr "" + +#: internal/data/backup.go:1283 +msgid "No backup file found, unable to automatically repair" +msgstr "" + +#: internal/apps/kafka/app.go:55 +msgid "Node ID" +msgstr "" + +#: internal/service/environment_nodejs.go:37 +#: internal/service/environment_nodejs.go:57 +#: internal/service/environment_nodejs.go:77 +msgid "Node.js-%s is not installed" +msgstr "" + +#: internal/service/cli.go:659 +msgid "Not supported" +msgstr "" + +#: internal/service/home.go:266 +msgid "Not used" +msgstr "" + +#: internal/apps/kafka/app.go:58 +msgid "Num Partitions" +msgstr "" + +#: internal/apps/elasticsearch/app.go:85 +#: internal/apps/opensearch/app.go:86 +msgid "Number of Data Nodes" +msgstr "" + +#: internal/apps/elasticsearch/app.go:84 +#: internal/apps/opensearch/app.go:85 +msgid "Number of Nodes" +msgstr "" + +#: internal/command/backup.go:113 +msgid "Number of backups to keep" +msgstr "" + +#: internal/command/cutoff.go:79 +msgid "Number of logs to keep" +msgstr "" + +#: internal/bootstrap/cli.go:29 +#: internal/bootstrap/cli.go:34 +msgid "OPTIONS" +msgstr "" + +#: internal/service/environment_php.go:365 +msgid "OPcache stores precompiled PHP script bytecode in shared memory to improve PHP performance" +msgstr "" + +#: internal/command/https.go:36 +msgid "Obtain a free certificate or generate a self-signed certificate" +msgstr "" + +#: internal/service/cli.go:265 +msgid "Old username cannot be empty" +msgstr "" + +#: internal/apps/mysql/app.go:133 +msgid "Open Tables" +msgstr "" + +#: internal/command/https.go:18 +msgid "Operate AcePanel HTTPS" +msgstr "" + +#: internal/command/entrance.go:61 +msgid "Operate AcePanel IP binding" +msgstr "" + +#: internal/command/entrance.go:79 +msgid "Operate AcePanel UA binding" +msgstr "" + +#: internal/command/entrance.go:18 +msgid "Operate AcePanel access entrance" +msgstr "" + +#: internal/command/entrance.go:43 +msgid "Operate AcePanel domain binding" +msgstr "" + +#: internal/command/user.go:18 +msgid "Operate AcePanel users" +msgstr "" + +#: internal/command/panel.go:54 +msgid "Output AcePanel basic information" +msgstr "" + +#: internal/command/website.go:48 +msgid "PHP version used by the website (not used if not filled)" +msgstr "" + +#: internal/service/environment_php.go:110 +#: internal/service/environment_php.go:129 +#: internal/service/environment_php.go:149 +#: internal/service/environment_php.go:168 +#: internal/service/environment_php.go:233 +#: internal/service/environment_php.go:247 +#: internal/service/environment_php.go:261 +#: internal/service/environment_php.go:294 +#: internal/service/environment_php.go:328 +#: internal/service/environment_php.go:49 +#: internal/service/environment_php.go:610 +#: internal/service/environment_php.go:669 +#: internal/service/environment_php.go:69 +#: internal/service/environment_php.go:732 +#: internal/service/environment_php.go:90 +msgid "PHP-%d is not installed" +msgstr "" + +#: internal/service/cli.go:1004 +#: internal/service/cli.go:1025 +#: internal/service/cli.go:880 +#: internal/service/cli.go:894 +#: internal/service/cli.go:908 +#: internal/service/cli.go:924 +#: internal/service/cli.go:946 +#: internal/service/cli.go:985 +msgid "Parameters cannot be empty" +msgstr "" + +#: internal/service/user_passkey.go:180 +msgid "Passkey" +msgstr "" + +#: internal/service/cli.go:314 +msgid "Password for user %s changed successfully" +msgstr "" + +#: internal/service/cli.go:295 +msgid "Password length cannot be less than 6" +msgstr "" + +#: internal/service/cli.go:215 +msgid "Password: %s" +msgstr "" + +#: internal/service/cli.go:217 +msgid "Password: ******* (use -f to force reset)" +msgstr "" + +#: internal/command/website.go:44 +msgid "Path where the website is hosted (default path if not filled)" +msgstr "" + +#: internal/apps/mysql/app.go:129 +msgid "Peak Connections" msgstr "" #: internal/apps/redis/app.go:94 #: internal/apps/valkey/app.go:94 +msgid "Peak Memory Usage" +msgstr "" + +#: internal/service/environment_php.go:375 +msgid "PhpRedis connects to and operates on data in Redis databases (requires the igbinary module installed above)" +msgstr "" + +#: internal/service/cli.go:239 +msgid "Please choose the appropriate address to access the panel based on your network situation" +msgstr "" + +#: internal/service/cli.go:348 +msgid "Please enter the 2FA code: " +msgstr "" + +#: internal/service/cli.go:441 +msgid "Please set the panel IP in settings first for ACME certificate generation" +msgstr "" + +#: internal/service/toolbox_log.go:286 +msgid "Podman container logs: %d files" +msgstr "" + +#: internal/service/cert.go:85 +msgid "Porkbun" +msgstr "" + +#: internal/service/cli.go:573 +msgid "Port already in use" +msgstr "" + +#: internal/service/cli.go:599 +msgid "Port changed to %d" +msgstr "" + +#: internal/service/cli.go:563 +msgid "Port range error" +msgstr "" + +#: internal/service/cli.go:219 +msgid "Port: %d" +msgstr "" + +#: internal/apps/prometheus/app.go:410 +msgid "PostgreSQL database metrics" +msgstr "" + +#: internal/data/backup.go:1396 +msgid "Preparing to update to %s..." +msgstr "" + +#: internal/apps/postgresql/app.go:177 +msgid "Process Count" +msgstr "" + +#: internal/service/environment_php.go:183 +msgid "Process Manager" +msgstr "" + +#: internal/apps/postgresql/app.go:176 +msgid "Process PID" +msgstr "" + +#: internal/service/toolbox_migration.go:689 +msgid "Project" +msgstr "" + +#: internal/service/environment_php.go:465 +msgid "Pspell is a spell-checking library" +msgstr "" + +#: internal/service/cli.go:232 +msgid "Public IPv4: %s://%s:%d%s" +msgstr "" + +#: internal/service/cli.go:236 +msgid "Public IPv6: %s://[%s]:%d%s" +msgstr "" + +#: internal/service/environment_python.go:37 +#: internal/service/environment_python.go:57 +#: internal/service/environment_python.go:77 +msgid "Python-%s is not installed" +msgstr "" + +#: internal/bootstrap/cli.go:38 +msgid "QQ Group:12370907" +msgstr "" + +#: internal/apps/mysql/app.go:193 +msgid "Query Cache Hit Rate" +msgstr "" + +#: internal/apps/mysql/app.go:181 +msgid "Query Cache Hits" +msgstr "" + +#: internal/apps/mysql/app.go:185 +msgid "Query Cache Inserts" +msgstr "" + +#: internal/apps/mysql/app.go:189 +msgid "Query Cache Not Cached" +msgstr "" + +#: internal/apps/mongodb/app.go:98 +msgid "Query Operations" +msgstr "" + +#: internal/apps/nginx/app.go:164 +msgid "Reading" +msgstr "" + +#: internal/service/environment_php.go:445 +msgid "Readline is a library for processing text" +msgstr "" + +#: internal/apps/prometheus/app.go:413 +msgid "Redis metrics" +msgstr "" + +#: internal/apps/elasticsearch/app.go:88 +#: internal/apps/opensearch/app.go:89 +msgid "Relocating Shards" +msgstr "" + +#: internal/command/app.go:51 +msgid "Remove panel application mark (use only under guidance)" +msgstr "" + +#: internal/data/backup.go:1315 +msgid "Remove panel file failed: %v" +msgstr "" + +#: internal/command/setting.go:39 +msgid "Remove panel setting (use only under guidance)" +msgstr "" + +#: internal/command/website.go:57 +msgid "Remove website" +msgstr "" + +#: internal/apps/apache/app.go:150 +msgid "Requests/sec" +msgstr "" + +#: internal/apps/mongodb/app.go:102 +msgid "Resident Memory (MB)" +msgstr "" + +#: internal/command/service.go:30 +msgid "Restart AcePanel service" +msgstr "" + +#: internal/apps/mysql/app.go:125 +msgid "Rollbacks per Second" +msgstr "" + +#: internal/command/cutoff.go:67 +msgid "Rotation type" +msgstr "" + +#: internal/service/environment_php.go:450 +msgid "SNMP is a protocol for network management" +msgstr "" + +#: internal/service/log.go:155 +msgid "SSH log file not found" +msgstr "" + +#: internal/service/environment_php.go:435 +msgid "SSH2 is a library for connecting to SSH servers" +msgstr "" + +#: internal/command/database.go:36 +msgid "Server address" +msgstr "" + +#: internal/command/database.go:31 +#: internal/command/database.go:67 +msgid "Server name" +msgstr "" + +#: internal/command/database.go:50 +msgid "Server password" +msgstr "" + +#: internal/command/database.go:41 +msgid "Server port" +msgstr "" + +#: internal/command/database.go:54 +msgid "Server remark" +msgstr "" + +#: internal/command/database.go:26 +msgid "Server type" +msgstr "" + +#: internal/command/database.go:46 +msgid "Server username" +msgstr "" + +#: internal/service/environment_php.go:745 +msgid "Session save handler is not files, cannot clean" +msgstr "" + +#: internal/command/setting.go:18 +msgid "Setting management" +msgstr "" + +#: internal/service/cli.go:991 +msgid "Setting not exists" +msgstr "" + +#: internal/service/environment_php.go:194 +msgid "Slow Requests" +msgstr "" + +#: internal/apps/mysql/app.go:137 +msgid "Sort Merge Passes" +msgstr "" + +#: internal/command/service.go:54 +msgid "Start AcePanel service" +msgstr "" + +#: internal/apps/postgresql/app.go:175 +#: internal/apps/prometheus/app.go:100 +#: internal/service/environment_php.go:184 +msgid "Start Time" +msgstr "" + +#: internal/command/service.go:42 +msgid "Stop AcePanel service" +msgstr "" + +#: internal/apps/mongodb/app.go:103 +msgid "Storage Engine" +msgstr "" + +#: internal/command/backup.go:119 +#: internal/command/backup.go:33 +#: internal/command/backup.go:59 +#: internal/command/backup.go:79 +#: internal/command/cutoff.go:33 +#: internal/command/cutoff.go:53 +#: internal/command/cutoff.go:85 +msgid "Storage ID (local storage if not filled)" +msgstr "" + +#: internal/apps/prometheus/app.go:101 +msgid "Storage Retention" +msgstr "" + +#: internal/apps/postgresql/app.go:179 +msgid "Storage Usage" +msgstr "" + +#: internal/apps/mysql/app.go:136 +msgid "Subqueries without Index" +msgstr "" + +#: internal/service/cli.go:454 +msgid "Successfully obtained panel certificate via ACME" +msgstr "" + +#: internal/service/environment_php.go:555 +msgid "Swoole is a PHP module for building high-performance asynchronous concurrent servers" +msgstr "" + +#: internal/service/environment_php.go:564 +msgid "Swow is a PHP module for building high-performance asynchronous concurrent servers" +msgstr "" + +#: internal/command/panel.go:30 +msgid "Sync AcePanel cached data with cloud" +msgstr "" + +#: internal/command/panel.go:85 +msgid "Sync server time with NTP" +msgstr "" + +#: internal/service/environment_php.go:535 +msgid "Sysvmsg is a library for handling System V message queues" +msgstr "" + +#: internal/service/environment_php.go:540 +msgid "Sysvsem is a library for handling System V semaphores" +msgstr "" + +#: internal/service/environment_php.go:545 +msgid "Sysvshm is a library for handling System V shared memory" +msgstr "" + +#: internal/apps/redis/app.go:89 +#: internal/apps/valkey/app.go:89 +msgid "TCP Port" +msgstr "" + +#: internal/apps/mysql/app.go:138 +msgid "Table Locks Waited" +msgstr "" + +#: internal/apps/clickhouse/app.go:102 +msgid "Tables" +msgstr "" + +#: internal/command/cutoff.go:73 +msgid "Target name" +msgstr "" + +#: internal/service/cli.go:978 +msgid "Tasks cleared successfully" +msgstr "" + +#: internal/apps/mysql/app.go:132 +msgid "Temporary Tables Created on Disk" +msgstr "" + +#: internal/service/cert.go:65 +msgid "Tencent Cloud" +msgstr "" + +#: internal/data/backup.go:1187 +msgid "The number of files contained in the compressed file is not 1, actual %d" +msgstr "" + +#: internal/service/cli.go:966 +msgid "Time synchronized successfully" +msgstr "" + +#: internal/command/user.go:43 +msgid "Toggle two-factor authentication for a user" +msgstr "" + +#: internal/apps/apache/app.go:122 +msgid "Total Accesses" +msgstr "" + +#: internal/apps/redis/app.go:92 +#: internal/apps/valkey/app.go:92 +msgid "Total Allocated Memory" +msgstr "" + +#: internal/apps/redis/app.go:97 +#: internal/apps/valkey/app.go:97 msgid "Total Commands Processed" msgstr "" -#: internal/apps/mysql/app.go:122 -#: internal/apps/postgresql/app.go:174 +#: internal/apps/mysql/app.go:123 +#: internal/apps/postgresql/app.go:178 msgid "Total Connections" msgstr "" -#: internal/apps/mongodb/app.go:96 +#: internal/apps/mongodb/app.go:97 msgid "Total Connections Created" msgstr "" +#: internal/apps/redis/app.go:96 +#: internal/apps/valkey/app.go:96 +msgid "Total Connections Received" +msgstr "" + #: internal/apps/redis/app.go:93 #: internal/apps/valkey/app.go:93 -msgid "Total Connections Received" +msgid "Total Memory Usage" +msgstr "" + +#: internal/service/environment_php.go:191 +msgid "Total Processes" +msgstr "" + +#: internal/apps/mysql/app.go:122 +msgid "Total Queries" +msgstr "" + +#: internal/apps/apache/app.go:129 +msgid "Total Traffic" +msgstr "" + +#: internal/apps/nginx/app.go:148 +msgid "Total connections" +msgstr "" + +#: internal/apps/nginx/app.go:152 +msgid "Total handshakes" +msgstr "" + +#: internal/apps/nginx/app.go:156 +msgid "Total requests" +msgstr "" + +#: internal/apps/mysql/app.go:124 +msgid "Transactions per Second" +msgstr "" + +#: internal/bootstrap/cli.go:18 +#: internal/bootstrap/cli.go:26 +#: internal/bootstrap/cli.go:31 +#: internal/bootstrap/cli.go:32 +msgid "USAGE" +msgstr "" + +#: internal/service/app.go:261 +msgid "Unable to update app list cache in offline mode" +msgstr "" + +#: internal/apps/elasticsearch/app.go:89 +#: internal/apps/opensearch/app.go:90 +msgid "Unassigned Shards" +msgstr "" + +#: internal/service/file.go:614 +msgid "Uncompress %v" +msgstr "" + +#: internal/service/environment_php.go:344 +msgid "Uninstall PHP-%d %s module" +msgstr "" + +#: internal/apps/prometheus/app.go:293 +msgid "Uninstall Prometheus exporter %s" +msgstr "" + +#: internal/biz/app.go:256 +msgid "Uninstall app %s" +msgstr "" + +#: internal/command/app.go:29 +msgid "Uninstall application" +msgstr "" + +#: internal/biz/environment.go:154 +msgid "Uninstall environment %s" +msgstr "" + +#: internal/service/cli.go:860 +msgid "Unsupported rotation type: %s" +msgstr "" + +#: internal/service/toolbox_log.go:256 +msgid "Unused container images: %d" +msgstr "" + +#: internal/data/backup.go:1299 +msgid "Unzip backup file failed: %v" +msgstr "" + +#: internal/data/backup.go:1437 +msgid "Unzip new version failed, missing file" +msgstr "" + +#: internal/data/backup.go:1434 +msgid "Unzip new version failed: %v" +msgstr "" + +#: internal/command/panel.go:18 +msgid "Update AcePanel to the latest version" +msgstr "" + +#: internal/apps/mongodb/app.go:100 +msgid "Update Operations" +msgstr "" + +#: internal/biz/app.go:298 +msgid "Update app %s" +msgstr "" + +#: internal/command/app.go:36 +msgid "Update application" +msgstr "" + +#: internal/data/backup.go:1454 +msgid "Update completed" +msgstr "" + +#: internal/biz/environment.go:156 +msgid "Update environment %s" +msgstr "" + +#: internal/apps/mysql/app.go:121 +msgid "Uptime" +msgstr "" + +#: internal/apps/clickhouse/app.go:98 +#: internal/apps/mongodb/app.go:95 +msgid "Uptime (seconds)" msgstr "" #: internal/apps/redis/app.go:90 #: internal/apps/valkey/app.go:90 -msgid "Total Memory Usage" -msgstr "" - -#: internal/service/environment_php.go:190 -msgid "Total Processes" -msgstr "" - -#: internal/apps/mysql/app.go:121 -msgid "Total Queries" -msgstr "" - -#: internal/apps/apache/app.go:128 -msgid "Total Traffic" -msgstr "" - -#: internal/apps/nginx/app.go:146 -msgid "Total connections" -msgstr "" - -#: internal/apps/nginx/app.go:150 -msgid "Total handshakes" -msgstr "" - -#: internal/apps/nginx/app.go:154 -msgid "Total requests" -msgstr "" - -#: internal/apps/mysql/app.go:123 -msgid "Transactions per Second" -msgstr "" - -#: internal/bootstrap/cli.go:15 -#: internal/bootstrap/cli.go:23 -#: internal/bootstrap/cli.go:28 -#: internal/bootstrap/cli.go:29 -msgid "USAGE" -msgstr "" - -#: internal/service/app.go:223 -msgid "Unable to update app list cache in offline mode" -msgstr "" - -#: internal/apps/elasticsearch/app.go:88 -#: internal/apps/opensearch/app.go:88 -msgid "Unassigned Shards" -msgstr "" - -#: internal/service/file.go:597 -msgid "Uncompress %v" -msgstr "" - -#: internal/service/environment_php.go:343 -msgid "Uninstall PHP-%d %s module" -msgstr "" - -#: internal/apps/prometheus/app.go:289 -msgid "Uninstall Prometheus exporter %s" -msgstr "" - -#: internal/data/app.go:277 -msgid "Uninstall app %s" -msgstr "" - -#: internal/route/cli.go:491 -msgid "Uninstall application" -msgstr "" - -#: internal/data/environment.go:205 -msgid "Uninstall environment %s" -msgstr "" - -#: internal/service/cli.go:859 -msgid "Unsupported rotation type: %s" -msgstr "" - -#: internal/service/toolbox_log.go:255 -msgid "Unused container images: %d" -msgstr "" - -#: internal/data/backup.go:1303 -msgid "Unzip backup file failed: %v" -msgstr "" - -#: internal/data/backup.go:1430 -msgid "Unzip new version failed, missing file" -msgstr "" - -#: internal/data/backup.go:1427 -msgid "Unzip new version failed: %v" -msgstr "" - -#: internal/route/cli.go:46 -msgid "Update AcePanel to the latest version" -msgstr "" - -#: internal/apps/mongodb/app.go:99 -msgid "Update Operations" -msgstr "" - -#: internal/data/app.go:336 -msgid "Update app %s" -msgstr "" - -#: internal/route/cli.go:496 -msgid "Update application" -msgstr "" - -#: internal/data/backup.go:1447 -msgid "Update completed" -msgstr "" - -#: internal/data/environment.go:207 -msgid "Update environment %s" -msgstr "" - -#: internal/apps/mysql/app.go:120 -msgid "Uptime" -msgstr "" - -#: internal/apps/clickhouse/app.go:97 -#: internal/apps/mongodb/app.go:94 -msgid "Uptime (seconds)" -msgstr "" - -#: internal/apps/redis/app.go:87 -#: internal/apps/valkey/app.go:87 msgid "Uptime in Days" msgstr "" -#: internal/service/cli.go:272 -#: internal/service/cli.go:299 -#: internal/service/cli.go:326 -#: internal/service/cli.go:368 +#: internal/service/cli.go:273 +#: internal/service/cli.go:300 +#: internal/service/cli.go:327 +#: internal/service/cli.go:369 msgid "User not exists" msgstr "" -#: internal/service/cli.go:282 +#: internal/service/cli.go:283 msgid "Username %s changed to %s successfully" msgstr "" -#: internal/service/cli.go:291 +#: internal/service/cli.go:292 msgid "Username and password cannot be empty" msgstr "" -#: internal/service/cli.go:321 -#: internal/service/cli.go:363 +#: internal/service/cli.go:322 +#: internal/service/cli.go:364 msgid "Username cannot be empty" msgstr "" -#: internal/service/cli.go:212 +#: internal/service/cli.go:213 msgid "Username: %s" msgstr "" -#: internal/bootstrap/cli.go:16 +#: internal/bootstrap/cli.go:19 msgid "VERSION" msgstr "" -#: internal/data/backup.go:1421 +#: internal/data/backup.go:1428 msgid "Verify download file failed: %v" msgstr "" -#: internal/data/backup.go:1419 +#: internal/data/backup.go:1426 msgid "Verifying download file..." msgstr "" -#: internal/apps/clickhouse/app.go:96 -#: internal/apps/grafana/app.go:86 -#: internal/apps/mongodb/app.go:93 +#: internal/apps/clickhouse/app.go:97 +#: internal/apps/grafana/app.go:87 +#: internal/apps/mongodb/app.go:94 msgid "Version" msgstr "" -#: internal/apps/nginx/app.go:170 +#: internal/apps/nginx/app.go:172 msgid "Waiting" msgstr "" -#: internal/service/cli.go:241 +#: internal/service/cli.go:242 msgid "Warning: After turning off panel HTTPS, the security of the panel will be greatly reduced, please operate with caution" msgstr "" -#: internal/route/cli.go:414 -#: internal/service/toolbox_migration.go:431 +#: internal/command/cutoff.go:22 +#: internal/service/toolbox_migration.go:420 msgid "Website" msgstr "" -#: internal/service/cli.go:617 +#: internal/service/cli.go:618 msgid "Website %s created successfully" msgstr "" -#: internal/service/cli.go:653 +#: internal/service/cli.go:654 msgid "Website %s deleted successfully" msgstr "" -#: internal/service/cli.go:634 +#: internal/service/cli.go:635 msgid "Website %s removed successfully" msgstr "" -#: internal/route/cli.go:179 +#: internal/command/website.go:18 msgid "Website management" msgstr "" -#: internal/route/cli.go:188 -#: internal/route/cli.go:221 -#: internal/route/cli.go:234 -#: internal/route/cli.go:318 -#: internal/route/cli.go:420 +#: internal/command/backup.go:27 +#: internal/command/cutoff.go:27 +#: internal/command/website.go:26 +#: internal/command/website.go:61 +#: internal/command/website.go:76 msgid "Website name" msgstr "" -#: internal/bootstrap/cli.go:33 +#: internal/bootstrap/cli.go:36 msgid "Website:https://acepanel.net" msgstr "" -#: internal/service/cert.go:72 +#: internal/service/cert.go:73 msgid "West.cn" msgstr "" -#: internal/apps/apache/app.go:103 -#: internal/apps/nginx/app.go:120 +#: internal/apps/apache/app.go:104 +#: internal/apps/nginx/app.go:122 msgid "Workers" msgstr "" -#: internal/route/cli.go:526 +#: internal/command/setting.go:31 msgid "Write panel setting (use only under guidance)" msgstr "" -#: internal/route/cli.go:242 +#: internal/command/website.go:87 msgid "Write website data (use only under guidance)" msgstr "" -#: internal/apps/nginx/app.go:166 +#: internal/apps/nginx/app.go:168 msgid "Writing" msgstr "" -#: internal/service/environment_php.go:479 +#: internal/service/environment_php.go:480 msgid "XLSWriter is a high-performance library for reading and writing Excel files" msgstr "" -#: internal/service/environment_php.go:484 +#: internal/service/environment_php.go:485 msgid "XSL is a library for processing XML documents" msgstr "" -#: internal/service/environment_php.go:424 +#: internal/service/environment_php.go:425 msgid "Zip is a library for handling ZIP files" msgstr "" -#: internal/data/app.go:186 +#: internal/biz/app.go:197 msgid "app %s already installed" msgstr "" -#: internal/data/app.go:85 +#: internal/biz/app.go:122 msgid "app %s not found" msgstr "" -#: internal/data/app.go:241 -#: internal/data/app.go:295 -#: internal/http/middleware/must_install.go:36 +#: internal/biz/app.go:235 +#: internal/biz/app.go:275 +#: internal/middleware/must_install.go:36 msgid "app %s not installed" msgstr "" -#: internal/data/app.go:206 -#: internal/data/app.go:319 +#: internal/data/app.go:166 msgid "app %s not support current panel version" msgstr "" -#: internal/data/app.go:197 -#: internal/data/app.go:256 -#: internal/data/app.go:310 +#: internal/data/app.go:145 msgid "app %s requires panel version %s, current version %s" msgstr "" -#: internal/http/middleware/must_install.go:25 +#: internal/middleware/must_install.go:25 msgid "app not found" msgstr "" -#: internal/data/setting.go:341 -#: internal/data/setting.go:403 -#: internal/data/setting.go:419 +#: internal/biz/setting.go:231 +#: internal/biz/setting.go:293 +#: internal/biz/setting.go:309 msgid "background task is running, modifying some settings is prohibited, please try again later" msgstr "" -#: internal/service/home.go:403 -#: internal/service/home.go:413 +#: internal/service/home.go:404 +#: internal/service/home.go:414 msgid "background task is running, restart is prohibited, please try again later" msgstr "" -#: internal/service/home.go:371 -#: internal/service/ws.go:409 +#: internal/service/home.go:372 +#: internal/service/ws.go:485 msgid "background task is running, updating is prohibited, please try again later" msgstr "" -#: internal/data/backup.go:246 +#: internal/data/backup.go:256 msgid "backup file not exists" msgstr "" -#: internal/data/backup.go:320 -#: internal/data/backup.go:401 -#: internal/data/backup.go:92 +#: internal/data/backup.go:60 msgid "backup storage not found" msgstr "" -#: internal/service/toolbox_migration.go:586 +#: internal/service/toolbox_migration.go:575 msgid "backup transfer failed: %v" msgstr "" -#: internal/service/toolbox_disk.go:467 +#: internal/service/toolbox_disk.go:468 msgid "btrfs filesystem is not mounted, logical volume has been extended but filesystem was not resized" msgstr "" -#: internal/service/file.go:426 +#: internal/service/file.go:443 msgid "can't download a directory" msgstr "" -#: internal/data/website.go:572 +#: internal/biz/website.go:135 msgid "can't find %s database server, please add it first" msgstr "" -#: internal/service/toolbox_disk.go:553 +#: internal/service/toolbox_disk.go:554 msgid "cannot delete root mount point" msgstr "" -#: internal/service/toolbox_disk.go:225 +#: internal/service/toolbox_disk.go:226 msgid "cannot initialize system disk" msgstr "" -#: internal/data/database_server.go:110 -#: internal/data/database_server.go:90 +#: internal/biz/database_server.go:131 +#: internal/biz/database_server.go:151 msgid "check server connection failed" msgstr "" -#: internal/service/file.go:806 +#: internal/service/file.go:823 msgid "chunk hash mismatch" msgstr "" -#: internal/http/middleware/must_login.go:83 +#: internal/middleware/must_login.go:71 msgid "client ip changed, please login again" msgstr "" -#: internal/service/ws.go:195 +#: internal/service/ws.go:196 msgid "command is empty" msgstr "" -#: internal/data/template.go:95 +#: internal/biz/template.go:89 msgid "compose %s already exists" msgstr "" -#: internal/service/toolbox_migration.go:948 +#: internal/service/toolbox_migration.go:937 msgid "compressing directory: %s" msgstr "" -#: internal/data/backup.go:1199 +#: internal/data/backup.go:1195 msgid "could not find .sql backup file" msgstr "" -#: internal/service/file.go:305 -#: internal/service/file.go:729 +#: internal/service/file.go:317 +#: internal/service/file.go:746 msgid "create directory error: %v" msgstr "" -#: internal/service/file.go:849 +#: internal/service/file.go:866 msgid "create target file error: %v" msgstr "" -#: internal/service/toolbox_migration.go:539 +#: internal/service/toolbox_migration.go:528 msgid "creating database on remote server" msgstr "" -#: internal/service/toolbox_migration.go:672 +#: internal/service/toolbox_migration.go:661 msgid "creating database user on remote server" msgstr "" -#: internal/service/toolbox_migration.go:718 +#: internal/service/toolbox_migration.go:707 msgid "creating project on remote server" msgstr "" -#: internal/service/toolbox_migration.go:449 +#: internal/service/toolbox_migration.go:438 msgid "creating website on remote server" msgstr "" -#: internal/data/backup.go:551 -#: internal/data/backup.go:609 -#: internal/data/backup.go:670 -#: internal/data/backup.go:847 -#: internal/data/backup.go:883 -#: internal/data/backup.go:921 +#: internal/data/backup.go:547 +#: internal/data/backup.go:605 +#: internal/data/backup.go:666 +#: internal/data/backup.go:843 +#: internal/data/backup.go:879 +#: internal/data/backup.go:917 msgid "database does not exist: %s" msgstr "" -#: internal/service/toolbox_migration.go:533 +#: internal/service/toolbox_migration.go:522 msgid "database export failed: %v" msgstr "" -#: internal/service/toolbox_migration.go:606 +#: internal/service/toolbox_migration.go:595 msgid "database migration completed" msgstr "" -#: internal/service/toolbox_migration.go:687 +#: internal/service/toolbox_migration.go:676 msgid "database user migration completed" msgstr "" -#: internal/apps/grafana/app.go:229 +#: internal/apps/grafana/app.go:230 msgid "datasource %s already exists" msgstr "" -#: internal/apps/grafana/app.go:266 -#: internal/apps/grafana/app.go:314 +#: internal/apps/grafana/app.go:267 +#: internal/apps/grafana/app.go:315 msgid "datasource %s not found" msgstr "" -#: internal/data/cert.go:260 -#: internal/data/cert.go:394 +#: internal/service/website.go:181 +msgid "default site is only supported with nginx" +msgstr "" + +#: internal/biz/cert.go:233 +#: internal/biz/cert.go:349 msgid "deploying certificate to website" msgstr "" -#: internal/service/toolbox_disk.go:218 +#: internal/service/toolbox_disk.go:219 msgid "device not found: %s" msgstr "" -#: internal/apps/pureftpd/app.go:92 +#: internal/apps/pureftpd/app.go:94 msgid "directory %s does not exist" msgstr "" -#: internal/service/toolbox_system.go:130 +#: internal/service/toolbox_system.go:131 msgid "disk space is insufficient, current free %s" msgstr "" -#: internal/data/backup.go:1102 +#: internal/data/backup.go:1098 msgid "dump.rdb not found in backup file" msgstr "" -#: internal/data/task.go:68 +#: internal/data/task.go:69 msgid "duplicate submission, please wait for the previous task to end" msgstr "" -#: internal/apps/s3fs/app.go:68 +#: internal/service/tamper.go:68 +msgid "eBPF mode unavailable: %s" +msgstr "" + +#: internal/apps/s3fs/app.go:70 msgid "endpoint should not contain bucket" msgstr "" -#: internal/data/environment.go:169 +#: internal/biz/environment.go:118 msgid "environment %s-%s already installed" msgstr "" -#: internal/data/environment.go:176 -#: internal/data/environment.go:183 +#: internal/biz/environment.go:125 +#: internal/biz/environment.go:132 msgid "environment %s-%s not installed" msgstr "" -#: internal/service/user_token.go:54 -#: internal/service/user_token.go:89 +#: internal/service/user_token.go:55 +#: internal/service/user_token.go:90 msgid "expiration time must be greater than current time" msgstr "" -#: internal/service/user_token.go:58 -#: internal/service/user_token.go:93 +#: internal/service/user_token.go:59 +#: internal/service/user_token.go:94 msgid "expiration time must be less than 10 years" msgstr "" -#: internal/apps/prometheus/app.go:255 -#: internal/apps/prometheus/app.go:282 -#: internal/apps/prometheus/app.go:304 -#: internal/apps/prometheus/app.go:320 -#: internal/apps/prometheus/app.go:336 -#: internal/apps/prometheus/app.go:352 -#: internal/apps/prometheus/app.go:371 +#: internal/apps/prometheus/app.go:259 +#: internal/apps/prometheus/app.go:286 +#: internal/apps/prometheus/app.go:308 +#: internal/apps/prometheus/app.go:324 +#: internal/apps/prometheus/app.go:340 +#: internal/apps/prometheus/app.go:356 +#: internal/apps/prometheus/app.go:375 msgid "exporter %s does not exist" msgstr "" -#: internal/apps/prometheus/app.go:358 -#: internal/apps/prometheus/app.go:377 +#: internal/apps/prometheus/app.go:362 +#: internal/apps/prometheus/app.go:381 msgid "exporter %s has no configuration file" msgstr "" -#: internal/service/toolbox_migration.go:529 +#: internal/service/toolbox_migration.go:518 msgid "exporting database" msgstr "" -#: internal/service/toolbox_migration.go:962 +#: internal/service/toolbox_migration.go:951 msgid "extracting on remote server" msgstr "" -#: internal/service/toolbox_migration.go:1084 +#: internal/service/toolbox_migration.go:1073 msgid "failed" msgstr "" -#: internal/apps/postgresql/app.go:329 -#: internal/apps/postgresql/app.go:83 +#: internal/apps/postgresql/app.go:333 +#: internal/apps/postgresql/app.go:87 msgid "failed to apply PostgreSQL config: %v" msgstr "" -#: internal/data/ssh.go:59 -#: internal/data/ssh.go:92 +#: internal/data/ssh.go:104 +#: internal/data/ssh.go:74 msgid "failed to check ssh connection: %v" msgstr "" -#: internal/service/systemctl.go:153 +#: internal/service/systemctl.go:154 msgid "failed to clear log for %s service: %v" msgstr "" -#: internal/service/toolbox_migration.go:186 +#: internal/service/toolbox_migration.go:175 msgid "failed to connect remote server: %v" msgstr "" -#: internal/data/database_elasticsearch.go:115 +#: internal/data/ssh.go:140 +msgid "failed to connect to %s: %v" +msgstr "" + +#: internal/data/database_elasticsearch.go:116 msgid "failed to connect to Elasticsearch: %v" msgstr "" -#: internal/data/database_redis.go:127 +#: internal/data/database_redis.go:128 msgid "failed to connect to Redis: %v" msgstr "" -#: internal/service/toolbox_ssh.go:211 +#: internal/service/toolbox_ssh.go:212 msgid "failed to create .ssh directory: %v" msgstr "" -#: internal/service/toolbox_migration.go:682 +#: internal/service/toolbox_migration.go:671 msgid "failed to create database user on remote: %v" msgstr "" -#: internal/service/ws.go:319 +#: internal/service/ws.go:395 msgid "failed to create docker client: %v" msgstr "" -#: internal/service/toolbox_disk.go:354 +#: internal/service/toolbox_disk.go:355 msgid "failed to create logical volume: %v" msgstr "" -#: internal/apps/s3fs/app.go:75 +#: internal/apps/s3fs/app.go:77 msgid "failed to create mount path: %v" msgstr "" -#: internal/service/toolbox_disk.go:101 +#: internal/service/toolbox_disk.go:102 msgid "failed to create mount point: %v" msgstr "" -#: internal/service/toolbox_disk.go:240 +#: internal/service/toolbox_disk.go:241 msgid "failed to create partition: %v" msgstr "" -#: internal/apps/s3fs/app.go:98 +#: internal/apps/s3fs/app.go:100 msgid "failed to create passwd file: %v" msgstr "" -#: internal/service/toolbox_disk.go:309 +#: internal/service/toolbox_disk.go:310 msgid "failed to create physical volume: %v" msgstr "" -#: internal/data/project.go:112 +#: internal/data/project.go:90 msgid "failed to create project directory" msgstr "" -#: internal/service/toolbox_disk.go:331 +#: internal/service/toolbox_disk.go:332 msgid "failed to create volume group: %v" msgstr "" -#: internal/data/webhook.go:62 +#: internal/data/webhook.go:58 msgid "failed to create webhook directory: %v" msgstr "" -#: internal/service/toolbox_disk.go:558 +#: internal/service/toolbox_disk.go:559 msgid "failed to delete fstab entry: %v" msgstr "" @@ -2074,311 +2081,311 @@ msgstr "" msgid "failed to delete stream upstream config: %v" msgstr "" -#: internal/data/project.go:169 +#: internal/data/project.go:120 msgid "failed to delete systemd config" msgstr "" -#: internal/service/systemctl.go:77 +#: internal/service/systemctl.go:78 msgid "failed to disable %s service: %v" msgstr "" -#: internal/service/systemctl.go:62 +#: internal/service/systemctl.go:63 msgid "failed to enable %s service: %v" msgstr "" -#: internal/service/ws.go:333 +#: internal/service/ws.go:409 msgid "failed to encode auth: %v" msgstr "" -#: internal/data/backup.go:1054 +#: internal/data/backup.go:1050 msgid "failed to export RDB snapshot" msgstr "" -#: internal/service/toolbox_disk.go:425 +#: internal/service/toolbox_disk.go:426 msgid "failed to extend logical volume: %v" msgstr "" -#: internal/service/toolbox_disk.go:199 -#: internal/service/toolbox_disk.go:273 +#: internal/service/toolbox_disk.go:200 +#: internal/service/toolbox_disk.go:274 msgid "failed to format partition: %v" msgstr "" -#: internal/service/toolbox_ssh.go:221 +#: internal/service/toolbox_ssh.go:222 msgid "failed to generate SSH key: %v" msgstr "" -#: internal/data/setting.go:330 +#: internal/biz/setting.go:220 msgid "failed to generate self-signed certificate: %v" msgstr "" -#: internal/data/project.go:117 +#: internal/data/project.go:95 msgid "failed to generate systemd config" msgstr "" -#: internal/service/systemctl.go:47 +#: internal/service/systemctl.go:48 msgid "failed to get %s service enable status: %v" msgstr "" -#: internal/service/systemctl.go:31 +#: internal/service/systemctl.go:32 msgid "failed to get %s service running status: %v" msgstr "" -#: internal/apps/clickhouse/app.go:204 +#: internal/apps/clickhouse/app.go:205 msgid "failed to get ClickHouse default password: %v" msgstr "" -#: internal/data/cert_account.go:220 +#: internal/data/cert_account.go:88 msgid "failed to get Google EAB: %s" msgstr "" -#: internal/data/cert_account.go:216 +#: internal/data/cert_account.go:84 msgid "failed to get Google EAB: %v" msgstr "" -#: internal/apps/memcached/app.go:45 +#: internal/apps/memcached/app.go:46 msgid "failed to get Memcached status: %v" msgstr "" -#: internal/apps/mongodb/app.go:199 +#: internal/apps/mongodb/app.go:200 msgid "failed to get MongoDB admin password: %v" msgstr "" -#: internal/apps/mysql/app.go:107 +#: internal/apps/mysql/app.go:108 msgid "failed to get MySQL status: %v" msgstr "" -#: internal/service/toolbox_system.go:259 +#: internal/service/toolbox_system.go:260 msgid "failed to get NTP configuration: %v" msgstr "" -#: internal/apps/postgresql/app.go:151 +#: internal/apps/postgresql/app.go:155 msgid "failed to get PostgreSQL backend pid: %v" msgstr "" -#: internal/apps/postgresql/app.go:161 +#: internal/apps/postgresql/app.go:165 msgid "failed to get PostgreSQL connections: %v" msgstr "" -#: internal/apps/postgresql/app.go:166 +#: internal/apps/postgresql/app.go:170 msgid "failed to get PostgreSQL database size: %v" msgstr "" -#: internal/apps/postgresql/app.go:156 +#: internal/apps/postgresql/app.go:160 msgid "failed to get PostgreSQL process: %v" msgstr "" -#: internal/apps/postgresql/app.go:146 +#: internal/apps/postgresql/app.go:150 msgid "failed to get PostgreSQL start time: %v" msgstr "" -#: internal/service/toolbox_disk.go:643 +#: internal/service/toolbox_disk.go:644 msgid "failed to get SMART info for device %s" msgstr "" -#: internal/service/toolbox_system.go:80 +#: internal/service/toolbox_system.go:81 msgid "failed to get SWAP: %v" msgstr "" -#: internal/data/cert_account.go:246 +#: internal/data/cert_account.go:114 msgid "failed to get ZeroSSL EAB" msgstr "" -#: internal/data/cert_account.go:242 +#: internal/data/cert_account.go:110 msgid "failed to get ZeroSSL EAB: %v" msgstr "" -#: internal/apps/apache/app.go:109 -#: internal/apps/apache/app.go:99 +#: internal/apps/apache/app.go:100 +#: internal/apps/apache/app.go:110 msgid "failed to get apache workers: %v" msgstr "" -#: internal/service/toolbox_system.go:182 +#: internal/service/toolbox_system.go:183 msgid "failed to get available timezones: %v" msgstr "" -#: internal/apps/fail2ban/app.go:276 +#: internal/apps/fail2ban/app.go:277 msgid "failed to get banned ip list" msgstr "" -#: internal/apps/fail2ban/app.go:266 +#: internal/apps/fail2ban/app.go:267 msgid "failed to get current banned list" msgstr "" -#: internal/service/toolbox_migration.go:213 +#: internal/service/toolbox_migration.go:202 msgid "failed to get database list: %v" msgstr "" -#: internal/service/toolbox_migration.go:511 -#: internal/service/toolbox_migration.go:632 +#: internal/service/toolbox_migration.go:500 +#: internal/service/toolbox_migration.go:621 msgid "failed to get database server: %v" msgstr "" -#: internal/service/toolbox_migration.go:547 +#: internal/service/toolbox_migration.go:536 msgid "failed to get database servers: %v" msgstr "" -#: internal/service/toolbox_migration.go:625 +#: internal/service/toolbox_migration.go:614 msgid "failed to get database user detail: %v" msgstr "" -#: internal/service/toolbox_migration.go:227 +#: internal/service/toolbox_migration.go:216 msgid "failed to get database user list: %v" msgstr "" -#: internal/service/toolbox_disk.go:33 +#: internal/service/toolbox_disk.go:34 msgid "failed to get disk list: %v" msgstr "" -#: internal/service/toolbox_system.go:126 +#: internal/service/toolbox_system.go:127 msgid "failed to get disk space: %v" msgstr "" -#: internal/apps/elasticsearch/app.go:48 +#: internal/apps/elasticsearch/app.go:49 msgid "failed to get elasticsearch status: %v" msgstr "" -#: internal/service/file.go:470 +#: internal/service/file.go:487 msgid "failed to get file system info" msgstr "" -#: internal/service/toolbox_disk.go:127 +#: internal/service/toolbox_disk.go:128 msgid "failed to get filesystem type: %v" msgstr "" -#: internal/apps/grafana/app.go:52 +#: internal/apps/grafana/app.go:53 msgid "failed to get grafana status: %v" msgstr "" -#: internal/service/home.go:86 +#: internal/service/home.go:87 msgid "failed to get home apps: %v" msgstr "" -#: internal/data/website.go:467 +#: internal/data/website.go:450 msgid "failed to get index template file: %v" msgstr "" -#: internal/apps/kafka/app.go:43 +#: internal/apps/kafka/app.go:44 msgid "failed to get kafka status: %v" msgstr "" -#: internal/apps/supervisor/app.go:217 -#: internal/apps/supervisor/app.go:343 -#: internal/apps/supervisor/app.go:353 +#: internal/apps/supervisor/app.go:219 +#: internal/apps/supervisor/app.go:345 +#: internal/apps/supervisor/app.go:355 msgid "failed to get log path for process %s: %v" msgstr "" -#: internal/apps/nginx/app.go:116 -#: internal/apps/nginx/app.go:126 +#: internal/apps/nginx/app.go:118 +#: internal/apps/nginx/app.go:128 msgid "failed to get nginx workers: %v" msgstr "" -#: internal/apps/opensearch/app.go:48 +#: internal/apps/opensearch/app.go:50 msgid "failed to get opensearch status: %v" msgstr "" -#: internal/service/toolbox_disk.go:115 +#: internal/service/toolbox_disk.go:116 msgid "failed to get partition UUID: %v" msgstr "" -#: internal/service/toolbox_disk.go:85 +#: internal/service/toolbox_disk.go:86 msgid "failed to get partitions: %v" msgstr "" -#: internal/apps/pureftpd/app.go:152 +#: internal/apps/pureftpd/app.go:154 msgid "failed to get port: %v" msgstr "" -#: internal/apps/postgresql/app.go:196 +#: internal/apps/postgresql/app.go:200 msgid "failed to get postgres password: %v" msgstr "" -#: internal/data/cert_account.go:113 +#: internal/biz/cert_account.go:132 msgid "failed to get private key" msgstr "" -#: internal/data/cert_account.go:175 +#: internal/biz/cert_account.go:194 msgid "failed to get private key: %v" msgstr "" -#: internal/service/toolbox_migration.go:713 +#: internal/service/toolbox_migration.go:702 msgid "failed to get project detail: %v" msgstr "" -#: internal/service/toolbox_migration.go:220 +#: internal/service/toolbox_migration.go:209 msgid "failed to get project list: %v" msgstr "" -#: internal/apps/prometheus/app.go:65 +#: internal/apps/prometheus/app.go:69 msgid "failed to get prometheus status: %v" msgstr "" -#: internal/apps/redis/app.go:73 +#: internal/apps/redis/app.go:76 msgid "failed to get redis info: %v" msgstr "" -#: internal/apps/redis/app.go:50 +#: internal/apps/redis/app.go:53 msgid "failed to get redis status: %v" msgstr "" -#: internal/service/toolbox_migration.go:642 +#: internal/service/toolbox_migration.go:631 msgid "failed to get remote database servers: %v" msgstr "" -#: internal/apps/s3fs/app.go:131 -#: internal/apps/s3fs/app.go:46 -#: internal/apps/s3fs/app.go:86 +#: internal/apps/s3fs/app.go:133 +#: internal/apps/s3fs/app.go:48 +#: internal/apps/s3fs/app.go:88 msgid "failed to get s3fs list: %v" msgstr "" -#: internal/service/home.go:106 +#: internal/service/home.go:107 msgid "failed to get system info: %v" msgstr "" -#: internal/service/home.go:384 -#: internal/service/ws.go:420 +#: internal/service/home.go:385 +#: internal/service/ws.go:496 msgid "failed to get the latest version download link" msgstr "" -#: internal/service/home.go:300 -#: internal/service/home.go:336 -#: internal/service/home.go:378 -#: internal/service/ws.go:415 +#: internal/service/home.go:301 +#: internal/service/home.go:337 +#: internal/service/home.go:379 +#: internal/service/ws.go:491 msgid "failed to get the latest version: %v" msgstr "" -#: internal/apps/rsync/app.go:88 +#: internal/apps/rsync/app.go:90 msgid "failed to get the secret key for module %s" msgstr "" -#: internal/service/home.go:357 +#: internal/service/home.go:358 msgid "failed to get the update information: %v" msgstr "" -#: internal/service/toolbox_system.go:171 +#: internal/service/toolbox_system.go:172 msgid "failed to get timezone: %v" msgstr "" -#: internal/apps/fail2ban/app.go:271 +#: internal/apps/fail2ban/app.go:272 msgid "failed to get total banned list" msgstr "" -#: internal/data/app.go:265 +#: internal/data/app.go:164 msgid "failed to get uninstall script for app %s" msgstr "" -#: internal/apps/valkey/app.go:73 +#: internal/apps/valkey/app.go:76 msgid "failed to get valkey info: %v" msgstr "" -#: internal/apps/valkey/app.go:50 +#: internal/apps/valkey/app.go:53 msgid "failed to get valkey status: %v" msgstr "" -#: internal/service/toolbox_migration.go:444 +#: internal/service/toolbox_migration.go:433 msgid "failed to get website detail: %v" msgstr "" -#: internal/service/toolbox_migration.go:206 +#: internal/service/toolbox_migration.go:195 msgid "failed to get website list: %v" msgstr "" @@ -2390,276 +2397,326 @@ msgstr "" msgid "failed to list stream upstreams: %v" msgstr "" -#: internal/apps/mysql/app.go:209 -#: internal/apps/mysql/app.go:97 +#: internal/apps/mysql/app.go:210 +#: internal/apps/mysql/app.go:98 msgid "failed to load MySQL root password: %v" msgstr "" -#: internal/apps/postgresql/app.go:133 +#: internal/apps/postgresql/app.go:137 msgid "failed to load PostgreSQL postgres password: %v" msgstr "" -#: internal/service/toolbox_disk.go:106 +#: internal/apps/pgadmin/app.go:373 +msgid "failed to login pgAdmin, please check the credential of pgAdmin" +msgstr "" + +#: internal/apps/phpmyadmin/app.go:218 +msgid "failed to login phpMyAdmin, please check the credentials and status of server %s" +msgstr "" + +#: internal/service/toolbox_disk.go:107 msgid "failed to mount partition: %v" msgstr "" -#: internal/service/toolbox_disk.go:650 +#: internal/data/ssh.go:145 +msgid "failed to open sftp session on %s: %v" +msgstr "" + +#: internal/service/toolbox_disk.go:651 msgid "failed to parse SMART info: %v" msgstr "" -#: internal/data/cert.go:103 -#: internal/data/setting.go:348 -#: internal/data/setting.go:422 -#: internal/data/website.go:642 -#: internal/data/website.go:983 +#: internal/biz/cert.go:96 +#: internal/biz/setting.go:238 +#: internal/biz/setting.go:312 +#: internal/data/website.go:612 +#: internal/data/website.go:936 msgid "failed to parse certificate: %v" msgstr "" -#: internal/service/toolbox_disk.go:42 +#: internal/service/toolbox_disk.go:43 msgid "failed to parse disk list: %v" msgstr "" -#: internal/data/cert.go:106 -#: internal/data/setting.go:351 -#: internal/data/setting.go:425 -#: internal/data/website.go:645 -#: internal/data/website.go:986 +#: internal/apps/pgadmin/app.go:341 +msgid "failed to parse pgAdmin login page" +msgstr "" + +#: internal/apps/phpmyadmin/app.go:174 +msgid "failed to parse phpMyAdmin login page" +msgstr "" + +#: internal/biz/cert.go:99 +#: internal/biz/setting.go:241 +#: internal/biz/setting.go:315 +#: internal/data/website.go:615 +#: internal/data/website.go:939 msgid "failed to parse private key: %v" msgstr "" -#: internal/service/toolbox_disk.go:602 +#: internal/service/toolbox_disk.go:603 msgid "failed to parse smartctl output: %v" msgstr "" -#: internal/data/project.go:209 +#: internal/data/project.go:156 msgid "failed to parse systemd config" msgstr "" -#: internal/apps/fail2ban/app.go:332 -#: internal/apps/fail2ban/app.go:360 +#: internal/apps/fail2ban/app.go:333 +#: internal/apps/fail2ban/app.go:361 msgid "failed to parse the ignoreip of fail2ban" msgstr "" -#: internal/service/home.go:306 -#: internal/service/home.go:311 -#: internal/service/home.go:342 -#: internal/service/home.go:347 +#: internal/service/home.go:307 +#: internal/service/home.go:312 +#: internal/service/home.go:343 +#: internal/service/home.go:348 msgid "failed to parse version: %v" msgstr "" -#: internal/service/ws.go:342 +#: internal/service/firewall.go:191 +msgid "failed to parse xlsx: %v" +msgstr "" + +#: internal/service/ws.go:418 msgid "failed to pull image: %v" msgstr "" -#: internal/service/ws.go:90 +#: internal/service/ws.go:91 msgid "failed to read command output: %v" msgstr "" -#: internal/service/ws.go:190 -#: internal/service/ws.go:73 +#: internal/service/ws.go:191 +#: internal/service/ws.go:74 msgid "failed to read command: %v" msgstr "" -#: internal/apps/memcached/app.go:85 +#: internal/apps/memcached/app.go:86 msgid "failed to read from Memcached: %v" msgstr "" -#: internal/service/toolbox_disk.go:509 +#: internal/service/toolbox_disk.go:510 msgid "failed to read fstab: %v" msgstr "" -#: internal/service/toolbox_ssh.go:242 +#: internal/service/toolbox_ssh.go:243 msgid "failed to read generated key: %v" msgstr "" -#: internal/service/ws.go:307 -#: internal/service/ws.go:472 +#: internal/service/ws.go:277 +#: internal/service/ws.go:383 +#: internal/service/ws.go:548 msgid "failed to read params: %v" msgstr "" -#: internal/service/toolbox_ssh.go:41 +#: internal/service/toolbox_ssh.go:42 msgid "failed to read sshd_config: %v" msgstr "" -#: internal/data/cert_account.go:108 -#: internal/data/cert_account.go:170 +#: internal/biz/cert_account.go:127 +#: internal/biz/cert_account.go:189 msgid "failed to register account: %v" msgstr "" -#: internal/service/systemctl.go:107 +#: internal/service/systemctl.go:108 msgid "failed to reload %s service: %v" msgstr "" -#: internal/apps/postgresql/app.go:116 +#: internal/apps/postgresql/app.go:120 msgid "failed to reload PostgreSQL: %v" msgstr "" -#: internal/apps/apache/app.go:68 +#: internal/apps/apache/app.go:69 msgid "failed to reload apache: %v" msgstr "" -#: internal/apps/nginx/app.go:271 -#: internal/apps/nginx/app.go:82 +#: internal/apps/nginx/app.go:273 +#: internal/apps/nginx/app.go:84 #: internal/apps/nginx/stream.go:125 #: internal/apps/nginx/stream.go:163 #: internal/apps/nginx/stream.go:209 #: internal/apps/nginx/stream.go:236 #: internal/apps/nginx/stream.go:52 #: internal/apps/nginx/stream.go:98 -#: internal/apps/phpmyadmin/app.go:113 -#: internal/apps/phpmyadmin/app.go:144 +#: internal/apps/phpmyadmin/app.go:268 +#: internal/apps/phpmyadmin/app.go:299 +#: internal/service/website.go:256 msgid "failed to reload nginx: %v" msgstr "" -#: internal/service/toolbox_disk.go:563 +#: internal/service/toolbox_disk.go:564 msgid "failed to remount filesystems: %v" msgstr "" -#: internal/service/toolbox_disk.go:402 +#: internal/service/toolbox_disk.go:403 msgid "failed to remove logical volume: %v" msgstr "" -#: internal/service/toolbox_disk.go:370 +#: internal/service/toolbox_disk.go:371 msgid "failed to remove physical volume: %v" msgstr "" -#: internal/service/toolbox_disk.go:386 +#: internal/service/toolbox_disk.go:387 msgid "failed to remove volume group: %v" msgstr "" -#: internal/data/project.go:143 +#: internal/data/project.go:111 msgid "failed to rename systemd config" msgstr "" -#: internal/service/toolbox_disk.go:438 -#: internal/service/toolbox_disk.go:447 -#: internal/service/toolbox_disk.go:462 +#: internal/apps/pgadmin/app.go:325 +#: internal/apps/pgadmin/app.go:331 +#: internal/apps/pgadmin/app.go:364 +msgid "failed to request pgAdmin: %v" +msgstr "" + +#: internal/apps/phpmyadmin/app.go:161 +#: internal/apps/phpmyadmin/app.go:167 +#: internal/apps/phpmyadmin/app.go:210 +msgid "failed to request phpMyAdmin: %v" +msgstr "" + +#: internal/apps/pgadmin/app.go:405 +msgid "failed to reset password: %v" +msgstr "" + +#: internal/service/toolbox_disk.go:439 +#: internal/service/toolbox_disk.go:448 +#: internal/service/toolbox_disk.go:463 msgid "failed to resize filesystem: %v" msgstr "" -#: internal/service/systemctl.go:92 +#: internal/service/systemctl.go:93 msgid "failed to restart %s service: %v" msgstr "" -#: internal/apps/supervisor/app.go:102 +#: internal/apps/supervisor/app.go:104 msgid "failed to restart %s: %v" msgstr "" -#: internal/apps/mysql/app.go:80 +#: internal/apps/mysql/app.go:81 msgid "failed to restart MySQL: %v" msgstr "" -#: internal/service/ws.go:79 +#: internal/apps/pgadmin/app.go:152 +msgid "failed to restart pgAdmin: %v" +msgstr "" + +#: internal/service/ws.go:80 msgid "failed to run command: %v" msgstr "" -#: internal/apps/clickhouse/app.go:254 +#: internal/apps/clickhouse/app.go:255 msgid "failed to save ClickHouse default password: %v" msgstr "" -#: internal/apps/mongodb/app.go:232 +#: internal/apps/mongodb/app.go:233 msgid "failed to save MongoDB admin password: %v" msgstr "" -#: internal/data/database_redis.go:133 +#: internal/data/database_redis.go:134 msgid "failed to select database: %v" msgstr "" -#: internal/apps/mysql/app.go:102 +#: internal/apps/mysql/app.go:103 msgid "failed to set MYSQL_PWD env: %v" msgstr "" -#: internal/apps/mongodb/app.go:226 +#: internal/apps/mongodb/app.go:227 msgid "failed to set MongoDB admin password: %v" msgstr "" -#: internal/service/toolbox_system.go:280 +#: internal/service/toolbox_system.go:281 msgid "failed to set NTP servers: %v" msgstr "" -#: internal/apps/postgresql/app.go:138 +#: internal/apps/postgresql/app.go:142 msgid "failed to set PGPASSWORD env: %v" msgstr "" -#: internal/service/toolbox_system.go:150 +#: internal/service/toolbox_system.go:151 msgid "failed to set SWAP permission: %v" msgstr "" -#: internal/service/toolbox_system.go:307 +#: internal/service/toolbox_system.go:308 msgid "failed to set hostname: %v" msgstr "" -#: internal/service/toolbox_system.go:330 +#: internal/service/toolbox_system.go:331 msgid "failed to set hosts: %v" msgstr "" -#: internal/apps/postgresql/app.go:217 -#: internal/apps/postgresql/app.go:223 -#: internal/apps/postgresql/app.go:229 +#: internal/apps/postgresql/app.go:221 +#: internal/apps/postgresql/app.go:227 +#: internal/apps/postgresql/app.go:233 msgid "failed to set postgres password: %v" msgstr "" -#: internal/service/systemctl.go:122 +#: internal/service/systemctl.go:123 msgid "failed to start %s service: %v" msgstr "" -#: internal/service/ws.go:281 +#: internal/service/ws.go:357 msgid "failed to start container terminal: %v" msgstr "" -#: internal/service/systemctl.go:137 +#: internal/service/systemctl.go:138 msgid "failed to stop %s service: %v" msgstr "" -#: internal/service/toolbox_disk.go:168 +#: internal/apps/pgadmin/app.go:298 +msgid "failed to sync servers to pgAdmin: %v" +msgstr "" + +#: internal/service/toolbox_disk.go:169 msgid "failed to umount partition: %v" msgstr "" -#: internal/apps/s3fs/app.go:145 +#: internal/apps/s3fs/app.go:147 msgid "failed to unmount: %v" msgstr "" -#: internal/apps/mysql/app.go:111 +#: internal/apps/mysql/app.go:112 msgid "failed to unset MYSQL_PWD env: %v" msgstr "" -#: internal/service/toolbox_system.go:59 +#: internal/service/toolbox_system.go:60 msgid "failed to update DNS: %v" msgstr "" -#: internal/service/toolbox_ssh.go:91 +#: internal/service/toolbox_ssh.go:92 msgid "failed to update SSH port: %v" msgstr "" -#: internal/service/toolbox_ssh.go:259 +#: internal/service/toolbox_ssh.go:260 msgid "failed to update authorized_keys: %v" msgstr "" -#: internal/service/toolbox_ssh.go:117 +#: internal/service/toolbox_ssh.go:118 msgid "failed to update password authentication: %v" msgstr "" -#: internal/service/toolbox_ssh.go:143 +#: internal/service/toolbox_ssh.go:144 msgid "failed to update pubkey authentication: %v" msgstr "" -#: internal/service/toolbox_ssh.go:164 +#: internal/service/toolbox_ssh.go:165 msgid "failed to update root login setting: %v" msgstr "" -#: internal/service/toolbox_ssh.go:186 +#: internal/service/toolbox_ssh.go:187 msgid "failed to update root password: %v" msgstr "" -#: internal/service/toolbox_disk.go:234 +#: internal/service/toolbox_disk.go:235 msgid "failed to wipe disk: %v" msgstr "" -#: internal/apps/clickhouse/app.go:242 +#: internal/apps/clickhouse/app.go:243 msgid "failed to write ClickHouse user config: %v" msgstr "" -#: internal/service/toolbox_disk.go:151 +#: internal/service/toolbox_disk.go:152 msgid "failed to write fstab: %v" msgstr "" @@ -2673,158 +2730,163 @@ msgstr "" msgid "failed to write stream upstream config: %v" msgstr "" -#: internal/apps/memcached/app.go:64 +#: internal/apps/memcached/app.go:65 msgid "failed to write to Memcached: %v" msgstr "" -#: internal/data/webhook.go:68 -#: internal/data/webhook.go:99 +#: internal/data/webhook.go:63 +#: internal/data/webhook.go:77 msgid "failed to write webhook script: %v" msgstr "" -#: internal/service/file.go:91 +#: internal/service/file.go:94 msgid "file is too large, please download it to view" msgstr "" -#: internal/service/environment_php.go:499 +#: internal/service/environment_php.go:500 msgid "gRPC is a high-performance, open-source, and general-purpose RPC framework" msgstr "" -#: internal/apps/fail2ban/app.go:192 +#: internal/apps/fail2ban/app.go:193 msgid "get service port failed, please check if it is installed" msgstr "" -#: internal/service/file.go:783 +#: internal/service/file.go:800 msgid "get upload file error: %v" msgstr "" -#: internal/service/toolbox_migration.go:591 +#: internal/service/toolbox_migration.go:580 msgid "importing database on remote server" msgstr "" -#: internal/data/cert.go:208 +#: internal/biz/cert.go:181 msgid "initializing ACME client" msgstr "" -#: internal/data/user.go:216 -#: internal/data/user.go:235 -#: internal/service/user.go:143 +#: internal/data/user.go:198 +#: internal/data/user.go:217 +#: internal/service/user.go:144 msgid "invalid 2FA code" msgstr "" -#: internal/service/user.go:120 +#: internal/service/user.go:121 msgid "invalid captcha code" msgstr "" -#: internal/data/user_token.go:104 +#: internal/service/firewall.go:212 +msgid "invalid file: missing port_start column" +msgstr "" + +#: internal/data/user_token.go:105 msgid "invalid header: %v" msgstr "" -#: internal/service/user.go:128 +#: internal/service/user.go:129 msgid "invalid key, please refresh the page" msgstr "" -#: internal/service/toolbox_disk.go:348 +#: internal/service/toolbox_disk.go:349 msgid "invalid logical volume size" msgstr "" -#: internal/service/ws.go:312 -#: internal/service/ws.go:479 +#: internal/service/ws.go:282 +#: internal/service/ws.go:388 +#: internal/service/ws.go:555 msgid "invalid params: %v" msgstr "" -#: internal/data/user_token.go:176 +#: internal/data/user_token.go:177 msgid "invalid request ip: %s" msgstr "" -#: internal/service/toolbox_migration.go:561 +#: internal/service/toolbox_migration.go:550 msgid "invalid response when getting database servers: %v" msgstr "" -#: internal/service/toolbox_migration.go:655 +#: internal/service/toolbox_migration.go:644 msgid "invalid response: %v" msgstr "" -#: internal/service/user_passkey.go:146 -#: internal/service/user_passkey.go:245 +#: internal/service/user_passkey.go:147 +#: internal/service/user_passkey.go:246 msgid "invalid session, please try again" msgstr "" -#: internal/data/user_token.go:107 -#: internal/data/user_token.go:113 -#: internal/data/user_token.go:136 +#: internal/data/user_token.go:108 +#: internal/data/user_token.go:114 +#: internal/data/user_token.go:137 msgid "invalid signature" msgstr "" -#: internal/service/toolbox_disk.go:419 +#: internal/service/toolbox_disk.go:420 msgid "invalid size" msgstr "" -#: internal/service/home.go:437 +#: internal/service/home.go:438 msgid "invalid type" msgstr "" -#: internal/http/middleware/must_login.go:107 +#: internal/middleware/must_login.go:95 msgid "invalid user id, please login again" msgstr "" -#: internal/service/environment_php.go:549 +#: internal/service/environment_php.go:550 msgid "ionCube is a professional-grade PHP encryption and decryption tool (must be installed after OPcache)" msgstr "" -#: internal/data/cert.go:242 +#: internal/biz/cert.go:215 msgid "issuing certificate, domains: %s" msgstr "" -#: internal/service/log.go:106 +#: internal/service/log.go:107 msgid "journalctl is not available" msgstr "" -#: internal/data/backup.go:298 +#: internal/data/backup.go:300 msgid "log file %s not exists" msgstr "" -#: internal/data/website.go:1138 +#: internal/data/website.go:1040 msgid "maximum number of custom configurations reached (limit: %d)" msgstr "" -#: internal/service/toolbox_migration.go:178 -#: internal/service/toolbox_migration.go:256 +#: internal/service/toolbox_migration.go:167 +#: internal/service/toolbox_migration.go:245 msgid "migration is already running" msgstr "" -#: internal/service/toolbox_migration.go:284 +#: internal/service/toolbox_migration.go:273 msgid "migration is running, cannot reset" msgstr "" -#: internal/apps/rsync/app.go:123 +#: internal/apps/rsync/app.go:125 msgid "module %s already exists" msgstr "" -#: internal/apps/rsync/app.go:168 -#: internal/apps/rsync/app.go:210 -#: internal/service/environment_php.go:298 -#: internal/service/environment_php.go:332 +#: internal/apps/rsync/app.go:170 +#: internal/apps/rsync/app.go:212 +#: internal/service/environment_php.go:299 +#: internal/service/environment_php.go:333 msgid "module %s does not exist" msgstr "" -#: internal/apps/s3fs/app.go:114 +#: internal/apps/s3fs/app.go:116 msgid "mount failed: %v" msgstr "" -#: internal/apps/s3fs/app.go:137 +#: internal/apps/s3fs/app.go:139 msgid "mount not found" msgstr "" -#: internal/apps/s3fs/app.go:91 +#: internal/apps/s3fs/app.go:93 msgid "mount path already exists" msgstr "" -#: internal/apps/s3fs/app.go:80 +#: internal/apps/s3fs/app.go:82 msgid "mount path is not empty" msgstr "" -#: internal/service/toolbox_disk.go:144 +#: internal/service/toolbox_disk.go:145 msgid "mount point %s already exists in fstab" msgstr "" @@ -2835,266 +2897,295 @@ msgstr "" msgid "name is required" msgstr "" -#: internal/service/toolbox_disk.go:684 +#: internal/service/website.go:252 +msgid "nginx config test failed: %v" +msgstr "" + +#: internal/service/toolbox_disk.go:685 msgid "no RAID configuration detected" msgstr "" -#: internal/service/log.go:137 +#: internal/service/log.go:138 msgid "no SSH log entries found" msgstr "" -#: internal/service/toolbox_migration.go:573 -#: internal/service/toolbox_migration.go:667 +#: internal/service/toolbox_migration.go:562 +#: internal/service/toolbox_migration.go:656 msgid "no matching database server found on remote" msgstr "" -#: internal/service/toolbox_migration.go:321 +#: internal/service/toolbox_migration.go:310 msgid "no migration logs available" msgstr "" -#: internal/data/cert.go:250 -#: internal/data/cert.go:384 +#: internal/service/firewall.go:202 +msgid "no rules found in file" +msgstr "" + +#: internal/biz/cert.go:223 +#: internal/biz/cert.go:339 msgid "obtaining and saving certificate" msgstr "" -#: internal/service/file.go:313 +#: internal/service/file.go:325 msgid "open file error: %v" msgstr "" -#: internal/service/file.go:789 +#: internal/service/file.go:806 msgid "open upload file error: %v" msgstr "" -#: internal/data/backup.go:1507 +#: internal/data/backup.go:1514 msgid "panel binary is missing after update" msgstr "" -#: internal/data/backup.go:1371 +#: internal/data/backup.go:1378 msgid "panel is already updating, please try again later" msgstr "" -#: internal/http/middleware/status.go:23 +#: internal/middleware/status.go:23 msgid "panel is closed" msgstr "" -#: internal/http/middleware/status.go:20 +#: internal/middleware/status.go:20 msgid "panel is maintaining, please refresh later" msgstr "" -#: internal/http/middleware/status.go:17 +#: internal/middleware/status.go:17 msgid "panel is upgrading, please refresh later" msgstr "" -#: internal/http/middleware/status.go:26 +#: internal/middleware/status.go:26 msgid "panel run error, please check or contact support" msgstr "" -#: internal/data/backup.go:1503 +#: internal/data/backup.go:1510 msgid "panel service file is missing" msgstr "" -#: internal/service/toolbox_disk.go:120 +#: internal/service/toolbox_disk.go:121 msgid "partition has no UUID" msgstr "" -#: internal/service/user_passkey.go:275 +#: internal/service/user_passkey.go:276 msgid "passkey login failed: %v" msgstr "" -#: internal/service/user_passkey.go:172 +#: internal/service/user_passkey.go:173 msgid "passkey registration failed: %v" msgstr "" -#: internal/data/backup.go:771 +#: internal/data/backup.go:767 msgid "path does not exist: %s" msgstr "" -#: internal/data/backup.go:774 +#: internal/data/backup.go:770 msgid "path is not a directory: %s" msgstr "" -#: internal/service/file.go:776 +#: internal/service/file.go:793 msgid "path, file_name and file_hash are required" msgstr "" -#: internal/service/file.go:133 -#: internal/service/ws.go:106 +#: internal/service/file.go:136 +#: internal/service/ws.go:107 msgid "path, service or container is required" msgstr "" -#: internal/service/environment_php.go:404 +#: internal/service/environment_php.go:405 msgid "pdo_pgsql is a PDO driver for connecting to PostgreSQL (requires PostgreSQL installed)" msgstr "" -#: internal/service/environment_php.go:414 +#: internal/service/environment_php.go:415 msgid "pdo_sqlsrv is a PDO driver for connecting to SQL Server" msgstr "" -#: internal/service/environment_php.go:399 +#: internal/apps/pgadmin/app.go:293 +#: internal/apps/pgadmin/app.go:399 +msgid "pgAdmin credential file not found" +msgstr "" + +#: internal/apps/pgadmin/app.go:84 +msgid "pgAdmin port not found" +msgstr "" + +#: internal/service/environment_php.go:400 msgid "pgsql is a driver for connecting to PostgreSQL (requires PostgreSQL installed)" msgstr "" -#: internal/apps/phpmyadmin/app.go:48 -#: internal/apps/phpmyadmin/app.go:59 +#: internal/apps/phpmyadmin/app.go:62 +#: internal/apps/phpmyadmin/app.go:72 msgid "phpMyAdmin directory not found" msgstr "" -#: internal/apps/phpmyadmin/app.go:70 +#: internal/apps/phpmyadmin/app.go:81 msgid "phpMyAdmin port not found" msgstr "" -#: internal/service/toolbox_migration.go:261 +#: internal/service/toolbox_migration.go:250 msgid "please complete pre-check first" msgstr "" -#: internal/data/user.go:134 -#: internal/service/file.go:268 -#: internal/service/file.go:366 -#: internal/service/file.go:400 +#: internal/biz/user.go:116 +#: internal/service/file.go:276 +#: internal/service/file.go:378 +#: internal/service/file.go:417 msgid "please don't do this" msgstr "" -#: internal/service/setting.go:104 +#: internal/service/setting.go:105 msgid "please set public ips first" msgstr "" -#: internal/data/setting.go:369 +#: internal/biz/setting.go:259 msgid "port is already in use" msgstr "" -#: internal/data/cert.go:333 +#: internal/biz/cert.go:288 msgid "preparing renewal" msgstr "" -#: internal/apps/supervisor/app.go:309 +#: internal/apps/supervisor/app.go:311 msgid "process %s already exists" msgstr "" -#: internal/service/toolbox_migration.go:755 +#: internal/service/toolbox_migration.go:744 msgid "project migration completed" msgstr "" -#: internal/data/project.go:95 +#: internal/biz/project.go:97 msgid "project name already exists" msgstr "" -#: internal/service/environment_php.go:504 +#: internal/service/environment_php.go:505 msgid "protobuf is a library for serializing and deserializing data" msgstr "" -#: internal/service/environment_php.go:509 +#: internal/service/environment_php.go:510 msgid "rdkafka is a library for connecting to Apache Kafka" msgstr "" -#: internal/service/file.go:866 +#: internal/service/file.go:883 msgid "read chunk %d error: %v" msgstr "" -#: internal/service/file.go:797 +#: internal/service/file.go:814 msgid "read chunk data error: %v" msgstr "" -#: internal/service/file.go:738 +#: internal/service/file.go:755 msgid "read directory error: %v" msgstr "" -#: internal/service/toolbox_migration.go:601 +#: internal/service/toolbox_migration.go:590 msgid "remote import failed: %v" msgstr "" -#: internal/data/cert.go:377 +#: internal/biz/cert.go:332 msgid "renewal failed, attempting re-issuance" msgstr "" -#: internal/data/cert.go:371 +#: internal/biz/cert.go:326 msgid "renewing certificate, domains: %s" msgstr "" -#: internal/apps/fail2ban/app.go:117 +#: internal/apps/fail2ban/app.go:118 msgid "rule already exists" msgstr "" -#: internal/apps/fail2ban/app.go:236 +#: internal/apps/fail2ban/app.go:237 msgid "rule not found" msgstr "" -#: internal/service/cli.go:87 +#: internal/service/cli.go:88 msgid "running" msgstr "" -#: internal/data/website.go:620 +#: internal/data/website.go:590 msgid "runtime directory does not exist" msgstr "" -#: internal/service/backup_storage.go:137 +#: internal/service/backup_storage.go:138 msgid "s3 configuration error: %v" msgstr "" -#: internal/service/file.go:816 +#: internal/service/file.go:833 msgid "save chunk error: %v" msgstr "" -#: internal/service/toolbox_migration.go:584 +#: internal/service/toolbox_migration.go:573 msgid "sending backup to remote server" msgstr "" -#: internal/data/database_elasticsearch.go:110 +#: internal/apps/phpmyadmin/app.go:130 +msgid "server %s is not a MySQL server" +msgstr "" + +#: internal/data/database_elasticsearch.go:111 msgid "server is not Elasticsearch type" msgstr "" -#: internal/data/database_redis.go:122 +#: internal/data/database_redis.go:123 msgid "server is not Redis type" msgstr "" -#: internal/data/database_elasticsearch.go:107 -#: internal/data/database_redis.go:119 +#: internal/data/database_elasticsearch.go:108 +#: internal/data/database_redis.go:120 msgid "server not found" msgstr "" -#: internal/http/middleware/must_login.go:63 +#: internal/middleware/must_login.go:51 msgid "session expired, please login again" msgstr "" -#: internal/service/backup_storage.go:149 +#: internal/service/backup_storage.go:150 msgid "sftp configuration error: %v" msgstr "" -#: internal/data/user_token.go:141 +#: internal/data/user_token.go:142 msgid "signature expired" msgstr "" -#: internal/service/toolbox_disk.go:576 +#: internal/service/toolbox_disk.go:577 msgid "smartmontools is not installed, please install it first (e.g., apt install smartmontools or dnf install smartmontools)" msgstr "" -#: internal/data/database.go:220 +#: internal/service/ws.go:290 +msgid "source and destination are the same file" +msgstr "" + +#: internal/service/ws.go:286 +msgid "source and destination path are required" +msgstr "" + +#: internal/biz/database.go:195 msgid "sqlite does not support dropping tables from here" msgstr "" -#: internal/service/environment_php.go:409 +#: internal/service/environment_php.go:410 msgid "sqlsrv is a driver for connecting to SQL Server" msgstr "" -#: internal/service/toolbox_migration.go:431 -#: internal/service/toolbox_migration.go:506 -#: internal/service/toolbox_migration.go:620 -#: internal/service/toolbox_migration.go:700 +#: internal/service/toolbox_migration.go:420 +#: internal/service/toolbox_migration.go:495 +#: internal/service/toolbox_migration.go:609 +#: internal/service/toolbox_migration.go:689 msgid "start migrating" msgstr "" -#: internal/service/cli.go:89 +#: internal/service/cli.go:90 msgid "stopped" msgstr "" -#: internal/service/toolbox_migration.go:704 +#: internal/service/toolbox_migration.go:693 msgid "stopping project service" msgstr "" -#: internal/service/toolbox_migration.go:435 +#: internal/service/toolbox_migration.go:424 msgid "stopping website" msgstr "" -#: internal/service/backup_storage.go:166 +#: internal/service/backup_storage.go:167 msgid "storage connection error: %v" msgstr "" @@ -3118,394 +3209,406 @@ msgstr "" msgid "stream upstream not found: %s" msgstr "" -#: internal/data/database_server.go:178 -#: internal/data/database_server.go:197 -#: internal/data/database_server.go:216 +#: internal/biz/database_server.go:214 +#: internal/biz/database_server.go:233 +#: internal/biz/database_server.go:252 msgid "sync from server %s" msgstr "" -#: internal/service/backup.go:105 +#: internal/service/tamper.go:62 +msgid "tamper protection is only supported on Linux" +msgstr "" + +#: internal/service/backup.go:106 msgid "target backup %s already exists" msgstr "" -#: internal/service/file.go:87 +#: internal/service/file.go:90 msgid "target is a directory" msgstr "" -#: internal/service/file.go:294 -#: internal/service/file.go:722 -#: internal/service/file.go:837 +#: internal/service/file.go:305 +#: internal/service/file.go:739 +#: internal/service/file.go:854 msgid "target path %s already exists" msgstr "" -#: internal/data/template.go:81 +#: internal/biz/template.go:75 msgid "template %s not found" msgstr "" -#: internal/service/home.go:351 +#: internal/service/home.go:352 msgid "the current version is the latest version" msgstr "" -#: internal/data/cert.go:438 +#: internal/biz/cert.go:393 msgid "this certificate has not been obtained successfully and cannot be deployed" msgstr "" -#: internal/data/cert.go:345 +#: internal/biz/cert.go:300 msgid "this certificate has not been obtained successfully and cannot be renewed" msgstr "" -#: internal/data/cert.go:230 -#: internal/data/cert.go:359 +#: internal/biz/cert.go:203 +#: internal/biz/cert.go:314 msgid "this certificate is not associated with a website and cannot be obtained. You can try to obtain it manually" msgstr "" -#: internal/data/cert.go:569 +#: internal/data/cert.go:305 msgid "this certificate is not associated with an ACME account and cannot be obtained" msgstr "" -#: internal/data/user_token.go:116 +#: internal/data/user_token.go:117 msgid "token expired" msgstr "" -#: internal/service/home.go:292 -#: internal/service/home.go:328 +#: internal/data/ssh.go:311 +msgid "transferring a directory is not supported" +msgstr "" + +#: internal/service/home.go:293 +#: internal/service/home.go:329 msgid "unable to check for updates in offline mode" msgstr "" -#: internal/service/home.go:366 -#: internal/service/ws.go:405 +#: internal/service/home.go:367 +#: internal/service/ws.go:481 msgid "unable to update in offline mode" msgstr "" -#: internal/service/cli.go:84 +#: internal/service/cli.go:85 msgid "unknown" msgstr "" -#: internal/data/backup.go:142 -#: internal/data/backup.go:264 +#: internal/data/backup.go:154 +#: internal/data/backup.go:274 msgid "unknown backup type" msgstr "" -#: internal/service/toolbox_log.go:69 -#: internal/service/toolbox_log.go:99 +#: internal/service/toolbox_log.go:100 +#: internal/service/toolbox_log.go:70 msgid "unknown log type" msgstr "" -#: internal/apps/fail2ban/app.go:188 +#: internal/apps/fail2ban/app.go:189 msgid "unknown service" msgstr "" -#: internal/data/backup.go:493 +#: internal/data/backup.go:489 msgid "unknown storage type" msgstr "" -#: internal/service/toolbox_benchmark.go:77 +#: internal/service/toolbox_benchmark.go:78 msgid "unknown test type" msgstr "" -#: internal/data/cert_account.go:104 -#: internal/data/cert_account.go:166 +#: internal/biz/cert_account.go:123 +#: internal/biz/cert_account.go:185 msgid "unsupported CA" msgstr "" -#: internal/service/toolbox_migration.go:524 +#: internal/service/toolbox_migration.go:513 msgid "unsupported database type: %s" msgstr "" -#: internal/service/backup.go:99 +#: internal/service/backup.go:100 msgid "unsupported file type" msgstr "" -#: internal/service/toolbox_disk.go:194 -#: internal/service/toolbox_disk.go:268 +#: internal/service/toolbox_disk.go:195 +#: internal/service/toolbox_disk.go:269 msgid "unsupported filesystem type: %s" msgstr "" -#: internal/data/cron.go:274 +#: internal/data/cron.go:168 msgid "unsupported system" msgstr "" -#: internal/data/website.go:1240 -#: internal/data/website.go:1294 +#: internal/data/website.go:1137 +#: internal/data/website.go:1201 msgid "unsupported web server: %s" msgstr "" -#: internal/data/cert.go:532 -#: internal/data/website.go:1206 +#: internal/data/cert.go:268 +#: internal/data/website.go:1108 msgid "unsupported website type: %s" msgstr "" -#: internal/data/cert.go:161 +#: internal/biz/cert.go:146 msgid "upload certificate cannot be set to auto renewal" msgstr "" -#: internal/service/toolbox_migration.go:479 -#: internal/service/toolbox_migration.go:737 +#: internal/service/toolbox_migration.go:468 +#: internal/service/toolbox_migration.go:726 msgid "upload failed: %v" msgstr "" -#: internal/service/file.go:290 +#: internal/service/file.go:301 msgid "upload file error: %v" msgstr "" -#: internal/service/toolbox_migration.go:900 +#: internal/service/toolbox_migration.go:889 msgid "uploading" msgstr "" -#: internal/service/toolbox_migration.go:477 -#: internal/service/toolbox_migration.go:735 +#: internal/service/toolbox_migration.go:466 +#: internal/service/toolbox_migration.go:724 msgid "uploading directory:" msgstr "" -#: internal/service/toolbox_migration.go:745 +#: internal/service/toolbox_migration.go:734 msgid "uploading systemd service file" msgstr "" -#: internal/service/toolbox_migration.go:956 +#: internal/service/toolbox_migration.go:945 msgid "uploading to remote server" msgstr "" -#: internal/service/toolbox_migration.go:485 +#: internal/service/toolbox_migration.go:474 msgid "uploading website directory:" msgstr "" -#: internal/data/user.go:162 -#: internal/data/user.go:169 -#: internal/data/user.go:179 +#: internal/data/user.go:144 +#: internal/data/user.go:151 +#: internal/data/user.go:161 msgid "username or password error" msgstr "" -#: internal/service/toolbox_migration.go:730 +#: internal/service/toolbox_migration.go:719 msgid "warning: failed to create remote project, trying to upload directly" msgstr "" -#: internal/service/toolbox_migration.go:472 +#: internal/service/toolbox_migration.go:461 msgid "warning: failed to create remote website, trying to upload directly" msgstr "" -#: internal/service/toolbox_migration.go:706 +#: internal/service/toolbox_migration.go:695 msgid "warning: failed to stop service" msgstr "" -#: internal/service/toolbox_migration.go:437 +#: internal/service/toolbox_migration.go:426 msgid "warning: failed to stop website" msgstr "" -#: internal/service/toolbox_migration.go:747 +#: internal/service/toolbox_migration.go:736 msgid "warning: service file upload failed" msgstr "" -#: internal/service/toolbox_migration.go:487 +#: internal/service/toolbox_migration.go:476 msgid "warning: website directory upload failed" msgstr "" -#: internal/service/backup_storage.go:159 +#: internal/service/backup_storage.go:160 msgid "webdav configuration error: %v" msgstr "" -#: internal/data/webhook.go:144 +#: internal/data/webhook.go:110 msgid "webhook is disabled" msgstr "" -#: internal/data/webhook.go:140 +#: internal/data/webhook.go:106 msgid "webhook not found" msgstr "" -#: internal/data/webhook.go:149 +#: internal/data/webhook.go:115 msgid "webhook script not found" msgstr "" -#: internal/data/website.go:825 +#: internal/biz/website.go:171 msgid "website %s has bound certificates, please delete the certificate first" msgstr "" -#: internal/data/website.go:627 +#: internal/data/website.go:597 msgid "website directory does not exist" msgstr "" -#: internal/service/toolbox_migration.go:492 +#: internal/service/toolbox_migration.go:481 msgid "website migration completed" msgstr "" -#: internal/data/cert.go:236 -#: internal/data/cert.go:363 +#: internal/service/website.go:195 +msgid "website not found" +msgstr "" + +#: internal/biz/cert.go:209 +#: internal/biz/cert.go:318 msgid "wildcard domains cannot use HTTP verification" msgstr "" -#: internal/data/website.go:1016 +#: internal/biz/website.go:227 msgid "wildcard domains require DNS verification, please select a DNS provider" msgstr "" -#: internal/service/file.go:872 +#: internal/service/file.go:889 msgid "write chunk %d error: %v" msgstr "" -#: internal/service/file.go:318 +#: internal/service/file.go:330 msgid "write file error: %v" msgstr "" -#: internal/http/middleware/must_login.go:53 +#: internal/middleware/must_login.go:41 msgid "ws not allowed" msgstr "" -#: internal/service/environment_php.go:519 +#: internal/service/environment_php.go:520 msgid "xdebug is a library for debugging and profiling PHP code" msgstr "" -#: internal/service/toolbox_disk.go:452 +#: internal/service/toolbox_disk.go:453 msgid "xfs filesystem is not mounted, logical volume has been extended but filesystem was not resized" msgstr "" -#: internal/service/environment_php.go:514 +#: internal/service/environment_php.go:515 msgid "xhprof is a library for performance profiling" msgstr "" -#: internal/service/environment_php.go:524 +#: internal/service/environment_php.go:525 msgid "yaml is a library for handling YAML" msgstr "" -#: internal/service/environment_php.go:529 +#: internal/service/environment_php.go:530 msgid "zstd is a library for compressing and decompressing files" msgstr "" -#: internal/data/backup.go:1292 +#: internal/data/backup.go:1288 msgid "|-Backup file used: %s" msgstr "" -#: internal/data/backup.go:1075 -#: internal/data/backup.go:216 -#: internal/data/backup.go:533 -#: internal/data/backup.go:591 -#: internal/data/backup.go:649 -#: internal/data/backup.go:742 -#: internal/data/backup.go:806 +#: internal/data/backup.go:1071 +#: internal/data/backup.go:229 +#: internal/data/backup.go:529 +#: internal/data/backup.go:587 +#: internal/data/backup.go:645 +#: internal/data/backup.go:738 +#: internal/data/backup.go:802 msgid "|-Backup file: %s" msgstr "" -#: internal/data/backup.go:122 +#: internal/data/backup.go:134 msgid "|-Backup storage: %s" msgstr "" -#: internal/data/backup.go:123 +#: internal/data/backup.go:135 msgid "|-Backup target: %s" msgstr "" -#: internal/data/backup.go:146 -#: internal/data/backup.go:215 +#: internal/data/backup.go:158 +#: internal/data/backup.go:228 msgid "|-Backup time: %s" msgstr "" -#: internal/data/backup.go:121 +#: internal/data/backup.go:133 msgid "|-Backup type: %s" msgstr "" -#: internal/service/cli.go:714 +#: internal/service/cli.go:715 msgid "|-Backup type: panel" msgstr "" -#: internal/data/backup.go:386 -#: internal/data/backup.go:450 +#: internal/data/backup.go:385 +#: internal/data/backup.go:446 msgid "|-Cleaning expired file: %s" msgstr "" -#: internal/service/cli.go:730 -#: internal/service/cli.go:837 -msgid "|-Cleaning target: %s" -msgstr "" - -#: internal/service/cli.go:729 -#: internal/service/cli.go:836 -msgid "|-Cleaning type: %s" -msgstr "" - -#: internal/data/backup.go:1261 -#: internal/data/backup.go:1356 -msgid "|-Fix completed" -msgstr "" - -#: internal/data/backup.go:1254 -msgid "|-Found %s.db is abnormal, removed it" -msgstr "" - #: internal/service/cli.go:731 #: internal/service/cli.go:838 +msgid "|-Cleaning target: %s" +msgstr "" + +#: internal/service/cli.go:730 +#: internal/service/cli.go:837 +msgid "|-Cleaning type: %s" +msgstr "" + +#: internal/data/backup.go:1257 +#: internal/data/backup.go:1363 +msgid "|-Fix completed" +msgstr "" + +#: internal/data/backup.go:1250 +msgid "|-Found %s.db is abnormal, removed it" +msgstr "" + +#: internal/service/cli.go:732 +#: internal/service/cli.go:839 msgid "|-Keep count: %d" msgstr "" -#: internal/data/backup.go:1308 +#: internal/data/backup.go:1304 msgid "|-Move backup file..." msgstr "" -#: internal/service/cli.go:761 -#: internal/service/cli.go:807 +#: internal/service/cli.go:762 +#: internal/service/cli.go:808 msgid "|-Rotation target: %s" msgstr "" -#: internal/service/cli.go:806 +#: internal/service/cli.go:807 msgid "|-Rotation type: container" msgstr "" -#: internal/service/cli.go:760 +#: internal/service/cli.go:761 msgid "|-Rotation type: website" msgstr "" -#: internal/data/backup.go:1333 +#: internal/data/backup.go:1340 msgid "|-Set key file permissions..." msgstr "" -#: internal/data/backup.go:1207 +#: internal/data/backup.go:1203 msgid "|-Start fixing the panel..." msgstr "" -#: internal/data/backup.go:1045 -#: internal/data/backup.go:512 -#: internal/data/backup.go:562 -#: internal/data/backup.go:620 -#: internal/data/backup.go:681 -#: internal/data/backup.go:785 +#: internal/data/backup.go:1041 +#: internal/data/backup.go:508 +#: internal/data/backup.go:558 +#: internal/data/backup.go:616 +#: internal/data/backup.go:677 +#: internal/data/backup.go:781 msgid "|-Temporary directory: %s" msgstr "" -#: internal/data/backup.go:1297 +#: internal/data/backup.go:1293 msgid "|-Unzip backup file..." msgstr "" -#: internal/data/backup.go:119 -#: internal/service/cli.go:712 +#: internal/data/backup.go:131 +#: internal/service/cli.go:713 msgid "★ Start backup [%s]" msgstr "" -#: internal/service/cli.go:727 +#: internal/service/cli.go:728 msgid "★ Start cleaning [%s]" msgstr "" -#: internal/service/cli.go:834 +#: internal/service/cli.go:835 msgid "★ Start cleaning rotated logs [%s]" msgstr "" -#: internal/service/cli.go:758 -#: internal/service/cli.go:804 +#: internal/service/cli.go:759 +#: internal/service/cli.go:805 msgid "★ Start log rotation [%s]" msgstr "" -#: internal/data/backup.go:167 +#: internal/data/backup.go:173 msgid "☆ Backup completed [%s]" msgstr "" -#: internal/data/backup.go:157 +#: internal/data/backup.go:163 msgid "☆ Backup failed: %v [%s]" msgstr "" -#: internal/service/cli.go:719 +#: internal/service/cli.go:720 msgid "☆ Backup successful [%s]" msgstr "" -#: internal/service/cli.go:745 -#: internal/service/cli.go:870 +#: internal/service/cli.go:746 +#: internal/service/cli.go:871 msgid "☆ Cleaning successful [%s]" msgstr "" -#: internal/service/cli.go:783 -#: internal/service/cli.go:822 +#: internal/service/cli.go:784 +#: internal/service/cli.go:823 msgid "☆ Rotation successful [%s]" msgstr "" \ No newline at end of file diff --git a/web/src/locales/en.po b/web/src/locales/en.po index be185ea0..8e76ed98 100644 --- a/web/src/locales/en.po +++ b/web/src/locales/en.po @@ -197,19 +197,19 @@ msgid "Month %{month}" msgstr "" #: src/components/common/CronSelector.vue:347 -#: src/views/apps/nginx/NginxIndex.vue:799 src/views/website/EditModal.vue:676 +#: src/views/apps/nginx/NginxIndex.vue:799 src/views/website/EditModal.vue:686 #, fuzzy msgid "Seconds" msgstr "Per Second In" #: src/components/common/CronSelector.vue:358 -#: src/views/apps/nginx/NginxIndex.vue:800 src/views/website/EditModal.vue:677 +#: src/views/apps/nginx/NginxIndex.vue:800 src/views/website/EditModal.vue:687 #, fuzzy msgid "Minutes" msgstr "minutes" #: src/components/common/CronSelector.vue:369 -#: src/views/apps/nginx/NginxIndex.vue:801 src/views/website/EditModal.vue:678 +#: src/views/apps/nginx/NginxIndex.vue:801 src/views/website/EditModal.vue:688 msgid "Hours" msgstr "" @@ -252,9 +252,9 @@ msgid "Maximize" msgstr "Maximum" #: src/components/common/DraggableWindow.vue:289 -#: src/components/file-editor/EditorPane.vue:254 +#: src/components/file-editor/EditorPane.vue:282 #: src/layouts/tab/components/ContextMenu.vue:29 -#: src/views/cert/ObtainModal.vue:183 src/views/ssh/IndexView.vue:468 +#: src/views/cert/ObtainModal.vue:183 src/views/ssh/IndexView.vue:506 msgid "Close" msgstr "Close" @@ -267,9 +267,9 @@ msgid "Cannot save in current state" msgstr "Cannot save in current state" #: src/components/common/FileEditor.vue:94 -#: src/components/file-editor/EditorPane.vue:160 -#: src/components/file-editor/EditorToolbar.vue:40 -#: src/views/apps/apache/IndexView.vue:46 +#: src/components/file-editor/EditorPane.vue:190 +#: src/components/file-editor/EditorToolbar.vue:38 +#: src/views/app/CustomModal.vue:44 src/views/apps/apache/IndexView.vue:46 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:58 #: src/views/apps/clickhouse/IndexView.vue:57 #: src/views/apps/codeserver/IndexView.vue:26 @@ -298,6 +298,7 @@ msgstr "Cannot save in current state" #: src/views/apps/nginx/NginxIndex.vue:478 #: src/views/apps/opensearch/IndexView.vue:51 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:58 +#: src/views/apps/pgadmin/IndexView.vue:36 #: src/views/apps/phpmyadmin/IndexView.vue:40 #: src/views/apps/phpmyadmin/IndexView.vue:52 #: src/views/apps/podman/IndexView.vue:29 @@ -327,10 +328,11 @@ msgstr "Cannot save in current state" #: src/views/environment/PhpConfigTuneView.vue:183 #: src/views/environment/PHPView.vue:149 src/views/environment/PHPView.vue:155 #: src/views/environment/PythonView.vue:59 src/views/project/EditModal.vue:159 -#: src/views/setting/IndexView.vue:84 src/views/toolbox/SystemView.vue:72 +#: src/views/setting/IndexView.vue:84 src/views/tamper/IndexView.vue:53 +#: src/views/tamper/RuleModal.vue:70 src/views/toolbox/SystemView.vue:72 #: src/views/toolbox/SystemView.vue:83 src/views/toolbox/SystemView.vue:97 #: src/views/toolbox/SystemView.vue:111 src/views/toolbox/SystemView.vue:158 -#: src/views/website/EditModal.vue:158 +#: src/views/website/EditModal.vue:168 msgid "Saved successfully" msgstr "Saved successfully" @@ -350,7 +352,7 @@ msgstr "Select File" #: src/components/common/PathSelector.vue:51 #: src/components/common/PathSelector.vue:395 -#: src/views/app/EnvironmentView.vue:31 src/views/app/InstalledView.vue:161 +#: src/views/app/EnvironmentView.vue:36 src/views/app/InstalledView.vue:184 #: src/views/apps/fail2ban/IndexView.vue:41 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:72 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:206 @@ -367,17 +369,18 @@ msgstr "Select File" #: src/views/container/NetworkView.vue:48 src/views/container/VolumeView.vue:29 #: src/views/database/CreateServerModal.vue:108 #: src/views/database/ServerList.vue:66 -#: src/views/database/UpdateServerModal.vue:65 src/views/file/ListView.vue:1340 -#: src/views/file/PropertyModal.vue:27 src/views/file/ToolBar.vue:150 +#: src/views/database/UpdateServerModal.vue:66 src/views/file/ListView.vue:1392 +#: src/views/file/PropertyModal.vue:27 src/views/file/ToolBar.vue:123 #: src/views/home/IndexView.vue:659 src/views/home/IndexView.vue:760 #: src/views/project/ListView.vue:37 src/views/setting/PasskeyModal.vue:26 #: src/views/ssh/CreateModal.vue:60 src/views/ssh/UpdateModal.vue:66 -#: src/views/toolbox/LogView.vue:219 src/views/toolbox/MigrationView.vue:695 -#: src/views/toolbox/MigrationView.vue:782 +#: src/views/tamper/IndexView.vue:115 src/views/tamper/RuleModal.vue:99 +#: src/views/toolbox/LogView.vue:219 src/views/toolbox/MigrationView.vue:726 +#: src/views/toolbox/MigrationView.vue:813 #: src/views/toolbox/ProcessView.vue:106 src/views/toolbox/ProcessView.vue:393 #: src/views/toolbox/WebHookView.vue:37 src/views/toolbox/WebHookView.vue:330 #: src/views/toolbox/WebHookView.vue:371 src/views/website/CreateModal.vue:187 -#: src/views/website/EditModal.vue:2022 +#: src/views/website/EditModal.vue:2032 msgid "Name" msgstr "Name" @@ -385,55 +388,55 @@ msgstr "Name" msgid "Permissions" msgstr "Permissions" -#: src/components/common/PathSelector.vue:102 src/views/file/ListView.vue:1351 +#: src/components/common/PathSelector.vue:102 src/views/file/ListView.vue:1403 msgid "Owner / Group" msgstr "Owner / Group" #: src/components/common/PathSelector.vue:114 src/views/backup/ListView.vue:51 #: src/views/container/ImageView.vue:70 #: src/views/database/ElasticsearchDataView.vue:112 -#: src/views/database/RedisDataView.vue:116 src/views/file/ListView.vue:1347 -#: src/views/file/PropertyModal.vue:39 src/views/file/ToolBar.vue:151 +#: src/views/database/RedisDataView.vue:116 src/views/file/ListView.vue:1399 +#: src/views/file/PropertyModal.vue:39 src/views/file/ToolBar.vue:124 #: src/views/toolbox/disk/RaidView.vue:95 #: src/views/toolbox/disk/RaidView.vue:177 src/views/toolbox/DiskView.vue:233 #: src/views/toolbox/LogView.vue:220 msgid "Size" msgstr "Size" -#: src/components/common/PathSelector.vue:149 src/views/file/ListView.vue:1490 +#: src/components/common/PathSelector.vue:149 src/views/file/ListView.vue:1554 msgid "Calculate" msgstr "Calculate" -#: src/components/common/PathSelector.vue:154 src/views/file/ListView.vue:1356 -#: src/views/file/PropertyModal.vue:51 src/views/file/ToolBar.vue:152 +#: src/components/common/PathSelector.vue:154 src/views/file/ListView.vue:1408 +#: src/views/file/PropertyModal.vue:51 src/views/file/ToolBar.vue:125 msgid "Modification Time" msgstr "Modification Time" -#: src/components/common/PathSelector.vue:188 src/views/file/ListView.vue:1210 +#: src/components/common/PathSelector.vue:188 src/views/file/ListView.vue:1243 #: src/views/file/PathInput.vue:43 msgid "Invalid path" msgstr "Invalid path" -#: src/components/common/PathSelector.vue:248 src/views/file/ListView.vue:142 -#: src/views/file/ListView.vue:756 src/views/file/ToolBar.vue:44 +#: src/components/common/PathSelector.vue:248 src/views/file/ListView.vue:144 +#: src/views/file/ListView.vue:795 src/views/file/ToolBar.vue:46 msgid "Invalid name" msgstr "Invalid name" #: src/components/common/PathSelector.vue:258 -#: src/components/file-editor/FileTree.vue:286 +#: src/components/file-editor/FileTree.vue:266 #: src/views/app/TemplateDeployModal.vue:237 #: src/views/backup/StorageView.vue:150 #: src/views/cert/CreateAccountModal.vue:55 #: src/views/cert/CreateCertModal.vue:75 src/views/cert/CreateDnsModal.vue:44 #: src/views/cert/UploadCertModal.vue:26 #: src/views/container/ComposeView.vue:231 -#: src/views/container/ContainerCreate.vue:109 +#: src/views/container/ContainerCreate.vue:118 #: src/views/container/NetworkView.vue:184 #: src/views/container/VolumeView.vue:132 #: src/views/database/CreateDatabaseModal.vue:48 #: src/views/database/CreateUserModal.vue:56 #: src/views/database/ElasticsearchDataView.vue:263 -#: src/views/file/ListView.vue:151 src/views/firewall/CreateForwardModal.vue:44 +#: src/views/file/ListView.vue:153 src/views/firewall/CreateForwardModal.vue:44 #: src/views/setting/CreateModal.vue:22 src/views/setting/TokenModal.vue:117 #: src/views/ssh/CreateModal.vue:41 src/views/task/CreateModal.vue:120 #: src/views/toolbox/WebHookView.vue:249 @@ -441,20 +444,20 @@ msgid "Created successfully" msgstr "Created successfully" #: src/components/common/PathSelector.vue:319 -#: src/views/file/PropertyModal.vue:34 src/views/file/ToolBar.vue:174 +#: src/views/file/PropertyModal.vue:34 src/views/file/ToolBar.vue:147 msgid "File" msgstr "File" -#: src/components/common/PathSelector.vue:320 src/views/file/ToolBar.vue:175 +#: src/components/common/PathSelector.vue:320 src/views/file/ToolBar.vue:148 msgid "Folder" msgstr "Folder" #: src/components/common/PathSelector.vue:324 #: src/components/common/PathSelector.vue:387 #: src/views/app/TemplateDeployModal.vue:652 -#: src/views/container/ContainerCreate.vue:537 +#: src/views/container/ContainerCreate.vue:638 #: src/views/project/CreateModal.vue:693 src/views/setting/TokenModal.vue:270 -#: src/views/toolbox/WebHookView.vue:356 +#: src/views/ssh/SftpBrowser.vue:160 src/views/toolbox/WebHookView.vue:356 #: src/views/website/BulkCreateModal.vue:240 #: src/views/website/CreateModal.vue:342 msgid "Create" @@ -483,7 +486,7 @@ msgstr "Root Directory" #: src/views/cert/UploadCertModal.vue:64 #: src/views/container/ComposeView.vue:341 #: src/views/container/ComposeView.vue:367 -#: src/views/container/ContainerView.vue:636 +#: src/views/container/ContainerView.vue:663 #: src/views/container/ImageView.vue:401 #: src/views/container/NetworkView.vue:339 #: src/views/container/VolumeView.vue:233 @@ -495,8 +498,8 @@ msgstr "Root Directory" #: src/views/database/RedisDataView.vue:358 #: src/views/database/RedisDataView.vue:378 #: src/views/database/RedisKeyModal.vue:130 -#: src/views/database/UpdateServerModal.vue:123 -#: src/views/database/UpdateUserModal.vue:88 src/views/file/ToolBar.vue:257 +#: src/views/database/UpdateServerModal.vue:124 +#: src/views/database/UpdateUserModal.vue:88 src/views/file/ToolBar.vue:230 #: src/views/firewall/CreateForwardModal.vue:94 #: src/views/firewall/CreateIpModal.vue:125 #: src/views/firewall/CreateModal.vue:159 src/views/setting/CreateModal.vue:71 @@ -507,13 +510,13 @@ msgid "Submit" msgstr "Submit" #: src/components/common/PtyTerminalModal.vue:125 -#: src/views/container/ContainerView.vue:472 +#: src/views/container/ContainerView.vue:499 #, fuzzy msgid "Connection closed." msgstr "Connection closed. Please refresh." #: src/components/common/PtyTerminalModal.vue:134 -#: src/views/container/ContainerView.vue:479 +#: src/views/container/ContainerView.vue:506 #, fuzzy msgid "Connection error." msgstr "Connection error. Please refresh." @@ -527,7 +530,7 @@ msgstr "Connection error. Please refresh." #: src/components/common/PtyTerminalModal.vue:143 #: src/views/container/ImagePullModal.vue:93 -#: src/views/container/ImageView.vue:227 +#: src/views/container/ImageView.vue:227 src/views/ssh/SftpPanel.vue:140 #, fuzzy msgid "Failed to connect" msgstr "Files to compress" @@ -541,7 +544,7 @@ msgstr "Files to compress" #: src/views/apps/supervisor/IndexView.vue:133 #: src/views/apps/supervisor/IndexView.vue:151 #: src/views/container/ComposeView.vue:171 -#: src/views/file/composables/usePaste.ts:65 src/views/file/UploadModal.vue:791 +#: src/views/file/composables/usePaste.ts:72 src/views/file/UploadModal.vue:791 #: src/views/home/IndexView.vue:1029 src/views/home/UpdateView.vue:109 #: src/views/monitor/IndexView.vue:736 src/views/toolbox/DiskView.vue:353 #: src/views/toolbox/DiskView.vue:355 src/views/toolbox/DiskView.vue:375 @@ -551,7 +554,7 @@ msgstr "Files to compress" #: src/views/toolbox/DiskView.vue:504 src/views/toolbox/DiskView.vue:521 #: src/views/toolbox/DiskView.vue:526 src/views/toolbox/DiskView.vue:547 #: src/views/toolbox/DiskView.vue:564 src/views/toolbox/DiskView.vue:569 -#: src/views/toolbox/DiskView.vue:591 src/views/toolbox/MigrationView.vue:347 +#: src/views/toolbox/DiskView.vue:591 src/views/toolbox/MigrationView.vue:368 #: src/views/toolbox/ProcessView.vue:242 src/views/toolbox/ProcessView.vue:247 msgid "Confirm" msgstr "Confirm" @@ -563,8 +566,8 @@ msgid "" msgstr "" #: src/components/common/PtyTerminalModal.vue:207 -#: src/components/file-editor/EditorToolbar.vue:102 -#: src/components/file-editor/FileTree.vue:605 +#: src/components/file-editor/EditorToolbar.vue:77 +#: src/components/file-editor/FileTree.vue:590 #: src/components/system/composables/useConfirm.ts:37 #: src/components/system/composables/useConfirm.ts:83 #: src/components/system/ConfirmDialog.vue:58 @@ -573,33 +576,36 @@ msgstr "" #: src/layouts/header/components/UserAvatar.vue:31 #: src/views/app/TemplateDeployModal.vue:637 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:239 -#: src/views/container/ContainerCreate.vue:534 +#: src/views/container/ContainerCreate.vue:147 +#: src/views/container/ContainerCreate.vue:635 #: src/views/container/ImagePullModal.vue:185 #: src/views/container/ImagePullModal.vue:199 #: src/views/container/ImageView.vue:347 src/views/container/ImageView.vue:362 -#: src/views/file/composables/usePaste.ts:66 -#: src/views/file/composables/usePaste.ts:146 src/views/file/ListView.vue:245 -#: src/views/file/ListView.vue:769 src/views/file/ToolBar.vue:208 +#: src/views/file/composables/usePaste.ts:73 +#: src/views/file/composables/usePaste.ts:153 src/views/file/ListView.vue:287 +#: src/views/file/ListView.vue:821 src/views/file/ToolBar.vue:181 #: src/views/file/UploadModal.vue:507 src/views/file/UploadModal.vue:642 #: src/views/file/UploadModal.vue:790 src/views/home/IndexView.vue:1030 #: src/views/home/UpdateView.vue:110 src/views/project/EditModal.vue:579 +#: src/views/ssh/SftpPanel.vue:277 src/views/tamper/RuleModal.vue:124 #: src/views/toolbox/DiskView.vue:356 src/views/toolbox/DiskView.vue:378 #: src/views/toolbox/DiskView.vue:399 src/views/toolbox/DiskView.vue:423 #: src/views/toolbox/DiskView.vue:446 src/views/toolbox/DiskView.vue:464 #: src/views/toolbox/DiskView.vue:485 src/views/toolbox/DiskView.vue:505 #: src/views/toolbox/DiskView.vue:527 src/views/toolbox/DiskView.vue:548 #: src/views/toolbox/DiskView.vue:570 src/views/toolbox/DiskView.vue:592 -#: src/views/toolbox/MigrationView.vue:258 -#: src/views/toolbox/MigrationView.vue:348 -#: src/views/toolbox/ProcessView.vue:248 src/views/website/EditModal.vue:2131 +#: src/views/toolbox/MigrationView.vue:208 +#: src/views/toolbox/MigrationView.vue:279 +#: src/views/toolbox/MigrationView.vue:369 +#: src/views/toolbox/ProcessView.vue:248 src/views/website/EditModal.vue:2141 msgid "Cancel" msgstr "Cancel" #: src/components/common/PtyTerminalModal.vue:259 src/locales/menu.ts:19 -#: src/views/container/ContainerView.vue:123 -#: src/views/container/ContainerView.vue:642 -#: src/views/database/ServerList.vue:174 src/views/file/ListView.vue:350 -#: src/views/file/ListView.vue:965 src/views/file/ToolBar.vue:183 +#: src/views/container/ContainerView.vue:142 +#: src/views/container/ContainerView.vue:669 +#: src/views/database/ServerList.vue:174 src/views/file/ListView.vue:392 +#: src/views/file/ListView.vue:986 src/views/file/ToolBar.vue:156 msgid "Terminal" msgstr "Terminal" @@ -625,10 +631,10 @@ msgid "Jump to Bottom" msgstr "" #: src/components/common/RealtimeLog.vue:306 -#: src/components/file-editor/EditorToolbar.vue:222 -#: src/components/file-editor/FileTree.vue:719 -#: src/components/system/SearchToolbar.vue:58 src/views/app/AppView.vue:237 -#: src/views/app/EnvironmentView.vue:226 src/views/app/TemplateView.vue:102 +#: src/components/file-editor/EditorToolbar.vue:190 +#: src/components/file-editor/FileTree.vue:702 +#: src/components/system/SearchToolbar.vue:58 src/views/app/AppView.vue:258 +#: src/views/app/EnvironmentView.vue:248 src/views/app/TemplateView.vue:102 #: src/views/database/ElasticsearchDataView.vue:314 #: src/views/database/RedisDataView.vue:289 msgid "Search" @@ -656,7 +662,7 @@ msgstr "Inodes Available" #: src/components/common/RealtimeLogModal.vue:37 src/locales/menu.ts:15 #: src/views/apps/supervisor/IndexView.vue:98 -#: src/views/container/ContainerView.vue:135 src/views/project/ListView.vue:168 +#: src/views/container/ContainerView.vue:154 src/views/project/ListView.vue:168 #: src/views/project/ListView.vue:334 src/views/task/CronView.vue:146 #: src/views/task/TaskView.vue:86 msgid "Logs" @@ -687,7 +693,7 @@ msgid "Loading..." msgstr "Loading..." #: src/components/common/ServiceStatus.vue:30 -#: src/views/app/InstalledView.vue:19 +#: src/views/app/InstalledView.vue:30 #: src/views/apps/prometheus/PrometheusExportersView.vue:50 #: src/views/project/ListView.vue:70 src/views/task/TaskView.vue:45 #: src/views/toolbox/ProcessView.vue:48 src/views/toolbox/ProcessView.vue:77 @@ -696,10 +702,10 @@ msgid "Running" msgstr "Running" #: src/components/common/ServiceStatus.vue:30 -#: src/views/app/InstalledView.vue:20 +#: src/views/app/InstalledView.vue:31 #: src/views/apps/prometheus/PrometheusExportersView.vue:51 -#: src/views/project/ListView.vue:72 src/views/toolbox/ProcessView.vue:50 -#: src/views/toolbox/ProcessView.vue:83 +#: src/views/project/ListView.vue:72 src/views/tamper/IndexView.vue:233 +#: src/views/toolbox/ProcessView.vue:50 src/views/toolbox/ProcessView.vue:83 msgid "Stopped" msgstr "Stopped" @@ -783,8 +789,8 @@ msgstr "Autostart disabled successfully" #: src/views/apps/rsync/IndexView.vue:194 #: src/views/apps/supervisor/IndexView.vue:308 #: src/views/apps/valkey/IndexView.vue:62 -#: src/views/container/ContainerView.vue:101 -#: src/views/environment/PHPView.vue:189 +#: src/views/container/ContainerView.vue:106 +#: src/views/environment/PHPView.vue:189 src/views/tamper/IndexView.vue:229 msgid "Running Status" msgstr "Running Status" @@ -800,9 +806,9 @@ msgstr "Autostart Off" #: src/views/apps/prometheus/PrometheusExportersView.vue:88 #: src/views/apps/supervisor/IndexView.vue:120 #: src/views/container/ComposeView.vue:160 -#: src/views/container/ContainerView.vue:158 -#: src/views/container/ContainerView.vue:566 src/views/project/ListView.vue:130 -#: src/views/toolbox/MigrationView.vue:257 +#: src/views/container/ContainerView.vue:181 +#: src/views/container/ContainerView.vue:593 src/views/project/ListView.vue:130 +#: src/views/toolbox/MigrationView.vue:278 msgid "Start" msgstr "Start" @@ -814,16 +820,16 @@ msgstr "Are you sure you want to stop %{ service }?" #: src/views/apps/prometheus/PrometheusExportersView.vue:96 #: src/views/apps/supervisor/IndexView.vue:141 #: src/views/container/ComposeView.vue:189 -#: src/views/container/ContainerView.vue:163 -#: src/views/container/ContainerView.vue:569 src/views/project/ListView.vue:130 +#: src/views/container/ContainerView.vue:186 +#: src/views/container/ContainerView.vue:596 src/views/project/ListView.vue:130 msgid "Stop" msgstr "Stop" #: src/components/common/ServiceStatus.vue:181 #: src/views/apps/prometheus/PrometheusExportersView.vue:103 #: src/views/apps/supervisor/IndexView.vue:159 -#: src/views/container/ContainerView.vue:168 -#: src/views/container/ContainerView.vue:572 src/views/home/IndexView.vue:555 +#: src/views/container/ContainerView.vue:191 +#: src/views/container/ContainerView.vue:599 src/views/home/IndexView.vue:555 #: src/views/project/ListView.vue:145 msgid "Restart" msgstr "Restart" @@ -834,37 +840,32 @@ msgstr "Restart" msgid "Reload" msgstr "Reload" -#: src/components/file-editor/EditorPane.vue:126 -#: src/components/file-editor/EditorToolbar.vue:99 +#: src/components/file-editor/EditorPane.vue:158 +#: src/components/file-editor/EditorToolbar.vue:74 #: src/views/file/EditModal.vue:41 #, fuzzy msgid "Unsaved Changes" msgstr "Save Changes" -#: src/components/file-editor/EditorPane.vue:127 +#: src/components/file-editor/EditorPane.vue:159 #, fuzzy msgid "This file has unsaved changes. Are you sure you want to close it?" msgstr "Are you sure you want to clear?" -#: src/components/file-editor/EditorPane.vue:139 +#: src/components/file-editor/EditorPane.vue:171 #: src/views/file/EditModal.vue:55 #, fuzzy msgid "Go Back" msgstr "Backup" -#: src/components/file-editor/EditorPane.vue:150 +#: src/components/file-editor/EditorPane.vue:182 #: src/views/file/EditModal.vue:66 msgid "Discard" msgstr "" -#: src/components/file-editor/EditorPane.vue:165 -#, fuzzy -msgid "Failed to save file" -msgstr "Failed to calculate size" - -#: src/components/file-editor/EditorPane.vue:170 -#: src/components/file-editor/EditorToolbar.vue:185 -#: src/views/apps/apache/IndexView.vue:92 +#: src/components/file-editor/EditorPane.vue:198 +#: src/components/file-editor/EditorToolbar.vue:153 +#: src/views/app/CustomModal.vue:104 src/views/apps/apache/IndexView.vue:92 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:91 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:116 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:138 @@ -913,6 +914,7 @@ msgstr "Failed to calculate size" #: src/views/apps/opensearch/IndexView.vue:82 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:97 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:132 +#: src/views/apps/pgadmin/IndexView.vue:96 #: src/views/apps/phpmyadmin/IndexView.vue:83 #: src/views/apps/phpmyadmin/IndexView.vue:107 #: src/views/apps/podman/IndexView.vue:80 @@ -948,6 +950,7 @@ msgstr "Failed to calculate size" #: src/views/apps/valkey/ValkeyConfigTuneView.vue:171 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:205 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:230 +#: src/views/container/ContainerCreate.vue:638 #: src/views/environment/GoView.vue:90 src/views/environment/NodejsView.vue:93 #: src/views/environment/PhpConfigTuneView.vue:274 #: src/views/environment/PhpConfigTuneView.vue:305 @@ -956,33 +959,33 @@ msgstr "Failed to calculate size" #: src/views/environment/PhpConfigTuneView.vue:486 #: src/views/environment/PhpConfigTuneView.vue:561 #: src/views/environment/PHPView.vue:236 src/views/environment/PHPView.vue:254 -#: src/views/environment/PythonView.vue:97 src/views/file/EditModal.vue:111 +#: src/views/environment/PythonView.vue:97 src/views/file/EditModal.vue:89 #: src/views/firewall/SettingView.vue:136 src/views/project/EditModal.vue:582 -#: src/views/setting/IndexView.vue:169 src/views/task/CreateModal.vue:551 -#: src/views/task/CronView.vue:344 src/views/toolbox/SshView.vue:220 -#: src/views/toolbox/SystemView.vue:195 src/views/toolbox/SystemView.vue:224 -#: src/views/toolbox/SystemView.vue:247 src/views/toolbox/SystemView.vue:290 -#: src/views/toolbox/SystemView.vue:372 src/views/toolbox/WebHookView.vue:400 -#: src/views/website/EditModal.vue:2140 +#: src/views/setting/IndexView.vue:169 src/views/tamper/RuleModal.vue:126 +#: src/views/task/CreateModal.vue:551 src/views/task/CronView.vue:344 +#: src/views/toolbox/SshView.vue:220 src/views/toolbox/SystemView.vue:195 +#: src/views/toolbox/SystemView.vue:224 src/views/toolbox/SystemView.vue:247 +#: src/views/toolbox/SystemView.vue:290 src/views/toolbox/SystemView.vue:372 +#: src/views/toolbox/WebHookView.vue:400 src/views/website/EditModal.vue:2150 msgid "Save" msgstr "Save" -#: src/components/file-editor/EditorPane.vue:258 +#: src/components/file-editor/EditorPane.vue:286 #: src/layouts/tab/components/ContextMenu.vue:53 msgid "Close Others" msgstr "Close Others" -#: src/components/file-editor/EditorPane.vue:262 +#: src/components/file-editor/EditorPane.vue:290 #, fuzzy msgid "Close All" msgstr "Expose All" -#: src/components/file-editor/EditorPane.vue:266 +#: src/components/file-editor/EditorPane.vue:294 #, fuzzy msgid "Close Saved" msgstr "Close Left" -#: src/components/file-editor/EditorPane.vue:470 +#: src/components/file-editor/EditorPane.vue:518 #, fuzzy msgid "Select a file to edit" msgstr "Select File" @@ -1023,330 +1026,326 @@ msgid "No file to save" msgstr "Files" #: src/components/file-editor/EditorToolbar.vue:32 -#: src/components/file-editor/EditorToolbar.vue:51 +#: src/components/file-editor/EditorToolbar.vue:47 msgid "No changes to save" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:81 -#: src/views/file/EditModal.vue:100 +#: src/components/file-editor/EditorToolbar.vue:56 +#: src/views/file/EditModal.vue:78 #, fuzzy msgid "All files saved successfully" msgstr "Settings saved successfully" -#: src/components/file-editor/EditorToolbar.vue:84 +#: src/components/file-editor/EditorToolbar.vue:59 msgid "Saved %{ success } files, %{ fail } failed" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:100 +#: src/components/file-editor/EditorToolbar.vue:75 msgid "This file has unsaved changes. Refreshing will discard them. Continue?" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:101 -#: src/components/file-editor/EditorToolbar.vue:201 -#: src/components/file-editor/EditorToolbar.vue:206 -#: src/components/file-editor/FileTree.vue:697 +#: src/components/file-editor/EditorToolbar.vue:76 +#: src/components/file-editor/EditorToolbar.vue:169 +#: src/components/file-editor/EditorToolbar.vue:174 +#: src/components/file-editor/FileTree.vue:680 #: src/components/system/RefreshButton.vue:31 #: src/components/system/RefreshButton.vue:37 src/views/file/PathInput.vue:133 #: src/views/home/UpdateView.vue:166 src/views/log/DatabaseLog.vue:132 #: src/views/log/HttpLog.vue:161 src/views/log/OperationLog.vue:184 -#: src/views/log/SSHLog.vue:115 src/views/toolbox/MigrationView.vue:588 +#: src/views/log/SSHLog.vue:115 src/views/ssh/SftpBrowser.vue:138 +#: src/views/tamper/IndexView.vue:376 src/views/toolbox/MigrationView.vue:610 #: src/views/toolbox/NetworkView.vue:188 src/views/toolbox/PanelView.vue:100 #: src/views/toolbox/PanelView.vue:233 src/views/toolbox/ProcessView.vue:335 #: src/views/website/StatsView.vue:176 msgid "Refresh" msgstr "Refresh" -#: src/components/file-editor/EditorToolbar.vue:118 +#: src/components/file-editor/EditorToolbar.vue:89 #, fuzzy msgid "Refreshed successfully" msgstr "Retrieved successfully" -#: src/components/file-editor/EditorToolbar.vue:180 +#: src/components/file-editor/EditorToolbar.vue:148 msgid "Save (Ctrl+S)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:191 +#: src/components/file-editor/EditorToolbar.vue:159 msgid "Save All (Ctrl+Shift+S)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:196 +#: src/components/file-editor/EditorToolbar.vue:164 #, fuzzy msgid "Save All" msgstr "Save as" -#: src/components/file-editor/EditorToolbar.vue:217 +#: src/components/file-editor/EditorToolbar.vue:185 msgid "Search (Ctrl+F)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:227 +#: src/components/file-editor/EditorToolbar.vue:195 msgid "Replace (Ctrl+H)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:232 +#: src/components/file-editor/EditorToolbar.vue:200 msgid "Replace" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:237 +#: src/components/file-editor/EditorToolbar.vue:205 msgid "Go to Line (Ctrl+G)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:242 +#: src/components/file-editor/EditorToolbar.vue:210 msgid "Go to" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:271 +#: src/components/file-editor/EditorToolbar.vue:239 msgid "Toggle Word Wrap" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:282 +#: src/components/file-editor/EditorToolbar.vue:250 msgid "Toggle Minimap" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:292 -#: src/views/firewall/IndexView.vue:26 src/views/ssh/IndexView.vue:483 -#: src/views/website/IndexView.vue:30 +#: src/components/file-editor/EditorToolbar.vue:260 +#: src/views/firewall/IndexView.vue:26 src/views/ssh/IndexView.vue:521 +#: src/views/tamper/IndexView.vue:217 src/views/website/IndexView.vue:30 msgid "Settings" msgstr "Settings" -#: src/components/file-editor/FileEditorView.vue:146 +#: src/components/file-editor/FileEditorView.vue:149 #, fuzzy msgid "Editor Settings" msgstr "Port Settings" -#: src/components/file-editor/FileEditorView.vue:152 +#: src/components/file-editor/FileEditorView.vue:155 #: src/views/setting/IndexView.vue:147 msgid "Basic" msgstr "Basic" -#: src/components/file-editor/FileEditorView.vue:154 +#: src/components/file-editor/FileEditorView.vue:157 #, fuzzy msgid "Tab Size" msgstr "Size" -#: src/components/file-editor/FileEditorView.vue:162 +#: src/components/file-editor/FileEditorView.vue:165 msgid "Use Spaces" msgstr "" -#: src/components/file-editor/FileEditorView.vue:168 -#: src/views/ssh/IndexView.vue:489 +#: src/components/file-editor/FileEditorView.vue:171 +#: src/views/ssh/IndexView.vue:527 #, fuzzy msgid "Font Size" msgstr "Size" -#: src/components/file-editor/FileEditorView.vue:178 +#: src/components/file-editor/FileEditorView.vue:181 msgid "Word Wrap" msgstr "" -#: src/components/file-editor/FileEditorView.vue:182 -#: src/components/file-editor/FileEditorView.vue:208 +#: src/components/file-editor/FileEditorView.vue:185 +#: src/components/file-editor/FileEditorView.vue:211 #: src/views/apps/mysql/MysqlConfigTuneView.vue:102 msgid "Off" msgstr "" -#: src/components/file-editor/FileEditorView.vue:183 -#: src/components/file-editor/FileEditorView.vue:207 +#: src/components/file-editor/FileEditorView.vue:186 +#: src/components/file-editor/FileEditorView.vue:210 #: src/views/apps/mysql/MysqlConfigTuneView.vue:101 #, fuzzy msgid "On" msgstr "Open" -#: src/components/file-editor/FileEditorView.vue:184 +#: src/components/file-editor/FileEditorView.vue:187 msgid "Word Wrap Column" msgstr "" -#: src/components/file-editor/FileEditorView.vue:185 +#: src/components/file-editor/FileEditorView.vue:188 msgid "Bounded" msgstr "" -#: src/components/file-editor/FileEditorView.vue:193 +#: src/components/file-editor/FileEditorView.vue:196 #, fuzzy msgid "Show Minimap" msgstr "Show in Home" -#: src/components/file-editor/FileEditorView.vue:201 +#: src/components/file-editor/FileEditorView.vue:204 msgid "Display" msgstr "" -#: src/components/file-editor/FileEditorView.vue:203 +#: src/components/file-editor/FileEditorView.vue:206 msgid "Line Numbers" msgstr "" -#: src/components/file-editor/FileEditorView.vue:209 +#: src/components/file-editor/FileEditorView.vue:212 #, fuzzy msgid "Relative" msgstr "Inactive" -#: src/components/file-editor/FileEditorView.vue:210 +#: src/components/file-editor/FileEditorView.vue:213 #, fuzzy msgid "Interval" msgstr "Restart" -#: src/components/file-editor/FileEditorView.vue:218 +#: src/components/file-editor/FileEditorView.vue:221 msgid "Render Whitespace" msgstr "" -#: src/components/file-editor/FileEditorView.vue:222 +#: src/components/file-editor/FileEditorView.vue:225 #: src/views/apps/docker/IndexView.vue:83 src/views/cert/CertView.vue:88 #: src/views/cert/CertView.vue:142 src/views/cert/CertView.vue:153 -#: src/views/cert/CertView.vue:171 src/views/container/ContainerCreate.vue:53 +#: src/views/cert/CertView.vue:171 src/views/container/ContainerCreate.vue:57 #: src/views/database/ServerList.vue:78 src/views/database/ServerList.vue:93 #: src/views/database/UserList.vue:28 src/views/database/UserList.vue:68 #: src/views/firewall/ForwardView.vue:27 src/views/firewall/IpRuleView.vue:27 #: src/views/firewall/IpRuleView.vue:44 src/views/firewall/RuleView.vue:44 -#: src/views/firewall/RuleView.vue:61 src/views/toolbox/MigrationView.vue:479 -#: src/views/toolbox/MigrationView.vue:480 -#: src/views/toolbox/MigrationView.vue:559 -#: src/views/toolbox/MigrationView.vue:574 +#: src/views/firewall/RuleView.vue:61 src/views/toolbox/MigrationView.vue:501 +#: src/views/toolbox/MigrationView.vue:502 +#: src/views/toolbox/MigrationView.vue:581 +#: src/views/toolbox/MigrationView.vue:596 msgid "None" msgstr "None" -#: src/components/file-editor/FileEditorView.vue:223 +#: src/components/file-editor/FileEditorView.vue:226 msgid "Boundary" msgstr "" -#: src/components/file-editor/FileEditorView.vue:224 +#: src/components/file-editor/FileEditorView.vue:227 #, fuzzy msgid "Selection" msgstr "Time Selection" -#: src/components/file-editor/FileEditorView.vue:225 +#: src/components/file-editor/FileEditorView.vue:228 msgid "Trailing" msgstr "" -#: src/components/file-editor/FileEditorView.vue:226 -#: src/views/app/AppView.vue:222 src/views/app/EnvironmentView.vue:211 +#: src/components/file-editor/FileEditorView.vue:229 +#: src/views/app/AppView.vue:243 src/views/app/EnvironmentView.vue:233 #: src/views/app/TemplateView.vue:87 src/views/firewall/RuleView.vue:223 #: src/views/project/IndexView.vue:21 src/views/website/IndexView.vue:25 #: src/views/website/stats/ErrorsTab.vue:18 msgid "All" msgstr "All" -#: src/components/file-editor/FileEditorView.vue:234 +#: src/components/file-editor/FileEditorView.vue:237 msgid "Bracket Colorization" msgstr "" -#: src/components/file-editor/FileEditorView.vue:242 +#: src/components/file-editor/FileEditorView.vue:245 msgid "Indent Guides" msgstr "" -#: src/components/file-editor/FileEditorView.vue:248 +#: src/components/file-editor/FileEditorView.vue:251 #, fuzzy msgid "Code Folding" msgstr "Create Forwarding" -#: src/components/file-editor/FileEditorView.vue:256 +#: src/components/file-editor/FileEditorView.vue:259 msgid "Cursor" msgstr "" -#: src/components/file-editor/FileEditorView.vue:258 +#: src/components/file-editor/FileEditorView.vue:261 msgid "Cursor Style" msgstr "" -#: src/components/file-editor/FileEditorView.vue:262 +#: src/components/file-editor/FileEditorView.vue:265 msgid "Line" msgstr "" -#: src/components/file-editor/FileEditorView.vue:263 +#: src/components/file-editor/FileEditorView.vue:266 msgid "Block" msgstr "" -#: src/components/file-editor/FileEditorView.vue:264 +#: src/components/file-editor/FileEditorView.vue:267 msgid "Underline" msgstr "" -#: src/components/file-editor/FileEditorView.vue:265 +#: src/components/file-editor/FileEditorView.vue:268 msgid "Line Thin" msgstr "" -#: src/components/file-editor/FileEditorView.vue:266 +#: src/components/file-editor/FileEditorView.vue:269 msgid "Block Outline" msgstr "" -#: src/components/file-editor/FileEditorView.vue:267 +#: src/components/file-editor/FileEditorView.vue:270 msgid "Underline Thin" msgstr "" -#: src/components/file-editor/FileEditorView.vue:282 +#: src/components/file-editor/FileEditorView.vue:285 msgid "Cursor Blinking" msgstr "" -#: src/components/file-editor/FileEditorView.vue:286 +#: src/components/file-editor/FileEditorView.vue:289 msgid "Blink" msgstr "" -#: src/components/file-editor/FileEditorView.vue:287 +#: src/components/file-editor/FileEditorView.vue:290 msgid "Smooth" msgstr "" -#: src/components/file-editor/FileEditorView.vue:288 +#: src/components/file-editor/FileEditorView.vue:291 msgid "Phase" msgstr "" -#: src/components/file-editor/FileEditorView.vue:289 +#: src/components/file-editor/FileEditorView.vue:292 msgid "Expand" msgstr "" -#: src/components/file-editor/FileEditorView.vue:290 +#: src/components/file-editor/FileEditorView.vue:293 msgid "Solid" msgstr "" -#: src/components/file-editor/FileEditorView.vue:298 +#: src/components/file-editor/FileEditorView.vue:301 msgid "Smooth Scrolling" msgstr "" -#: src/components/file-editor/FileEditorView.vue:306 +#: src/components/file-editor/FileEditorView.vue:309 msgid "Behavior" msgstr "" -#: src/components/file-editor/FileEditorView.vue:308 +#: src/components/file-editor/FileEditorView.vue:311 msgid "Mouse Wheel Zoom" msgstr "" -#: src/components/file-editor/FileEditorView.vue:314 +#: src/components/file-editor/FileEditorView.vue:317 msgid "Format On Paste" msgstr "" -#: src/components/file-editor/FileEditorView.vue:320 +#: src/components/file-editor/FileEditorView.vue:323 #, fuzzy msgid "Format On Type" msgstr "Format" -#: src/components/file-editor/FileTree.vue:155 src/views/file/EditModal.vue:138 -#, fuzzy -msgid "Failed to load file" -msgstr "Failed to calculate size" - -#: src/components/file-editor/FileTree.vue:311 +#: src/components/file-editor/FileTree.vue:291 #, fuzzy msgid "Failed to create" msgstr "Files to compress" -#: src/components/file-editor/FileTree.vue:380 src/views/file/ListView.vue:1377 -#: src/views/file/ListView.vue:1398 +#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1429 +#: src/views/file/ListView.vue:1450 #, fuzzy msgid "Folder name" msgstr "Filename" -#: src/components/file-editor/FileTree.vue:380 src/views/file/ListView.vue:1377 -#: src/views/file/ListView.vue:1398 +#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1429 +#: src/views/file/ListView.vue:1450 #, fuzzy msgid "File name" msgstr "Filename" -#: src/components/file-editor/FileTree.vue:479 -#: src/views/container/ContainerView.vue:150 -#: src/views/container/ContainerView.vue:613 +#: src/components/file-editor/FileTree.vue:459 +#: src/views/container/ContainerView.vue:169 +#: src/views/container/ContainerView.vue:640 #: src/views/database/RedisDataView.vue:168 -#: src/views/file/composables/usePaste.ts:41 -#: src/views/file/composables/usePaste.ts:157 src/views/file/ListView.vue:348 -#: src/views/file/ListView.vue:1546 src/views/file/UploadModal.vue:749 +#: src/views/file/composables/usePaste.ts:48 +#: src/views/file/composables/usePaste.ts:164 src/views/file/ListView.vue:390 +#: src/views/file/ListView.vue:1610 src/views/file/UploadModal.vue:749 #: src/views/file/UploadModal.vue:783 msgid "Rename" msgstr "Rename" -#: src/components/file-editor/FileTree.vue:480 -#: src/components/file-editor/FileTree.vue:602 -#: src/components/file-editor/FileTree.vue:604 +#: src/components/file-editor/FileTree.vue:460 +#: src/components/file-editor/FileTree.vue:587 +#: src/components/file-editor/FileTree.vue:589 #: src/components/system/composables/useConfirm.ts:32 #: src/components/system/ConfirmDialog.vue:54 #: src/views/apps/fail2ban/IndexView.vue:96 @@ -1362,8 +1361,8 @@ msgstr "Rename" #: src/views/cert/CertView.vue:308 src/views/cert/DnsView.vue:109 #: src/views/container/ComposeView.vue:209 #: src/views/container/ComposeView.vue:289 -#: src/views/container/ContainerView.vue:188 -#: src/views/container/ContainerView.vue:584 +#: src/views/container/ContainerView.vue:211 +#: src/views/container/ContainerView.vue:611 #: src/views/container/ImageView.vue:103 src/views/container/ImageView.vue:273 #: src/views/container/NetworkView.vue:130 #: src/views/container/NetworkView.vue:219 @@ -1373,46 +1372,50 @@ msgstr "Rename" #: src/views/database/ElasticsearchDataView.vue:200 #: src/views/database/RedisDataView.vue:182 #: src/views/database/ServerList.vue:247 src/views/database/UserList.vue:165 -#: src/views/environment/PHPView.vue:107 src/views/file/ListView.vue:311 -#: src/views/file/ListView.vue:355 src/views/file/ListView.vue:1557 -#: src/views/file/ToolBar.vue:225 src/views/firewall/ForwardView.vue:98 +#: src/views/environment/PHPView.vue:107 src/views/file/ListView.vue:353 +#: src/views/file/ListView.vue:404 src/views/file/ListView.vue:1621 +#: src/views/file/ToolBar.vue:198 src/views/firewall/ForwardView.vue:98 #: src/views/firewall/ForwardView.vue:162 src/views/firewall/IpRuleView.vue:140 #: src/views/firewall/IpRuleView.vue:204 src/views/firewall/RuleView.vue:248 -#: src/views/firewall/RuleView.vue:312 src/views/project/ListView.vue:194 +#: src/views/firewall/RuleView.vue:333 src/views/project/ListView.vue:194 #: src/views/project/ListView.vue:305 src/views/setting/PasskeyModal.vue:68 #: src/views/setting/SettingUser.vue:142 src/views/setting/TokenModal.vue:87 -#: src/views/ssh/IndexView.vue:572 src/views/task/CronView.vue:169 -#: src/views/task/IndexView.vue:41 src/views/task/TaskView.vue:104 -#: src/views/toolbox/WebHookView.vue:172 src/views/website/ListView.vue:305 -#: src/views/website/ListView.vue:423 +#: src/views/ssh/IndexView.vue:614 src/views/tamper/IndexView.vue:148 +#: src/views/task/CronView.vue:169 src/views/task/IndexView.vue:41 +#: src/views/task/TaskView.vue:104 src/views/toolbox/WebHookView.vue:172 +#: src/views/website/ListView.vue:305 src/views/website/ListView.vue:423 msgid "Delete" msgstr "Delete" -#: src/components/file-editor/FileTree.vue:483 src/views/file/ListView.vue:345 -#: src/views/file/ListView.vue:1541 src/views/monitor/IndexView.vue:602 +#: src/components/file-editor/FileTree.vue:463 src/views/file/ListView.vue:387 +#: src/views/file/ListView.vue:1605 src/views/monitor/IndexView.vue:602 #: src/views/toolbox/SshView.vue:345 msgid "Download" msgstr "Download" -#: src/components/file-editor/FileTree.vue:567 +#: src/components/file-editor/FileTree.vue:549 +msgid "Target name already exists" +msgstr "" + +#: src/components/file-editor/FileTree.vue:555 #: src/views/database/RedisDataView.vue:238 #, fuzzy msgid "Renamed successfully" msgstr "Rename successful" -#: src/components/file-editor/FileTree.vue:592 +#: src/components/file-editor/FileTree.vue:573 #, fuzzy msgid "Failed to rename" msgstr "Files to compress" -#: src/components/file-editor/FileTree.vue:603 +#: src/components/file-editor/FileTree.vue:588 #: src/views/apps/nginx/NginxIndex.vue:211 -#: src/views/apps/nginx/NginxIndex.vue:275 src/views/file/ListView.vue:847 -#: src/views/file/ListView.vue:1551 +#: src/views/apps/nginx/NginxIndex.vue:275 src/views/file/ListView.vue:864 +#: src/views/file/ListView.vue:1615 msgid "Are you sure you want to delete %{ name }?" msgstr "Are you sure you want to delete %{ name }?" -#: src/components/file-editor/FileTree.vue:609 +#: src/components/file-editor/FileTree.vue:594 #: src/views/apps/fail2ban/IndexView.vue:190 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:185 #: src/views/apps/nginx/NginxIndex.vue:405 @@ -1428,53 +1431,54 @@ msgstr "Are you sure you want to delete %{ name }?" #: src/views/database/ElasticsearchDataView.vue:241 #: src/views/database/ElasticsearchDataView.vue:250 #: src/views/database/RedisDataView.vue:211 -#: src/views/database/ServerList.vue:268 src/views/database/UserList.vue:185 -#: src/views/file/ListView.vue:824 src/views/file/ListView.vue:831 -#: src/views/file/ToolBar.vue:115 src/views/firewall/ForwardView.vue:119 +#: src/views/database/ServerList.vue:269 src/views/database/UserList.vue:185 +#: src/views/file/composables/useFileOps.ts:31 +#: src/views/firewall/ForwardView.vue:119 #: src/views/firewall/ForwardView.vue:137 src/views/firewall/IpRuleView.vue:161 -#: src/views/firewall/IpRuleView.vue:179 src/views/firewall/RuleView.vue:269 -#: src/views/firewall/RuleView.vue:287 src/views/project/ListView.vue:268 +#: src/views/firewall/IpRuleView.vue:179 src/views/firewall/RuleView.vue:290 +#: src/views/firewall/RuleView.vue:308 src/views/project/ListView.vue:268 #: src/views/project/ListView.vue:278 src/views/setting/PasskeyModal.vue:96 #: src/views/setting/SettingUser.vue:173 src/views/setting/TokenModal.vue:106 -#: src/views/task/CronView.vue:231 src/views/task/CronView.vue:241 -#: src/views/task/TaskView.vue:126 src/views/toolbox/WebHookView.vue:225 -#: src/views/website/ListView.vue:379 src/views/website/ListView.vue:389 +#: src/views/tamper/IndexView.vue:109 src/views/task/CronView.vue:231 +#: src/views/task/CronView.vue:241 src/views/task/TaskView.vue:126 +#: src/views/toolbox/WebHookView.vue:225 src/views/website/ListView.vue:379 +#: src/views/website/ListView.vue:389 msgid "Deleted successfully" msgstr "Deleted successfully" -#: src/components/file-editor/FileTree.vue:628 +#: src/components/file-editor/FileTree.vue:611 #, fuzzy msgid "Failed to delete" msgstr "Files to compress" -#: src/components/file-editor/FileTree.vue:692 +#: src/components/file-editor/FileTree.vue:675 msgid "Go Up" msgstr "" -#: src/components/file-editor/FileTree.vue:704 src/views/file/ListView.vue:292 +#: src/components/file-editor/FileTree.vue:687 src/views/file/ListView.vue:334 #, fuzzy msgid "New File" msgstr "Files" -#: src/components/file-editor/FileTree.vue:705 src/views/file/ListView.vue:293 +#: src/components/file-editor/FileTree.vue:688 src/views/file/ListView.vue:335 #, fuzzy msgid "New Folder" msgstr "Folder" -#: src/components/file-editor/FileTree.vue:709 src/views/file/ToolBar.vue:179 +#: src/components/file-editor/FileTree.vue:692 src/views/file/ToolBar.vue:152 msgid "New" msgstr "New" -#: src/components/file-editor/FileTree.vue:742 +#: src/components/file-editor/FileTree.vue:725 #, fuzzy msgid "Enter path" msgstr "Container Name" -#: src/components/file-editor/FileTree.vue:772 +#: src/components/file-editor/FileTree.vue:755 msgid "No results found" msgstr "" -#: src/components/file-editor/FileTree.vue:797 +#: src/components/file-editor/FileTree.vue:780 #: src/components/system/EmptyState.vue:34 #: src/views/website/stats/GeoTab.vue:163 msgid "No data" @@ -1485,7 +1489,7 @@ msgstr "" msgid "selected" msgstr "Time Selection" -#: src/components/system/BatchActions.vue:70 src/views/file/ListView.vue:1591 +#: src/components/system/BatchActions.vue:70 src/views/file/ListView.vue:1655 #, fuzzy msgid "Clear" msgstr "Clear Log" @@ -1507,8 +1511,8 @@ msgstr "" #: src/views/apps/mysql/MysqlIndex.vue:134 #: src/views/apps/postgresql/IndexView.vue:172 #: src/views/database/ServerList.vue:106 src/views/database/UserList.vue:56 -#: src/views/file/ListView.vue:307 src/views/file/ListView.vue:341 -#: src/views/file/ListView.vue:950 src/views/file/ToolBar.vue:214 +#: src/views/file/ListView.vue:349 src/views/file/ListView.vue:383 +#: src/views/file/ListView.vue:971 src/views/file/ToolBar.vue:187 msgid "Copy" msgstr "Copy" @@ -1649,7 +1653,7 @@ msgstr "Backup" #: src/locales/menu.ts:9 src/views/cert/CertView.vue:523 #: src/views/cert/CertView.vue:611 src/views/cert/IndexView.vue:96 #: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingSafe.vue:275 -#: src/views/website/EditModal.vue:1702 +#: src/views/website/EditModal.vue:1712 msgid "Certificate" msgstr "Certificate" @@ -1661,7 +1665,7 @@ msgstr "Container" #: src/locales/menu.ts:11 src/views/apps/grafana/GrafanaConfigTuneView.vue:189 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:222 #: src/views/backup/ListView.vue:327 src/views/home/IndexView.vue:534 -#: src/views/toolbox/MigrationView.vue:546 +#: src/views/toolbox/MigrationView.vue:568 #: src/views/website/CreateModal.vue:248 msgid "Database" msgstr "Database" @@ -1701,9 +1705,9 @@ msgstr "Tasks" msgid "Toolbox" msgstr "Toolbox" -#: src/locales/menu.ts:22 src/views/app/AppView.vue:97 -#: src/views/app/EnvironmentView.vue:81 src/views/app/InstalledView.vue:106 -#: src/views/app/InstalledView.vue:205 +#: src/locales/menu.ts:22 src/views/app/AppView.vue:102 +#: src/views/app/EnvironmentView.vue:86 src/views/app/InstalledView.vue:117 +#: src/views/app/InstalledView.vue:228 #: src/views/app/TemplateDeployModal.vue:652 src/views/home/IndexView.vue:563 #: src/views/setting/TokenModal.vue:308 msgid "Update" @@ -1737,36 +1741,36 @@ msgstr "Frp Manager" msgid "Login" msgstr "Login" -#: src/views/app/AppView.vue:19 src/views/app/AppView.vue:143 -#: src/views/app/AppView.vue:147 src/views/app/EnvironmentView.vue:134 +#: src/views/app/AppView.vue:20 src/views/app/AppView.vue:148 +#: src/views/app/AppView.vue:152 src/views/app/EnvironmentView.vue:139 #: src/views/apps/prometheus/PrometheusExportersView.vue:79 #: src/views/environment/PHPView.vue:107 msgid "Install" msgstr "Install" -#: src/views/app/AppView.vue:37 src/views/app/InstalledView.vue:37 +#: src/views/app/AppView.vue:42 src/views/app/InstalledView.vue:47 msgid "App Name" msgstr "App Name" -#: src/views/app/AppView.vue:43 src/views/app/EnvironmentView.vue:37 -#: src/views/app/InstalledView.vue:43 src/views/app/InstalledView.vue:167 +#: src/views/app/AppView.vue:48 src/views/app/EnvironmentView.vue:42 +#: src/views/app/InstalledView.vue:53 src/views/app/InstalledView.vue:190 #: src/views/apps/prometheus/PrometheusExportersView.vue:32 #: src/views/environment/PHPView.vue:64 src/views/project/EditModal.vue:193 #: src/views/project/ListView.vue:44 msgid "Description" msgstr "Description" -#: src/views/app/AppView.vue:49 src/views/app/EnvironmentView.vue:49 -#: src/views/app/InstalledView.vue:49 src/views/app/InstalledView.vue:173 +#: src/views/app/AppView.vue:54 src/views/app/EnvironmentView.vue:54 +#: src/views/app/InstalledView.vue:59 src/views/app/InstalledView.vue:196 msgid "Installed Version" msgstr "Installed Version" -#: src/views/app/AppView.vue:55 src/views/app/InstalledView.vue:64 +#: src/views/app/AppView.vue:60 src/views/app/InstalledView.vue:75 msgid "Show in Home" msgstr "Show in Home" -#: src/views/app/AppView.vue:68 src/views/app/EnvironmentView.vue:55 -#: src/views/app/InstalledView.vue:77 src/views/app/InstalledView.vue:179 +#: src/views/app/AppView.vue:73 src/views/app/EnvironmentView.vue:60 +#: src/views/app/InstalledView.vue:88 src/views/app/InstalledView.vue:202 #: src/views/apps/fail2ban/IndexView.vue:63 #: src/views/apps/fail2ban/IndexView.vue:112 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:99 @@ -1780,31 +1784,33 @@ msgstr "Show in Home" #: src/views/backup/StorageView.vue:95 src/views/cert/AccountView.vue:74 #: src/views/cert/CertView.vue:189 src/views/cert/DnsView.vue:69 #: src/views/container/ComposeView.vue:102 -#: src/views/container/ContainerView.vue:108 +#: src/views/container/ContainerView.vue:113 #: src/views/container/ImageView.vue:86 src/views/container/NetworkView.vue:112 #: src/views/container/VolumeView.vue:66 src/views/database/DatabaseList.vue:68 #: src/views/database/ElasticsearchDataView.vue:117 #: src/views/database/ElasticsearchDataView.vue:169 #: src/views/database/RedisDataView.vue:124 #: src/views/database/ServerList.vue:161 src/views/database/UserList.vue:134 -#: src/views/environment/PHPView.vue:71 src/views/file/ListView.vue:1359 +#: src/views/environment/PHPView.vue:71 src/views/file/ListView.vue:1411 #: src/views/firewall/ForwardView.vue:81 src/views/firewall/IpRuleView.vue:123 #: src/views/firewall/RuleView.vue:231 src/views/firewall/ScanView.vue:256 #: src/views/project/ListView.vue:117 src/views/setting/PasskeyModal.vue:51 #: src/views/setting/SettingUser.vue:88 src/views/setting/TokenModal.vue:57 -#: src/views/task/CronView.vue:119 src/views/task/TaskView.vue:67 -#: src/views/toolbox/DiskView.vue:298 src/views/toolbox/DiskView.vue:608 -#: src/views/toolbox/WebHookView.vue:135 src/views/website/ListView.vue:246 +#: src/views/tamper/IndexView.vue:137 src/views/task/CronView.vue:119 +#: src/views/task/TaskView.vue:67 src/views/toolbox/DiskView.vue:298 +#: src/views/toolbox/DiskView.vue:608 src/views/toolbox/WebHookView.vue:135 +#: src/views/website/ListView.vue:246 msgid "Actions" msgstr "Actions" -#: src/views/app/AppView.vue:88 src/views/app/EnvironmentView.vue:73 -#: src/views/app/InstalledView.vue:97 src/views/app/InstalledView.vue:197 +#: src/views/app/AppView.vue:93 src/views/app/EnvironmentView.vue:78 +#: src/views/app/InstalledView.vue:108 src/views/app/InstalledView.vue:220 +#: src/views/container/ContainerCreate.vue:142 #, fuzzy msgid "Confirm Update" msgstr "Confirm logout?" -#: src/views/app/AppView.vue:89 src/views/app/InstalledView.vue:98 +#: src/views/app/AppView.vue:94 src/views/app/InstalledView.vue:109 msgid "" "Updating app %{ app } to %{ version } may reset related configurations to " "default state, are you sure to continue?" @@ -1812,20 +1818,20 @@ msgstr "" "Updating app %{ app } to %{ version } may reset related configurations to " "default state, are you sure to continue?" -#: src/views/app/AppView.vue:110 src/views/app/EnvironmentView.vue:94 -#: src/views/app/InstalledView.vue:118 src/views/app/InstalledView.vue:217 +#: src/views/app/AppView.vue:115 src/views/app/EnvironmentView.vue:99 +#: src/views/app/InstalledView.vue:129 src/views/app/InstalledView.vue:240 msgid "Manage" msgstr "Manage" -#: src/views/app/AppView.vue:119 src/views/app/EnvironmentView.vue:103 -#: src/views/app/InstalledView.vue:127 src/views/app/InstalledView.vue:226 +#: src/views/app/AppView.vue:124 src/views/app/EnvironmentView.vue:108 +#: src/views/app/InstalledView.vue:138 src/views/app/InstalledView.vue:249 #: src/views/apps/prometheus/PrometheusExportersView.vue:124 #: src/views/environment/PHPView.vue:85 #, fuzzy msgid "Confirm Uninstall" msgstr "Uninstall" -#: src/views/app/AppView.vue:121 src/views/app/InstalledView.vue:129 +#: src/views/app/AppView.vue:126 src/views/app/InstalledView.vue:140 #, fuzzy msgid "" "Reinstalling/Switching to a different web server will reset the " @@ -1834,53 +1840,88 @@ msgstr "" "Updating app %{ app } may reset related configurations to default state, are " "you sure to continue?" -#: src/views/app/AppView.vue:124 src/views/app/InstalledView.vue:132 +#: src/views/app/AppView.vue:129 src/views/app/InstalledView.vue:143 msgid "Are you sure to uninstall app %{ app }?" msgstr "Are you sure to uninstall app %{ app }?" -#: src/views/app/AppView.vue:125 src/views/app/AppView.vue:131 -#: src/views/app/EnvironmentView.vue:107 src/views/app/EnvironmentView.vue:113 -#: src/views/app/InstalledView.vue:133 src/views/app/InstalledView.vue:139 -#: src/views/app/InstalledView.vue:230 src/views/app/InstalledView.vue:236 +#: src/views/app/AppView.vue:130 src/views/app/AppView.vue:136 +#: src/views/app/EnvironmentView.vue:112 src/views/app/EnvironmentView.vue:118 +#: src/views/app/InstalledView.vue:144 src/views/app/InstalledView.vue:150 +#: src/views/app/InstalledView.vue:253 src/views/app/InstalledView.vue:259 #: src/views/apps/prometheus/PrometheusExportersView.vue:128 msgid "Uninstall" msgstr "Uninstall" -#: src/views/app/AppView.vue:183 src/views/app/InstalledView.vue:275 +#: src/views/app/AppView.vue:168 src/views/app/CustomModal.vue:83 +#: src/views/app/EnvironmentView.vue:156 src/views/app/InstalledView.vue:161 +#: src/views/app/InstalledView.vue:271 +#, fuzzy +msgid "Compile Params" +msgstr "Compose Name" + +#: src/views/app/AppView.vue:204 src/views/app/InstalledView.vue:311 msgid "Setup successfully" msgstr "Setup successfully" -#: src/views/app/AppView.vue:190 src/views/app/AppView.vue:198 -#: src/views/app/EnvironmentView.vue:171 src/views/app/EnvironmentView.vue:179 -#: src/views/app/EnvironmentView.vue:187 src/views/app/InstalledView.vue:282 -#: src/views/app/InstalledView.vue:290 src/views/app/InstalledView.vue:303 -#: src/views/app/InstalledView.vue:311 src/views/app/VersionModal.vue:42 +#: src/views/app/AppView.vue:211 src/views/app/AppView.vue:219 +#: src/views/app/EnvironmentView.vue:193 src/views/app/EnvironmentView.vue:201 +#: src/views/app/EnvironmentView.vue:209 src/views/app/InstalledView.vue:318 +#: src/views/app/InstalledView.vue:326 src/views/app/InstalledView.vue:339 +#: src/views/app/InstalledView.vue:347 src/views/app/VersionModal.vue:42 msgid "Task submitted, please check the progress in background tasks" msgstr "Task submitted, please check the progress in background tasks" -#: src/views/app/EnvironmentView.vue:43 +#: src/views/app/CustomModal.vue:56 +#, fuzzy +msgid "Custom Compile Params" +msgstr "Custom Logo" + +#: src/views/app/CustomModal.vue:65 +msgid "" +"Settings are saved persistently and applied automatically on every install " +"and update (recompile), no need to re-enter after reinstalling." +msgstr "" + +#: src/views/app/CustomModal.vue:71 +#, fuzzy +msgid "Pre-script" +msgstr "Description" + +#: src/views/app/CustomModal.vue:75 +msgid "" +"Runs before configure, can be used to download and prepare third-party " +"module sources." +msgstr "" + +#: src/views/app/CustomModal.vue:87 +msgid "" +"One param per line, appended to the end of configure. Lines starting with # " +"are ignored." +msgstr "" + +#: src/views/app/EnvironmentView.vue:48 #, fuzzy msgid "Latest Version" msgstr "System Version" -#: src/views/app/EnvironmentView.vue:74 src/views/app/InstalledView.vue:198 +#: src/views/app/EnvironmentView.vue:79 src/views/app/InstalledView.vue:221 #, fuzzy msgid "Are you sure to update environment %{ environment }?" msgstr "Are you sure you want to delete user %{ username }?" -#: src/views/app/EnvironmentView.vue:104 src/views/app/InstalledView.vue:227 +#: src/views/app/EnvironmentView.vue:109 src/views/app/InstalledView.vue:250 #, fuzzy msgid "Are you sure to uninstall environment %{ environment }?" msgstr "Are you sure to uninstall app %{ app }?" -#: src/views/app/EnvironmentView.vue:126 +#: src/views/app/EnvironmentView.vue:131 #: src/views/apps/prometheus/PrometheusExportersView.vue:71 #: src/views/environment/PHPView.vue:99 #, fuzzy msgid "Confirm Install" msgstr "Uninstall" -#: src/views/app/EnvironmentView.vue:127 +#: src/views/app/EnvironmentView.vue:132 #, fuzzy msgid "Are you sure to install environment %{ environment }?" msgstr "Are you sure you want to install %{ name }?" @@ -1894,11 +1935,11 @@ msgstr "Cache updated successfully" msgid "Installed" msgstr "Install" -#: src/views/app/IndexView.vue:41 src/views/app/InstalledView.vue:330 +#: src/views/app/IndexView.vue:41 src/views/app/InstalledView.vue:366 msgid "Native App" msgstr "" -#: src/views/app/IndexView.vue:42 src/views/app/InstalledView.vue:354 +#: src/views/app/IndexView.vue:42 src/views/app/InstalledView.vue:390 #, fuzzy msgid "Operating Environment" msgstr "Environment Variables" @@ -1912,29 +1953,27 @@ msgstr "Container Name" msgid "Update Cache" msgstr "Update Cache" -#: src/views/app/InstalledView.vue:21 +#: src/views/app/InstalledView.vue:32 #, fuzzy msgid "Partial" msgstr "Description" -#: src/views/app/InstalledView.vue:22 -msgid "N/A" -msgstr "" - -#: src/views/app/InstalledView.vue:55 src/views/apps/fail2ban/IndexView.vue:47 +#: src/views/app/InstalledView.vue:65 src/views/apps/fail2ban/IndexView.vue:47 #: src/views/apps/phpmyadmin/IndexView.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:38 #: src/views/apps/supervisor/IndexView.vue:63 #: src/views/container/ComposeView.vue:86 -#: src/views/container/ContainerView.vue:53 +#: src/views/container/ContainerInfoModal.vue:108 +#: src/views/container/ContainerView.vue:58 #: src/views/database/ServerList.vue:140 src/views/database/UserList.vue:113 #: src/views/firewall/RuleView.vue:80 src/views/log/HttpLog.vue:95 #: src/views/log/SSHLog.vue:63 src/views/project/ListView.vue:59 +#: src/views/tamper/IndexView.vue:127 src/views/tamper/IndexView.vue:231 #: src/views/task/TaskView.vue:34 src/views/toolbox/disk/RaidView.vue:97 #: src/views/toolbox/disk/SmartView.vue:217 -#: src/views/toolbox/MigrationView.vue:473 -#: src/views/toolbox/MigrationView.vue:696 -#: src/views/toolbox/MigrationView.vue:783 src/views/toolbox/NetworkView.vue:96 +#: src/views/toolbox/MigrationView.vue:495 +#: src/views/toolbox/MigrationView.vue:727 +#: src/views/toolbox/MigrationView.vue:814 src/views/toolbox/NetworkView.vue:96 #: src/views/toolbox/ProcessView.vue:134 src/views/toolbox/ProcessView.vue:399 #: src/views/website/stats/ErrorsTab.vue:95 msgid "Status" @@ -1981,7 +2020,7 @@ msgstr "Compose Name" msgid "Deploy Mode" msgstr "Deploy" -#: src/views/app/TemplateDeployModal.vue:340 +#: src/views/app/TemplateDeployModal.vue:340 src/views/tamper/IndexView.vue:245 msgid "Configuration" msgstr "Configuration" @@ -2049,7 +2088,8 @@ msgstr "" #: src/views/apps/minio/IndexView.vue:38 #: src/views/container/ComposeView.vue:331 #: src/views/container/ComposeView.vue:357 -#: src/views/container/ContainerCreate.vue:452 +#: src/views/container/ContainerCreate.vue:553 +#: src/views/container/ContainerInfoModal.vue:178 #: src/views/project/EditModal.vue:380 src/views/toolbox/ProcessView.vue:445 msgid "Environment Variables" msgstr "Environment Variables" @@ -2106,7 +2146,9 @@ msgstr "Update Host" #: src/views/app/TemplateDeployModal.vue:606 #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:94 -#: src/views/apps/nginx/NginxIndex.vue:186 src/views/file/ListView.vue:852 +#: src/views/apps/nginx/NginxIndex.vue:186 +#: src/views/container/ContainerInfoModal.vue:123 +#: src/views/file/ListView.vue:266 src/views/file/ListView.vue:869 #: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 msgid "Yes" @@ -2115,7 +2157,9 @@ msgstr "" #: src/views/app/TemplateDeployModal.vue:606 #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:95 -#: src/views/apps/nginx/NginxIndex.vue:186 src/views/file/ListView.vue:853 +#: src/views/apps/nginx/NginxIndex.vue:186 +#: src/views/container/ContainerInfoModal.vue:123 +#: src/views/file/ListView.vue:267 src/views/file/ListView.vue:870 #: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 #, fuzzy @@ -2133,16 +2177,16 @@ msgid "Compose Content" msgstr "Compose Name" #: src/views/app/TemplateDeployModal.vue:631 -#: src/views/toolbox/MigrationView.vue:586 -#: src/views/toolbox/MigrationView.vue:676 +#: src/views/toolbox/MigrationView.vue:608 +#: src/views/toolbox/MigrationView.vue:707 #, fuzzy msgid "Previous" msgstr "Preview" #: src/views/app/TemplateDeployModal.vue:640 #: src/views/app/TemplateDeployModal.vue:643 -#: src/views/toolbox/MigrationView.vue:447 -#: src/views/toolbox/MigrationView.vue:597 +#: src/views/toolbox/MigrationView.vue:469 +#: src/views/toolbox/MigrationView.vue:627 msgid "Next" msgstr "" @@ -2153,8 +2197,8 @@ msgid "Starting Compose" msgstr "Create Compose" #: src/views/app/TemplateView.vue:142 src/views/backup/StorageView.vue:78 -#: src/views/ssh/IndexView.vue:80 src/views/ssh/IndexView.vue:86 -#: src/views/toolbox/MigrationView.vue:471 +#: src/views/ssh/IndexView.vue:82 src/views/ssh/IndexView.vue:88 +#: src/views/toolbox/MigrationView.vue:493 msgid "Local" msgstr "" @@ -2226,9 +2270,9 @@ msgstr "Current Value" #: src/views/apps/supervisor/IndexView.vue:269 #: src/views/database/RedisDataView.vue:252 #: src/views/environment/PHPView.vue:162 src/views/environment/PHPView.vue:169 -#: src/views/firewall/ScanView.vue:336 src/views/task/CronView.vue:23 -#: src/views/task/TaskView.vue:21 src/views/website/EditModal.vue:261 -#: src/views/website/StatsView.vue:93 +#: src/views/firewall/ScanView.vue:336 src/views/tamper/IndexView.vue:207 +#: src/views/task/CronView.vue:23 src/views/task/TaskView.vue:21 +#: src/views/website/EditModal.vue:271 src/views/website/StatsView.vue:93 msgid "Cleared successfully" msgstr "Cleared successfully" @@ -2306,9 +2350,10 @@ msgstr "Error Logs" #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:68 #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:88 -#: src/views/container/ContainerCreate.vue:213 src/views/home/IndexView.vue:188 -#: src/views/home/IndexView.vue:955 src/views/monitor/IndexView.vue:990 -#: src/views/toolbox/IndexView.vue:28 +#: src/views/container/ContainerCreate.vue:314 +#: src/views/container/ContainerInfoModal.vue:125 +#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:955 +#: src/views/monitor/IndexView.vue:990 src/views/toolbox/IndexView.vue:28 msgid "Network" msgstr "Network" @@ -2385,7 +2430,7 @@ msgstr "" #: src/views/apps/pureftpd/IndexView.vue:145 #: src/views/database/DatabaseList.vue:113 #: src/views/database/RedisDataView.vue:222 -#: src/views/database/ServerList.vue:274 +#: src/views/database/ServerList.vue:275 #: src/views/database/UpdateServerModal.vue:27 #: src/views/database/UpdateUserModal.vue:23 #: src/views/database/UserList.vue:191 src/views/file/PermissionModal.vue:57 @@ -2394,7 +2439,7 @@ msgstr "" #: src/views/task/CronView.vue:259 src/views/toolbox/WebHookView.vue:200 #: src/views/toolbox/WebHookView.vue:278 src/views/website/ListView.vue:360 #: src/views/website/ListView.vue:366 src/views/website/SettingView.vue:46 -#: src/views/website/SettingView.vue:57 +#: src/views/website/SettingView.vue:57 src/views/website/SettingView.vue:88 msgid "Modified successfully" msgstr "Modified successfully" @@ -2403,7 +2448,7 @@ msgstr "Modified successfully" #: src/views/apps/mysql/MysqlIndex.vue:110 #: src/views/apps/postgresql/IndexView.vue:144 #: src/views/database/ServerList.vue:102 src/views/database/UserList.vue:52 -#: src/views/file/composables/usePaste.ts:28 +#: src/views/file/composables/usePaste.ts:29 #: src/views/setting/TokenModal.vue:155 msgid "Copied successfully" msgstr "Copied successfully" @@ -2475,7 +2520,7 @@ msgstr "" #: src/views/apps/docker/IndexView.vue:70 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:89 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:218 -#: src/views/website/EditModal.vue:1240 +#: src/views/website/EditModal.vue:1250 #, fuzzy msgid "Default" msgstr "Default Page" @@ -2493,8 +2538,8 @@ msgid "China - Tencent (Internal only)" msgstr "" #: src/views/apps/docker/IndexView.vue:194 -#: src/views/container/ContainerCreate.vue:193 -#: src/views/project/EditModal.vue:182 src/views/website/EditModal.vue:907 +#: src/views/container/ContainerCreate.vue:294 +#: src/views/project/EditModal.vue:182 src/views/website/EditModal.vue:917 msgid "Basic Settings" msgstr "Basic Settings" @@ -2503,7 +2548,7 @@ msgstr "Basic Settings" msgid "Registry Mirrors" msgstr "Listening Address" -#: src/views/apps/docker/IndexView.vue:203 src/views/website/EditModal.vue:1729 +#: src/views/apps/docker/IndexView.vue:203 src/views/website/EditModal.vue:1739 msgid "Presets" msgstr "Presets" @@ -2859,7 +2904,8 @@ msgstr "Rule List" #: src/views/apps/fail2ban/IndexView.vue:275 #: src/views/apps/fail2ban/IndexView.vue:285 -#: src/views/apps/fail2ban/IndexView.vue:289 +#: src/views/apps/fail2ban/IndexView.vue:289 src/views/tamper/IndexView.vue:340 +#: src/views/tamper/RuleModal.vue:83 msgid "Add Rule" msgstr "Add Rule" @@ -2886,12 +2932,13 @@ msgstr "" #: src/views/apps/grafana/GrafanaDataSourcesView.vue:209 #: src/views/backup/StorageView.vue:73 src/views/backup/StorageView.vue:233 #: src/views/backup/StorageView.vue:395 src/views/cert/CertView.vue:105 -#: src/views/cert/DnsView.vue:43 src/views/database/CreateServerModal.vue:100 +#: src/views/cert/DnsView.vue:43 src/views/container/ContainerInfoModal.vue:149 +#: src/views/database/CreateServerModal.vue:100 #: src/views/database/RedisDataView.vue:94 #: src/views/database/RedisKeyModal.vue:99 src/views/file/PropertyModal.vue:33 #: src/views/log/OperationLog.vue:74 src/views/project/ListView.vue:51 -#: src/views/toolbox/MigrationView.vue:694 -#: src/views/toolbox/MigrationView.vue:781 src/views/toolbox/NetworkView.vue:61 +#: src/views/toolbox/MigrationView.vue:725 +#: src/views/toolbox/MigrationView.vue:812 src/views/toolbox/NetworkView.vue:61 msgid "Type" msgstr "Type" @@ -2906,7 +2953,7 @@ msgstr "Service" msgid "Select Website" msgstr "Select Website" -#: src/views/apps/fail2ban/IndexView.vue:326 +#: src/views/apps/fail2ban/IndexView.vue:326 src/views/tamper/IndexView.vue:250 msgid "Protection Mode" msgstr "Protection Mode" @@ -2915,7 +2962,7 @@ msgstr "Protection Mode" #: src/views/backup/StorageView.vue:277 src/views/backup/StorageView.vue:331 #: src/views/backup/StorageView.vue:361 src/views/backup/StorageView.vue:433 #: src/views/backup/StorageView.vue:487 src/views/backup/StorageView.vue:514 -#: src/views/log/HttpLog.vue:85 +#: src/views/log/HttpLog.vue:85 src/views/tamper/IndexView.vue:195 msgid "Path" msgstr "Path" @@ -2955,7 +3002,7 @@ msgstr "Run As User" #: src/views/apps/frp/IndexView.vue:113 src/views/apps/frp/IndexView.vue:114 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:225 #: src/views/apps/rsync/IndexView.vue:57 src/views/apps/rsync/IndexView.vue:279 -#: src/views/apps/rsync/IndexView.vue:340 src/views/database/IndexView.vue:37 +#: src/views/apps/rsync/IndexView.vue:340 src/views/database/IndexView.vue:135 #: src/views/home/IndexView.vue:661 src/views/home/IndexView.vue:762 #: src/views/log/SSHLog.vue:73 src/views/monitor/IndexView.vue:335 #: src/views/monitor/IndexView.vue:347 src/views/setting/IndexView.vue:149 @@ -2983,7 +3030,7 @@ msgstr "" #: src/views/apps/nginx/NginxIndex.vue:529 #: src/views/database/CreateDatabaseModal.vue:86 #: src/views/database/CreateUserModal.vue:104 -#: src/views/database/DatabaseList.vue:28 src/views/database/IndexView.vue:38 +#: src/views/database/DatabaseList.vue:28 src/views/database/IndexView.vue:136 #: src/views/database/UserList.vue:73 msgid "Server" msgstr "Server" @@ -3157,10 +3204,12 @@ msgstr "Select Directory" #: src/views/apps/grafana/GrafanaDataSourcesView.vue:111 #: src/views/apps/nginx/NginxIndex.vue:202 #: src/views/apps/nginx/NginxIndex.vue:266 src/views/backup/StorageView.vue:111 -#: src/views/container/ComposeView.vue:123 src/views/file/ListView.vue:332 -#: src/views/file/ListView.vue:1538 src/views/project/ListView.vue:177 -#: src/views/ssh/IndexView.vue:560 src/views/task/CronView.vue:155 -#: src/views/toolbox/WebHookView.vue:158 src/views/website/ListView.vue:259 +#: src/views/container/ComposeView.vue:123 +#: src/views/container/ContainerView.vue:177 src/views/file/ListView.vue:374 +#: src/views/file/ListView.vue:1602 src/views/project/ListView.vue:177 +#: src/views/ssh/IndexView.vue:602 src/views/tamper/IndexView.vue:143 +#: src/views/task/CronView.vue:155 src/views/toolbox/WebHookView.vue:158 +#: src/views/website/ListView.vue:259 msgid "Edit" msgstr "Edit" @@ -3201,12 +3250,12 @@ msgstr "Access Log" #: src/views/database/CreateServerModal.vue:179 #: src/views/database/CreateUserModal.vue:120 #: src/views/database/ServerList.vue:82 -#: src/views/database/UpdateServerModal.vue:104 +#: src/views/database/UpdateServerModal.vue:105 #: src/views/database/UpdateUserModal.vue:63 src/views/database/UserList.vue:32 #: src/views/login/IndexView.vue:261 src/views/setting/CreateModal.vue:53 #: src/views/setting/PasswordModal.vue:42 src/views/ssh/CreateModal.vue:80 #: src/views/ssh/CreateModal.vue:89 src/views/ssh/UpdateModal.vue:86 -#: src/views/ssh/UpdateModal.vue:95 src/views/website/EditModal.vue:1981 +#: src/views/ssh/UpdateModal.vue:95 src/views/website/EditModal.vue:1991 msgid "Password" msgstr "Password" @@ -3844,7 +3893,7 @@ msgid "Protocol" msgstr "Protocol" #: src/views/apps/nginx/NginxIndex.vue:175 -#: src/views/apps/nginx/NginxIndex.vue:635 src/views/website/EditModal.vue:1104 +#: src/views/apps/nginx/NginxIndex.vue:635 src/views/website/EditModal.vue:1114 #, fuzzy msgid "Proxy Pass" msgstr "Proxy Address" @@ -3902,15 +3951,15 @@ msgstr "" #: src/views/apps/nginx/NginxIndex.vue:533 #: src/views/database/CreateServerModal.vue:92 -#: src/views/database/IndexView.vue:58 src/views/website/EditModal.vue:1041 +#: src/views/database/IndexView.vue:184 src/views/website/EditModal.vue:1051 msgid "Add Server" msgstr "Add Server" -#: src/views/apps/nginx/NginxIndex.vue:546 src/views/website/EditModal.vue:960 +#: src/views/apps/nginx/NginxIndex.vue:546 src/views/website/EditModal.vue:970 msgid "Upstream" msgstr "" -#: src/views/apps/nginx/NginxIndex.vue:550 src/views/website/EditModal.vue:1057 +#: src/views/apps/nginx/NginxIndex.vue:550 src/views/website/EditModal.vue:1067 #, fuzzy msgid "Add Upstream" msgstr "Add User" @@ -3974,7 +4023,7 @@ msgstr "Private Key" msgid "e.g. /path/to/key.pem" msgstr "" -#: src/views/apps/nginx/NginxIndex.vue:713 src/views/website/EditModal.vue:971 +#: src/views/apps/nginx/NginxIndex.vue:713 src/views/website/EditModal.vue:981 msgid "Load Balancing Algorithm" msgstr "" @@ -4005,19 +4054,19 @@ msgstr "Options" msgid "No servers added yet" msgstr "" -#: src/views/apps/nginx/NginxIndex.vue:777 src/views/website/EditModal.vue:1001 -#: src/views/website/EditModal.vue:1138 +#: src/views/apps/nginx/NginxIndex.vue:777 src/views/website/EditModal.vue:1011 +#: src/views/website/EditModal.vue:1148 #, fuzzy msgid "DNS Resolver" msgstr "DNS Records to Set" -#: src/views/apps/nginx/NginxIndex.vue:780 src/views/website/EditModal.vue:1004 -#: src/views/website/EditModal.vue:1141 +#: src/views/apps/nginx/NginxIndex.vue:780 src/views/website/EditModal.vue:1014 +#: src/views/website/EditModal.vue:1151 msgid "e.g., 8.8.8.8" msgstr "" -#: src/views/apps/nginx/NginxIndex.vue:786 src/views/website/EditModal.vue:1010 -#: src/views/website/EditModal.vue:1147 +#: src/views/apps/nginx/NginxIndex.vue:786 src/views/website/EditModal.vue:1020 +#: src/views/website/EditModal.vue:1157 #, fuzzy msgid "Resolver Timeout" msgstr "Login Timeout" @@ -4035,18 +4084,66 @@ msgstr "" msgid "OpenSearch cluster and network settings." msgstr "" +#: src/views/apps/pgadmin/IndexView.vue:48 +#, fuzzy +msgid "Password reset successfully" +msgstr "Panel restarted successfully" + +#: src/views/apps/pgadmin/IndexView.vue:65 #: src/views/apps/phpmyadmin/IndexView.vue:69 msgid "Access Information" msgstr "Access Information" +#: src/views/apps/pgadmin/IndexView.vue:68 #: src/views/apps/phpmyadmin/IndexView.vue:71 msgid "Access URL:" msgstr "Access URL:" +#: src/views/apps/pgadmin/IndexView.vue:71 +#, fuzzy +msgid "Login Email" +msgstr "Login" + +#: src/views/apps/pgadmin/IndexView.vue:74 +#, fuzzy +msgid "Login Password" +msgstr "Root Password" + +#: src/views/apps/pgadmin/IndexView.vue:80 +msgid "" +"If the password has been changed in pgAdmin, the actual password shall " +"prevail." +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:87 #: src/views/apps/phpmyadmin/IndexView.vue:74 msgid "Modify Port" msgstr "Modify Port" +#: src/views/apps/pgadmin/IndexView.vue:99 +#, fuzzy +msgid "Modify pgAdmin access port" +msgstr "Modify phpMyAdmin access port" + +#: src/views/apps/pgadmin/IndexView.vue:101 +#, fuzzy +msgid "Reset Password" +msgstr "Root Password" + +#: src/views/apps/pgadmin/IndexView.vue:108 +#, fuzzy +msgid "New password" +msgstr "Enter password" + +#: src/views/apps/pgadmin/IndexView.vue:116 src/views/toolbox/SshView.vue:314 +#, fuzzy +msgid "Reset" +msgstr "Presets" + +#: src/views/apps/pgadmin/IndexView.vue:119 +msgid "Reset the login password of the pgAdmin administrator account" +msgstr "" + #: src/views/apps/phpmyadmin/IndexView.vue:86 msgid "Modify phpMyAdmin access port" msgstr "Modify phpMyAdmin access port" @@ -4128,7 +4225,7 @@ msgid "Application Logs" msgstr "Operation successful" #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:174 -#: src/views/toolbox/MigrationView.vue:406 +#: src/views/toolbox/MigrationView.vue:428 #, fuzzy msgid "Connection" msgstr "Compressing..." @@ -4162,7 +4259,7 @@ msgstr "" #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:226 #: src/views/apps/redis/RedisConfigTuneView.vue:182 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:176 -#: src/views/container/ContainerCreate.vue:426 src/views/home/IndexView.vue:688 +#: src/views/container/ContainerCreate.vue:527 src/views/home/IndexView.vue:688 #: src/views/home/IndexView.vue:761 src/views/monitor/IndexView.vue:532 #: src/views/monitor/IndexView.vue:539 src/views/monitor/IndexView.vue:555 #: src/views/monitor/IndexView.vue:867 src/views/toolbox/BenchmarkView.vue:178 @@ -4365,7 +4462,7 @@ msgid "Are you sure you want to install %{ name }?" msgstr "Are you sure you want to install %{ name }?" #: src/views/apps/prometheus/PrometheusExportersView.vue:112 -#: src/views/website/EditModal.vue:2017 +#: src/views/website/EditModal.vue:2027 #, fuzzy msgid "Config" msgstr "Configure" @@ -4404,11 +4501,11 @@ msgstr "" #: src/views/database/CreateServerModal.vue:167 #: src/views/database/CreateUserModal.vue:112 #: src/views/database/ServerList.vue:73 -#: src/views/database/UpdateServerModal.vue:96 +#: src/views/database/UpdateServerModal.vue:97 #: src/views/database/UserList.vue:22 src/views/login/IndexView.vue:252 #: src/views/setting/CreateModal.vue:46 src/views/setting/SettingUser.vue:24 #: src/views/ssh/CreateModal.vue:86 src/views/ssh/UpdateModal.vue:92 -#: src/views/website/EditModal.vue:1980 +#: src/views/website/EditModal.vue:1990 msgid "Username" msgstr "Username" @@ -4429,7 +4526,7 @@ msgid "User Management" msgstr "User Management" #: src/views/apps/pureftpd/IndexView.vue:191 -#: src/views/website/EditModal.vue:1982 +#: src/views/website/EditModal.vue:1992 msgid "Add User" msgstr "Add User" @@ -4441,7 +4538,7 @@ msgstr "Run Log" #: src/views/apps/pureftpd/IndexView.vue:227 #: src/views/database/CreateDatabaseModal.vue:102 #: src/views/database/CreateUserModal.vue:90 -#: src/views/database/IndexView.vue:51 src/views/setting/CreateModal.vue:38 +#: src/views/database/IndexView.vue:177 src/views/setting/CreateModal.vue:38 #: src/views/setting/IndexView.vue:155 msgid "Create User" msgstr "Create User" @@ -4683,7 +4780,7 @@ msgstr "" #: src/views/database/CreateServerModal.vue:143 #: src/views/database/CreateUserModal.vue:134 #: src/views/database/ServerList.vue:113 -#: src/views/database/UpdateServerModal.vue:75 +#: src/views/database/UpdateServerModal.vue:76 #: src/views/database/UserList.vue:63 src/views/ssh/CreateModal.vue:65 #: src/views/ssh/UpdateModal.vue:71 src/views/toolbox/SystemView.vue:229 msgid "Host" @@ -4694,7 +4791,7 @@ msgstr "Host" #: src/views/database/CreateServerModal.vue:190 #: src/views/database/CreateUserModal.vue:160 #: src/views/database/DatabaseList.vue:49 src/views/database/ServerList.vue:123 -#: src/views/database/UpdateServerModal.vue:113 +#: src/views/database/UpdateServerModal.vue:114 #: src/views/database/UpdateUserModal.vue:78 src/views/database/UserList.vue:96 msgid "Comment" msgstr "Comment" @@ -4979,11 +5076,12 @@ msgstr "Restore Backup" #: src/views/cert/CertView.vue:614 src/views/cert/UploadCertModal.vue:54 #: src/views/setting/SettingSafe.vue:282 src/views/ssh/CreateModal.vue:81 #: src/views/ssh/CreateModal.vue:92 src/views/ssh/UpdateModal.vue:87 -#: src/views/ssh/UpdateModal.vue:98 src/views/website/EditModal.vue:1712 +#: src/views/ssh/UpdateModal.vue:98 src/views/website/EditModal.vue:1722 msgid "Private Key" msgstr "Private Key" #: src/views/backup/StorageView.vue:87 +#: src/views/container/ContainerInfoModal.vue:113 #, fuzzy msgid "Created At" msgstr "Create Host" @@ -4993,9 +5091,10 @@ msgstr "Create Host" msgid "Are you sure you want to delete this storage?" msgstr "Are you sure you want to delete this user?" -#: src/views/backup/StorageView.vue:173 src/views/setting/PasswordModal.vue:21 -#: src/views/setting/TokenModal.vue:178 src/views/setting/TwoFaModal.vue:28 -#: src/views/ssh/UpdateModal.vue:32 +#: src/views/backup/StorageView.vue:173 +#: src/views/container/ContainerCreate.vue:118 +#: src/views/setting/PasswordModal.vue:21 src/views/setting/TokenModal.vue:178 +#: src/views/setting/TwoFaModal.vue:28 src/views/ssh/UpdateModal.vue:32 msgid "Updated successfully" msgstr "Updated successfully" @@ -5080,7 +5179,7 @@ msgstr "Container Name" #: src/views/backup/StorageView.vue:290 src/views/backup/StorageView.vue:446 #: src/views/database/CreateServerModal.vue:154 -#: src/views/database/UpdateServerModal.vue:86 +#: src/views/database/UpdateServerModal.vue:87 #: src/views/firewall/ForwardView.vue:33 src/views/firewall/RuleView.vue:67 #: src/views/firewall/ScanView.vue:300 src/views/firewall/ScanView.vue:316 #: src/views/firewall/ScanView.vue:380 src/views/log/SSHLog.vue:83 @@ -5227,11 +5326,11 @@ msgstr "Enter HMAC" #: src/views/cert/CertView.vue:82 src/views/cert/CertView.vue:451 #: src/views/cert/CreateCertModal.vue:102 src/views/project/CreateModal.vue:661 -#: src/views/website/CreateModal.vue:201 src/views/website/EditModal.vue:866 +#: src/views/website/CreateModal.vue:201 src/views/website/EditModal.vue:876 msgid "Domain" msgstr "Domain" -#: src/views/cert/CertView.vue:127 src/views/file/ToolBar.vue:181 +#: src/views/cert/CertView.vue:127 src/views/file/ToolBar.vue:154 #: src/views/file/UploadModal.vue:676 src/views/monitor/IndexView.vue:596 msgid "Upload" msgstr "Upload" @@ -5240,7 +5339,7 @@ msgstr "Upload" msgid "Associated Account" msgstr "Associated Account" -#: src/views/cert/CertView.vue:148 src/views/website/EditModal.vue:1639 +#: src/views/cert/CertView.vue:148 src/views/website/EditModal.vue:1649 msgid "Issuer" msgstr "Issuer" @@ -5258,7 +5357,7 @@ msgstr "" msgid "Auto Renewal" msgstr "Auto Renew" -#: src/views/cert/CertView.vue:208 src/views/website/EditModal.vue:2171 +#: src/views/cert/CertView.vue:208 src/views/website/EditModal.vue:2181 msgid "Issue" msgstr "Issue" @@ -5306,12 +5405,12 @@ msgstr "Select account for certificate issuance" #: src/views/cert/CertView.vue:487 src/views/cert/CreateCertModal.vue:134 #: src/views/cert/CreateDnsModal.vue:71 src/views/cert/DnsView.vue:196 -#: src/views/cert/IndexView.vue:98 src/views/website/EditModal.vue:2162 +#: src/views/cert/IndexView.vue:98 src/views/website/EditModal.vue:2172 msgid "DNS" msgstr "DNS" #: src/views/cert/CertView.vue:490 src/views/cert/CreateCertModal.vue:137 -#: src/views/website/EditModal.vue:2165 +#: src/views/website/EditModal.vue:2175 msgid "Select DNS for certificate issuance" msgstr "Select DNS for certificate issuance" @@ -5329,12 +5428,12 @@ msgid "Alias record, e.g. _acme-challenge.delegated.com" msgstr "" #: src/views/cert/CertView.vue:528 src/views/cert/UploadCertModal.vue:50 -#: src/views/website/EditModal.vue:1706 +#: src/views/website/EditModal.vue:1716 msgid "Enter the content of the PEM certificate file" msgstr "Enter the content of the PEM certificate file" #: src/views/cert/CertView.vue:540 src/views/cert/UploadCertModal.vue:58 -#: src/views/website/EditModal.vue:1716 +#: src/views/website/EditModal.vue:1726 msgid "Enter the content of the KEY private key file" msgstr "Enter the content of the KEY private key file" @@ -5555,8 +5654,8 @@ msgid "Are you sure you want to stop compose %{ name }?" msgstr "Are you sure you want to stop compose %{ name }?" #: src/views/container/ComposeView.vue:184 -#: src/views/container/ContainerView.vue:276 -#: src/views/container/ContainerView.vue:342 +#: src/views/container/ContainerView.vue:303 +#: src/views/container/ContainerView.vue:369 msgid "Stop successful" msgstr "Stop successful" @@ -5566,8 +5665,8 @@ msgstr "Are you sure you want to delete compose %{ name }?" #: src/views/container/ComposeView.vue:205 #: src/views/container/ComposeView.vue:268 -#: src/views/container/ContainerView.vue:311 -#: src/views/container/ContainerView.vue:369 +#: src/views/container/ContainerView.vue:338 +#: src/views/container/ContainerView.vue:396 #: src/views/container/ImageView.vue:122 #: src/views/container/NetworkView.vue:149 #: src/views/container/VolumeView.vue:102 @@ -5593,371 +5692,460 @@ msgstr "Compose" msgid "Edit Compose" msgstr "Edit Compose" -#: src/views/container/ContainerCreate.vue:54 +#: src/views/container/ContainerCreate.vue:58 msgid "Always" msgstr "Always" -#: src/views/container/ContainerCreate.vue:55 +#: src/views/container/ContainerCreate.vue:59 msgid "On failure (default 5 retries)" msgstr "On failure (default 5 retries)" -#: src/views/container/ContainerCreate.vue:56 +#: src/views/container/ContainerCreate.vue:60 msgid "Unless stopped" msgstr "Unless stopped" -#: src/views/container/ContainerCreate.vue:65 +#: src/views/container/ContainerCreate.vue:69 +#: src/views/container/ContainerInfoModal.vue:168 msgid "Read-Write" msgstr "Read-Write" -#: src/views/container/ContainerCreate.vue:66 +#: src/views/container/ContainerCreate.vue:70 +#: src/views/container/ContainerInfoModal.vue:168 msgid "Read-Only" msgstr "Read-Only" -#: src/views/container/ContainerCreate.vue:125 +#: src/views/container/ContainerCreate.vue:135 #: src/views/container/ImageView.vue:167 #, fuzzy msgid "Please enter image name" msgstr "Please enter absolute path" -#: src/views/container/ContainerCreate.vue:182 -#: src/views/container/ContainerView.vue:553 +#: src/views/container/ContainerCreate.vue:143 +msgid "" +"Updating will remove the current container and recreate it with the new " +"configuration. Data not stored in mounted volumes will be lost. Continue?" +msgstr "" + +#: src/views/container/ContainerCreate.vue:146 src/views/file/ListView.vue:286 +#: src/views/file/UploadModal.vue:506 src/views/file/UploadModal.vue:641 +#: src/views/toolbox/MigrationView.vue:207 +#, fuzzy +msgid "Continue" +msgstr "Container" + +#: src/views/container/ContainerCreate.vue:283 +#, fuzzy +msgid "Edit Container" +msgstr "Container" + +#: src/views/container/ContainerCreate.vue:283 +#: src/views/container/ContainerView.vue:580 msgid "Create Container" msgstr "Create Container" -#: src/views/container/ContainerCreate.vue:195 -#: src/views/container/ContainerView.vue:46 +#: src/views/container/ContainerCreate.vue:296 +#: src/views/container/ContainerInfoModal.vue:99 +#: src/views/container/ContainerView.vue:51 msgid "Container Name" msgstr "Container Name" -#: src/views/container/ContainerCreate.vue:200 +#: src/views/container/ContainerCreate.vue:301 msgid "Optional, auto-generated if empty" msgstr "" -#: src/views/container/ContainerCreate.vue:204 -#: src/views/container/ContainerView.vue:73 +#: src/views/container/ContainerCreate.vue:305 +#: src/views/container/ContainerInfoModal.vue:105 +#: src/views/container/ContainerView.vue:78 #: src/views/container/ImageView.vue:60 msgid "Image" msgstr "Image" -#: src/views/container/ContainerCreate.vue:209 +#: src/views/container/ContainerCreate.vue:310 msgid "e.g., nginx, mysql:8.4, your_username/your_image:tag" msgstr "" -#: src/views/container/ContainerCreate.vue:217 +#: src/views/container/ContainerCreate.vue:318 #, fuzzy msgid "Select network" msgstr "Select server" -#: src/views/container/ContainerCreate.vue:221 +#: src/views/container/ContainerCreate.vue:322 +#: src/views/container/ContainerInfoModal.vue:119 #: src/views/project/EditModal.vue:298 msgid "Restart Policy" msgstr "Restart Policy" -#: src/views/container/ContainerCreate.vue:225 +#: src/views/container/ContainerCreate.vue:326 msgid "Select restart policy" msgstr "Select restart policy" -#: src/views/container/ContainerCreate.vue:229 +#: src/views/container/ContainerCreate.vue:330 #, fuzzy msgid "Container Options" msgstr "Container Count" -#: src/views/container/ContainerCreate.vue:233 +#: src/views/container/ContainerCreate.vue:334 msgid "TTY (-t)" msgstr "TTY (-t)" -#: src/views/container/ContainerCreate.vue:238 +#: src/views/container/ContainerCreate.vue:339 msgid "STDIN (-i)" msgstr "STDIN (-i)" -#: src/views/container/ContainerCreate.vue:243 +#: src/views/container/ContainerCreate.vue:344 msgid "Auto Remove" msgstr "Auto Remove" -#: src/views/container/ContainerCreate.vue:248 +#: src/views/container/ContainerCreate.vue:349 +#: src/views/container/ContainerInfoModal.vue:122 #, fuzzy msgid "Privileged" msgstr "Privileges" -#: src/views/container/ContainerCreate.vue:257 -#: src/views/container/ContainerCreate.vue:268 +#: src/views/container/ContainerCreate.vue:358 +#: src/views/container/ContainerCreate.vue:369 msgid "Port Mapping" msgstr "Port Mapping" -#: src/views/container/ContainerCreate.vue:259 +#: src/views/container/ContainerCreate.vue:360 #, fuzzy msgid "Port Mode" msgstr "Protection Mode" -#: src/views/container/ContainerCreate.vue:261 +#: src/views/container/ContainerCreate.vue:362 msgid "Map Ports" msgstr "Map Ports" -#: src/views/container/ContainerCreate.vue:262 +#: src/views/container/ContainerCreate.vue:363 msgid "Expose All" msgstr "Expose All" -#: src/views/container/ContainerCreate.vue:280 +#: src/views/container/ContainerCreate.vue:381 #, fuzzy msgid "IP (optional)" msgstr "Optional" -#: src/views/container/ContainerCreate.vue:289 +#: src/views/container/ContainerCreate.vue:390 #, fuzzy msgid "Host Start" msgstr "Host (Start)" -#: src/views/container/ContainerCreate.vue:298 +#: src/views/container/ContainerCreate.vue:399 #, fuzzy msgid "Host End" msgstr "Host (End)" -#: src/views/container/ContainerCreate.vue:307 +#: src/views/container/ContainerCreate.vue:408 #, fuzzy msgid "Container Start" msgstr "Container (Start)" -#: src/views/container/ContainerCreate.vue:316 +#: src/views/container/ContainerCreate.vue:417 #, fuzzy msgid "Container End" msgstr "Container (End)" -#: src/views/container/ContainerCreate.vue:331 +#: src/views/container/ContainerCreate.vue:432 msgid "" "All exposed ports in the image will be automatically mapped to random host " "ports." msgstr "" -#: src/views/container/ContainerCreate.vue:340 +#: src/views/container/ContainerCreate.vue:441 #: src/views/container/IndexView.vue:26 msgid "Volumes" msgstr "Volumes" -#: src/views/container/ContainerCreate.vue:342 +#: src/views/container/ContainerCreate.vue:443 #, fuzzy msgid "Volume Mounts" msgstr "Volumes" -#: src/views/container/ContainerCreate.vue:352 +#: src/views/container/ContainerCreate.vue:453 #, fuzzy msgid "Host path" msgstr "Host (Start)" -#: src/views/container/ContainerCreate.vue:358 +#: src/views/container/ContainerCreate.vue:459 #, fuzzy msgid "Container path" msgstr "Container Name" -#: src/views/container/ContainerCreate.vue:369 +#: src/views/container/ContainerCreate.vue:470 msgid "" "Mount host directories or volumes into the container. Use absolute paths for " "host directories." msgstr "" -#: src/views/container/ContainerCreate.vue:378 +#: src/views/container/ContainerCreate.vue:479 #: src/views/project/EditModal.vue:458 #, fuzzy msgid "Resource Limits" msgstr "Resource Overview" -#: src/views/container/ContainerCreate.vue:382 +#: src/views/container/ContainerCreate.vue:483 msgid "" "Set resource limits to prevent the container from consuming too many system " "resources. Set to 0 for no limit." msgstr "" -#: src/views/container/ContainerCreate.vue:390 +#: src/views/container/ContainerCreate.vue:491 #, fuzzy msgid "Memory (MB)" msgstr "Memory" -#: src/views/container/ContainerCreate.vue:395 -#: src/views/container/ContainerCreate.vue:407 +#: src/views/container/ContainerCreate.vue:496 +#: src/views/container/ContainerCreate.vue:508 msgid "0 = no limit" msgstr "" -#: src/views/container/ContainerCreate.vue:400 -#: src/views/container/ContainerCreate.vue:429 +#: src/views/container/ContainerCreate.vue:501 +#: src/views/container/ContainerCreate.vue:530 #: src/views/toolbox/PanelView.vue:113 #, fuzzy msgid "CPU Cores" msgstr "CPU Shares" -#: src/views/container/ContainerCreate.vue:412 -#: src/views/container/ContainerCreate.vue:436 +#: src/views/container/ContainerCreate.vue:513 +#: src/views/container/ContainerCreate.vue:537 msgid "CPU Shares" msgstr "CPU Shares" -#: src/views/container/ContainerCreate.vue:424 +#: src/views/container/ContainerCreate.vue:525 #, fuzzy msgid "Resource Limit Description" msgstr "Resource Overview" -#: src/views/container/ContainerCreate.vue:427 +#: src/views/container/ContainerCreate.vue:528 msgid "Maximum memory the container can use, in MB. 0 means no limit." msgstr "" -#: src/views/container/ContainerCreate.vue:431 +#: src/views/container/ContainerCreate.vue:532 msgid "" "Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 " "cores." msgstr "" -#: src/views/container/ContainerCreate.vue:438 +#: src/views/container/ContainerCreate.vue:539 msgid "" "Relative CPU weight. Default is 1024. Higher values get more CPU time when " "competing." msgstr "" -#: src/views/container/ContainerCreate.vue:450 -#: src/views/toolbox/MigrationView.vue:470 +#: src/views/container/ContainerCreate.vue:551 +#: src/views/toolbox/MigrationView.vue:492 #, fuzzy msgid "Environment" msgstr "Environment Variables" -#: src/views/container/ContainerCreate.vue:462 +#: src/views/container/ContainerCreate.vue:563 #: src/views/project/EditModal.vue:390 #, fuzzy msgid "Variable name" msgstr "Variable Name" -#: src/views/container/ContainerCreate.vue:468 +#: src/views/container/ContainerCreate.vue:569 #: src/views/project/EditModal.vue:396 #, fuzzy msgid "Variable value" msgstr "Variable Value" -#: src/views/container/ContainerCreate.vue:476 +#: src/views/container/ContainerCreate.vue:577 #, fuzzy msgid "Startup Commands" msgstr "Start Command" -#: src/views/container/ContainerCreate.vue:478 src/views/home/IndexView.vue:662 -#: src/views/home/IndexView.vue:763 src/views/monitor/IndexView.vue:335 -#: src/views/monitor/IndexView.vue:347 +#: src/views/container/ContainerCreate.vue:579 +#: src/views/container/ContainerInfoModal.vue:139 +#: src/views/home/IndexView.vue:662 src/views/home/IndexView.vue:763 +#: src/views/monitor/IndexView.vue:335 src/views/monitor/IndexView.vue:347 msgid "Command" msgstr "Command" -#: src/views/container/ContainerCreate.vue:481 +#: src/views/container/ContainerCreate.vue:582 #, fuzzy msgid "Command argument" msgstr "Command" -#: src/views/container/ContainerCreate.vue:485 +#: src/views/container/ContainerCreate.vue:586 msgid "Override the default CMD of the image" msgstr "" -#: src/views/container/ContainerCreate.vue:490 +#: src/views/container/ContainerCreate.vue:591 msgid "Entrypoint" msgstr "Entrypoint" -#: src/views/container/ContainerCreate.vue:493 +#: src/views/container/ContainerCreate.vue:594 #, fuzzy msgid "Entrypoint argument" msgstr "Entrypoint" -#: src/views/container/ContainerCreate.vue:497 +#: src/views/container/ContainerCreate.vue:598 msgid "Override the default ENTRYPOINT of the image" msgstr "" -#: src/views/container/ContainerCreate.vue:502 +#: src/views/container/ContainerCreate.vue:603 +#: src/views/container/ContainerInfoModal.vue:192 #: src/views/container/NetworkView.vue:321 #: src/views/container/VolumeView.vue:215 msgid "Labels" msgstr "Labels" -#: src/views/container/ContainerCreate.vue:504 +#: src/views/container/ContainerCreate.vue:605 #, fuzzy msgid "Container Labels" msgstr "Container Name" -#: src/views/container/ContainerCreate.vue:514 +#: src/views/container/ContainerCreate.vue:615 #, fuzzy msgid "Label name" msgstr "Label Name" -#: src/views/container/ContainerCreate.vue:520 +#: src/views/container/ContainerCreate.vue:621 #, fuzzy msgid "Label value" msgstr "Label Value" -#: src/views/container/ContainerView.vue:80 +#: src/views/container/ContainerInfoModal.vue:86 +#, fuzzy +msgid "Container Info" +msgstr "Container (End)" + +#: src/views/container/ContainerInfoModal.vue:96 +#: src/views/toolbox/disk/SmartView.vue:280 src/views/toolbox/PanelView.vue:98 +#, fuzzy +msgid "Basic Info" +msgstr "Basic" + +#: src/views/container/ContainerInfoModal.vue:102 +#, fuzzy +msgid "Container ID" +msgstr "Container" + +#: src/views/container/ContainerInfoModal.vue:116 +#, fuzzy +msgid "Started At" +msgstr "Start" + +#: src/views/container/ContainerInfoModal.vue:133 +#: src/views/container/ContainerView.vue:85 msgid "Ports (Host->Container)" msgstr "Ports (Host->Container)" -#: src/views/container/ContainerView.vue:173 -#: src/views/container/ContainerView.vue:575 +#: src/views/container/ContainerInfoModal.vue:145 +#, fuzzy +msgid "Mounts" +msgstr "Mount" + +#: src/views/container/ContainerInfoModal.vue:150 +msgid "Host Path / Volume" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:151 +#, fuzzy +msgid "Container Path" +msgstr "Container Name" + +#: src/views/container/ContainerInfoModal.vue:152 +#, fuzzy +msgid "Mode" +msgstr "Model" + +#: src/views/container/ContainerInfoModal.vue:174 +#, fuzzy +msgid "No mounts" +msgstr "Not used" + +#: src/views/container/ContainerInfoModal.vue:188 +#: src/views/toolbox/ProcessView.vue:453 +#, fuzzy +msgid "No environment variables" +msgstr "Environment Variables" + +#: src/views/container/ContainerInfoModal.vue:207 +#: src/views/toolbox/WebHookView.vue:73 src/views/toolbox/WebHookView.vue:339 +#: src/views/toolbox/WebHookView.vue:380 +msgid "Raw Output" +msgstr "" + +#: src/views/container/ContainerView.vue:130 +#, fuzzy +msgid "Info" +msgstr "PHPInfo" + +#: src/views/container/ContainerView.vue:196 +#: src/views/container/ContainerView.vue:602 msgid "Force Stop" msgstr "Force Stop" -#: src/views/container/ContainerView.vue:178 -#: src/views/container/ContainerView.vue:578 +#: src/views/container/ContainerView.vue:201 +#: src/views/container/ContainerView.vue:605 msgid "Pause" msgstr "Pause" -#: src/views/container/ContainerView.vue:183 -#: src/views/container/ContainerView.vue:581 +#: src/views/container/ContainerView.vue:206 +#: src/views/container/ContainerView.vue:608 msgid "Resume" msgstr "Resume" -#: src/views/container/ContainerView.vue:227 src/views/file/ListView.vue:1567 +#: src/views/container/ContainerView.vue:254 src/views/file/ListView.vue:1631 msgid "More" msgstr "More" -#: src/views/container/ContainerView.vue:259 +#: src/views/container/ContainerView.vue:286 msgid "Rename successful" msgstr "Rename successful" -#: src/views/container/ContainerView.vue:269 -#: src/views/container/ContainerView.vue:333 +#: src/views/container/ContainerView.vue:296 +#: src/views/container/ContainerView.vue:360 msgid "Start successful" msgstr "Start successful" -#: src/views/container/ContainerView.vue:283 -#: src/views/container/ContainerView.vue:351 +#: src/views/container/ContainerView.vue:310 +#: src/views/container/ContainerView.vue:378 msgid "Restart successful" msgstr "Restart successful" -#: src/views/container/ContainerView.vue:290 -#: src/views/container/ContainerView.vue:360 +#: src/views/container/ContainerView.vue:317 +#: src/views/container/ContainerView.vue:387 msgid "Force stop successful" msgstr "Force stop successful" -#: src/views/container/ContainerView.vue:297 -#: src/views/container/ContainerView.vue:378 +#: src/views/container/ContainerView.vue:324 +#: src/views/container/ContainerView.vue:405 msgid "Pause successful" msgstr "Pause successful" -#: src/views/container/ContainerView.vue:304 -#: src/views/container/ContainerView.vue:387 +#: src/views/container/ContainerView.vue:331 +#: src/views/container/ContainerView.vue:414 msgid "Resume successful" msgstr "Resume successful" -#: src/views/container/ContainerView.vue:320 +#: src/views/container/ContainerView.vue:347 #: src/views/container/ImageView.vue:131 #: src/views/container/NetworkView.vue:158 #: src/views/container/VolumeView.vue:111 msgid "Cleanup successful" msgstr "Cleanup successful" -#: src/views/container/ContainerView.vue:403 +#: src/views/container/ContainerView.vue:430 msgid "Terminal container not found" msgstr "" -#: src/views/container/ContainerView.vue:486 +#: src/views/container/ContainerView.vue:513 #, fuzzy msgid "Failed to connect to container terminal" msgstr "Failed to get log stream" -#: src/views/container/ContainerView.vue:562 +#: src/views/container/ContainerView.vue:589 msgid "Cleanup Containers" msgstr "Cleanup Containers" -#: src/views/container/ContainerView.vue:620 +#: src/views/container/ContainerView.vue:647 msgid "New Name" msgstr "New Name" -#: src/views/container/ContainerView.vue:625 +#: src/views/container/ContainerView.vue:652 msgid "Enter new name" msgstr "Enter new name" @@ -6049,7 +6237,7 @@ msgid "Driver" msgstr "Driver" #: src/views/container/NetworkView.vue:62 src/views/container/VolumeView.vue:43 -#: src/views/website/EditModal.vue:2030 +#: src/views/website/EditModal.vue:2040 msgid "Scope" msgstr "Scope" @@ -6168,7 +6356,7 @@ msgid "Specific" msgstr "Specific" #: src/views/database/CreateDatabaseModal.vue:78 -#: src/views/database/IndexView.vue:48 +#: src/views/database/IndexView.vue:146 msgid "Create Database" msgstr "Create Database" @@ -6217,7 +6405,7 @@ msgid "Select type" msgstr "Select key type" #: src/views/database/CreateServerModal.vue:113 -#: src/views/database/UpdateServerModal.vue:70 +#: src/views/database/UpdateServerModal.vue:71 msgid "Enter database server name" msgstr "Enter database server name" @@ -6236,27 +6424,27 @@ msgid "Select" msgstr "Time Selection" #: src/views/database/CreateServerModal.vue:148 -#: src/views/database/UpdateServerModal.vue:80 +#: src/views/database/UpdateServerModal.vue:81 msgid "Enter database server host" msgstr "Enter database server host" #: src/views/database/CreateServerModal.vue:159 -#: src/views/database/UpdateServerModal.vue:91 +#: src/views/database/UpdateServerModal.vue:92 msgid "Enter database server port" msgstr "Enter database server port" #: src/views/database/CreateServerModal.vue:173 -#: src/views/database/UpdateServerModal.vue:101 +#: src/views/database/UpdateServerModal.vue:102 msgid "Enter database server username" msgstr "Enter database server username" #: src/views/database/CreateServerModal.vue:186 -#: src/views/database/UpdateServerModal.vue:110 +#: src/views/database/UpdateServerModal.vue:111 msgid "Enter database server password" msgstr "Enter database server password" #: src/views/database/CreateServerModal.vue:195 -#: src/views/database/UpdateServerModal.vue:118 +#: src/views/database/UpdateServerModal.vue:119 msgid "Enter database server comment" msgstr "Enter database server comment" @@ -6312,7 +6500,7 @@ msgid "Are you sure you want to delete this index?" msgstr "Are you sure you want to delete this user?" #: src/views/database/ElasticsearchDataView.vue:162 -#: src/views/website/EditModal.vue:1784 +#: src/views/website/EditModal.vue:1794 #, fuzzy msgid "Source" msgstr "Source Port" @@ -6517,7 +6705,7 @@ msgstr "" msgid "Are you sure you want to delete the server?" msgstr "Are you sure you want to delete the server?" -#: src/views/database/UpdateServerModal.vue:57 +#: src/views/database/UpdateServerModal.vue:58 msgid "Modify Server" msgstr "Modify Server" @@ -6921,68 +7109,72 @@ msgstr "Sorry, the page you visited does not exist." msgid "Back to Home" msgstr "Back to Home" -#: src/views/file/composables/usePaste.ts:14 +#: src/views/file/composables/useFileOps.ts:57 +msgid "Marked successfully, please navigate to the destination path to paste" +msgstr "Marked successfully, please navigate to the destination path to paste" + +#: src/views/file/composables/usePaste.ts:15 msgid "Please mark the files/folders to copy or move first" msgstr "Please mark the files/folders to copy or move first" -#: src/views/file/composables/usePaste.ts:28 +#: src/views/file/composables/usePaste.ts:29 msgid "Moved successfully" msgstr "Moved successfully" -#: src/views/file/composables/usePaste.ts:51 +#: src/views/file/composables/usePaste.ts:58 #, fuzzy msgid "Please enter a new name" msgstr "Please enter absolute path" -#: src/views/file/composables/usePaste.ts:56 -#: src/views/file/composables/usePaste.ts:70 +#: src/views/file/composables/usePaste.ts:63 +#: src/views/file/composables/usePaste.ts:77 #, fuzzy msgid "Name cannot be empty" msgstr "Proxy address cannot be empty" -#: src/views/file/composables/usePaste.ts:89 -#: src/views/file/composables/usePaste.ts:143 +#: src/views/file/composables/usePaste.ts:96 +#: src/views/file/composables/usePaste.ts:150 msgid "Canceled" msgstr "Canceled" -#: src/views/file/composables/usePaste.ts:131 src/views/file/ListView.vue:239 -#: src/views/file/ListView.vue:766 src/views/file/ListView.vue:850 +#: src/views/file/composables/usePaste.ts:138 src/views/file/ListView.vue:281 +#: src/views/file/ListView.vue:818 src/views/file/ListView.vue:867 msgid "Warning" msgstr "Warning" -#: src/views/file/composables/usePaste.ts:132 +#: src/views/file/composables/usePaste.ts:139 #, fuzzy msgid "There are items with the same name %{ items } Do you want to overwrite?" msgstr "" "There are items with the same name. %{ items } Do you want to overwrite?" -#: src/views/file/composables/usePaste.ts:168 src/views/file/ListView.vue:768 +#: src/views/file/composables/usePaste.ts:175 src/views/file/ListView.vue:820 #: src/views/file/UploadModal.vue:752 src/views/file/UploadModal.vue:784 msgid "Overwrite" msgstr "Overwrite" -#: src/views/file/CompressModal.vue:47 +#: src/views/file/CompressModal.vue:52 #, fuzzy msgid "" "Compress task created successfully, please check the task list for progress" msgstr "Download task created successfully" -#: src/views/file/CompressModal.vue:70 src/views/file/CompressModal.vue:103 -#: src/views/file/ListView.vue:309 src/views/file/ListView.vue:345 -#: src/views/file/ListView.vue:953 src/views/file/ListView.vue:1532 -#: src/views/file/ToolBar.vue:216 +#: src/views/file/CompressModal.vue:97 src/views/file/CompressModal.vue:116 +#: src/views/file/ListView.vue:351 src/views/file/ListView.vue:387 +#: src/views/file/ListView.vue:974 src/views/file/ListView.vue:1596 +#: src/views/file/ToolBar.vue:189 msgid "Compress" msgstr "Compress" -#: src/views/file/CompressModal.vue:78 +#: src/views/file/CompressModal.vue:105 msgid "Files to compress" msgstr "Files to compress" -#: src/views/file/CompressModal.vue:81 +#: src/views/file/CompressModal.vue:108 msgid "Compress to" msgstr "Compress to" -#: src/views/file/CompressModal.vue:84 +#: src/views/file/CompressModal.vue:111 msgid "Format" msgstr "Format" @@ -6991,123 +7183,145 @@ msgstr "Format" msgid "You have unsaved changes. Do you want to save them before closing?" msgstr "Are you sure you want to clear?" -#: src/views/file/EditModal.vue:105 +#: src/views/file/EditModal.vue:83 #, fuzzy msgid "Failed to save files: %{ files }" msgstr "Failed to calculate size" -#: src/views/file/EditModal.vue:185 +#: src/views/file/EditModal.vue:141 #, fuzzy msgid "File Editor" msgstr "Website Edit" -#: src/views/file/ListView.vue:240 +#: src/views/file/IndexView.vue:242 +#, fuzzy +msgid "Drop files to upload" +msgstr "Files" + +#: src/views/file/ListView.vue:259 src/views/file/ListView.vue:399 +#: src/views/file/ListView.vue:992 +#, fuzzy +msgid "Add Protection" +msgstr "Protection Mode" + +#: src/views/file/ListView.vue:259 src/views/file/ListView.vue:398 +#: src/views/file/ListView.vue:992 +#, fuzzy +msgid "Remove Protection" +msgstr "Network Protocol" + +#: src/views/file/ListView.vue:261 +#, fuzzy +msgid "Add tamper protection for %{ name }?" +msgstr "Edit Website - %{ name }" + +#: src/views/file/ListView.vue:262 +msgid "" +"Remove tamper protection for %{ name }? The matching rule or exclusions will " +"be adjusted accordingly." +msgstr "" + +#: src/views/file/ListView.vue:270 src/views/monitor/IndexView.vue:695 +#: src/views/monitor/IndexView.vue:704 +msgid "Operation successful" +msgstr "Operation successful" + +#: src/views/file/ListView.vue:282 msgid "" "%{ name } has immutable attribute. The panel will temporarily remove the " "immutable attribute, perform the operation, and then restore the immutable " "attribute. Do you want to continue?" msgstr "" -#: src/views/file/ListView.vue:244 src/views/file/UploadModal.vue:506 -#: src/views/file/UploadModal.vue:641 -#, fuzzy -msgid "Continue" -msgstr "Container" - -#: src/views/file/ListView.vue:297 src/views/file/ListView.vue:315 -#: src/views/file/ListView.vue:359 src/views/file/ToolBar.vue:211 +#: src/views/file/ListView.vue:339 src/views/file/ListView.vue:357 +#: src/views/file/ListView.vue:408 src/views/file/ToolBar.vue:184 msgid "Paste" msgstr "Paste" -#: src/views/file/ListView.vue:308 src/views/file/ListView.vue:342 -#: src/views/file/ListView.vue:951 src/views/file/ToolBar.vue:215 +#: src/views/file/ListView.vue:350 src/views/file/ListView.vue:384 +#: src/views/file/ListView.vue:972 src/views/file/ToolBar.vue:188 msgid "Move" msgstr "Move" -#: src/views/file/ListView.vue:310 src/views/file/ListView.vue:343 -#: src/views/file/ListView.vue:952 src/views/file/ListView.vue:1350 +#: src/views/file/ListView.vue:352 src/views/file/ListView.vue:385 +#: src/views/file/ListView.vue:973 src/views/file/ListView.vue:1402 #: src/views/file/PermissionModal.vue:146 src/views/file/PropertyModal.vue:42 -#: src/views/file/ToolBar.vue:217 +#: src/views/file/ToolBar.vue:190 msgid "Permission" msgstr "Permission" -#: src/views/file/ListView.vue:327 src/views/file/ListView.vue:1519 +#: src/views/file/ListView.vue:369 src/views/file/ListView.vue:1583 msgid "Open" msgstr "Open" -#: src/views/file/ListView.vue:329 src/views/file/ListView.vue:1538 +#: src/views/file/ListView.vue:371 src/views/file/ListView.vue:1602 msgid "Preview" msgstr "Preview" -#: src/views/file/ListView.vue:331 src/views/file/ListView.vue:958 -#: src/views/file/ListView.vue:1647 +#: src/views/file/ListView.vue:373 src/views/file/ListView.vue:979 +#: src/views/file/ListView.vue:1705 msgid "Uncompress" msgstr "Uncompress" -#: src/views/file/ListView.vue:354 src/views/file/ListView.vue:968 +#: src/views/file/ListView.vue:403 src/views/file/ListView.vue:997 #: src/views/file/PropertyModal.vue:11 #, fuzzy msgid "Properties" msgstr "Property" -#: src/views/file/ListView.vue:677 src/views/file/ToolBar.vue:78 -#: src/views/file/ToolBar.vue:97 -msgid "Marked successfully, please navigate to the destination path to paste" -msgstr "Marked successfully, please navigate to the destination path to paste" - -#: src/views/file/ListView.vue:767 -msgid "There are items with the same name. Do you want to overwrite?" -msgstr "There are items with the same name. Do you want to overwrite?" - -#: src/views/file/ListView.vue:775 src/views/file/ListView.vue:794 +#: src/views/file/ListView.vue:806 msgid "Renamed %{ source } to %{ target } successfully" msgstr "Renamed %{ source } to %{ target } successfully" -#: src/views/file/ListView.vue:841 +#: src/views/file/ListView.vue:819 +msgid "There are items with the same name. Do you want to overwrite?" +msgstr "There are items with the same name. Do you want to overwrite?" + +#: src/views/file/ListView.vue:858 msgid "Some files are immutable and cannot be deleted" msgstr "" -#: src/views/file/ListView.vue:848 +#: src/views/file/ListView.vue:865 #, fuzzy msgid "Are you sure you want to delete %{count} items?" msgstr "Are you sure you want to delete the account?" -#: src/views/file/ListView.vue:861 src/views/file/PathInput.vue:34 +#: src/views/file/ListView.vue:878 src/views/file/PathInput.vue:34 msgid "Path copied to clipboard" msgstr "" -#: src/views/file/ListView.vue:961 +#: src/views/file/ListView.vue:982 msgid "Copy Path" msgstr "Copy Path" -#: src/views/file/ListView.vue:1217 +#: src/views/file/ListView.vue:1250 #, fuzzy msgid "" "Uncompress task created successfully, please check the task list for progress" msgstr "Download task created successfully" -#: src/views/file/ListView.vue:1578 +#: src/views/file/ListView.vue:1642 #, fuzzy msgid "No files" msgstr "Files" -#: src/views/file/ListView.vue:1588 +#: src/views/file/ListView.vue:1652 msgid "%{count} item(s) selected" msgstr "" -#: src/views/file/ListView.vue:1596 +#: src/views/file/ListView.vue:1660 msgid "%{count} item(s)" msgstr "" -#: src/views/file/ListView.vue:1635 +#: src/views/file/ListView.vue:1693 msgid "Uncompress - %{ file }" msgstr "Uncompress - %{ file }" -#: src/views/file/ListView.vue:1643 +#: src/views/file/ListView.vue:1701 msgid "Uncompress to" msgstr "Uncompress to" -#: src/views/file/ListView.vue:1655 src/views/file/ToolBar.vue:264 +#: src/views/file/ListView.vue:1713 src/views/file/ToolBar.vue:237 #, fuzzy msgid "Terminal - %{ path }" msgstr "Modify permissions - %{ path }" @@ -7192,7 +7406,7 @@ msgstr "Execute" msgid "Others" msgstr "Others" -#: src/views/file/PreviewModal.vue:32 +#: src/views/file/PreviewModal.vue:31 msgid "Preview - " msgstr "Preview - " @@ -7219,45 +7433,45 @@ msgstr "" msgid "Immutable" msgstr "Stable" -#: src/views/file/ToolBar.vue:55 +#: src/views/file/ToolBar.vue:57 #, fuzzy msgid "" "Download task created successfully, please check the task list for progress" msgstr "Download task created successfully" -#: src/views/file/ToolBar.vue:65 +#: src/views/file/ToolBar.vue:67 msgid "Please select files/folders to copy" msgstr "Please select files/folders to copy" -#: src/views/file/ToolBar.vue:84 +#: src/views/file/ToolBar.vue:75 msgid "Please select files/folders to move" msgstr "Please select files/folders to move" -#: src/views/file/ToolBar.vue:157 +#: src/views/file/ToolBar.vue:130 msgid "Sort" msgstr "" -#: src/views/file/ToolBar.vue:182 src/views/file/ToolBar.vue:236 +#: src/views/file/ToolBar.vue:155 src/views/file/ToolBar.vue:209 msgid "Remote Download" msgstr "Remote Download" -#: src/views/file/ToolBar.vue:201 +#: src/views/file/ToolBar.vue:174 msgid "Switch to grid view" msgstr "" -#: src/views/file/ToolBar.vue:202 +#: src/views/file/ToolBar.vue:175 msgid "Switch to list view" msgstr "" -#: src/views/file/ToolBar.vue:220 +#: src/views/file/ToolBar.vue:193 msgid "Are you sure you want to delete in bulk?" msgstr "Are you sure you want to delete in bulk?" -#: src/views/file/ToolBar.vue:244 +#: src/views/file/ToolBar.vue:217 msgid "Download URL" msgstr "Download URL" -#: src/views/file/ToolBar.vue:247 +#: src/views/file/ToolBar.vue:220 msgid "Save as" msgstr "Save as" @@ -7400,7 +7614,7 @@ msgstr "%{ address } created successfully" #: src/views/firewall/CreateIpModal.vue:96 #: src/views/firewall/CreateModal.vue:108 src/views/firewall/IpRuleView.vue:195 -#: src/views/firewall/RuleView.vue:303 +#: src/views/firewall/RuleView.vue:324 msgid "Create Rule" msgstr "Create Rule" @@ -7440,17 +7654,17 @@ msgid "End Port" msgstr "End Port" #: src/views/firewall/CreateModal.vue:144 src/views/firewall/IpRuleView.vue:111 -#: src/views/firewall/RuleView.vue:216 src/views/website/EditModal.vue:1797 +#: src/views/firewall/RuleView.vue:216 src/views/website/EditModal.vue:1807 msgid "Target" msgstr "Target" #: src/views/firewall/ForwardView.vue:125 src/views/firewall/IpRuleView.vue:167 -#: src/views/firewall/RuleView.vue:275 +#: src/views/firewall/RuleView.vue:296 msgid "Please select rules to delete" msgstr "Please select rules to delete" #: src/views/firewall/ForwardView.vue:157 src/views/firewall/IpRuleView.vue:199 -#: src/views/firewall/RuleView.vue:307 +#: src/views/firewall/RuleView.vue:328 #, fuzzy msgid "Are you sure you want to delete the selected rules?" msgstr "Are you sure you want to delete the server?" @@ -7488,6 +7702,19 @@ msgstr "In Use" msgid "No process information" msgstr "Access Information" +#: src/views/firewall/RuleView.vue:275 +msgid "Import finished: %{succeeded} succeeded, %{failed} failed" +msgstr "" + +#: src/views/firewall/RuleView.vue:338 +#, fuzzy +msgid "Export" +msgstr "Container Name" + +#: src/views/firewall/RuleView.vue:342 +msgid "Import" +msgstr "" + #: src/views/firewall/ScanView.vue:193 src/views/firewall/ScanView.vue:211 #: src/views/firewall/ScanView.vue:223 src/views/firewall/ScanView.vue:288 #: src/views/firewall/ScanView.vue:302 src/views/firewall/ScanView.vue:318 @@ -8025,7 +8252,7 @@ msgstr "" #: src/views/log/DatabaseLog.vue:48 src/views/log/HttpLog.vue:56 #: src/views/log/OperationLog.vue:51 src/views/log/SSHLog.vue:58 -#: src/views/toolbox/SystemView.vue:250 +#: src/views/tamper/IndexView.vue:182 src/views/toolbox/SystemView.vue:250 #: src/views/website/stats/ErrorsTab.vue:87 msgid "Time" msgstr "Time" @@ -8039,8 +8266,8 @@ msgid "Query" msgstr "" #: src/views/log/DatabaseLog.vue:81 src/views/log/HttpLog.vue:107 -#: src/views/toolbox/MigrationView.vue:697 -#: src/views/toolbox/MigrationView.vue:784 +#: src/views/toolbox/MigrationView.vue:728 +#: src/views/toolbox/MigrationView.vue:815 #, fuzzy msgid "Duration" msgstr "Direction" @@ -8101,7 +8328,7 @@ msgstr "System" msgid "Message" msgstr "Usage" -#: src/views/log/OperationLog.vue:100 src/views/toolbox/MigrationView.vue:785 +#: src/views/log/OperationLog.vue:100 src/views/toolbox/MigrationView.vue:816 #, fuzzy msgid "Details" msgstr "Add Process" @@ -8184,7 +8411,8 @@ msgid "Login with Passkey" msgstr "" #: src/views/monitor/IndexView.vue:335 src/views/monitor/IndexView.vue:347 -#: src/views/toolbox/IndexView.vue:27 src/views/toolbox/NetworkView.vue:75 +#: src/views/tamper/IndexView.vue:196 src/views/toolbox/IndexView.vue:27 +#: src/views/toolbox/NetworkView.vue:75 #, fuzzy msgid "Process" msgstr "Add Process" @@ -8224,10 +8452,6 @@ msgstr "Usage" msgid "Unit MB" msgstr "Unit MB" -#: src/views/monitor/IndexView.vue:695 src/views/monitor/IndexView.vue:704 -msgid "Operation successful" -msgstr "Operation successful" - #: src/views/monitor/IndexView.vue:715 msgid "Enable Monitoring" msgstr "Enable Monitoring" @@ -8249,7 +8473,7 @@ msgstr "Restart" msgid "minutes" msgstr "minutes" -#: src/views/monitor/IndexView.vue:743 src/views/website/EditModal.vue:2101 +#: src/views/monitor/IndexView.vue:743 src/views/website/EditModal.vue:2111 msgid "Are you sure you want to clear?" msgstr "Are you sure you want to clear?" @@ -8431,12 +8655,12 @@ msgid "Select Node.js Version" msgstr "Select PHP Version" #: src/views/project/CreateModal.vue:548 src/views/website/CreateModal.vue:236 -#: src/views/website/EditModal.vue:926 +#: src/views/website/EditModal.vue:936 msgid "PHP Version" msgstr "PHP Version" #: src/views/project/CreateModal.vue:552 src/views/website/CreateModal.vue:240 -#: src/views/website/EditModal.vue:931 +#: src/views/website/EditModal.vue:941 msgid "Select PHP Version" msgstr "Select PHP Version" @@ -8533,8 +8757,9 @@ msgid "File (truncate)" msgstr "Filename" #: src/views/project/EditModal.vue:72 src/views/setting/SettingBase.vue:187 -#: src/views/setting/SettingSafe.vue:246 src/views/website/EditModal.vue:778 -#: src/views/website/EditModal.vue:782 src/views/website/EditModal.vue:997 +#: src/views/setting/SettingSafe.vue:246 src/views/tamper/IndexView.vue:132 +#: src/views/website/EditModal.vue:788 src/views/website/EditModal.vue:792 +#: src/views/website/EditModal.vue:1007 #, fuzzy msgid "Disabled" msgstr "Enabled" @@ -8848,7 +9073,7 @@ msgstr "Enter user email" msgid "Panel is restarting, page will refresh in 5 seconds" msgstr "Panel is restarting, page will refresh in 3 seconds" -#: src/views/setting/IndexView.vue:118 src/views/website/EditModal.vue:225 +#: src/views/setting/IndexView.vue:118 src/views/website/EditModal.vue:235 msgid "Please wait..." msgstr "Please wait..." @@ -9269,7 +9494,7 @@ msgstr "Code" msgid "Enter the code" msgstr "Enter the code" -#: src/views/ssh/CreateModal.vue:53 src/views/ssh/IndexView.vue:533 +#: src/views/ssh/CreateModal.vue:53 src/views/ssh/IndexView.vue:575 msgid "Create Host" msgstr "Create Host" @@ -9289,56 +9514,329 @@ msgstr "" msgid "Remarks" msgstr "Remarks" -#: src/views/ssh/IndexView.vue:65 +#: src/views/ssh/IndexView.vue:67 msgid "" "Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" msgstr "" -#: src/views/ssh/IndexView.vue:121 +#: src/views/ssh/IndexView.vue:97 src/views/ssh/IndexView.vue:178 +#, fuzzy +msgid "File Transfer" +msgstr "Filename" + +#: src/views/ssh/IndexView.vue:128 msgid "Are you sure you want to delete this host?" msgstr "Are you sure you want to delete this host?" -#: src/views/ssh/IndexView.vue:284 +#: src/views/ssh/IndexView.vue:316 msgid "Connection closed. Please refresh." msgstr "Connection closed. Please refresh." -#: src/views/ssh/IndexView.vue:289 +#: src/views/ssh/IndexView.vue:321 msgid "Connection error. Please refresh." msgstr "Connection error. Please refresh." -#: src/views/ssh/IndexView.vue:473 +#: src/views/ssh/IndexView.vue:511 #, fuzzy msgid "New Session" msgstr "System Version" -#: src/views/ssh/IndexView.vue:500 +#: src/views/ssh/IndexView.vue:538 #, fuzzy msgid "Manage Hosts" msgstr "Manage" -#: src/views/ssh/IndexView.vue:505 +#: src/views/ssh/IndexView.vue:543 #, fuzzy msgid "Exit Fullscreen" msgstr "Fullscreen Display" -#: src/views/ssh/IndexView.vue:505 +#: src/views/ssh/IndexView.vue:543 #, fuzzy msgid "Fullscreen" msgstr "Fullscreen Display" -#: src/views/ssh/IndexView.vue:527 src/views/toolbox/SystemView.vue:237 +#: src/views/ssh/IndexView.vue:569 src/views/toolbox/SystemView.vue:237 #, fuzzy msgid "Hosts" msgstr "Host" -#: src/views/ssh/IndexView.vue:552 +#: src/views/ssh/IndexView.vue:594 msgid "Bash session on this server" msgstr "" +#: src/views/ssh/SftpBrowser.vue:133 +#, fuzzy +msgid "Parent Directory" +msgstr "Select Directory" + +#: src/views/ssh/SftpBrowser.vue:145 +#, fuzzy +msgid "Create Directory" +msgstr "Save Directory" + +#: src/views/ssh/SftpBrowser.vue:155 +#, fuzzy +msgid "Directory name" +msgstr "Directory" + +#: src/views/ssh/SftpBrowser.vue:195 +#, fuzzy +msgid "Empty directory" +msgstr "Root Directory" + +#: src/views/ssh/SftpPanel.vue:60 +#, fuzzy +msgid "Please select files to transfer" +msgstr "Please select rules to delete" + +#: src/views/ssh/SftpPanel.vue:64 +msgid "Source and destination are the same directory" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:134 +#, fuzzy +msgid "Connection closed" +msgstr "Connection closed. Please refresh." + +#: src/views/ssh/SftpPanel.vue:165 +#, fuzzy +msgid "Cancelled" +msgstr "Canceled" + +#: src/views/ssh/SftpPanel.vue:206 +msgid "Transfer to right" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:216 +msgid "Transfer to left" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:234 +msgid "Transfer Queue" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:236 +#, fuzzy +msgid "Clear Finished" +msgstr "Copy failed" + +#: src/views/ssh/SftpPanel.vue:272 src/views/task/TaskView.vue:42 +#: src/views/toolbox/ProcessView.vue:53 src/views/toolbox/ProcessView.vue:89 +msgid "Waiting" +msgstr "Waiting" + #: src/views/ssh/UpdateModal.vue:59 msgid "Update Host" msgstr "Update Host" +#: src/views/tamper/IndexView.vue:47 +msgid "eBPF mode is not available, please activate it first" +msgstr "" + +#: src/views/tamper/IndexView.vue:64 +msgid "Activate eBPF LSM" +msgstr "" + +#: src/views/tamper/IndexView.vue:65 +msgid "" +"The panel will modify the kernel boot parameters (append bpf to the LSM " +"list) and reboot the server immediately. All services will be interrupted " +"during the reboot. Continue?" +msgstr "" + +#: src/views/tamper/IndexView.vue:74 +msgid "The server is rebooting, please reconnect later" +msgstr "" + +#: src/views/tamper/IndexView.vue:116 src/views/tamper/RuleModal.vue:102 +#, fuzzy +msgid "Protected Directory" +msgstr "Select Directory" + +#: src/views/tamper/IndexView.vue:118 +#, fuzzy +msgid "Extensions" +msgstr "Extension Name" + +#: src/views/tamper/IndexView.vue:122 +#, fuzzy +msgid "All files" +msgstr "Status" + +#: src/views/tamper/IndexView.vue:132 src/views/tamper/RuleModal.vue:111 +#: src/views/task/CronView.vue:76 src/views/toolbox/WebHookView.vue:91 +#: src/views/toolbox/WebHookView.vue:386 +msgid "Enabled" +msgstr "Enabled" + +#: src/views/tamper/IndexView.vue:149 +#, fuzzy +msgid "Are you sure to delete this rule?" +msgstr "Are you sure you want to delete this user?" + +#: src/views/tamper/IndexView.vue:188 +#, fuzzy +msgid "Operation" +msgstr "Operation successful" + +#: src/views/tamper/IndexView.vue:202 src/views/tamper/IndexView.vue:370 +#: src/views/website/EditModal.vue:2116 +msgid "Clear Logs" +msgstr "Clear Logs" + +#: src/views/tamper/IndexView.vue:203 +#, fuzzy +msgid "Are you sure to clear all interception logs?" +msgstr "Are you sure you want to clear?" + +#: src/views/tamper/IndexView.vue:218 +#, fuzzy +msgid "Protection Rules" +msgstr "Protection Mode" + +#: src/views/tamper/IndexView.vue:219 +#, fuzzy +msgid "Interception Logs" +msgstr "Operation successful" + +#: src/views/tamper/IndexView.vue:226 +msgid "Tamper protection is only supported on Linux." +msgstr "" + +#: src/views/tamper/IndexView.vue:233 +#, fuzzy +msgid "Protecting" +msgstr "Protection Mode" + +#: src/views/tamper/IndexView.vue:236 +#, fuzzy +msgid "Protected Files" +msgstr "Protection Mode" + +#: src/views/tamper/IndexView.vue:239 +#, fuzzy +msgid "Protected Directories" +msgstr "Select Directory" + +#: src/views/tamper/IndexView.vue:247 +#, fuzzy +msgid "Enable Protection" +msgstr "Enable Monitoring" + +#: src/views/tamper/IndexView.vue:252 +#, fuzzy +msgid "File Lock (chattr)" +msgstr "Filename" + +#: src/views/tamper/IndexView.vue:256 +#, fuzzy +msgid "Mode Description" +msgstr "Description" + +#: src/views/tamper/IndexView.vue:259 +msgid "" +"Locks files with the immutable attribute, enforced by the kernel at the VFS " +"layer. Works on all distributions with no kernel dependency. Blocks " +"tampering by web processes, but not root." +msgstr "" + +#: src/views/tamper/IndexView.vue:266 +msgid "" +"Intercepts write/delete/rename via eBPF-LSM with per-process tracing. More " +"precise and auditable, but requires the bpf LSM to be active in the kernel." +msgstr "" + +#: src/views/tamper/IndexView.vue:272 +#, fuzzy +msgid "Block New Files" +msgstr "Files" + +#: src/views/tamper/IndexView.vue:277 +msgid "" +"Delete newly created files of protected types in protected directories. When " +"off, new files are frozen and logged instead." +msgstr "" + +#: src/views/tamper/IndexView.vue:284 +#, fuzzy +msgid "Log Retention (days)" +msgstr "Retention Count" + +#: src/views/tamper/IndexView.vue:294 src/views/website/SettingView.vue:108 +#: src/views/website/SettingView.vue:123 src/views/website/SettingView.vue:138 +#: src/views/website/SettingView.vue:162 src/views/website/SettingView.vue:202 +#: src/views/website/SettingView.vue:265 +msgid "Save Changes" +msgstr "Save Changes" + +#: src/views/tamper/IndexView.vue:301 +#, fuzzy +msgid "eBPF Environment" +msgstr "Environment Variables" + +#: src/views/tamper/IndexView.vue:304 +#, fuzzy +msgid "Kernel Version" +msgstr "System Kernel Version" + +#: src/views/tamper/IndexView.vue:307 +#, fuzzy +msgid "Active LSM" +msgstr "Active" + +#: src/views/tamper/IndexView.vue:310 +#, fuzzy +msgid "eBPF Available" +msgstr "SWAP Available" + +#: src/views/tamper/IndexView.vue:312 src/views/toolbox/DiskView.vue:250 +#, fuzzy +msgid "Available" +msgstr "SWAP Available" + +#: src/views/tamper/IndexView.vue:312 +#, fuzzy +msgid "Unavailable" +msgstr "SWAP Available" + +#: src/views/tamper/IndexView.vue:326 +msgid "Activate eBPF and Reboot" +msgstr "" + +#: src/views/tamper/RuleModal.vue:83 +#, fuzzy +msgid "Edit Rule" +msgstr "Add Rule" + +#: src/views/tamper/RuleModal.vue:90 +#, fuzzy +msgid "Quick Select Website" +msgstr "Select Website" + +#: src/views/tamper/RuleModal.vue:95 +msgid "Pick a website to fill name and path" +msgstr "" + +#: src/views/tamper/RuleModal.vue:100 +msgid "Rule identifier, usually the website name" +msgstr "" + +#: src/views/tamper/RuleModal.vue:105 +msgid "Protected Extensions" +msgstr "" + +#: src/views/tamper/RuleModal.vue:108 +#, fuzzy +msgid "Exclude Paths" +msgstr "Execute" + +#: src/views/tamper/RuleModal.vue:117 +msgid "" +"Leave extensions empty to protect all files (directories become append-" +"only). Excludes accept a path segment name (e.g. cache) or an absolute path." +msgstr "" + #: src/views/task/CreateModal.vue:36 msgid "# Enter your script content here" msgstr "# Enter your script content here" @@ -9545,11 +10043,6 @@ msgstr "Create Container" msgid "Select storage" msgstr "Select server" -#: src/views/task/CronView.vue:76 src/views/toolbox/WebHookView.vue:91 -#: src/views/toolbox/WebHookView.vue:386 -msgid "Enabled" -msgstr "Enabled" - #: src/views/task/CronView.vue:110 msgid "Last Update Time" msgstr "Last Update Time" @@ -9585,11 +10078,6 @@ msgstr "Are you sure you want to delete the server?" msgid "Completed" msgstr "Completed" -#: src/views/task/TaskView.vue:42 src/views/toolbox/ProcessView.vue:53 -#: src/views/toolbox/ProcessView.vue:89 -msgid "Waiting" -msgstr "Waiting" - #: src/views/task/TaskView.vue:58 msgid "Completion Time" msgstr "Completion Time" @@ -9906,11 +10394,6 @@ msgstr "Select File" msgid "No SMART-capable disks found" msgstr "Database" -#: src/views/toolbox/disk/SmartView.vue:280 src/views/toolbox/PanelView.vue:98 -#, fuzzy -msgid "Basic Info" -msgstr "Basic" - #: src/views/toolbox/disk/SmartView.vue:301 #, fuzzy msgid "Health Status" @@ -9950,11 +10433,6 @@ msgstr "Description" msgid "Used" msgstr "Not Used" -#: src/views/toolbox/DiskView.vue:250 -#, fuzzy -msgid "Available" -msgstr "SWAP Available" - #: src/views/toolbox/DiskView.vue:267 #, fuzzy msgid "Not Mounted" @@ -10442,50 +10920,61 @@ msgstr "" msgid "Clean" msgstr "Clear Log" -#: src/views/toolbox/MigrationView.vue:88 -#: src/views/toolbox/MigrationView.vue:112 +#: src/views/toolbox/MigrationView.vue:89 +#: src/views/toolbox/MigrationView.vue:113 msgid "Please fill in all connection fields" msgstr "" -#: src/views/toolbox/MigrationView.vue:124 +#: src/views/toolbox/MigrationView.vue:125 #, fuzzy msgid "Environment check refreshed" msgstr "Environment Variables" -#: src/views/toolbox/MigrationView.vue:142 +#: src/views/toolbox/MigrationView.vue:144 msgid "" "Web server mismatch: local is %{local}, remote is %{remote}. Migration " "cannot proceed." msgstr "" -#: src/views/toolbox/MigrationView.vue:145 -#: src/views/toolbox/MigrationView.vue:146 +#: src/views/toolbox/MigrationView.vue:147 +#: src/views/toolbox/MigrationView.vue:148 msgid "none" msgstr "" -#: src/views/toolbox/MigrationView.vue:160 +#: src/views/toolbox/MigrationView.vue:162 msgid "" "%{type} is installed locally but not on the remote server. Related projects " "may need reconfiguration." msgstr "" -#: src/views/toolbox/MigrationView.vue:180 +#: src/views/toolbox/MigrationView.vue:182 msgid "" "%{type} is installed locally but not on the remote server. Database " "migration for this type will be skipped." msgstr "" -#: src/views/toolbox/MigrationView.vue:248 +#: src/views/toolbox/MigrationView.vue:203 +#, fuzzy +msgid "Ignore Environment Check" +msgstr "Environment Variables" + +#: src/views/toolbox/MigrationView.vue:204 +msgid "" +"Due to environment inconsistency, migrated items may not work properly after " +"migration. Do you still want to continue?" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:269 #, fuzzy msgid "Please select at least one item to migrate" msgstr "Please enter username and password" -#: src/views/toolbox/MigrationView.vue:253 +#: src/views/toolbox/MigrationView.vue:274 #, fuzzy msgid "Confirm Migration" msgstr "Configuration" -#: src/views/toolbox/MigrationView.vue:254 +#: src/views/toolbox/MigrationView.vue:275 #, fuzzy msgid "" "Are you sure you want to start migration? This will transfer the selected " @@ -10494,240 +10983,245 @@ msgstr "" "Are you sure you want to restart the server? This will disconnect all " "connections." -#: src/views/toolbox/MigrationView.vue:345 +#: src/views/toolbox/MigrationView.vue:366 #, fuzzy msgid "Reset Migration" msgstr "Reset Configuration" -#: src/views/toolbox/MigrationView.vue:346 +#: src/views/toolbox/MigrationView.vue:367 #, fuzzy msgid "Are you sure you want to reset the migration state?" msgstr "Are you sure you want to reset the configuration?" -#: src/views/toolbox/MigrationView.vue:369 +#: src/views/toolbox/MigrationView.vue:391 msgid "Migration state has been reset" msgstr "" -#: src/views/toolbox/MigrationView.vue:407 +#: src/views/toolbox/MigrationView.vue:429 #, fuzzy msgid "Enter remote server info" msgstr "Enter database server name" -#: src/views/toolbox/MigrationView.vue:409 +#: src/views/toolbox/MigrationView.vue:431 msgid "Pre-check" msgstr "" -#: src/views/toolbox/MigrationView.vue:409 +#: src/views/toolbox/MigrationView.vue:431 #, fuzzy msgid "Verify environment" msgstr "Environment Variables" -#: src/views/toolbox/MigrationView.vue:411 +#: src/views/toolbox/MigrationView.vue:433 #, fuzzy msgid "Select Items" msgstr "Select host" -#: src/views/toolbox/MigrationView.vue:412 +#: src/views/toolbox/MigrationView.vue:434 msgid "Choose what to migrate" msgstr "" -#: src/views/toolbox/MigrationView.vue:414 -#, fuzzy -msgid "Migrating" -msgstr "Configuration" - -#: src/views/toolbox/MigrationView.vue:414 -msgid "Transfer in progress" -msgstr "" - -#: src/views/toolbox/MigrationView.vue:415 -#, fuzzy -msgid "Complete" -msgstr "Completed" - -#: src/views/toolbox/MigrationView.vue:415 -#, fuzzy -msgid "View results" -msgstr "View Rule" - -#: src/views/toolbox/MigrationView.vue:420 -#, fuzzy -msgid "Remote Server Connection" -msgstr "Network Protocol" - -#: src/views/toolbox/MigrationView.vue:422 -#, fuzzy -msgid "Panel URL" -msgstr "Panel Tasks" - -#: src/views/toolbox/MigrationView.vue:425 -msgid "e.g. https://remote-server:8888" -msgstr "" - -#: src/views/toolbox/MigrationView.vue:428 -msgid "Token ID" -msgstr "" - -#: src/views/toolbox/MigrationView.vue:431 -msgid "API Token ID" -msgstr "" - #: src/views/toolbox/MigrationView.vue:436 #, fuzzy +msgid "Migrating" +msgstr "Configuration" + +#: src/views/toolbox/MigrationView.vue:436 +msgid "Transfer in progress" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:437 +#, fuzzy +msgid "Complete" +msgstr "Completed" + +#: src/views/toolbox/MigrationView.vue:437 +#, fuzzy +msgid "View results" +msgstr "View Rule" + +#: src/views/toolbox/MigrationView.vue:442 +#, fuzzy +msgid "Remote Server Connection" +msgstr "Network Protocol" + +#: src/views/toolbox/MigrationView.vue:444 +#, fuzzy +msgid "Panel URL" +msgstr "Panel Tasks" + +#: src/views/toolbox/MigrationView.vue:447 +msgid "e.g. https://remote-server:8888" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:450 +msgid "Token ID" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:453 +msgid "API Token ID" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:458 +#, fuzzy msgid "Access Token" msgstr "Access Tokens" -#: src/views/toolbox/MigrationView.vue:441 +#: src/views/toolbox/MigrationView.vue:463 #, fuzzy msgid "API Access Token" msgstr "Access Tokens" -#: src/views/toolbox/MigrationView.vue:453 +#: src/views/toolbox/MigrationView.vue:475 #, fuzzy msgid "Environment Pre-check" msgstr "Environment Variables" -#: src/views/toolbox/MigrationView.vue:472 +#: src/views/toolbox/MigrationView.vue:494 #, fuzzy msgid "Remote" msgstr "Auto Remove" -#: src/views/toolbox/MigrationView.vue:478 +#: src/views/toolbox/MigrationView.vue:500 #, fuzzy msgid "Web Server" msgstr "Server" -#: src/views/toolbox/MigrationView.vue:488 -#: src/views/toolbox/MigrationView.vue:539 +#: src/views/toolbox/MigrationView.vue:510 +#: src/views/toolbox/MigrationView.vue:561 #, fuzzy msgid "Match" msgstr "Match Type" -#: src/views/toolbox/MigrationView.vue:489 +#: src/views/toolbox/MigrationView.vue:511 msgid "Mismatch" msgstr "" -#: src/views/toolbox/MigrationView.vue:508 -#: src/views/toolbox/MigrationView.vue:523 +#: src/views/toolbox/MigrationView.vue:530 +#: src/views/toolbox/MigrationView.vue:545 #, fuzzy msgid "Not installed" msgstr "Install" -#: src/views/toolbox/MigrationView.vue:540 +#: src/views/toolbox/MigrationView.vue:562 msgid "Different" msgstr "" -#: src/views/toolbox/MigrationView.vue:603 +#: src/views/toolbox/MigrationView.vue:619 +#, fuzzy +msgid "Ignore environment check" +msgstr "Environment Variables" + +#: src/views/toolbox/MigrationView.vue:634 #, fuzzy msgid "Select Migration Items" msgstr "Select PHP Version" -#: src/views/toolbox/MigrationView.vue:605 +#: src/views/toolbox/MigrationView.vue:636 #, fuzzy msgid "Websites" msgstr "Website" -#: src/views/toolbox/MigrationView.vue:616 +#: src/views/toolbox/MigrationView.vue:647 msgid "No websites found" msgstr "" -#: src/views/toolbox/MigrationView.vue:620 +#: src/views/toolbox/MigrationView.vue:651 #, fuzzy msgid "Databases" msgstr "Database" -#: src/views/toolbox/MigrationView.vue:632 +#: src/views/toolbox/MigrationView.vue:663 #, fuzzy msgid "No databases found" msgstr "Database" -#: src/views/toolbox/MigrationView.vue:636 +#: src/views/toolbox/MigrationView.vue:667 #, fuzzy msgid "Database Users" msgstr "Database User" -#: src/views/toolbox/MigrationView.vue:649 +#: src/views/toolbox/MigrationView.vue:680 #, fuzzy msgid "No database users found" msgstr "Database" -#: src/views/toolbox/MigrationView.vue:653 +#: src/views/toolbox/MigrationView.vue:684 #, fuzzy msgid "Projects" msgstr "Reject" -#: src/views/toolbox/MigrationView.vue:665 +#: src/views/toolbox/MigrationView.vue:696 msgid "No projects found" msgstr "" -#: src/views/toolbox/MigrationView.vue:671 +#: src/views/toolbox/MigrationView.vue:702 msgid "Stop services during migration to ensure data consistency (recommended)" msgstr "" -#: src/views/toolbox/MigrationView.vue:683 +#: src/views/toolbox/MigrationView.vue:714 #, fuzzy msgid "Start Migration" msgstr "Storage Configuration" -#: src/views/toolbox/MigrationView.vue:689 +#: src/views/toolbox/MigrationView.vue:720 msgid "Migration Progress" msgstr "" -#: src/views/toolbox/MigrationView.vue:717 +#: src/views/toolbox/MigrationView.vue:748 #, fuzzy msgid "Migration Logs" msgstr "Operation successful" -#: src/views/toolbox/MigrationView.vue:726 -#: src/views/toolbox/MigrationView.vue:831 +#: src/views/toolbox/MigrationView.vue:757 +#: src/views/toolbox/MigrationView.vue:862 #, fuzzy msgid "Download Log" msgstr "Download URL" -#: src/views/toolbox/MigrationView.vue:750 +#: src/views/toolbox/MigrationView.vue:781 msgid "Migration in progress..." msgstr "" -#: src/views/toolbox/MigrationView.vue:757 +#: src/views/toolbox/MigrationView.vue:788 #, fuzzy msgid "Migration Complete" msgstr "Configuration" -#: src/views/toolbox/MigrationView.vue:762 +#: src/views/toolbox/MigrationView.vue:793 #, fuzzy msgid "All items migrated successfully" msgstr "Settings saved successfully" -#: src/views/toolbox/MigrationView.vue:763 +#: src/views/toolbox/MigrationView.vue:794 msgid "Migration completed with some issues" msgstr "" -#: src/views/toolbox/MigrationView.vue:769 +#: src/views/toolbox/MigrationView.vue:800 #, fuzzy msgid "Started" msgstr "Start" -#: src/views/toolbox/MigrationView.vue:771 +#: src/views/toolbox/MigrationView.vue:802 msgid "Ended" msgstr "" -#: src/views/toolbox/MigrationView.vue:803 +#: src/views/toolbox/MigrationView.vue:834 #, fuzzy msgid "Migration succeeded" msgstr "Operation successful" -#: src/views/toolbox/MigrationView.vue:819 +#: src/views/toolbox/MigrationView.vue:850 msgid "Reminder" msgstr "" -#: src/views/toolbox/MigrationView.vue:823 +#: src/views/toolbox/MigrationView.vue:854 msgid "" "Some environments differ between local and remote servers. You may need to " "adjust settings on the remote server otherwise related items may not work " "properly after migration." msgstr "" -#: src/views/toolbox/MigrationView.vue:834 +#: src/views/toolbox/MigrationView.vue:865 #, fuzzy msgid "Start New Migration" msgstr "Storage Configuration" @@ -11005,11 +11499,6 @@ msgstr "Execute" msgid "Command Line" msgstr "Command" -#: src/views/toolbox/ProcessView.vue:453 -#, fuzzy -msgid "No environment variables" -msgstr "Environment Variables" - #: src/views/toolbox/ProcessView.vue:461 #, fuzzy msgid "Open Files" @@ -11148,11 +11637,6 @@ msgstr "Enter password" msgid "Generate Random" msgstr "" -#: src/views/toolbox/SshView.vue:314 -#, fuzzy -msgid "Reset" -msgstr "Presets" - #: src/views/toolbox/SshView.vue:324 #, fuzzy msgid "Root SSH Key" @@ -11285,11 +11769,6 @@ msgstr "Please enter username and password" msgid "Reset to Default" msgstr "" -#: src/views/toolbox/WebHookView.vue:73 src/views/toolbox/WebHookView.vue:339 -#: src/views/toolbox/WebHookView.vue:380 -msgid "Raw Output" -msgstr "" - #: src/views/toolbox/WebHookView.vue:105 #, fuzzy msgid "Call Count" @@ -11532,748 +12011,744 @@ msgstr "Edit Website - %{ name }" msgid "Edit Website" msgstr "Edit Website" -#: src/views/website/EditModal.vue:171 +#: src/views/website/EditModal.vue:181 msgid "Reset successfully" msgstr "Reset successfully" -#: src/views/website/EditModal.vue:199 +#: src/views/website/EditModal.vue:209 msgid "" "Your website contains wildcard domains, which require DNS verification. " "Please add a DNS provider in Certificate Management first." msgstr "" -#: src/views/website/EditModal.vue:216 +#: src/views/website/EditModal.vue:226 #, fuzzy msgid "Please select a DNS provider" msgstr "Please select a channel" -#: src/views/website/EditModal.vue:231 +#: src/views/website/EditModal.vue:241 msgid "Issued successfully" msgstr "Issued successfully" -#: src/views/website/EditModal.vue:245 +#: src/views/website/EditModal.vue:255 msgid "The selected certificate is invalid" msgstr "The selected certificate is invalid" -#: src/views/website/EditModal.vue:374 +#: src/views/website/EditModal.vue:384 msgid "Exact Match (=)" msgstr "Exact Match (=)" -#: src/views/website/EditModal.vue:375 +#: src/views/website/EditModal.vue:385 msgid "Priority Prefix Match (^~)" msgstr "Priority Prefix Match (^~)" -#: src/views/website/EditModal.vue:376 +#: src/views/website/EditModal.vue:386 #, fuzzy msgid "Prefix Match" msgstr "Normal Prefix Match ( )" -#: src/views/website/EditModal.vue:377 +#: src/views/website/EditModal.vue:387 #, fuzzy msgid "Case-sensitive Regex (~)" msgstr "Case Sensitive Regex Match (~)" -#: src/views/website/EditModal.vue:378 +#: src/views/website/EditModal.vue:388 #, fuzzy msgid "Case-insensitive Regex (~*)" msgstr "Case Insensitive Regex Match (~*)" -#: src/views/website/EditModal.vue:730 +#: src/views/website/EditModal.vue:740 #, fuzzy msgid "URL Redirect" msgstr "HTTP Redirect" -#: src/views/website/EditModal.vue:731 +#: src/views/website/EditModal.vue:741 #, fuzzy msgid "Host Redirect" msgstr "HTTP Redirect" -#: src/views/website/EditModal.vue:732 +#: src/views/website/EditModal.vue:742 #, fuzzy msgid "404 Redirect" msgstr "HTTP Redirect" -#: src/views/website/EditModal.vue:737 +#: src/views/website/EditModal.vue:747 msgid "Moved Permanently" msgstr "" -#: src/views/website/EditModal.vue:738 +#: src/views/website/EditModal.vue:748 #, fuzzy msgid "Found" msgstr "Inbound" -#: src/views/website/EditModal.vue:739 +#: src/views/website/EditModal.vue:749 #, fuzzy msgid "Temporary Redirect" msgstr "HTTP Redirect" -#: src/views/website/EditModal.vue:740 +#: src/views/website/EditModal.vue:750 #, fuzzy msgid "Permanent Redirect" msgstr "HTTP Redirect" -#: src/views/website/EditModal.vue:779 src/views/website/EditModal.vue:783 +#: src/views/website/EditModal.vue:789 src/views/website/EditModal.vue:793 #, fuzzy msgid "Default Path" msgstr "Default Page" -#: src/views/website/EditModal.vue:864 +#: src/views/website/EditModal.vue:874 msgid "Domain & Listening" msgstr "Domain & Listening" -#: src/views/website/EditModal.vue:874 +#: src/views/website/EditModal.vue:884 msgid "Listening Address" msgstr "Listening Address" -#: src/views/website/EditModal.vue:909 +#: src/views/website/EditModal.vue:919 msgid "Website Directory" msgstr "Website Directory" -#: src/views/website/EditModal.vue:912 +#: src/views/website/EditModal.vue:922 msgid "Enter website directory (absolute path)" msgstr "Enter website directory (absolute path)" -#: src/views/website/EditModal.vue:915 +#: src/views/website/EditModal.vue:925 msgid "Running Directory" msgstr "Running Directory" -#: src/views/website/EditModal.vue:919 +#: src/views/website/EditModal.vue:929 msgid "Enter running directory (needed for Laravel etc.) (absolute path)" msgstr "Enter running directory (needed for Laravel etc.) (absolute path)" -#: src/views/website/EditModal.vue:923 +#: src/views/website/EditModal.vue:933 msgid "Default Document" msgstr "Default Document" -#: src/views/website/EditModal.vue:936 +#: src/views/website/EditModal.vue:946 #, fuzzy msgid "Anti-cross-site Attack" msgstr "Anti-cross-site Attack (PHP)" -#: src/views/website/EditModal.vue:942 +#: src/views/website/EditModal.vue:952 msgid "Upstreams" msgstr "" -#: src/views/website/EditModal.vue:963 +#: src/views/website/EditModal.vue:973 #, fuzzy msgid "Upstream name" msgstr "Username" -#: src/views/website/EditModal.vue:977 src/views/website/EditModal.vue:984 +#: src/views/website/EditModal.vue:987 src/views/website/EditModal.vue:994 msgid "Round Robin (default)" msgstr "" -#: src/views/website/EditModal.vue:985 +#: src/views/website/EditModal.vue:995 msgid "Least Busy" msgstr "" -#: src/views/website/EditModal.vue:986 +#: src/views/website/EditModal.vue:996 msgid "By Traffic" msgstr "" -#: src/views/website/EditModal.vue:991 +#: src/views/website/EditModal.vue:1001 #, fuzzy msgid "Keepalive Connections" msgstr "Network Protocol" -#: src/views/website/EditModal.vue:1036 +#: src/views/website/EditModal.vue:1046 #, fuzzy msgid "Backend Servers" msgstr "Add Server" -#: src/views/website/EditModal.vue:1039 +#: src/views/website/EditModal.vue:1049 msgid "Server address, e.g., 127.0.0.1:8080" msgstr "" -#: src/views/website/EditModal.vue:1040 +#: src/views/website/EditModal.vue:1050 msgid "Options, e.g., weight=5 backup" msgstr "" -#: src/views/website/EditModal.vue:1052 +#: src/views/website/EditModal.vue:1062 #, fuzzy msgid "No upstreams configured" msgstr "Not configured" -#: src/views/website/EditModal.vue:1061 +#: src/views/website/EditModal.vue:1071 #, fuzzy msgid "Proxies" msgstr "Proxy Address" -#: src/views/website/EditModal.vue:1079 src/views/website/EditModal.vue:1759 +#: src/views/website/EditModal.vue:1089 src/views/website/EditModal.vue:1769 #, fuzzy msgid "Rule" msgstr "Add Rule" -#: src/views/website/EditModal.vue:1087 +#: src/views/website/EditModal.vue:1097 msgid "Match Type" msgstr "Match Type" -#: src/views/website/EditModal.vue:1096 +#: src/views/website/EditModal.vue:1106 msgid "Match Expression" msgstr "Match Expression" -#: src/views/website/EditModal.vue:1100 +#: src/views/website/EditModal.vue:1110 msgid "e.g., /, /api, ^/api/v[0-9]+/" msgstr "" -#: src/views/website/EditModal.vue:1108 +#: src/views/website/EditModal.vue:1118 msgid "Backend address, e.g., http://127.0.0.1:8080 or http://upstream_name" msgstr "" -#: src/views/website/EditModal.vue:1115 +#: src/views/website/EditModal.vue:1125 #, fuzzy msgid "Proxy Host" msgstr "Target" -#: src/views/website/EditModal.vue:1119 +#: src/views/website/EditModal.vue:1129 msgid "Default: $proxy_host, or extracted from Proxy Pass" msgstr "" -#: src/views/website/EditModal.vue:1123 +#: src/views/website/EditModal.vue:1133 msgid "Proxy SNI" msgstr "" -#: src/views/website/EditModal.vue:1126 +#: src/views/website/EditModal.vue:1136 msgid "Optional, for HTTPS backends" msgstr "" -#: src/views/website/EditModal.vue:1129 +#: src/views/website/EditModal.vue:1139 msgid "Enable Cache" msgstr "Enable Cache" -#: src/views/website/EditModal.vue:1135 +#: src/views/website/EditModal.vue:1145 #, fuzzy msgid "Enable Buffering" msgstr "Disable Buffer" -#: src/views/website/EditModal.vue:1176 +#: src/views/website/EditModal.vue:1186 #, fuzzy msgid "Cache Settings" msgstr "Basic Settings" -#: src/views/website/EditModal.vue:1181 +#: src/views/website/EditModal.vue:1191 #, fuzzy msgid "Cache Valid" msgstr "Cache Time" -#: src/views/website/EditModal.vue:1184 +#: src/views/website/EditModal.vue:1194 msgid "Status codes, e.g., 200 302 or any" msgstr "" -#: src/views/website/EditModal.vue:1185 +#: src/views/website/EditModal.vue:1195 msgid "Duration, e.g., 10m, 1h, 1d" msgstr "" -#: src/views/website/EditModal.vue:1186 +#: src/views/website/EditModal.vue:1196 #, fuzzy msgid "Add Cache Valid Rule" msgstr "Replacement content" -#: src/views/website/EditModal.vue:1192 +#: src/views/website/EditModal.vue:1202 #, fuzzy msgid "No Cache Conditions" msgstr "Storage Configuration" -#: src/views/website/EditModal.vue:1205 +#: src/views/website/EditModal.vue:1215 #, fuzzy msgid "Select or enter conditions" msgstr "Please enter username and password" -#: src/views/website/EditModal.vue:1209 +#: src/views/website/EditModal.vue:1219 #, fuzzy msgid "Use Stale" msgstr "Close Left" -#: src/views/website/EditModal.vue:1222 +#: src/views/website/EditModal.vue:1232 msgid "When to use stale cache" msgstr "" -#: src/views/website/EditModal.vue:1226 +#: src/views/website/EditModal.vue:1236 msgid "Background Update" msgstr "" -#: src/views/website/EditModal.vue:1230 +#: src/views/website/EditModal.vue:1240 #, fuzzy msgid "Cache Lock" msgstr "Cache Time" -#: src/views/website/EditModal.vue:1234 +#: src/views/website/EditModal.vue:1244 #, fuzzy msgid "Min Uses" msgstr "In Use" -#: src/views/website/EditModal.vue:1245 +#: src/views/website/EditModal.vue:1255 #, fuzzy msgid "Cache Methods" msgstr "Cache Time" -#: src/views/website/EditModal.vue:1254 +#: src/views/website/EditModal.vue:1264 msgid "Default: GET HEAD" msgstr "" -#: src/views/website/EditModal.vue:1258 +#: src/views/website/EditModal.vue:1268 #, fuzzy msgid "Cache Key" msgstr "Cache Time" -#: src/views/website/EditModal.vue:1262 +#: src/views/website/EditModal.vue:1272 msgid "Custom cache key, e.g., $scheme$host$request_uri" msgstr "" -#: src/views/website/EditModal.vue:1270 +#: src/views/website/EditModal.vue:1280 msgid "Custom Request Headers" msgstr "" -#: src/views/website/EditModal.vue:1273 src/views/website/EditModal.vue:1572 +#: src/views/website/EditModal.vue:1283 src/views/website/EditModal.vue:1582 #, fuzzy msgid "Header name" msgstr "Filename" -#: src/views/website/EditModal.vue:1275 +#: src/views/website/EditModal.vue:1285 msgid "Value or variable like $host, $remote_addr" msgstr "" -#: src/views/website/EditModal.vue:1277 +#: src/views/website/EditModal.vue:1287 msgid "Add Request Header" msgstr "" -#: src/views/website/EditModal.vue:1284 +#: src/views/website/EditModal.vue:1294 #, fuzzy msgid "Response Content Replacement" msgstr "Content Replacement" -#: src/views/website/EditModal.vue:1289 +#: src/views/website/EditModal.vue:1299 #, fuzzy msgid "Original content" msgstr "Target content" -#: src/views/website/EditModal.vue:1290 +#: src/views/website/EditModal.vue:1300 msgid "Replacement content" msgstr "Replacement content" -#: src/views/website/EditModal.vue:1291 +#: src/views/website/EditModal.vue:1301 #, fuzzy msgid "Add Replacement Rule" msgstr "Replacement content" -#: src/views/website/EditModal.vue:1301 src/views/website/EditModal.vue:1831 +#: src/views/website/EditModal.vue:1311 src/views/website/EditModal.vue:1841 #, fuzzy msgid "Advanced Settings" msgstr "Basic Settings" -#: src/views/website/EditModal.vue:1306 +#: src/views/website/EditModal.vue:1316 #, fuzzy msgid "HTTP Version" msgstr "PHP Version" -#: src/views/website/EditModal.vue:1314 +#: src/views/website/EditModal.vue:1324 #, fuzzy msgid "Select HTTP version" msgstr "Select PHP Version" -#: src/views/website/EditModal.vue:1319 +#: src/views/website/EditModal.vue:1329 #, fuzzy msgid "Max Body Size" msgstr "Size" -#: src/views/website/EditModal.vue:1325 +#: src/views/website/EditModal.vue:1335 #, fuzzy msgid "Use global" msgstr "Close Left" -#: src/views/website/EditModal.vue:1344 +#: src/views/website/EditModal.vue:1354 #, fuzzy msgid "Timeout Settings" msgstr "Port Settings" -#: src/views/website/EditModal.vue:1355 +#: src/views/website/EditModal.vue:1365 #, fuzzy msgid "Connect Timeout" msgstr "Login Timeout" -#: src/views/website/EditModal.vue:1381 +#: src/views/website/EditModal.vue:1391 #, fuzzy msgid "Read Timeout" msgstr "Login Timeout" -#: src/views/website/EditModal.vue:1407 +#: src/views/website/EditModal.vue:1417 #, fuzzy msgid "Send Timeout" msgstr "Login Timeout" -#: src/views/website/EditModal.vue:1438 +#: src/views/website/EditModal.vue:1448 #, fuzzy msgid "Retry Settings" msgstr "Port Settings" -#: src/views/website/EditModal.vue:1449 +#: src/views/website/EditModal.vue:1459 #, fuzzy msgid "SSL Backend Verify" msgstr "Add Server" -#: src/views/website/EditModal.vue:1458 +#: src/views/website/EditModal.vue:1468 msgid "Response Headers" msgstr "" -#: src/views/website/EditModal.vue:1469 +#: src/views/website/EditModal.vue:1479 #, fuzzy msgid "Retry Conditions" msgstr "Registry Configuration" -#: src/views/website/EditModal.vue:1485 +#: src/views/website/EditModal.vue:1495 #, fuzzy msgid "Select retry conditions" msgstr "Please enter username and password" -#: src/views/website/EditModal.vue:1488 +#: src/views/website/EditModal.vue:1498 #, fuzzy msgid "Max Tries" msgstr "Max Retries" -#: src/views/website/EditModal.vue:1492 src/views/website/EditModal.vue:1507 -#: src/views/website/EditModal.vue:1883 src/views/website/EditModal.vue:1896 -#: src/views/website/EditModal.vue:1909 +#: src/views/website/EditModal.vue:1502 src/views/website/EditModal.vue:1517 +#: src/views/website/EditModal.vue:1893 src/views/website/EditModal.vue:1906 +#: src/views/website/EditModal.vue:1919 msgid "Unlimited" msgstr "" -#: src/views/website/EditModal.vue:1496 +#: src/views/website/EditModal.vue:1506 #, fuzzy msgid "Retry Timeout" msgstr "Login Timeout" -#: src/views/website/EditModal.vue:1526 +#: src/views/website/EditModal.vue:1536 #, fuzzy msgid "Enable Verify" msgstr "Disable Buffer" -#: src/views/website/EditModal.vue:1529 +#: src/views/website/EditModal.vue:1539 msgid "Verify Depth" msgstr "" -#: src/views/website/EditModal.vue:1536 +#: src/views/website/EditModal.vue:1546 #, fuzzy msgid "Trusted Certificate" msgstr "Create Certificate" -#: src/views/website/EditModal.vue:1540 +#: src/views/website/EditModal.vue:1550 msgid "CA certificate path, e.g. /etc/ssl/certs/ca-certificates.crt" msgstr "" -#: src/views/website/EditModal.vue:1552 +#: src/views/website/EditModal.vue:1562 msgid "Hide Headers" msgstr "" -#: src/views/website/EditModal.vue:1566 +#: src/views/website/EditModal.vue:1576 #, fuzzy msgid "Select or input headers to hide" msgstr "Please enter username and password" -#: src/views/website/EditModal.vue:1569 +#: src/views/website/EditModal.vue:1579 #, fuzzy msgid "Add Headers" msgstr "Add Server" -#: src/views/website/EditModal.vue:1573 +#: src/views/website/EditModal.vue:1583 #, fuzzy msgid "Header value" msgstr "Filename" -#: src/views/website/EditModal.vue:1574 +#: src/views/website/EditModal.vue:1584 msgid "Add Response Header" msgstr "" -#: src/views/website/EditModal.vue:1583 +#: src/views/website/EditModal.vue:1593 #, fuzzy msgid "IP Access Control" msgstr "Create Access Token" -#: src/views/website/EditModal.vue:1594 +#: src/views/website/EditModal.vue:1604 #, fuzzy msgid "Allow IPs" msgstr "Allow Ping" -#: src/views/website/EditModal.vue:1597 +#: src/views/website/EditModal.vue:1607 msgid "IP or CIDR, e.g. 192.168.1.0/24" msgstr "" -#: src/views/website/EditModal.vue:1600 +#: src/views/website/EditModal.vue:1610 msgid "Deny IPs" msgstr "" -#: src/views/website/EditModal.vue:1603 +#: src/views/website/EditModal.vue:1613 msgid "IP or CIDR, e.g. all" msgstr "" -#: src/views/website/EditModal.vue:1617 +#: src/views/website/EditModal.vue:1627 #, fuzzy msgid "No proxy rules configured" msgstr "Not configured" -#: src/views/website/EditModal.vue:1622 +#: src/views/website/EditModal.vue:1632 #, fuzzy msgid "Add Proxy Rule" msgstr "Add Rule" -#: src/views/website/EditModal.vue:1631 +#: src/views/website/EditModal.vue:1641 msgid "Certificate Validity" msgstr "Certificate Validity" -#: src/views/website/EditModal.vue:1645 +#: src/views/website/EditModal.vue:1655 msgid "Domains" msgstr "Domains" -#: src/views/website/EditModal.vue:1654 +#: src/views/website/EditModal.vue:1664 msgid "Main Switch" msgstr "Main Switch" -#: src/views/website/EditModal.vue:1660 +#: src/views/website/EditModal.vue:1670 msgid "Use Existing Certificate" msgstr "Use Existing Certificate" -#: src/views/website/EditModal.vue:1677 +#: src/views/website/EditModal.vue:1687 msgid "HTTP Redirect" msgstr "HTTP Redirect" -#: src/views/website/EditModal.vue:1680 +#: src/views/website/EditModal.vue:1690 msgid "OCSP Stapling" msgstr "OCSP Stapling" -#: src/views/website/EditModal.vue:1685 +#: src/views/website/EditModal.vue:1695 #, fuzzy msgid "TLS Version" msgstr "Version" -#: src/views/website/EditModal.vue:1726 +#: src/views/website/EditModal.vue:1736 msgid "Rewrite" msgstr "Rewrite" -#: src/views/website/EditModal.vue:1741 +#: src/views/website/EditModal.vue:1751 #, fuzzy msgid "Redirects" msgstr "HTTP Redirect" -#: src/views/website/EditModal.vue:1772 +#: src/views/website/EditModal.vue:1782 #, fuzzy msgid "Redirect Type" msgstr "HTTP Redirect" -#: src/views/website/EditModal.vue:1775 +#: src/views/website/EditModal.vue:1785 #: src/views/website/stats/ErrorsTab.vue:115 #, fuzzy msgid "Status Code" msgstr "Status" -#: src/views/website/EditModal.vue:1790 +#: src/views/website/EditModal.vue:1800 msgid "Source path, e.g., /old" msgstr "" -#: src/views/website/EditModal.vue:1791 +#: src/views/website/EditModal.vue:1801 msgid "Source host, e.g., example.com" msgstr "" -#: src/views/website/EditModal.vue:1803 +#: src/views/website/EditModal.vue:1813 msgid "Target path, e.g., /new" msgstr "" -#: src/views/website/EditModal.vue:1804 +#: src/views/website/EditModal.vue:1814 msgid "Target URL, e.g., https://example.com" msgstr "" -#: src/views/website/EditModal.vue:1808 +#: src/views/website/EditModal.vue:1818 msgid "Keep URI" msgstr "" -#: src/views/website/EditModal.vue:1811 +#: src/views/website/EditModal.vue:1821 msgid "Keep the original request path and query parameters" msgstr "" -#: src/views/website/EditModal.vue:1822 +#: src/views/website/EditModal.vue:1832 #, fuzzy msgid "No redirect rules configured" msgstr "Not configured" -#: src/views/website/EditModal.vue:1827 +#: src/views/website/EditModal.vue:1837 #, fuzzy msgid "Add Redirect Rule" msgstr "Replacement content" -#: src/views/website/EditModal.vue:1836 +#: src/views/website/EditModal.vue:1846 #, fuzzy msgid "Access Statistics" msgstr "Access Entrance" -#: src/views/website/EditModal.vue:1840 +#: src/views/website/EditModal.vue:1850 #, fuzzy msgid "Enable Statistics" msgstr "Enable Monitoring" -#: src/views/website/EditModal.vue:1847 +#: src/views/website/EditModal.vue:1857 #, fuzzy msgid "Log Settings" msgstr "Port Settings" -#: src/views/website/EditModal.vue:1849 src/views/website/EditModal.vue:2066 +#: src/views/website/EditModal.vue:1859 src/views/website/EditModal.vue:2076 msgid "Access Log" msgstr "Access Log" -#: src/views/website/EditModal.vue:1858 src/views/website/EditModal.vue:2082 +#: src/views/website/EditModal.vue:1868 src/views/website/EditModal.vue:2092 msgid "Error Log" msgstr "Error Log" -#: src/views/website/EditModal.vue:1871 +#: src/views/website/EditModal.vue:1881 #, fuzzy msgid "Rate Limiting" msgstr "Update Host" -#: src/views/website/EditModal.vue:1873 +#: src/views/website/EditModal.vue:1883 #, fuzzy msgid "Enable Rate Limiting" msgstr "Enable Monitoring" -#: src/views/website/EditModal.vue:1877 +#: src/views/website/EditModal.vue:1887 #, fuzzy msgid "Concurrent Limit" msgstr "Resource Overview" -#: src/views/website/EditModal.vue:1887 +#: src/views/website/EditModal.vue:1897 msgid "Limit the maximum concurrent connections for this site" msgstr "" -#: src/views/website/EditModal.vue:1890 +#: src/views/website/EditModal.vue:1900 msgid "Per IP Limit" msgstr "" -#: src/views/website/EditModal.vue:1900 +#: src/views/website/EditModal.vue:1910 msgid "Limit the maximum concurrent connections per IP" msgstr "" -#: src/views/website/EditModal.vue:1903 +#: src/views/website/EditModal.vue:1913 #, fuzzy msgid "Rate Limit" msgstr "Resource Overview" -#: src/views/website/EditModal.vue:1913 +#: src/views/website/EditModal.vue:1923 msgid "Limit the rate of each request (unit: KB)" msgstr "" -#: src/views/website/EditModal.vue:1921 +#: src/views/website/EditModal.vue:1931 msgid "Real IP" msgstr "" -#: src/views/website/EditModal.vue:1924 +#: src/views/website/EditModal.vue:1934 msgid "" "Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." msgstr "" -#: src/views/website/EditModal.vue:1931 +#: src/views/website/EditModal.vue:1941 msgid "" "If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, " "fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) " "or ::/0 (ipv6) [insecure]." msgstr "" -#: src/views/website/EditModal.vue:1937 +#: src/views/website/EditModal.vue:1947 #, fuzzy msgid "Enable" msgstr "Enabled" -#: src/views/website/EditModal.vue:1941 +#: src/views/website/EditModal.vue:1951 msgid "IP Sources" msgstr "" -#: src/views/website/EditModal.vue:1945 +#: src/views/website/EditModal.vue:1955 msgid "One per line, e.g., 127.0.0.1 or 10.0.0.0/8" msgstr "" -#: src/views/website/EditModal.vue:1949 +#: src/views/website/EditModal.vue:1959 msgid "IP Header" msgstr "" -#: src/views/website/EditModal.vue:1964 +#: src/views/website/EditModal.vue:1974 msgid "Recursive" msgstr "" -#: src/views/website/EditModal.vue:1967 +#: src/views/website/EditModal.vue:1977 msgid "Recursively search for real IP in X-Forwarded-For header" msgstr "" -#: src/views/website/EditModal.vue:1975 +#: src/views/website/EditModal.vue:1985 #, fuzzy msgid "Basic Authentication" msgstr "Authentication" -#: src/views/website/EditModal.vue:1977 +#: src/views/website/EditModal.vue:1987 msgid "User Credentials" msgstr "" -#: src/views/website/EditModal.vue:1991 +#: src/views/website/EditModal.vue:2001 msgid "" "Visitors will need to enter a username and password to access this website." msgstr "" -#: src/views/website/EditModal.vue:1999 +#: src/views/website/EditModal.vue:2009 #, fuzzy msgid "Custom Configs" msgstr "Custom Logo" -#: src/views/website/EditModal.vue:2026 +#: src/views/website/EditModal.vue:2036 msgid "Config name (letters, numbers, underscore, hyphen)" msgstr "" -#: src/views/website/EditModal.vue:2034 +#: src/views/website/EditModal.vue:2044 #, fuzzy msgid "This Website" msgstr "Edit Website" -#: src/views/website/EditModal.vue:2035 +#: src/views/website/EditModal.vue:2045 msgid "Global" msgstr "" -#: src/views/website/EditModal.vue:2040 +#: src/views/website/EditModal.vue:2050 #, fuzzy msgid "Content" msgstr "Script Content" -#: src/views/website/EditModal.vue:2054 +#: src/views/website/EditModal.vue:2064 #, fuzzy msgid "No custom configs" msgstr "Not configured" -#: src/views/website/EditModal.vue:2059 +#: src/views/website/EditModal.vue:2069 #, fuzzy msgid "Add Custom Config" msgstr "Custom Logo" -#: src/views/website/EditModal.vue:2071 src/views/website/EditModal.vue:2087 +#: src/views/website/EditModal.vue:2081 src/views/website/EditModal.vue:2097 msgid "All logs can be viewed by downloading the file" msgstr "All logs can be viewed by downloading the file" -#: src/views/website/EditModal.vue:2073 src/views/website/EditModal.vue:2089 +#: src/views/website/EditModal.vue:2083 src/views/website/EditModal.vue:2099 msgid "view" msgstr "view" -#: src/views/website/EditModal.vue:2106 -msgid "Clear Logs" -msgstr "Clear Logs" - -#: src/views/website/EditModal.vue:2117 +#: src/views/website/EditModal.vue:2127 msgid "One-click Certificate Issuance" msgstr "One-click Certificate Issuance" -#: src/views/website/EditModal.vue:2121 +#: src/views/website/EditModal.vue:2131 msgid "Are you sure you want to reset the configuration?" msgstr "Are you sure you want to reset the configuration?" -#: src/views/website/EditModal.vue:2126 +#: src/views/website/EditModal.vue:2136 msgid "Reset Configuration" msgstr "Reset Configuration" -#: src/views/website/EditModal.vue:2148 +#: src/views/website/EditModal.vue:2158 #, fuzzy msgid "Select DNS Provider" msgstr "Select server" -#: src/views/website/EditModal.vue:2156 +#: src/views/website/EditModal.vue:2166 msgid "" "Your website contains wildcard domains (e.g. *.example.com), which require " "DNS verification to issue certificates." @@ -12333,87 +12808,93 @@ msgstr "" "This will delete the website directory but not the database with the same " "name. Are you sure you want to delete the selected websites?" -#: src/views/website/SettingView.vue:67 +#: src/views/website/SettingView.vue:80 +#, fuzzy +msgid "Built-in default page" +msgstr "Default Page" + +#: src/views/website/SettingView.vue:98 msgid "Default Page" msgstr "Default Page" -#: src/views/website/SettingView.vue:77 src/views/website/SettingView.vue:92 -#: src/views/website/SettingView.vue:107 src/views/website/SettingView.vue:150 -#: src/views/website/SettingView.vue:213 -msgid "Save Changes" -msgstr "Save Changes" - -#: src/views/website/SettingView.vue:82 +#: src/views/website/SettingView.vue:113 msgid "Stop Page" msgstr "Stop Page" -#: src/views/website/SettingView.vue:97 +#: src/views/website/SettingView.vue:128 msgid "404 Page" msgstr "" -#: src/views/website/SettingView.vue:112 +#: src/views/website/SettingView.vue:143 src/views/website/SettingView.vue:153 #, fuzzy msgid "Default Site" msgstr "Default Page" -#: src/views/website/SettingView.vue:115 +#: src/views/website/SettingView.vue:147 +msgid "" +"The default site handles requests that do not match any website domain, such " +"as direct access via IP address. By default, the panel built-in page is " +"displayed." +msgstr "" + +#: src/views/website/SettingView.vue:167 #, fuzzy msgid "Default Settings" msgstr "Menu Settings" -#: src/views/website/SettingView.vue:119 +#: src/views/website/SettingView.vue:171 msgid "" "Modifying the default TLS version will affect all newly created websites. " "Existing websites will not be affected." msgstr "" -#: src/views/website/SettingView.vue:126 +#: src/views/website/SettingView.vue:178 msgid "" "Please adjust the settings carefully, improper configuration may lead to " "website inaccessible." msgstr "" -#: src/views/website/SettingView.vue:132 +#: src/views/website/SettingView.vue:184 #, fuzzy msgid "Default TLS Version" msgstr "Set as CLI Default Version" -#: src/views/website/SettingView.vue:155 +#: src/views/website/SettingView.vue:207 #, fuzzy msgid "Statistics" msgstr "Status" -#: src/views/website/SettingView.vue:159 +#: src/views/website/SettingView.vue:211 msgid "" "Modifications to the limits below will take effect after restarting the " "panel." msgstr "" -#: src/views/website/SettingView.vue:165 +#: src/views/website/SettingView.vue:217 #, fuzzy msgid "Data Retention Days" msgstr "Retention Count" -#: src/views/website/SettingView.vue:168 +#: src/views/website/SettingView.vue:220 msgid "Error Buffer Max Size" msgstr "" -#: src/views/website/SettingView.vue:177 +#: src/views/website/SettingView.vue:229 #, fuzzy msgid "UV Max Keys" msgstr "Files" -#: src/views/website/SettingView.vue:186 +#: src/views/website/SettingView.vue:238 #, fuzzy msgid "IP Max Keys" msgstr "Files" -#: src/views/website/SettingView.vue:195 +#: src/views/website/SettingView.vue:247 #, fuzzy msgid "Detail Max Keys" msgstr "Add Process" -#: src/views/website/SettingView.vue:204 +#: src/views/website/SettingView.vue:256 #, fuzzy msgid "Record Request Body" msgstr "Authentication Method" @@ -12583,6 +13064,14 @@ msgstr "" msgid "Slow Requests" msgstr "Add Server" +#, fuzzy +#~ msgid "Failed to save file" +#~ msgstr "Failed to calculate size" + +#, fuzzy +#~ msgid "Failed to load file" +#~ msgstr "Failed to calculate size" + #~ msgid "Compressing..." #~ msgstr "Compressing..." @@ -12608,10 +13097,6 @@ msgstr "Add Server" #~ msgid "Scan failed" #~ msgstr "Copy failed" -#, fuzzy -#~ msgid "Clean failed" -#~ msgstr "Copy failed" - #~ msgid "Path or service cannot be empty" #~ msgstr "Path or service cannot be empty" @@ -12737,9 +13222,6 @@ msgstr "Add Server" #~ msgid "Enter account name" #~ msgstr "Enter comment name" -#~ msgid "Save Directory" -#~ msgstr "Save Directory" - #, fuzzy #~ msgid "Compose Preview" #~ msgstr "Compose Name" @@ -12896,9 +13378,6 @@ msgstr "Add Server" #~ msgid "SSH Service" #~ msgstr "Service" -#~ msgid "Extension Name" -#~ msgstr "Extension Name" - #~ msgid "Extension Management" #~ msgstr "Extension Management" diff --git a/web/src/locales/frontend.pot b/web/src/locales/frontend.pot index 891e21ec..ddf41c59 100644 --- a/web/src/locales/frontend.pot +++ b/web/src/locales/frontend.pot @@ -198,19 +198,19 @@ msgstr "" #: src/components/common/CronSelector.vue:347 #: src/views/apps/nginx/NginxIndex.vue:799 -#: src/views/website/EditModal.vue:676 +#: src/views/website/EditModal.vue:686 msgid "Seconds" msgstr "" #: src/components/common/CronSelector.vue:358 #: src/views/apps/nginx/NginxIndex.vue:800 -#: src/views/website/EditModal.vue:677 +#: src/views/website/EditModal.vue:687 msgid "Minutes" msgstr "" #: src/components/common/CronSelector.vue:369 #: src/views/apps/nginx/NginxIndex.vue:801 -#: src/views/website/EditModal.vue:678 +#: src/views/website/EditModal.vue:688 msgid "Hours" msgstr "" @@ -248,10 +248,10 @@ msgid "Maximize" msgstr "" #: src/components/common/DraggableWindow.vue:289 -#: src/components/file-editor/EditorPane.vue:254 +#: src/components/file-editor/EditorPane.vue:282 #: src/layouts/tab/components/ContextMenu.vue:29 #: src/views/cert/ObtainModal.vue:183 -#: src/views/ssh/IndexView.vue:468 +#: src/views/ssh/IndexView.vue:506 msgid "Close" msgstr "" @@ -264,8 +264,9 @@ msgid "Cannot save in current state" msgstr "" #: src/components/common/FileEditor.vue:94 -#: src/components/file-editor/EditorPane.vue:160 -#: src/components/file-editor/EditorToolbar.vue:40 +#: src/components/file-editor/EditorPane.vue:190 +#: src/components/file-editor/EditorToolbar.vue:38 +#: src/views/app/CustomModal.vue:44 #: src/views/apps/apache/IndexView.vue:46 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:58 #: src/views/apps/clickhouse/IndexView.vue:57 @@ -296,6 +297,7 @@ msgstr "" #: src/views/apps/nginx/NginxIndex.vue:478 #: src/views/apps/opensearch/IndexView.vue:51 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:58 +#: src/views/apps/pgadmin/IndexView.vue:36 #: src/views/apps/phpmyadmin/IndexView.vue:40 #: src/views/apps/phpmyadmin/IndexView.vue:52 #: src/views/apps/podman/IndexView.vue:29 @@ -329,12 +331,14 @@ msgstr "" #: src/views/environment/PythonView.vue:59 #: src/views/project/EditModal.vue:159 #: src/views/setting/IndexView.vue:84 +#: src/views/tamper/IndexView.vue:53 +#: src/views/tamper/RuleModal.vue:70 #: src/views/toolbox/SystemView.vue:72 #: src/views/toolbox/SystemView.vue:83 #: src/views/toolbox/SystemView.vue:97 #: src/views/toolbox/SystemView.vue:111 #: src/views/toolbox/SystemView.vue:158 -#: src/views/website/EditModal.vue:158 +#: src/views/website/EditModal.vue:168 msgid "Saved successfully" msgstr "" @@ -354,8 +358,8 @@ msgstr "" #: src/components/common/PathSelector.vue:51 #: src/components/common/PathSelector.vue:395 -#: src/views/app/EnvironmentView.vue:31 -#: src/views/app/InstalledView.vue:161 +#: src/views/app/EnvironmentView.vue:36 +#: src/views/app/InstalledView.vue:184 #: src/views/apps/fail2ban/IndexView.vue:41 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:72 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:206 @@ -376,26 +380,28 @@ msgstr "" #: src/views/container/VolumeView.vue:29 #: src/views/database/CreateServerModal.vue:108 #: src/views/database/ServerList.vue:66 -#: src/views/database/UpdateServerModal.vue:65 -#: src/views/file/ListView.vue:1340 +#: src/views/database/UpdateServerModal.vue:66 +#: src/views/file/ListView.vue:1392 #: src/views/file/PropertyModal.vue:27 -#: src/views/file/ToolBar.vue:150 +#: src/views/file/ToolBar.vue:123 #: src/views/home/IndexView.vue:659 #: src/views/home/IndexView.vue:760 #: src/views/project/ListView.vue:37 #: src/views/setting/PasskeyModal.vue:26 #: src/views/ssh/CreateModal.vue:60 #: src/views/ssh/UpdateModal.vue:66 +#: src/views/tamper/IndexView.vue:115 +#: src/views/tamper/RuleModal.vue:99 #: src/views/toolbox/LogView.vue:219 -#: src/views/toolbox/MigrationView.vue:695 -#: src/views/toolbox/MigrationView.vue:782 +#: src/views/toolbox/MigrationView.vue:726 +#: src/views/toolbox/MigrationView.vue:813 #: src/views/toolbox/ProcessView.vue:106 #: src/views/toolbox/ProcessView.vue:393 #: src/views/toolbox/WebHookView.vue:37 #: src/views/toolbox/WebHookView.vue:330 #: src/views/toolbox/WebHookView.vue:371 #: src/views/website/CreateModal.vue:187 -#: src/views/website/EditModal.vue:2022 +#: src/views/website/EditModal.vue:2032 msgid "Name" msgstr "" @@ -404,7 +410,7 @@ msgid "Permissions" msgstr "" #: src/components/common/PathSelector.vue:102 -#: src/views/file/ListView.vue:1351 +#: src/views/file/ListView.vue:1403 msgid "Owner / Group" msgstr "" @@ -413,9 +419,9 @@ msgstr "" #: src/views/container/ImageView.vue:70 #: src/views/database/ElasticsearchDataView.vue:112 #: src/views/database/RedisDataView.vue:116 -#: src/views/file/ListView.vue:1347 +#: src/views/file/ListView.vue:1399 #: src/views/file/PropertyModal.vue:39 -#: src/views/file/ToolBar.vue:151 +#: src/views/file/ToolBar.vue:124 #: src/views/toolbox/disk/RaidView.vue:95 #: src/views/toolbox/disk/RaidView.vue:177 #: src/views/toolbox/DiskView.vue:233 @@ -424,32 +430,32 @@ msgid "Size" msgstr "" #: src/components/common/PathSelector.vue:149 -#: src/views/file/ListView.vue:1490 +#: src/views/file/ListView.vue:1554 msgid "Calculate" msgstr "" #: src/components/common/PathSelector.vue:154 -#: src/views/file/ListView.vue:1356 +#: src/views/file/ListView.vue:1408 #: src/views/file/PropertyModal.vue:51 -#: src/views/file/ToolBar.vue:152 +#: src/views/file/ToolBar.vue:125 msgid "Modification Time" msgstr "" #: src/components/common/PathSelector.vue:188 -#: src/views/file/ListView.vue:1210 +#: src/views/file/ListView.vue:1243 #: src/views/file/PathInput.vue:43 msgid "Invalid path" msgstr "" #: src/components/common/PathSelector.vue:248 -#: src/views/file/ListView.vue:142 -#: src/views/file/ListView.vue:756 -#: src/views/file/ToolBar.vue:44 +#: src/views/file/ListView.vue:144 +#: src/views/file/ListView.vue:795 +#: src/views/file/ToolBar.vue:46 msgid "Invalid name" msgstr "" #: src/components/common/PathSelector.vue:258 -#: src/components/file-editor/FileTree.vue:286 +#: src/components/file-editor/FileTree.vue:266 #: src/views/app/TemplateDeployModal.vue:237 #: src/views/backup/StorageView.vue:150 #: src/views/cert/CreateAccountModal.vue:55 @@ -457,13 +463,13 @@ msgstr "" #: src/views/cert/CreateDnsModal.vue:44 #: src/views/cert/UploadCertModal.vue:26 #: src/views/container/ComposeView.vue:231 -#: src/views/container/ContainerCreate.vue:109 +#: src/views/container/ContainerCreate.vue:118 #: src/views/container/NetworkView.vue:184 #: src/views/container/VolumeView.vue:132 #: src/views/database/CreateDatabaseModal.vue:48 #: src/views/database/CreateUserModal.vue:56 #: src/views/database/ElasticsearchDataView.vue:263 -#: src/views/file/ListView.vue:151 +#: src/views/file/ListView.vue:153 #: src/views/firewall/CreateForwardModal.vue:44 #: src/views/setting/CreateModal.vue:22 #: src/views/setting/TokenModal.vue:117 @@ -475,21 +481,22 @@ msgstr "" #: src/components/common/PathSelector.vue:319 #: src/views/file/PropertyModal.vue:34 -#: src/views/file/ToolBar.vue:174 +#: src/views/file/ToolBar.vue:147 msgid "File" msgstr "" #: src/components/common/PathSelector.vue:320 -#: src/views/file/ToolBar.vue:175 +#: src/views/file/ToolBar.vue:148 msgid "Folder" msgstr "" #: src/components/common/PathSelector.vue:324 #: src/components/common/PathSelector.vue:387 #: src/views/app/TemplateDeployModal.vue:652 -#: src/views/container/ContainerCreate.vue:537 +#: src/views/container/ContainerCreate.vue:638 #: src/views/project/CreateModal.vue:693 #: src/views/setting/TokenModal.vue:270 +#: src/views/ssh/SftpBrowser.vue:160 #: src/views/toolbox/WebHookView.vue:356 #: src/views/website/BulkCreateModal.vue:240 #: src/views/website/CreateModal.vue:342 @@ -527,7 +534,7 @@ msgstr "" #: src/views/cert/UploadCertModal.vue:64 #: src/views/container/ComposeView.vue:341 #: src/views/container/ComposeView.vue:367 -#: src/views/container/ContainerView.vue:636 +#: src/views/container/ContainerView.vue:663 #: src/views/container/ImageView.vue:401 #: src/views/container/NetworkView.vue:339 #: src/views/container/VolumeView.vue:233 @@ -539,9 +546,9 @@ msgstr "" #: src/views/database/RedisDataView.vue:358 #: src/views/database/RedisDataView.vue:378 #: src/views/database/RedisKeyModal.vue:130 -#: src/views/database/UpdateServerModal.vue:123 +#: src/views/database/UpdateServerModal.vue:124 #: src/views/database/UpdateUserModal.vue:88 -#: src/views/file/ToolBar.vue:257 +#: src/views/file/ToolBar.vue:230 #: src/views/firewall/CreateForwardModal.vue:94 #: src/views/firewall/CreateIpModal.vue:125 #: src/views/firewall/CreateModal.vue:159 @@ -555,12 +562,12 @@ msgid "Submit" msgstr "" #: src/components/common/PtyTerminalModal.vue:125 -#: src/views/container/ContainerView.vue:472 +#: src/views/container/ContainerView.vue:499 msgid "Connection closed." msgstr "" #: src/components/common/PtyTerminalModal.vue:134 -#: src/views/container/ContainerView.vue:479 +#: src/views/container/ContainerView.vue:506 msgid "Connection error." msgstr "" @@ -573,6 +580,7 @@ msgstr "" #: src/components/common/PtyTerminalModal.vue:143 #: src/views/container/ImagePullModal.vue:93 #: src/views/container/ImageView.vue:227 +#: src/views/ssh/SftpPanel.vue:140 msgid "Failed to connect" msgstr "" @@ -585,7 +593,7 @@ msgstr "" #: src/views/apps/supervisor/IndexView.vue:133 #: src/views/apps/supervisor/IndexView.vue:151 #: src/views/container/ComposeView.vue:171 -#: src/views/file/composables/usePaste.ts:65 +#: src/views/file/composables/usePaste.ts:72 #: src/views/file/UploadModal.vue:791 #: src/views/home/IndexView.vue:1029 #: src/views/home/UpdateView.vue:109 @@ -606,7 +614,7 @@ msgstr "" #: src/views/toolbox/DiskView.vue:564 #: src/views/toolbox/DiskView.vue:569 #: src/views/toolbox/DiskView.vue:591 -#: src/views/toolbox/MigrationView.vue:347 +#: src/views/toolbox/MigrationView.vue:368 #: src/views/toolbox/ProcessView.vue:242 #: src/views/toolbox/ProcessView.vue:247 msgid "Confirm" @@ -617,8 +625,8 @@ msgid "Command may still running. Closing the window will terminate the command. msgstr "" #: src/components/common/PtyTerminalModal.vue:207 -#: src/components/file-editor/EditorToolbar.vue:102 -#: src/components/file-editor/FileTree.vue:605 +#: src/components/file-editor/EditorToolbar.vue:77 +#: src/components/file-editor/FileTree.vue:590 #: src/components/system/composables/useConfirm.ts:37 #: src/components/system/composables/useConfirm.ts:83 #: src/components/system/ConfirmDialog.vue:58 @@ -627,22 +635,25 @@ msgstr "" #: src/layouts/header/components/UserAvatar.vue:31 #: src/views/app/TemplateDeployModal.vue:637 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:239 -#: src/views/container/ContainerCreate.vue:534 +#: src/views/container/ContainerCreate.vue:147 +#: src/views/container/ContainerCreate.vue:635 #: src/views/container/ImagePullModal.vue:185 #: src/views/container/ImagePullModal.vue:199 #: src/views/container/ImageView.vue:347 #: src/views/container/ImageView.vue:362 -#: src/views/file/composables/usePaste.ts:66 -#: src/views/file/composables/usePaste.ts:146 -#: src/views/file/ListView.vue:245 -#: src/views/file/ListView.vue:769 -#: src/views/file/ToolBar.vue:208 +#: src/views/file/composables/usePaste.ts:73 +#: src/views/file/composables/usePaste.ts:153 +#: src/views/file/ListView.vue:287 +#: src/views/file/ListView.vue:821 +#: src/views/file/ToolBar.vue:181 #: src/views/file/UploadModal.vue:507 #: src/views/file/UploadModal.vue:642 #: src/views/file/UploadModal.vue:790 #: src/views/home/IndexView.vue:1030 #: src/views/home/UpdateView.vue:110 #: src/views/project/EditModal.vue:579 +#: src/views/ssh/SftpPanel.vue:277 +#: src/views/tamper/RuleModal.vue:124 #: src/views/toolbox/DiskView.vue:356 #: src/views/toolbox/DiskView.vue:378 #: src/views/toolbox/DiskView.vue:399 @@ -655,21 +666,22 @@ msgstr "" #: src/views/toolbox/DiskView.vue:548 #: src/views/toolbox/DiskView.vue:570 #: src/views/toolbox/DiskView.vue:592 -#: src/views/toolbox/MigrationView.vue:258 -#: src/views/toolbox/MigrationView.vue:348 +#: src/views/toolbox/MigrationView.vue:208 +#: src/views/toolbox/MigrationView.vue:279 +#: src/views/toolbox/MigrationView.vue:369 #: src/views/toolbox/ProcessView.vue:248 -#: src/views/website/EditModal.vue:2131 +#: src/views/website/EditModal.vue:2141 msgid "Cancel" msgstr "" #: src/components/common/PtyTerminalModal.vue:259 #: src/locales/menu.ts:19 -#: src/views/container/ContainerView.vue:123 -#: src/views/container/ContainerView.vue:642 +#: src/views/container/ContainerView.vue:142 +#: src/views/container/ContainerView.vue:669 #: src/views/database/ServerList.vue:174 -#: src/views/file/ListView.vue:350 -#: src/views/file/ListView.vue:965 -#: src/views/file/ToolBar.vue:183 +#: src/views/file/ListView.vue:392 +#: src/views/file/ListView.vue:986 +#: src/views/file/ToolBar.vue:156 msgid "Terminal" msgstr "" @@ -694,11 +706,11 @@ msgid "Jump to Bottom" msgstr "" #: src/components/common/RealtimeLog.vue:306 -#: src/components/file-editor/EditorToolbar.vue:222 -#: src/components/file-editor/FileTree.vue:719 +#: src/components/file-editor/EditorToolbar.vue:190 +#: src/components/file-editor/FileTree.vue:702 #: src/components/system/SearchToolbar.vue:58 -#: src/views/app/AppView.vue:237 -#: src/views/app/EnvironmentView.vue:226 +#: src/views/app/AppView.vue:258 +#: src/views/app/EnvironmentView.vue:248 #: src/views/app/TemplateView.vue:102 #: src/views/database/ElasticsearchDataView.vue:314 #: src/views/database/RedisDataView.vue:289 @@ -724,7 +736,7 @@ msgstr "" #: src/components/common/RealtimeLogModal.vue:37 #: src/locales/menu.ts:15 #: src/views/apps/supervisor/IndexView.vue:98 -#: src/views/container/ContainerView.vue:135 +#: src/views/container/ContainerView.vue:154 #: src/views/project/ListView.vue:168 #: src/views/project/ListView.vue:334 #: src/views/task/CronView.vue:146 @@ -759,7 +771,7 @@ msgid "Loading..." msgstr "" #: src/components/common/ServiceStatus.vue:30 -#: src/views/app/InstalledView.vue:19 +#: src/views/app/InstalledView.vue:30 #: src/views/apps/prometheus/PrometheusExportersView.vue:50 #: src/views/project/ListView.vue:70 #: src/views/task/TaskView.vue:45 @@ -770,9 +782,10 @@ msgid "Running" msgstr "" #: src/components/common/ServiceStatus.vue:30 -#: src/views/app/InstalledView.vue:20 +#: src/views/app/InstalledView.vue:31 #: src/views/apps/prometheus/PrometheusExportersView.vue:51 #: src/views/project/ListView.vue:72 +#: src/views/tamper/IndexView.vue:233 #: src/views/toolbox/ProcessView.vue:50 #: src/views/toolbox/ProcessView.vue:83 msgid "Stopped" @@ -860,8 +873,9 @@ msgstr "" #: src/views/apps/rsync/IndexView.vue:194 #: src/views/apps/supervisor/IndexView.vue:308 #: src/views/apps/valkey/IndexView.vue:62 -#: src/views/container/ContainerView.vue:101 +#: src/views/container/ContainerView.vue:106 #: src/views/environment/PHPView.vue:189 +#: src/views/tamper/IndexView.vue:229 msgid "Running Status" msgstr "" @@ -877,10 +891,10 @@ msgstr "" #: src/views/apps/prometheus/PrometheusExportersView.vue:88 #: src/views/apps/supervisor/IndexView.vue:120 #: src/views/container/ComposeView.vue:160 -#: src/views/container/ContainerView.vue:158 -#: src/views/container/ContainerView.vue:566 +#: src/views/container/ContainerView.vue:181 +#: src/views/container/ContainerView.vue:593 #: src/views/project/ListView.vue:130 -#: src/views/toolbox/MigrationView.vue:257 +#: src/views/toolbox/MigrationView.vue:278 msgid "Start" msgstr "" @@ -892,8 +906,8 @@ msgstr "" #: src/views/apps/prometheus/PrometheusExportersView.vue:96 #: src/views/apps/supervisor/IndexView.vue:141 #: src/views/container/ComposeView.vue:189 -#: src/views/container/ContainerView.vue:163 -#: src/views/container/ContainerView.vue:569 +#: src/views/container/ContainerView.vue:186 +#: src/views/container/ContainerView.vue:596 #: src/views/project/ListView.vue:130 msgid "Stop" msgstr "" @@ -901,8 +915,8 @@ msgstr "" #: src/components/common/ServiceStatus.vue:181 #: src/views/apps/prometheus/PrometheusExportersView.vue:103 #: src/views/apps/supervisor/IndexView.vue:159 -#: src/views/container/ContainerView.vue:168 -#: src/views/container/ContainerView.vue:572 +#: src/views/container/ContainerView.vue:191 +#: src/views/container/ContainerView.vue:599 #: src/views/home/IndexView.vue:555 #: src/views/project/ListView.vue:145 msgid "Restart" @@ -914,32 +928,29 @@ msgstr "" msgid "Reload" msgstr "" -#: src/components/file-editor/EditorPane.vue:126 -#: src/components/file-editor/EditorToolbar.vue:99 +#: src/components/file-editor/EditorPane.vue:158 +#: src/components/file-editor/EditorToolbar.vue:74 #: src/views/file/EditModal.vue:41 msgid "Unsaved Changes" msgstr "" -#: src/components/file-editor/EditorPane.vue:127 +#: src/components/file-editor/EditorPane.vue:159 msgid "This file has unsaved changes. Are you sure you want to close it?" msgstr "" -#: src/components/file-editor/EditorPane.vue:139 +#: src/components/file-editor/EditorPane.vue:171 #: src/views/file/EditModal.vue:55 msgid "Go Back" msgstr "" -#: src/components/file-editor/EditorPane.vue:150 +#: src/components/file-editor/EditorPane.vue:182 #: src/views/file/EditModal.vue:66 msgid "Discard" msgstr "" -#: src/components/file-editor/EditorPane.vue:165 -msgid "Failed to save file" -msgstr "" - -#: src/components/file-editor/EditorPane.vue:170 -#: src/components/file-editor/EditorToolbar.vue:185 +#: src/components/file-editor/EditorPane.vue:198 +#: src/components/file-editor/EditorToolbar.vue:153 +#: src/views/app/CustomModal.vue:104 #: src/views/apps/apache/IndexView.vue:92 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:91 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:116 @@ -991,6 +1002,7 @@ msgstr "" #: src/views/apps/opensearch/IndexView.vue:82 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:97 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:132 +#: src/views/apps/pgadmin/IndexView.vue:96 #: src/views/apps/phpmyadmin/IndexView.vue:83 #: src/views/apps/phpmyadmin/IndexView.vue:107 #: src/views/apps/podman/IndexView.vue:80 @@ -1026,6 +1038,7 @@ msgstr "" #: src/views/apps/valkey/ValkeyConfigTuneView.vue:171 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:205 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:230 +#: src/views/container/ContainerCreate.vue:638 #: src/views/environment/GoView.vue:90 #: src/views/environment/NodejsView.vue:93 #: src/views/environment/PhpConfigTuneView.vue:274 @@ -1037,10 +1050,11 @@ msgstr "" #: src/views/environment/PHPView.vue:236 #: src/views/environment/PHPView.vue:254 #: src/views/environment/PythonView.vue:97 -#: src/views/file/EditModal.vue:111 +#: src/views/file/EditModal.vue:89 #: src/views/firewall/SettingView.vue:136 #: src/views/project/EditModal.vue:582 #: src/views/setting/IndexView.vue:169 +#: src/views/tamper/RuleModal.vue:126 #: src/views/task/CreateModal.vue:551 #: src/views/task/CronView.vue:344 #: src/views/toolbox/SshView.vue:220 @@ -1050,24 +1064,24 @@ msgstr "" #: src/views/toolbox/SystemView.vue:290 #: src/views/toolbox/SystemView.vue:372 #: src/views/toolbox/WebHookView.vue:400 -#: src/views/website/EditModal.vue:2140 +#: src/views/website/EditModal.vue:2150 msgid "Save" msgstr "" -#: src/components/file-editor/EditorPane.vue:258 +#: src/components/file-editor/EditorPane.vue:286 #: src/layouts/tab/components/ContextMenu.vue:53 msgid "Close Others" msgstr "" -#: src/components/file-editor/EditorPane.vue:262 +#: src/components/file-editor/EditorPane.vue:290 msgid "Close All" msgstr "" -#: src/components/file-editor/EditorPane.vue:266 +#: src/components/file-editor/EditorPane.vue:294 msgid "Close Saved" msgstr "" -#: src/components/file-editor/EditorPane.vue:470 +#: src/components/file-editor/EditorPane.vue:518 msgid "Select a file to edit" msgstr "" @@ -1105,27 +1119,27 @@ msgid "No file to save" msgstr "" #: src/components/file-editor/EditorToolbar.vue:32 -#: src/components/file-editor/EditorToolbar.vue:51 +#: src/components/file-editor/EditorToolbar.vue:47 msgid "No changes to save" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:81 -#: src/views/file/EditModal.vue:100 +#: src/components/file-editor/EditorToolbar.vue:56 +#: src/views/file/EditModal.vue:78 msgid "All files saved successfully" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:84 +#: src/components/file-editor/EditorToolbar.vue:59 msgid "Saved %{ success } files, %{ fail } failed" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:100 +#: src/components/file-editor/EditorToolbar.vue:75 msgid "This file has unsaved changes. Refreshing will discard them. Continue?" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:101 -#: src/components/file-editor/EditorToolbar.vue:201 -#: src/components/file-editor/EditorToolbar.vue:206 -#: src/components/file-editor/FileTree.vue:697 +#: src/components/file-editor/EditorToolbar.vue:76 +#: src/components/file-editor/EditorToolbar.vue:169 +#: src/components/file-editor/EditorToolbar.vue:174 +#: src/components/file-editor/FileTree.vue:680 #: src/components/system/RefreshButton.vue:31 #: src/components/system/RefreshButton.vue:37 #: src/views/file/PathInput.vue:133 @@ -1134,7 +1148,9 @@ msgstr "" #: src/views/log/HttpLog.vue:161 #: src/views/log/OperationLog.vue:184 #: src/views/log/SSHLog.vue:115 -#: src/views/toolbox/MigrationView.vue:588 +#: src/views/ssh/SftpBrowser.vue:138 +#: src/views/tamper/IndexView.vue:376 +#: src/views/toolbox/MigrationView.vue:610 #: src/views/toolbox/NetworkView.vue:188 #: src/views/toolbox/PanelView.vue:100 #: src/views/toolbox/PanelView.vue:233 @@ -1143,134 +1159,135 @@ msgstr "" msgid "Refresh" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:118 +#: src/components/file-editor/EditorToolbar.vue:89 msgid "Refreshed successfully" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:180 +#: src/components/file-editor/EditorToolbar.vue:148 msgid "Save (Ctrl+S)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:191 +#: src/components/file-editor/EditorToolbar.vue:159 msgid "Save All (Ctrl+Shift+S)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:196 +#: src/components/file-editor/EditorToolbar.vue:164 msgid "Save All" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:217 +#: src/components/file-editor/EditorToolbar.vue:185 msgid "Search (Ctrl+F)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:227 +#: src/components/file-editor/EditorToolbar.vue:195 msgid "Replace (Ctrl+H)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:232 +#: src/components/file-editor/EditorToolbar.vue:200 msgid "Replace" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:237 +#: src/components/file-editor/EditorToolbar.vue:205 msgid "Go to Line (Ctrl+G)" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:242 +#: src/components/file-editor/EditorToolbar.vue:210 msgid "Go to" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:271 +#: src/components/file-editor/EditorToolbar.vue:239 msgid "Toggle Word Wrap" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:282 +#: src/components/file-editor/EditorToolbar.vue:250 msgid "Toggle Minimap" msgstr "" -#: src/components/file-editor/EditorToolbar.vue:292 +#: src/components/file-editor/EditorToolbar.vue:260 #: src/views/firewall/IndexView.vue:26 -#: src/views/ssh/IndexView.vue:483 +#: src/views/ssh/IndexView.vue:521 +#: src/views/tamper/IndexView.vue:217 #: src/views/website/IndexView.vue:30 msgid "Settings" msgstr "" -#: src/components/file-editor/FileEditorView.vue:146 +#: src/components/file-editor/FileEditorView.vue:149 msgid "Editor Settings" msgstr "" -#: src/components/file-editor/FileEditorView.vue:152 +#: src/components/file-editor/FileEditorView.vue:155 #: src/views/setting/IndexView.vue:147 msgid "Basic" msgstr "" -#: src/components/file-editor/FileEditorView.vue:154 +#: src/components/file-editor/FileEditorView.vue:157 msgid "Tab Size" msgstr "" -#: src/components/file-editor/FileEditorView.vue:162 +#: src/components/file-editor/FileEditorView.vue:165 msgid "Use Spaces" msgstr "" -#: src/components/file-editor/FileEditorView.vue:168 -#: src/views/ssh/IndexView.vue:489 +#: src/components/file-editor/FileEditorView.vue:171 +#: src/views/ssh/IndexView.vue:527 msgid "Font Size" msgstr "" -#: src/components/file-editor/FileEditorView.vue:178 +#: src/components/file-editor/FileEditorView.vue:181 msgid "Word Wrap" msgstr "" -#: src/components/file-editor/FileEditorView.vue:182 -#: src/components/file-editor/FileEditorView.vue:208 +#: src/components/file-editor/FileEditorView.vue:185 +#: src/components/file-editor/FileEditorView.vue:211 #: src/views/apps/mysql/MysqlConfigTuneView.vue:102 msgid "Off" msgstr "" -#: src/components/file-editor/FileEditorView.vue:183 -#: src/components/file-editor/FileEditorView.vue:207 +#: src/components/file-editor/FileEditorView.vue:186 +#: src/components/file-editor/FileEditorView.vue:210 #: src/views/apps/mysql/MysqlConfigTuneView.vue:101 msgid "On" msgstr "" -#: src/components/file-editor/FileEditorView.vue:184 +#: src/components/file-editor/FileEditorView.vue:187 msgid "Word Wrap Column" msgstr "" -#: src/components/file-editor/FileEditorView.vue:185 +#: src/components/file-editor/FileEditorView.vue:188 msgid "Bounded" msgstr "" -#: src/components/file-editor/FileEditorView.vue:193 +#: src/components/file-editor/FileEditorView.vue:196 msgid "Show Minimap" msgstr "" -#: src/components/file-editor/FileEditorView.vue:201 +#: src/components/file-editor/FileEditorView.vue:204 msgid "Display" msgstr "" -#: src/components/file-editor/FileEditorView.vue:203 +#: src/components/file-editor/FileEditorView.vue:206 msgid "Line Numbers" msgstr "" -#: src/components/file-editor/FileEditorView.vue:209 +#: src/components/file-editor/FileEditorView.vue:212 msgid "Relative" msgstr "" -#: src/components/file-editor/FileEditorView.vue:210 +#: src/components/file-editor/FileEditorView.vue:213 msgid "Interval" msgstr "" -#: src/components/file-editor/FileEditorView.vue:218 +#: src/components/file-editor/FileEditorView.vue:221 msgid "Render Whitespace" msgstr "" -#: src/components/file-editor/FileEditorView.vue:222 +#: src/components/file-editor/FileEditorView.vue:225 #: src/views/apps/docker/IndexView.vue:83 #: src/views/cert/CertView.vue:88 #: src/views/cert/CertView.vue:142 #: src/views/cert/CertView.vue:153 #: src/views/cert/CertView.vue:171 -#: src/views/container/ContainerCreate.vue:53 +#: src/views/container/ContainerCreate.vue:57 #: src/views/database/ServerList.vue:78 #: src/views/database/ServerList.vue:93 #: src/views/database/UserList.vue:28 @@ -1280,28 +1297,28 @@ msgstr "" #: src/views/firewall/IpRuleView.vue:44 #: src/views/firewall/RuleView.vue:44 #: src/views/firewall/RuleView.vue:61 -#: src/views/toolbox/MigrationView.vue:479 -#: src/views/toolbox/MigrationView.vue:480 -#: src/views/toolbox/MigrationView.vue:559 -#: src/views/toolbox/MigrationView.vue:574 +#: src/views/toolbox/MigrationView.vue:501 +#: src/views/toolbox/MigrationView.vue:502 +#: src/views/toolbox/MigrationView.vue:581 +#: src/views/toolbox/MigrationView.vue:596 msgid "None" msgstr "" -#: src/components/file-editor/FileEditorView.vue:223 +#: src/components/file-editor/FileEditorView.vue:226 msgid "Boundary" msgstr "" -#: src/components/file-editor/FileEditorView.vue:224 +#: src/components/file-editor/FileEditorView.vue:227 msgid "Selection" msgstr "" -#: src/components/file-editor/FileEditorView.vue:225 +#: src/components/file-editor/FileEditorView.vue:228 msgid "Trailing" msgstr "" -#: src/components/file-editor/FileEditorView.vue:226 -#: src/views/app/AppView.vue:222 -#: src/views/app/EnvironmentView.vue:211 +#: src/components/file-editor/FileEditorView.vue:229 +#: src/views/app/AppView.vue:243 +#: src/views/app/EnvironmentView.vue:233 #: src/views/app/TemplateView.vue:87 #: src/views/firewall/RuleView.vue:223 #: src/views/project/IndexView.vue:21 @@ -1310,131 +1327,126 @@ msgstr "" msgid "All" msgstr "" -#: src/components/file-editor/FileEditorView.vue:234 +#: src/components/file-editor/FileEditorView.vue:237 msgid "Bracket Colorization" msgstr "" -#: src/components/file-editor/FileEditorView.vue:242 +#: src/components/file-editor/FileEditorView.vue:245 msgid "Indent Guides" msgstr "" -#: src/components/file-editor/FileEditorView.vue:248 +#: src/components/file-editor/FileEditorView.vue:251 msgid "Code Folding" msgstr "" -#: src/components/file-editor/FileEditorView.vue:256 +#: src/components/file-editor/FileEditorView.vue:259 msgid "Cursor" msgstr "" -#: src/components/file-editor/FileEditorView.vue:258 +#: src/components/file-editor/FileEditorView.vue:261 msgid "Cursor Style" msgstr "" -#: src/components/file-editor/FileEditorView.vue:262 +#: src/components/file-editor/FileEditorView.vue:265 msgid "Line" msgstr "" -#: src/components/file-editor/FileEditorView.vue:263 +#: src/components/file-editor/FileEditorView.vue:266 msgid "Block" msgstr "" -#: src/components/file-editor/FileEditorView.vue:264 +#: src/components/file-editor/FileEditorView.vue:267 msgid "Underline" msgstr "" -#: src/components/file-editor/FileEditorView.vue:265 +#: src/components/file-editor/FileEditorView.vue:268 msgid "Line Thin" msgstr "" -#: src/components/file-editor/FileEditorView.vue:266 +#: src/components/file-editor/FileEditorView.vue:269 msgid "Block Outline" msgstr "" -#: src/components/file-editor/FileEditorView.vue:267 +#: src/components/file-editor/FileEditorView.vue:270 msgid "Underline Thin" msgstr "" -#: src/components/file-editor/FileEditorView.vue:282 +#: src/components/file-editor/FileEditorView.vue:285 msgid "Cursor Blinking" msgstr "" -#: src/components/file-editor/FileEditorView.vue:286 +#: src/components/file-editor/FileEditorView.vue:289 msgid "Blink" msgstr "" -#: src/components/file-editor/FileEditorView.vue:287 +#: src/components/file-editor/FileEditorView.vue:290 msgid "Smooth" msgstr "" -#: src/components/file-editor/FileEditorView.vue:288 +#: src/components/file-editor/FileEditorView.vue:291 msgid "Phase" msgstr "" -#: src/components/file-editor/FileEditorView.vue:289 +#: src/components/file-editor/FileEditorView.vue:292 msgid "Expand" msgstr "" -#: src/components/file-editor/FileEditorView.vue:290 +#: src/components/file-editor/FileEditorView.vue:293 msgid "Solid" msgstr "" -#: src/components/file-editor/FileEditorView.vue:298 +#: src/components/file-editor/FileEditorView.vue:301 msgid "Smooth Scrolling" msgstr "" -#: src/components/file-editor/FileEditorView.vue:306 +#: src/components/file-editor/FileEditorView.vue:309 msgid "Behavior" msgstr "" -#: src/components/file-editor/FileEditorView.vue:308 +#: src/components/file-editor/FileEditorView.vue:311 msgid "Mouse Wheel Zoom" msgstr "" -#: src/components/file-editor/FileEditorView.vue:314 +#: src/components/file-editor/FileEditorView.vue:317 msgid "Format On Paste" msgstr "" -#: src/components/file-editor/FileEditorView.vue:320 +#: src/components/file-editor/FileEditorView.vue:323 msgid "Format On Type" msgstr "" -#: src/components/file-editor/FileTree.vue:155 -#: src/views/file/EditModal.vue:138 -msgid "Failed to load file" -msgstr "" - -#: src/components/file-editor/FileTree.vue:311 +#: src/components/file-editor/FileTree.vue:291 msgid "Failed to create" msgstr "" -#: src/components/file-editor/FileTree.vue:380 -#: src/views/file/ListView.vue:1377 -#: src/views/file/ListView.vue:1398 +#: src/components/file-editor/FileTree.vue:360 +#: src/views/file/ListView.vue:1429 +#: src/views/file/ListView.vue:1450 msgid "Folder name" msgstr "" -#: src/components/file-editor/FileTree.vue:380 -#: src/views/file/ListView.vue:1377 -#: src/views/file/ListView.vue:1398 +#: src/components/file-editor/FileTree.vue:360 +#: src/views/file/ListView.vue:1429 +#: src/views/file/ListView.vue:1450 msgid "File name" msgstr "" -#: src/components/file-editor/FileTree.vue:479 -#: src/views/container/ContainerView.vue:150 -#: src/views/container/ContainerView.vue:613 +#: src/components/file-editor/FileTree.vue:459 +#: src/views/container/ContainerView.vue:169 +#: src/views/container/ContainerView.vue:640 #: src/views/database/RedisDataView.vue:168 -#: src/views/file/composables/usePaste.ts:41 -#: src/views/file/composables/usePaste.ts:157 -#: src/views/file/ListView.vue:348 -#: src/views/file/ListView.vue:1546 +#: src/views/file/composables/usePaste.ts:48 +#: src/views/file/composables/usePaste.ts:164 +#: src/views/file/ListView.vue:390 +#: src/views/file/ListView.vue:1610 #: src/views/file/UploadModal.vue:749 #: src/views/file/UploadModal.vue:783 msgid "Rename" msgstr "" -#: src/components/file-editor/FileTree.vue:480 -#: src/components/file-editor/FileTree.vue:602 -#: src/components/file-editor/FileTree.vue:604 +#: src/components/file-editor/FileTree.vue:460 +#: src/components/file-editor/FileTree.vue:587 +#: src/components/file-editor/FileTree.vue:589 #: src/components/system/composables/useConfirm.ts:32 #: src/components/system/ConfirmDialog.vue:54 #: src/views/apps/fail2ban/IndexView.vue:96 @@ -1453,8 +1465,8 @@ msgstr "" #: src/views/cert/DnsView.vue:109 #: src/views/container/ComposeView.vue:209 #: src/views/container/ComposeView.vue:289 -#: src/views/container/ContainerView.vue:188 -#: src/views/container/ContainerView.vue:584 +#: src/views/container/ContainerView.vue:211 +#: src/views/container/ContainerView.vue:611 #: src/views/container/ImageView.vue:103 #: src/views/container/ImageView.vue:273 #: src/views/container/NetworkView.vue:130 @@ -1468,22 +1480,23 @@ msgstr "" #: src/views/database/ServerList.vue:247 #: src/views/database/UserList.vue:165 #: src/views/environment/PHPView.vue:107 -#: src/views/file/ListView.vue:311 -#: src/views/file/ListView.vue:355 -#: src/views/file/ListView.vue:1557 -#: src/views/file/ToolBar.vue:225 +#: src/views/file/ListView.vue:353 +#: src/views/file/ListView.vue:404 +#: src/views/file/ListView.vue:1621 +#: src/views/file/ToolBar.vue:198 #: src/views/firewall/ForwardView.vue:98 #: src/views/firewall/ForwardView.vue:162 #: src/views/firewall/IpRuleView.vue:140 #: src/views/firewall/IpRuleView.vue:204 #: src/views/firewall/RuleView.vue:248 -#: src/views/firewall/RuleView.vue:312 +#: src/views/firewall/RuleView.vue:333 #: src/views/project/ListView.vue:194 #: src/views/project/ListView.vue:305 #: src/views/setting/PasskeyModal.vue:68 #: src/views/setting/SettingUser.vue:142 #: src/views/setting/TokenModal.vue:87 -#: src/views/ssh/IndexView.vue:572 +#: src/views/ssh/IndexView.vue:614 +#: src/views/tamper/IndexView.vue:148 #: src/views/task/CronView.vue:169 #: src/views/task/IndexView.vue:41 #: src/views/task/TaskView.vue:104 @@ -1493,32 +1506,36 @@ msgstr "" msgid "Delete" msgstr "" -#: src/components/file-editor/FileTree.vue:483 -#: src/views/file/ListView.vue:345 -#: src/views/file/ListView.vue:1541 +#: src/components/file-editor/FileTree.vue:463 +#: src/views/file/ListView.vue:387 +#: src/views/file/ListView.vue:1605 #: src/views/monitor/IndexView.vue:602 #: src/views/toolbox/SshView.vue:345 msgid "Download" msgstr "" -#: src/components/file-editor/FileTree.vue:567 +#: src/components/file-editor/FileTree.vue:549 +msgid "Target name already exists" +msgstr "" + +#: src/components/file-editor/FileTree.vue:555 #: src/views/database/RedisDataView.vue:238 msgid "Renamed successfully" msgstr "" -#: src/components/file-editor/FileTree.vue:592 +#: src/components/file-editor/FileTree.vue:573 msgid "Failed to rename" msgstr "" -#: src/components/file-editor/FileTree.vue:603 +#: src/components/file-editor/FileTree.vue:588 #: src/views/apps/nginx/NginxIndex.vue:211 #: src/views/apps/nginx/NginxIndex.vue:275 -#: src/views/file/ListView.vue:847 -#: src/views/file/ListView.vue:1551 +#: src/views/file/ListView.vue:864 +#: src/views/file/ListView.vue:1615 msgid "Are you sure you want to delete %{ name }?" msgstr "" -#: src/components/file-editor/FileTree.vue:609 +#: src/components/file-editor/FileTree.vue:594 #: src/views/apps/fail2ban/IndexView.vue:190 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:185 #: src/views/apps/nginx/NginxIndex.vue:405 @@ -1536,22 +1553,21 @@ msgstr "" #: src/views/database/ElasticsearchDataView.vue:241 #: src/views/database/ElasticsearchDataView.vue:250 #: src/views/database/RedisDataView.vue:211 -#: src/views/database/ServerList.vue:268 +#: src/views/database/ServerList.vue:269 #: src/views/database/UserList.vue:185 -#: src/views/file/ListView.vue:824 -#: src/views/file/ListView.vue:831 -#: src/views/file/ToolBar.vue:115 +#: src/views/file/composables/useFileOps.ts:31 #: src/views/firewall/ForwardView.vue:119 #: src/views/firewall/ForwardView.vue:137 #: src/views/firewall/IpRuleView.vue:161 #: src/views/firewall/IpRuleView.vue:179 -#: src/views/firewall/RuleView.vue:269 -#: src/views/firewall/RuleView.vue:287 +#: src/views/firewall/RuleView.vue:290 +#: src/views/firewall/RuleView.vue:308 #: src/views/project/ListView.vue:268 #: src/views/project/ListView.vue:278 #: src/views/setting/PasskeyModal.vue:96 #: src/views/setting/SettingUser.vue:173 #: src/views/setting/TokenModal.vue:106 +#: src/views/tamper/IndexView.vue:109 #: src/views/task/CronView.vue:231 #: src/views/task/CronView.vue:241 #: src/views/task/TaskView.vue:126 @@ -1561,38 +1577,38 @@ msgstr "" msgid "Deleted successfully" msgstr "" -#: src/components/file-editor/FileTree.vue:628 +#: src/components/file-editor/FileTree.vue:611 msgid "Failed to delete" msgstr "" -#: src/components/file-editor/FileTree.vue:692 +#: src/components/file-editor/FileTree.vue:675 msgid "Go Up" msgstr "" -#: src/components/file-editor/FileTree.vue:704 -#: src/views/file/ListView.vue:292 +#: src/components/file-editor/FileTree.vue:687 +#: src/views/file/ListView.vue:334 msgid "New File" msgstr "" -#: src/components/file-editor/FileTree.vue:705 -#: src/views/file/ListView.vue:293 +#: src/components/file-editor/FileTree.vue:688 +#: src/views/file/ListView.vue:335 msgid "New Folder" msgstr "" -#: src/components/file-editor/FileTree.vue:709 -#: src/views/file/ToolBar.vue:179 +#: src/components/file-editor/FileTree.vue:692 +#: src/views/file/ToolBar.vue:152 msgid "New" msgstr "" -#: src/components/file-editor/FileTree.vue:742 +#: src/components/file-editor/FileTree.vue:725 msgid "Enter path" msgstr "" -#: src/components/file-editor/FileTree.vue:772 +#: src/components/file-editor/FileTree.vue:755 msgid "No results found" msgstr "" -#: src/components/file-editor/FileTree.vue:797 +#: src/components/file-editor/FileTree.vue:780 #: src/components/system/EmptyState.vue:34 #: src/views/website/stats/GeoTab.vue:163 msgid "No data" @@ -1603,7 +1619,7 @@ msgid "selected" msgstr "" #: src/components/system/BatchActions.vue:70 -#: src/views/file/ListView.vue:1591 +#: src/views/file/ListView.vue:1655 msgid "Clear" msgstr "" @@ -1625,10 +1641,10 @@ msgstr "" #: src/views/apps/postgresql/IndexView.vue:172 #: src/views/database/ServerList.vue:106 #: src/views/database/UserList.vue:56 -#: src/views/file/ListView.vue:307 -#: src/views/file/ListView.vue:341 -#: src/views/file/ListView.vue:950 -#: src/views/file/ToolBar.vue:214 +#: src/views/file/ListView.vue:349 +#: src/views/file/ListView.vue:383 +#: src/views/file/ListView.vue:971 +#: src/views/file/ToolBar.vue:187 msgid "Copy" msgstr "" @@ -1772,7 +1788,7 @@ msgstr "" #: src/views/cert/IndexView.vue:96 #: src/views/cert/UploadCertModal.vue:46 #: src/views/setting/SettingSafe.vue:275 -#: src/views/website/EditModal.vue:1702 +#: src/views/website/EditModal.vue:1712 msgid "Certificate" msgstr "" @@ -1787,7 +1803,7 @@ msgstr "" #: src/views/apps/grafana/GrafanaDataSourcesView.vue:222 #: src/views/backup/ListView.vue:327 #: src/views/home/IndexView.vue:534 -#: src/views/toolbox/MigrationView.vue:546 +#: src/views/toolbox/MigrationView.vue:568 #: src/views/website/CreateModal.vue:248 msgid "Database" msgstr "" @@ -1826,10 +1842,10 @@ msgid "Toolbox" msgstr "" #: src/locales/menu.ts:22 -#: src/views/app/AppView.vue:97 -#: src/views/app/EnvironmentView.vue:81 -#: src/views/app/InstalledView.vue:106 -#: src/views/app/InstalledView.vue:205 +#: src/views/app/AppView.vue:102 +#: src/views/app/EnvironmentView.vue:86 +#: src/views/app/InstalledView.vue:117 +#: src/views/app/InstalledView.vue:228 #: src/views/app/TemplateDeployModal.vue:652 #: src/views/home/IndexView.vue:563 #: src/views/setting/TokenModal.vue:308 @@ -1865,24 +1881,24 @@ msgstr "" msgid "Login" msgstr "" -#: src/views/app/AppView.vue:19 -#: src/views/app/AppView.vue:143 -#: src/views/app/AppView.vue:147 -#: src/views/app/EnvironmentView.vue:134 +#: src/views/app/AppView.vue:20 +#: src/views/app/AppView.vue:148 +#: src/views/app/AppView.vue:152 +#: src/views/app/EnvironmentView.vue:139 #: src/views/apps/prometheus/PrometheusExportersView.vue:79 #: src/views/environment/PHPView.vue:107 msgid "Install" msgstr "" -#: src/views/app/AppView.vue:37 -#: src/views/app/InstalledView.vue:37 +#: src/views/app/AppView.vue:42 +#: src/views/app/InstalledView.vue:47 msgid "App Name" msgstr "" -#: src/views/app/AppView.vue:43 -#: src/views/app/EnvironmentView.vue:37 -#: src/views/app/InstalledView.vue:43 -#: src/views/app/InstalledView.vue:167 +#: src/views/app/AppView.vue:48 +#: src/views/app/EnvironmentView.vue:42 +#: src/views/app/InstalledView.vue:53 +#: src/views/app/InstalledView.vue:190 #: src/views/apps/prometheus/PrometheusExportersView.vue:32 #: src/views/environment/PHPView.vue:64 #: src/views/project/EditModal.vue:193 @@ -1890,22 +1906,22 @@ msgstr "" msgid "Description" msgstr "" -#: src/views/app/AppView.vue:49 -#: src/views/app/EnvironmentView.vue:49 -#: src/views/app/InstalledView.vue:49 -#: src/views/app/InstalledView.vue:173 +#: src/views/app/AppView.vue:54 +#: src/views/app/EnvironmentView.vue:54 +#: src/views/app/InstalledView.vue:59 +#: src/views/app/InstalledView.vue:196 msgid "Installed Version" msgstr "" -#: src/views/app/AppView.vue:55 -#: src/views/app/InstalledView.vue:64 +#: src/views/app/AppView.vue:60 +#: src/views/app/InstalledView.vue:75 msgid "Show in Home" msgstr "" -#: src/views/app/AppView.vue:68 -#: src/views/app/EnvironmentView.vue:55 -#: src/views/app/InstalledView.vue:77 -#: src/views/app/InstalledView.vue:179 +#: src/views/app/AppView.vue:73 +#: src/views/app/EnvironmentView.vue:60 +#: src/views/app/InstalledView.vue:88 +#: src/views/app/InstalledView.vue:202 #: src/views/apps/fail2ban/IndexView.vue:63 #: src/views/apps/fail2ban/IndexView.vue:112 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:99 @@ -1923,7 +1939,7 @@ msgstr "" #: src/views/cert/CertView.vue:189 #: src/views/cert/DnsView.vue:69 #: src/views/container/ComposeView.vue:102 -#: src/views/container/ContainerView.vue:108 +#: src/views/container/ContainerView.vue:113 #: src/views/container/ImageView.vue:86 #: src/views/container/NetworkView.vue:112 #: src/views/container/VolumeView.vue:66 @@ -1934,7 +1950,7 @@ msgstr "" #: src/views/database/ServerList.vue:161 #: src/views/database/UserList.vue:134 #: src/views/environment/PHPView.vue:71 -#: src/views/file/ListView.vue:1359 +#: src/views/file/ListView.vue:1411 #: src/views/firewall/ForwardView.vue:81 #: src/views/firewall/IpRuleView.vue:123 #: src/views/firewall/RuleView.vue:231 @@ -1943,6 +1959,7 @@ msgstr "" #: src/views/setting/PasskeyModal.vue:51 #: src/views/setting/SettingUser.vue:88 #: src/views/setting/TokenModal.vue:57 +#: src/views/tamper/IndexView.vue:137 #: src/views/task/CronView.vue:119 #: src/views/task/TaskView.vue:67 #: src/views/toolbox/DiskView.vue:298 @@ -1952,95 +1969,124 @@ msgstr "" msgid "Actions" msgstr "" -#: src/views/app/AppView.vue:88 -#: src/views/app/EnvironmentView.vue:73 -#: src/views/app/InstalledView.vue:97 -#: src/views/app/InstalledView.vue:197 +#: src/views/app/AppView.vue:93 +#: src/views/app/EnvironmentView.vue:78 +#: src/views/app/InstalledView.vue:108 +#: src/views/app/InstalledView.vue:220 +#: src/views/container/ContainerCreate.vue:142 msgid "Confirm Update" msgstr "" -#: src/views/app/AppView.vue:89 -#: src/views/app/InstalledView.vue:98 +#: src/views/app/AppView.vue:94 +#: src/views/app/InstalledView.vue:109 msgid "Updating app %{ app } to %{ version } may reset related configurations to default state, are you sure to continue?" msgstr "" -#: src/views/app/AppView.vue:110 -#: src/views/app/EnvironmentView.vue:94 -#: src/views/app/InstalledView.vue:118 -#: src/views/app/InstalledView.vue:217 +#: src/views/app/AppView.vue:115 +#: src/views/app/EnvironmentView.vue:99 +#: src/views/app/InstalledView.vue:129 +#: src/views/app/InstalledView.vue:240 msgid "Manage" msgstr "" -#: src/views/app/AppView.vue:119 -#: src/views/app/EnvironmentView.vue:103 -#: src/views/app/InstalledView.vue:127 -#: src/views/app/InstalledView.vue:226 +#: src/views/app/AppView.vue:124 +#: src/views/app/EnvironmentView.vue:108 +#: src/views/app/InstalledView.vue:138 +#: src/views/app/InstalledView.vue:249 #: src/views/apps/prometheus/PrometheusExportersView.vue:124 #: src/views/environment/PHPView.vue:85 msgid "Confirm Uninstall" msgstr "" -#: src/views/app/AppView.vue:121 -#: src/views/app/InstalledView.vue:129 +#: src/views/app/AppView.vue:126 +#: src/views/app/InstalledView.vue:140 msgid "Reinstalling/Switching to a different web server will reset the configuration of all websites, are you sure to continue?" msgstr "" -#: src/views/app/AppView.vue:124 -#: src/views/app/InstalledView.vue:132 +#: src/views/app/AppView.vue:129 +#: src/views/app/InstalledView.vue:143 msgid "Are you sure to uninstall app %{ app }?" msgstr "" -#: src/views/app/AppView.vue:125 -#: src/views/app/AppView.vue:131 -#: src/views/app/EnvironmentView.vue:107 -#: src/views/app/EnvironmentView.vue:113 -#: src/views/app/InstalledView.vue:133 -#: src/views/app/InstalledView.vue:139 -#: src/views/app/InstalledView.vue:230 -#: src/views/app/InstalledView.vue:236 +#: src/views/app/AppView.vue:130 +#: src/views/app/AppView.vue:136 +#: src/views/app/EnvironmentView.vue:112 +#: src/views/app/EnvironmentView.vue:118 +#: src/views/app/InstalledView.vue:144 +#: src/views/app/InstalledView.vue:150 +#: src/views/app/InstalledView.vue:253 +#: src/views/app/InstalledView.vue:259 #: src/views/apps/prometheus/PrometheusExportersView.vue:128 msgid "Uninstall" msgstr "" -#: src/views/app/AppView.vue:183 -#: src/views/app/InstalledView.vue:275 +#: src/views/app/AppView.vue:168 +#: src/views/app/CustomModal.vue:83 +#: src/views/app/EnvironmentView.vue:156 +#: src/views/app/InstalledView.vue:161 +#: src/views/app/InstalledView.vue:271 +msgid "Compile Params" +msgstr "" + +#: src/views/app/AppView.vue:204 +#: src/views/app/InstalledView.vue:311 msgid "Setup successfully" msgstr "" -#: src/views/app/AppView.vue:190 -#: src/views/app/AppView.vue:198 -#: src/views/app/EnvironmentView.vue:171 -#: src/views/app/EnvironmentView.vue:179 -#: src/views/app/EnvironmentView.vue:187 -#: src/views/app/InstalledView.vue:282 -#: src/views/app/InstalledView.vue:290 -#: src/views/app/InstalledView.vue:303 -#: src/views/app/InstalledView.vue:311 +#: src/views/app/AppView.vue:211 +#: src/views/app/AppView.vue:219 +#: src/views/app/EnvironmentView.vue:193 +#: src/views/app/EnvironmentView.vue:201 +#: src/views/app/EnvironmentView.vue:209 +#: src/views/app/InstalledView.vue:318 +#: src/views/app/InstalledView.vue:326 +#: src/views/app/InstalledView.vue:339 +#: src/views/app/InstalledView.vue:347 #: src/views/app/VersionModal.vue:42 msgid "Task submitted, please check the progress in background tasks" msgstr "" -#: src/views/app/EnvironmentView.vue:43 +#: src/views/app/CustomModal.vue:56 +msgid "Custom Compile Params" +msgstr "" + +#: src/views/app/CustomModal.vue:65 +msgid "Settings are saved persistently and applied automatically on every install and update (recompile), no need to re-enter after reinstalling." +msgstr "" + +#: src/views/app/CustomModal.vue:71 +msgid "Pre-script" +msgstr "" + +#: src/views/app/CustomModal.vue:75 +msgid "Runs before configure, can be used to download and prepare third-party module sources." +msgstr "" + +#: src/views/app/CustomModal.vue:87 +msgid "One param per line, appended to the end of configure. Lines starting with # are ignored." +msgstr "" + +#: src/views/app/EnvironmentView.vue:48 msgid "Latest Version" msgstr "" -#: src/views/app/EnvironmentView.vue:74 -#: src/views/app/InstalledView.vue:198 +#: src/views/app/EnvironmentView.vue:79 +#: src/views/app/InstalledView.vue:221 msgid "Are you sure to update environment %{ environment }?" msgstr "" -#: src/views/app/EnvironmentView.vue:104 -#: src/views/app/InstalledView.vue:227 +#: src/views/app/EnvironmentView.vue:109 +#: src/views/app/InstalledView.vue:250 msgid "Are you sure to uninstall environment %{ environment }?" msgstr "" -#: src/views/app/EnvironmentView.vue:126 +#: src/views/app/EnvironmentView.vue:131 #: src/views/apps/prometheus/PrometheusExportersView.vue:71 #: src/views/environment/PHPView.vue:99 msgid "Confirm Install" msgstr "" -#: src/views/app/EnvironmentView.vue:127 +#: src/views/app/EnvironmentView.vue:132 msgid "Are you sure to install environment %{ environment }?" msgstr "" @@ -2053,12 +2099,12 @@ msgid "Installed" msgstr "" #: src/views/app/IndexView.vue:41 -#: src/views/app/InstalledView.vue:330 +#: src/views/app/InstalledView.vue:366 msgid "Native App" msgstr "" #: src/views/app/IndexView.vue:42 -#: src/views/app/InstalledView.vue:354 +#: src/views/app/InstalledView.vue:390 msgid "Operating Environment" msgstr "" @@ -2070,33 +2116,32 @@ msgstr "" msgid "Update Cache" msgstr "" -#: src/views/app/InstalledView.vue:21 +#: src/views/app/InstalledView.vue:32 msgid "Partial" msgstr "" -#: src/views/app/InstalledView.vue:22 -msgid "N/A" -msgstr "" - -#: src/views/app/InstalledView.vue:55 +#: src/views/app/InstalledView.vue:65 #: src/views/apps/fail2ban/IndexView.vue:47 #: src/views/apps/phpmyadmin/IndexView.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:38 #: src/views/apps/supervisor/IndexView.vue:63 #: src/views/container/ComposeView.vue:86 -#: src/views/container/ContainerView.vue:53 +#: src/views/container/ContainerInfoModal.vue:108 +#: src/views/container/ContainerView.vue:58 #: src/views/database/ServerList.vue:140 #: src/views/database/UserList.vue:113 #: src/views/firewall/RuleView.vue:80 #: src/views/log/HttpLog.vue:95 #: src/views/log/SSHLog.vue:63 #: src/views/project/ListView.vue:59 +#: src/views/tamper/IndexView.vue:127 +#: src/views/tamper/IndexView.vue:231 #: src/views/task/TaskView.vue:34 #: src/views/toolbox/disk/RaidView.vue:97 #: src/views/toolbox/disk/SmartView.vue:217 -#: src/views/toolbox/MigrationView.vue:473 -#: src/views/toolbox/MigrationView.vue:696 -#: src/views/toolbox/MigrationView.vue:783 +#: src/views/toolbox/MigrationView.vue:495 +#: src/views/toolbox/MigrationView.vue:727 +#: src/views/toolbox/MigrationView.vue:814 #: src/views/toolbox/NetworkView.vue:96 #: src/views/toolbox/ProcessView.vue:134 #: src/views/toolbox/ProcessView.vue:399 @@ -2143,6 +2188,7 @@ msgid "Deploy Mode" msgstr "" #: src/views/app/TemplateDeployModal.vue:340 +#: src/views/tamper/IndexView.vue:245 msgid "Configuration" msgstr "" @@ -2203,7 +2249,8 @@ msgstr "" #: src/views/apps/minio/IndexView.vue:38 #: src/views/container/ComposeView.vue:331 #: src/views/container/ComposeView.vue:357 -#: src/views/container/ContainerCreate.vue:452 +#: src/views/container/ContainerCreate.vue:553 +#: src/views/container/ContainerInfoModal.vue:178 #: src/views/project/EditModal.vue:380 #: src/views/toolbox/ProcessView.vue:445 msgid "Environment Variables" @@ -2254,7 +2301,9 @@ msgstr "" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:94 #: src/views/apps/nginx/NginxIndex.vue:186 -#: src/views/file/ListView.vue:852 +#: src/views/container/ContainerInfoModal.vue:123 +#: src/views/file/ListView.vue:266 +#: src/views/file/ListView.vue:869 #: src/views/file/PropertyModal.vue:55 #: src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 @@ -2265,7 +2314,9 @@ msgstr "" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:95 #: src/views/apps/nginx/NginxIndex.vue:186 -#: src/views/file/ListView.vue:853 +#: src/views/container/ContainerInfoModal.vue:123 +#: src/views/file/ListView.vue:267 +#: src/views/file/ListView.vue:870 #: src/views/file/PropertyModal.vue:55 #: src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 @@ -2281,15 +2332,15 @@ msgid "Compose Content" msgstr "" #: src/views/app/TemplateDeployModal.vue:631 -#: src/views/toolbox/MigrationView.vue:586 -#: src/views/toolbox/MigrationView.vue:676 +#: src/views/toolbox/MigrationView.vue:608 +#: src/views/toolbox/MigrationView.vue:707 msgid "Previous" msgstr "" #: src/views/app/TemplateDeployModal.vue:640 #: src/views/app/TemplateDeployModal.vue:643 -#: src/views/toolbox/MigrationView.vue:447 -#: src/views/toolbox/MigrationView.vue:597 +#: src/views/toolbox/MigrationView.vue:469 +#: src/views/toolbox/MigrationView.vue:627 msgid "Next" msgstr "" @@ -2300,9 +2351,9 @@ msgstr "" #: src/views/app/TemplateView.vue:142 #: src/views/backup/StorageView.vue:78 -#: src/views/ssh/IndexView.vue:80 -#: src/views/ssh/IndexView.vue:86 -#: src/views/toolbox/MigrationView.vue:471 +#: src/views/ssh/IndexView.vue:82 +#: src/views/ssh/IndexView.vue:88 +#: src/views/toolbox/MigrationView.vue:493 msgid "Local" msgstr "" @@ -2378,9 +2429,10 @@ msgstr "" #: src/views/environment/PHPView.vue:162 #: src/views/environment/PHPView.vue:169 #: src/views/firewall/ScanView.vue:336 +#: src/views/tamper/IndexView.vue:207 #: src/views/task/CronView.vue:23 #: src/views/task/TaskView.vue:21 -#: src/views/website/EditModal.vue:261 +#: src/views/website/EditModal.vue:271 #: src/views/website/StatsView.vue:93 msgid "Cleared successfully" msgstr "" @@ -2456,7 +2508,8 @@ msgstr "" #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:68 #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:88 -#: src/views/container/ContainerCreate.vue:213 +#: src/views/container/ContainerCreate.vue:314 +#: src/views/container/ContainerInfoModal.vue:125 #: src/views/home/IndexView.vue:188 #: src/views/home/IndexView.vue:955 #: src/views/monitor/IndexView.vue:990 @@ -2527,7 +2580,7 @@ msgstr "" #: src/views/apps/pureftpd/IndexView.vue:145 #: src/views/database/DatabaseList.vue:113 #: src/views/database/RedisDataView.vue:222 -#: src/views/database/ServerList.vue:274 +#: src/views/database/ServerList.vue:275 #: src/views/database/UpdateServerModal.vue:27 #: src/views/database/UpdateUserModal.vue:23 #: src/views/database/UserList.vue:191 @@ -2543,6 +2596,7 @@ msgstr "" #: src/views/website/ListView.vue:366 #: src/views/website/SettingView.vue:46 #: src/views/website/SettingView.vue:57 +#: src/views/website/SettingView.vue:88 msgid "Modified successfully" msgstr "" @@ -2552,7 +2606,7 @@ msgstr "" #: src/views/apps/postgresql/IndexView.vue:144 #: src/views/database/ServerList.vue:102 #: src/views/database/UserList.vue:52 -#: src/views/file/composables/usePaste.ts:28 +#: src/views/file/composables/usePaste.ts:29 #: src/views/setting/TokenModal.vue:155 msgid "Copied successfully" msgstr "" @@ -2613,7 +2667,7 @@ msgstr "" #: src/views/apps/docker/IndexView.vue:70 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:89 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:218 -#: src/views/website/EditModal.vue:1240 +#: src/views/website/EditModal.vue:1250 msgid "Default" msgstr "" @@ -2630,9 +2684,9 @@ msgid "China - Tencent (Internal only)" msgstr "" #: src/views/apps/docker/IndexView.vue:194 -#: src/views/container/ContainerCreate.vue:193 +#: src/views/container/ContainerCreate.vue:294 #: src/views/project/EditModal.vue:182 -#: src/views/website/EditModal.vue:907 +#: src/views/website/EditModal.vue:917 msgid "Basic Settings" msgstr "" @@ -2641,7 +2695,7 @@ msgid "Registry Mirrors" msgstr "" #: src/views/apps/docker/IndexView.vue:203 -#: src/views/website/EditModal.vue:1729 +#: src/views/website/EditModal.vue:1739 msgid "Presets" msgstr "" @@ -2964,6 +3018,8 @@ msgstr "" #: src/views/apps/fail2ban/IndexView.vue:275 #: src/views/apps/fail2ban/IndexView.vue:285 #: src/views/apps/fail2ban/IndexView.vue:289 +#: src/views/tamper/IndexView.vue:340 +#: src/views/tamper/RuleModal.vue:83 msgid "Add Rule" msgstr "" @@ -2983,14 +3039,15 @@ msgstr "" #: src/views/backup/StorageView.vue:395 #: src/views/cert/CertView.vue:105 #: src/views/cert/DnsView.vue:43 +#: src/views/container/ContainerInfoModal.vue:149 #: src/views/database/CreateServerModal.vue:100 #: src/views/database/RedisDataView.vue:94 #: src/views/database/RedisKeyModal.vue:99 #: src/views/file/PropertyModal.vue:33 #: src/views/log/OperationLog.vue:74 #: src/views/project/ListView.vue:51 -#: src/views/toolbox/MigrationView.vue:694 -#: src/views/toolbox/MigrationView.vue:781 +#: src/views/toolbox/MigrationView.vue:725 +#: src/views/toolbox/MigrationView.vue:812 #: src/views/toolbox/NetworkView.vue:61 msgid "Type" msgstr "" @@ -3008,6 +3065,7 @@ msgid "Select Website" msgstr "" #: src/views/apps/fail2ban/IndexView.vue:326 +#: src/views/tamper/IndexView.vue:250 msgid "Protection Mode" msgstr "" @@ -3020,6 +3078,7 @@ msgstr "" #: src/views/backup/StorageView.vue:487 #: src/views/backup/StorageView.vue:514 #: src/views/log/HttpLog.vue:85 +#: src/views/tamper/IndexView.vue:195 msgid "Path" msgstr "" @@ -3064,7 +3123,7 @@ msgstr "" #: src/views/apps/rsync/IndexView.vue:57 #: src/views/apps/rsync/IndexView.vue:279 #: src/views/apps/rsync/IndexView.vue:340 -#: src/views/database/IndexView.vue:37 +#: src/views/database/IndexView.vue:135 #: src/views/home/IndexView.vue:661 #: src/views/home/IndexView.vue:762 #: src/views/log/SSHLog.vue:73 @@ -3097,7 +3156,7 @@ msgstr "" #: src/views/database/CreateDatabaseModal.vue:86 #: src/views/database/CreateUserModal.vue:104 #: src/views/database/DatabaseList.vue:28 -#: src/views/database/IndexView.vue:38 +#: src/views/database/IndexView.vue:136 #: src/views/database/UserList.vue:73 msgid "Server" msgstr "" @@ -3254,10 +3313,12 @@ msgstr "" #: src/views/apps/nginx/NginxIndex.vue:266 #: src/views/backup/StorageView.vue:111 #: src/views/container/ComposeView.vue:123 -#: src/views/file/ListView.vue:332 -#: src/views/file/ListView.vue:1538 +#: src/views/container/ContainerView.vue:177 +#: src/views/file/ListView.vue:374 +#: src/views/file/ListView.vue:1602 #: src/views/project/ListView.vue:177 -#: src/views/ssh/IndexView.vue:560 +#: src/views/ssh/IndexView.vue:602 +#: src/views/tamper/IndexView.vue:143 #: src/views/task/CronView.vue:155 #: src/views/toolbox/WebHookView.vue:158 #: src/views/website/ListView.vue:259 @@ -3300,7 +3361,7 @@ msgstr "" #: src/views/database/CreateServerModal.vue:179 #: src/views/database/CreateUserModal.vue:120 #: src/views/database/ServerList.vue:82 -#: src/views/database/UpdateServerModal.vue:104 +#: src/views/database/UpdateServerModal.vue:105 #: src/views/database/UpdateUserModal.vue:63 #: src/views/database/UserList.vue:32 #: src/views/login/IndexView.vue:261 @@ -3310,7 +3371,7 @@ msgstr "" #: src/views/ssh/CreateModal.vue:89 #: src/views/ssh/UpdateModal.vue:86 #: src/views/ssh/UpdateModal.vue:95 -#: src/views/website/EditModal.vue:1981 +#: src/views/website/EditModal.vue:1991 msgid "Password" msgstr "" @@ -3896,7 +3957,7 @@ msgstr "" #: src/views/apps/nginx/NginxIndex.vue:175 #: src/views/apps/nginx/NginxIndex.vue:635 -#: src/views/website/EditModal.vue:1104 +#: src/views/website/EditModal.vue:1114 msgid "Proxy Pass" msgstr "" @@ -3947,18 +4008,18 @@ msgstr "" #: src/views/apps/nginx/NginxIndex.vue:533 #: src/views/database/CreateServerModal.vue:92 -#: src/views/database/IndexView.vue:58 -#: src/views/website/EditModal.vue:1041 +#: src/views/database/IndexView.vue:184 +#: src/views/website/EditModal.vue:1051 msgid "Add Server" msgstr "" #: src/views/apps/nginx/NginxIndex.vue:546 -#: src/views/website/EditModal.vue:960 +#: src/views/website/EditModal.vue:970 msgid "Upstream" msgstr "" #: src/views/apps/nginx/NginxIndex.vue:550 -#: src/views/website/EditModal.vue:1057 +#: src/views/website/EditModal.vue:1067 msgid "Add Upstream" msgstr "" @@ -4016,7 +4077,7 @@ msgid "e.g. /path/to/key.pem" msgstr "" #: src/views/apps/nginx/NginxIndex.vue:713 -#: src/views/website/EditModal.vue:971 +#: src/views/website/EditModal.vue:981 msgid "Load Balancing Algorithm" msgstr "" @@ -4048,20 +4109,20 @@ msgid "No servers added yet" msgstr "" #: src/views/apps/nginx/NginxIndex.vue:777 -#: src/views/website/EditModal.vue:1001 -#: src/views/website/EditModal.vue:1138 +#: src/views/website/EditModal.vue:1011 +#: src/views/website/EditModal.vue:1148 msgid "DNS Resolver" msgstr "" #: src/views/apps/nginx/NginxIndex.vue:780 -#: src/views/website/EditModal.vue:1004 -#: src/views/website/EditModal.vue:1141 +#: src/views/website/EditModal.vue:1014 +#: src/views/website/EditModal.vue:1151 msgid "e.g., 8.8.8.8" msgstr "" #: src/views/apps/nginx/NginxIndex.vue:786 -#: src/views/website/EditModal.vue:1010 -#: src/views/website/EditModal.vue:1147 +#: src/views/website/EditModal.vue:1020 +#: src/views/website/EditModal.vue:1157 msgid "Resolver Timeout" msgstr "" @@ -4073,18 +4134,58 @@ msgstr "" msgid "OpenSearch cluster and network settings." msgstr "" +#: src/views/apps/pgadmin/IndexView.vue:48 +msgid "Password reset successfully" +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:65 #: src/views/apps/phpmyadmin/IndexView.vue:69 msgid "Access Information" msgstr "" +#: src/views/apps/pgadmin/IndexView.vue:68 #: src/views/apps/phpmyadmin/IndexView.vue:71 msgid "Access URL:" msgstr "" +#: src/views/apps/pgadmin/IndexView.vue:71 +msgid "Login Email" +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:74 +msgid "Login Password" +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:80 +msgid "If the password has been changed in pgAdmin, the actual password shall prevail." +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:87 #: src/views/apps/phpmyadmin/IndexView.vue:74 msgid "Modify Port" msgstr "" +#: src/views/apps/pgadmin/IndexView.vue:99 +msgid "Modify pgAdmin access port" +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:101 +msgid "Reset Password" +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:108 +msgid "New password" +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:116 +#: src/views/toolbox/SshView.vue:314 +msgid "Reset" +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:119 +msgid "Reset the login password of the pgAdmin administrator account" +msgstr "" + #: src/views/apps/phpmyadmin/IndexView.vue:86 msgid "Modify phpMyAdmin access port" msgstr "" @@ -4138,7 +4239,7 @@ msgid "Application Logs" msgstr "" #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:174 -#: src/views/toolbox/MigrationView.vue:406 +#: src/views/toolbox/MigrationView.vue:428 msgid "Connection" msgstr "" @@ -4170,7 +4271,7 @@ msgstr "" #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:226 #: src/views/apps/redis/RedisConfigTuneView.vue:182 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:176 -#: src/views/container/ContainerCreate.vue:426 +#: src/views/container/ContainerCreate.vue:527 #: src/views/home/IndexView.vue:688 #: src/views/home/IndexView.vue:761 #: src/views/monitor/IndexView.vue:532 @@ -4363,7 +4464,7 @@ msgid "Are you sure you want to install %{ name }?" msgstr "" #: src/views/apps/prometheus/PrometheusExportersView.vue:112 -#: src/views/website/EditModal.vue:2017 +#: src/views/website/EditModal.vue:2027 msgid "Config" msgstr "" @@ -4402,14 +4503,14 @@ msgstr "" #: src/views/database/CreateServerModal.vue:167 #: src/views/database/CreateUserModal.vue:112 #: src/views/database/ServerList.vue:73 -#: src/views/database/UpdateServerModal.vue:96 +#: src/views/database/UpdateServerModal.vue:97 #: src/views/database/UserList.vue:22 #: src/views/login/IndexView.vue:252 #: src/views/setting/CreateModal.vue:46 #: src/views/setting/SettingUser.vue:24 #: src/views/ssh/CreateModal.vue:86 #: src/views/ssh/UpdateModal.vue:92 -#: src/views/website/EditModal.vue:1980 +#: src/views/website/EditModal.vue:1990 msgid "Username" msgstr "" @@ -4430,7 +4531,7 @@ msgid "User Management" msgstr "" #: src/views/apps/pureftpd/IndexView.vue:191 -#: src/views/website/EditModal.vue:1982 +#: src/views/website/EditModal.vue:1992 msgid "Add User" msgstr "" @@ -4442,7 +4543,7 @@ msgstr "" #: src/views/apps/pureftpd/IndexView.vue:227 #: src/views/database/CreateDatabaseModal.vue:102 #: src/views/database/CreateUserModal.vue:90 -#: src/views/database/IndexView.vue:51 +#: src/views/database/IndexView.vue:177 #: src/views/setting/CreateModal.vue:38 #: src/views/setting/IndexView.vue:155 msgid "Create User" @@ -4676,7 +4777,7 @@ msgstr "" #: src/views/database/CreateServerModal.vue:143 #: src/views/database/CreateUserModal.vue:134 #: src/views/database/ServerList.vue:113 -#: src/views/database/UpdateServerModal.vue:75 +#: src/views/database/UpdateServerModal.vue:76 #: src/views/database/UserList.vue:63 #: src/views/ssh/CreateModal.vue:65 #: src/views/ssh/UpdateModal.vue:71 @@ -4691,7 +4792,7 @@ msgstr "" #: src/views/database/CreateUserModal.vue:160 #: src/views/database/DatabaseList.vue:49 #: src/views/database/ServerList.vue:123 -#: src/views/database/UpdateServerModal.vue:113 +#: src/views/database/UpdateServerModal.vue:114 #: src/views/database/UpdateUserModal.vue:78 #: src/views/database/UserList.vue:96 msgid "Comment" @@ -4971,11 +5072,12 @@ msgstr "" #: src/views/ssh/CreateModal.vue:92 #: src/views/ssh/UpdateModal.vue:87 #: src/views/ssh/UpdateModal.vue:98 -#: src/views/website/EditModal.vue:1712 +#: src/views/website/EditModal.vue:1722 msgid "Private Key" msgstr "" #: src/views/backup/StorageView.vue:87 +#: src/views/container/ContainerInfoModal.vue:113 msgid "Created At" msgstr "" @@ -4984,6 +5086,7 @@ msgid "Are you sure you want to delete this storage?" msgstr "" #: src/views/backup/StorageView.vue:173 +#: src/views/container/ContainerCreate.vue:118 #: src/views/setting/PasswordModal.vue:21 #: src/views/setting/TokenModal.vue:178 #: src/views/setting/TwoFaModal.vue:28 @@ -5076,7 +5179,7 @@ msgstr "" #: src/views/backup/StorageView.vue:290 #: src/views/backup/StorageView.vue:446 #: src/views/database/CreateServerModal.vue:154 -#: src/views/database/UpdateServerModal.vue:86 +#: src/views/database/UpdateServerModal.vue:87 #: src/views/firewall/ForwardView.vue:33 #: src/views/firewall/RuleView.vue:67 #: src/views/firewall/ScanView.vue:300 @@ -5240,12 +5343,12 @@ msgstr "" #: src/views/cert/CreateCertModal.vue:102 #: src/views/project/CreateModal.vue:661 #: src/views/website/CreateModal.vue:201 -#: src/views/website/EditModal.vue:866 +#: src/views/website/EditModal.vue:876 msgid "Domain" msgstr "" #: src/views/cert/CertView.vue:127 -#: src/views/file/ToolBar.vue:181 +#: src/views/file/ToolBar.vue:154 #: src/views/file/UploadModal.vue:676 #: src/views/monitor/IndexView.vue:596 msgid "Upload" @@ -5256,7 +5359,7 @@ msgid "Associated Account" msgstr "" #: src/views/cert/CertView.vue:148 -#: src/views/website/EditModal.vue:1639 +#: src/views/website/EditModal.vue:1649 msgid "Issuer" msgstr "" @@ -5276,7 +5379,7 @@ msgid "Auto Renewal" msgstr "" #: src/views/cert/CertView.vue:208 -#: src/views/website/EditModal.vue:2171 +#: src/views/website/EditModal.vue:2181 msgid "Issue" msgstr "" @@ -5321,13 +5424,13 @@ msgstr "" #: src/views/cert/CreateDnsModal.vue:71 #: src/views/cert/DnsView.vue:196 #: src/views/cert/IndexView.vue:98 -#: src/views/website/EditModal.vue:2162 +#: src/views/website/EditModal.vue:2172 msgid "DNS" msgstr "" #: src/views/cert/CertView.vue:490 #: src/views/cert/CreateCertModal.vue:137 -#: src/views/website/EditModal.vue:2165 +#: src/views/website/EditModal.vue:2175 msgid "Select DNS for certificate issuance" msgstr "" @@ -5348,13 +5451,13 @@ msgstr "" #: src/views/cert/CertView.vue:528 #: src/views/cert/UploadCertModal.vue:50 -#: src/views/website/EditModal.vue:1706 +#: src/views/website/EditModal.vue:1716 msgid "Enter the content of the PEM certificate file" msgstr "" #: src/views/cert/CertView.vue:540 #: src/views/cert/UploadCertModal.vue:58 -#: src/views/website/EditModal.vue:1716 +#: src/views/website/EditModal.vue:1726 msgid "Enter the content of the KEY private key file" msgstr "" @@ -5595,8 +5698,8 @@ msgid "Are you sure you want to stop compose %{ name }?" msgstr "" #: src/views/container/ComposeView.vue:184 -#: src/views/container/ContainerView.vue:276 -#: src/views/container/ContainerView.vue:342 +#: src/views/container/ContainerView.vue:303 +#: src/views/container/ContainerView.vue:369 msgid "Stop successful" msgstr "" @@ -5606,8 +5709,8 @@ msgstr "" #: src/views/container/ComposeView.vue:205 #: src/views/container/ComposeView.vue:268 -#: src/views/container/ContainerView.vue:311 -#: src/views/container/ContainerView.vue:369 +#: src/views/container/ContainerView.vue:338 +#: src/views/container/ContainerView.vue:396 #: src/views/container/ImageView.vue:122 #: src/views/container/NetworkView.vue:149 #: src/views/container/VolumeView.vue:102 @@ -5633,215 +5736,238 @@ msgstr "" msgid "Edit Compose" msgstr "" -#: src/views/container/ContainerCreate.vue:54 +#: src/views/container/ContainerCreate.vue:58 msgid "Always" msgstr "" -#: src/views/container/ContainerCreate.vue:55 +#: src/views/container/ContainerCreate.vue:59 msgid "On failure (default 5 retries)" msgstr "" -#: src/views/container/ContainerCreate.vue:56 +#: src/views/container/ContainerCreate.vue:60 msgid "Unless stopped" msgstr "" -#: src/views/container/ContainerCreate.vue:65 +#: src/views/container/ContainerCreate.vue:69 +#: src/views/container/ContainerInfoModal.vue:168 msgid "Read-Write" msgstr "" -#: src/views/container/ContainerCreate.vue:66 +#: src/views/container/ContainerCreate.vue:70 +#: src/views/container/ContainerInfoModal.vue:168 msgid "Read-Only" msgstr "" -#: src/views/container/ContainerCreate.vue:125 +#: src/views/container/ContainerCreate.vue:135 #: src/views/container/ImageView.vue:167 msgid "Please enter image name" msgstr "" -#: src/views/container/ContainerCreate.vue:182 -#: src/views/container/ContainerView.vue:553 +#: src/views/container/ContainerCreate.vue:143 +msgid "Updating will remove the current container and recreate it with the new configuration. Data not stored in mounted volumes will be lost. Continue?" +msgstr "" + +#: src/views/container/ContainerCreate.vue:146 +#: src/views/file/ListView.vue:286 +#: src/views/file/UploadModal.vue:506 +#: src/views/file/UploadModal.vue:641 +#: src/views/toolbox/MigrationView.vue:207 +msgid "Continue" +msgstr "" + +#: src/views/container/ContainerCreate.vue:283 +msgid "Edit Container" +msgstr "" + +#: src/views/container/ContainerCreate.vue:283 +#: src/views/container/ContainerView.vue:580 msgid "Create Container" msgstr "" -#: src/views/container/ContainerCreate.vue:195 -#: src/views/container/ContainerView.vue:46 +#: src/views/container/ContainerCreate.vue:296 +#: src/views/container/ContainerInfoModal.vue:99 +#: src/views/container/ContainerView.vue:51 msgid "Container Name" msgstr "" -#: src/views/container/ContainerCreate.vue:200 +#: src/views/container/ContainerCreate.vue:301 msgid "Optional, auto-generated if empty" msgstr "" -#: src/views/container/ContainerCreate.vue:204 -#: src/views/container/ContainerView.vue:73 +#: src/views/container/ContainerCreate.vue:305 +#: src/views/container/ContainerInfoModal.vue:105 +#: src/views/container/ContainerView.vue:78 #: src/views/container/ImageView.vue:60 msgid "Image" msgstr "" -#: src/views/container/ContainerCreate.vue:209 +#: src/views/container/ContainerCreate.vue:310 msgid "e.g., nginx, mysql:8.4, your_username/your_image:tag" msgstr "" -#: src/views/container/ContainerCreate.vue:217 +#: src/views/container/ContainerCreate.vue:318 msgid "Select network" msgstr "" -#: src/views/container/ContainerCreate.vue:221 +#: src/views/container/ContainerCreate.vue:322 +#: src/views/container/ContainerInfoModal.vue:119 #: src/views/project/EditModal.vue:298 msgid "Restart Policy" msgstr "" -#: src/views/container/ContainerCreate.vue:225 +#: src/views/container/ContainerCreate.vue:326 msgid "Select restart policy" msgstr "" -#: src/views/container/ContainerCreate.vue:229 +#: src/views/container/ContainerCreate.vue:330 msgid "Container Options" msgstr "" -#: src/views/container/ContainerCreate.vue:233 +#: src/views/container/ContainerCreate.vue:334 msgid "TTY (-t)" msgstr "" -#: src/views/container/ContainerCreate.vue:238 +#: src/views/container/ContainerCreate.vue:339 msgid "STDIN (-i)" msgstr "" -#: src/views/container/ContainerCreate.vue:243 +#: src/views/container/ContainerCreate.vue:344 msgid "Auto Remove" msgstr "" -#: src/views/container/ContainerCreate.vue:248 +#: src/views/container/ContainerCreate.vue:349 +#: src/views/container/ContainerInfoModal.vue:122 msgid "Privileged" msgstr "" -#: src/views/container/ContainerCreate.vue:257 -#: src/views/container/ContainerCreate.vue:268 +#: src/views/container/ContainerCreate.vue:358 +#: src/views/container/ContainerCreate.vue:369 msgid "Port Mapping" msgstr "" -#: src/views/container/ContainerCreate.vue:259 +#: src/views/container/ContainerCreate.vue:360 msgid "Port Mode" msgstr "" -#: src/views/container/ContainerCreate.vue:261 +#: src/views/container/ContainerCreate.vue:362 msgid "Map Ports" msgstr "" -#: src/views/container/ContainerCreate.vue:262 +#: src/views/container/ContainerCreate.vue:363 msgid "Expose All" msgstr "" -#: src/views/container/ContainerCreate.vue:280 +#: src/views/container/ContainerCreate.vue:381 msgid "IP (optional)" msgstr "" -#: src/views/container/ContainerCreate.vue:289 +#: src/views/container/ContainerCreate.vue:390 msgid "Host Start" msgstr "" -#: src/views/container/ContainerCreate.vue:298 +#: src/views/container/ContainerCreate.vue:399 msgid "Host End" msgstr "" -#: src/views/container/ContainerCreate.vue:307 +#: src/views/container/ContainerCreate.vue:408 msgid "Container Start" msgstr "" -#: src/views/container/ContainerCreate.vue:316 +#: src/views/container/ContainerCreate.vue:417 msgid "Container End" msgstr "" -#: src/views/container/ContainerCreate.vue:331 +#: src/views/container/ContainerCreate.vue:432 msgid "All exposed ports in the image will be automatically mapped to random host ports." msgstr "" -#: src/views/container/ContainerCreate.vue:340 +#: src/views/container/ContainerCreate.vue:441 #: src/views/container/IndexView.vue:26 msgid "Volumes" msgstr "" -#: src/views/container/ContainerCreate.vue:342 +#: src/views/container/ContainerCreate.vue:443 msgid "Volume Mounts" msgstr "" -#: src/views/container/ContainerCreate.vue:352 +#: src/views/container/ContainerCreate.vue:453 msgid "Host path" msgstr "" -#: src/views/container/ContainerCreate.vue:358 +#: src/views/container/ContainerCreate.vue:459 msgid "Container path" msgstr "" -#: src/views/container/ContainerCreate.vue:369 +#: src/views/container/ContainerCreate.vue:470 msgid "Mount host directories or volumes into the container. Use absolute paths for host directories." msgstr "" -#: src/views/container/ContainerCreate.vue:378 +#: src/views/container/ContainerCreate.vue:479 #: src/views/project/EditModal.vue:458 msgid "Resource Limits" msgstr "" -#: src/views/container/ContainerCreate.vue:382 +#: src/views/container/ContainerCreate.vue:483 msgid "Set resource limits to prevent the container from consuming too many system resources. Set to 0 for no limit." msgstr "" -#: src/views/container/ContainerCreate.vue:390 +#: src/views/container/ContainerCreate.vue:491 msgid "Memory (MB)" msgstr "" -#: src/views/container/ContainerCreate.vue:395 -#: src/views/container/ContainerCreate.vue:407 +#: src/views/container/ContainerCreate.vue:496 +#: src/views/container/ContainerCreate.vue:508 msgid "0 = no limit" msgstr "" -#: src/views/container/ContainerCreate.vue:400 -#: src/views/container/ContainerCreate.vue:429 +#: src/views/container/ContainerCreate.vue:501 +#: src/views/container/ContainerCreate.vue:530 #: src/views/toolbox/PanelView.vue:113 msgid "CPU Cores" msgstr "" -#: src/views/container/ContainerCreate.vue:412 -#: src/views/container/ContainerCreate.vue:436 +#: src/views/container/ContainerCreate.vue:513 +#: src/views/container/ContainerCreate.vue:537 msgid "CPU Shares" msgstr "" -#: src/views/container/ContainerCreate.vue:424 +#: src/views/container/ContainerCreate.vue:525 msgid "Resource Limit Description" msgstr "" -#: src/views/container/ContainerCreate.vue:427 +#: src/views/container/ContainerCreate.vue:528 msgid "Maximum memory the container can use, in MB. 0 means no limit." msgstr "" -#: src/views/container/ContainerCreate.vue:431 +#: src/views/container/ContainerCreate.vue:532 msgid "Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 cores." msgstr "" -#: src/views/container/ContainerCreate.vue:438 +#: src/views/container/ContainerCreate.vue:539 msgid "Relative CPU weight. Default is 1024. Higher values get more CPU time when competing." msgstr "" -#: src/views/container/ContainerCreate.vue:450 -#: src/views/toolbox/MigrationView.vue:470 +#: src/views/container/ContainerCreate.vue:551 +#: src/views/toolbox/MigrationView.vue:492 msgid "Environment" msgstr "" -#: src/views/container/ContainerCreate.vue:462 +#: src/views/container/ContainerCreate.vue:563 #: src/views/project/EditModal.vue:390 msgid "Variable name" msgstr "" -#: src/views/container/ContainerCreate.vue:468 +#: src/views/container/ContainerCreate.vue:569 #: src/views/project/EditModal.vue:396 msgid "Variable value" msgstr "" -#: src/views/container/ContainerCreate.vue:476 +#: src/views/container/ContainerCreate.vue:577 msgid "Startup Commands" msgstr "" -#: src/views/container/ContainerCreate.vue:478 +#: src/views/container/ContainerCreate.vue:579 +#: src/views/container/ContainerInfoModal.vue:139 #: src/views/home/IndexView.vue:662 #: src/views/home/IndexView.vue:763 #: src/views/monitor/IndexView.vue:335 @@ -5849,121 +5975,177 @@ msgstr "" msgid "Command" msgstr "" -#: src/views/container/ContainerCreate.vue:481 +#: src/views/container/ContainerCreate.vue:582 msgid "Command argument" msgstr "" -#: src/views/container/ContainerCreate.vue:485 +#: src/views/container/ContainerCreate.vue:586 msgid "Override the default CMD of the image" msgstr "" -#: src/views/container/ContainerCreate.vue:490 +#: src/views/container/ContainerCreate.vue:591 msgid "Entrypoint" msgstr "" -#: src/views/container/ContainerCreate.vue:493 +#: src/views/container/ContainerCreate.vue:594 msgid "Entrypoint argument" msgstr "" -#: src/views/container/ContainerCreate.vue:497 +#: src/views/container/ContainerCreate.vue:598 msgid "Override the default ENTRYPOINT of the image" msgstr "" -#: src/views/container/ContainerCreate.vue:502 +#: src/views/container/ContainerCreate.vue:603 +#: src/views/container/ContainerInfoModal.vue:192 #: src/views/container/NetworkView.vue:321 #: src/views/container/VolumeView.vue:215 msgid "Labels" msgstr "" -#: src/views/container/ContainerCreate.vue:504 +#: src/views/container/ContainerCreate.vue:605 msgid "Container Labels" msgstr "" -#: src/views/container/ContainerCreate.vue:514 +#: src/views/container/ContainerCreate.vue:615 msgid "Label name" msgstr "" -#: src/views/container/ContainerCreate.vue:520 +#: src/views/container/ContainerCreate.vue:621 msgid "Label value" msgstr "" -#: src/views/container/ContainerView.vue:80 +#: src/views/container/ContainerInfoModal.vue:86 +msgid "Container Info" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:96 +#: src/views/toolbox/disk/SmartView.vue:280 +#: src/views/toolbox/PanelView.vue:98 +msgid "Basic Info" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:102 +msgid "Container ID" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:116 +msgid "Started At" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:133 +#: src/views/container/ContainerView.vue:85 msgid "Ports (Host->Container)" msgstr "" -#: src/views/container/ContainerView.vue:173 -#: src/views/container/ContainerView.vue:575 +#: src/views/container/ContainerInfoModal.vue:145 +msgid "Mounts" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:150 +msgid "Host Path / Volume" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:151 +msgid "Container Path" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:152 +msgid "Mode" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:174 +msgid "No mounts" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:188 +#: src/views/toolbox/ProcessView.vue:453 +msgid "No environment variables" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:207 +#: src/views/toolbox/WebHookView.vue:73 +#: src/views/toolbox/WebHookView.vue:339 +#: src/views/toolbox/WebHookView.vue:380 +msgid "Raw Output" +msgstr "" + +#: src/views/container/ContainerView.vue:130 +msgid "Info" +msgstr "" + +#: src/views/container/ContainerView.vue:196 +#: src/views/container/ContainerView.vue:602 msgid "Force Stop" msgstr "" -#: src/views/container/ContainerView.vue:178 -#: src/views/container/ContainerView.vue:578 +#: src/views/container/ContainerView.vue:201 +#: src/views/container/ContainerView.vue:605 msgid "Pause" msgstr "" -#: src/views/container/ContainerView.vue:183 -#: src/views/container/ContainerView.vue:581 +#: src/views/container/ContainerView.vue:206 +#: src/views/container/ContainerView.vue:608 msgid "Resume" msgstr "" -#: src/views/container/ContainerView.vue:227 -#: src/views/file/ListView.vue:1567 +#: src/views/container/ContainerView.vue:254 +#: src/views/file/ListView.vue:1631 msgid "More" msgstr "" -#: src/views/container/ContainerView.vue:259 +#: src/views/container/ContainerView.vue:286 msgid "Rename successful" msgstr "" -#: src/views/container/ContainerView.vue:269 -#: src/views/container/ContainerView.vue:333 +#: src/views/container/ContainerView.vue:296 +#: src/views/container/ContainerView.vue:360 msgid "Start successful" msgstr "" -#: src/views/container/ContainerView.vue:283 -#: src/views/container/ContainerView.vue:351 +#: src/views/container/ContainerView.vue:310 +#: src/views/container/ContainerView.vue:378 msgid "Restart successful" msgstr "" -#: src/views/container/ContainerView.vue:290 -#: src/views/container/ContainerView.vue:360 +#: src/views/container/ContainerView.vue:317 +#: src/views/container/ContainerView.vue:387 msgid "Force stop successful" msgstr "" -#: src/views/container/ContainerView.vue:297 -#: src/views/container/ContainerView.vue:378 +#: src/views/container/ContainerView.vue:324 +#: src/views/container/ContainerView.vue:405 msgid "Pause successful" msgstr "" -#: src/views/container/ContainerView.vue:304 -#: src/views/container/ContainerView.vue:387 +#: src/views/container/ContainerView.vue:331 +#: src/views/container/ContainerView.vue:414 msgid "Resume successful" msgstr "" -#: src/views/container/ContainerView.vue:320 +#: src/views/container/ContainerView.vue:347 #: src/views/container/ImageView.vue:131 #: src/views/container/NetworkView.vue:158 #: src/views/container/VolumeView.vue:111 msgid "Cleanup successful" msgstr "" -#: src/views/container/ContainerView.vue:403 +#: src/views/container/ContainerView.vue:430 msgid "Terminal container not found" msgstr "" -#: src/views/container/ContainerView.vue:486 +#: src/views/container/ContainerView.vue:513 msgid "Failed to connect to container terminal" msgstr "" -#: src/views/container/ContainerView.vue:562 +#: src/views/container/ContainerView.vue:589 msgid "Cleanup Containers" msgstr "" -#: src/views/container/ContainerView.vue:620 +#: src/views/container/ContainerView.vue:647 msgid "New Name" msgstr "" -#: src/views/container/ContainerView.vue:625 +#: src/views/container/ContainerView.vue:652 msgid "Enter new name" msgstr "" @@ -6055,7 +6237,7 @@ msgstr "" #: src/views/container/NetworkView.vue:62 #: src/views/container/VolumeView.vue:43 -#: src/views/website/EditModal.vue:2030 +#: src/views/website/EditModal.vue:2040 msgid "Scope" msgstr "" @@ -6174,7 +6356,7 @@ msgid "Specific" msgstr "" #: src/views/database/CreateDatabaseModal.vue:78 -#: src/views/database/IndexView.vue:48 +#: src/views/database/IndexView.vue:146 msgid "Create Database" msgstr "" @@ -6222,7 +6404,7 @@ msgid "Select type" msgstr "" #: src/views/database/CreateServerModal.vue:113 -#: src/views/database/UpdateServerModal.vue:70 +#: src/views/database/UpdateServerModal.vue:71 msgid "Enter database server name" msgstr "" @@ -6239,27 +6421,27 @@ msgid "Select" msgstr "" #: src/views/database/CreateServerModal.vue:148 -#: src/views/database/UpdateServerModal.vue:80 +#: src/views/database/UpdateServerModal.vue:81 msgid "Enter database server host" msgstr "" #: src/views/database/CreateServerModal.vue:159 -#: src/views/database/UpdateServerModal.vue:91 +#: src/views/database/UpdateServerModal.vue:92 msgid "Enter database server port" msgstr "" #: src/views/database/CreateServerModal.vue:173 -#: src/views/database/UpdateServerModal.vue:101 +#: src/views/database/UpdateServerModal.vue:102 msgid "Enter database server username" msgstr "" #: src/views/database/CreateServerModal.vue:186 -#: src/views/database/UpdateServerModal.vue:110 +#: src/views/database/UpdateServerModal.vue:111 msgid "Enter database server password" msgstr "" #: src/views/database/CreateServerModal.vue:195 -#: src/views/database/UpdateServerModal.vue:118 +#: src/views/database/UpdateServerModal.vue:119 msgid "Enter database server comment" msgstr "" @@ -6310,7 +6492,7 @@ msgid "Are you sure you want to delete this index?" msgstr "" #: src/views/database/ElasticsearchDataView.vue:162 -#: src/views/website/EditModal.vue:1784 +#: src/views/website/EditModal.vue:1794 msgid "Source" msgstr "" @@ -6486,7 +6668,7 @@ msgstr "" msgid "Are you sure you want to delete the server?" msgstr "" -#: src/views/database/UpdateServerModal.vue:57 +#: src/views/database/UpdateServerModal.vue:58 msgid "Modify Server" msgstr "" @@ -6845,69 +7027,73 @@ msgstr "" msgid "Back to Home" msgstr "" -#: src/views/file/composables/usePaste.ts:14 +#: src/views/file/composables/useFileOps.ts:57 +msgid "Marked successfully, please navigate to the destination path to paste" +msgstr "" + +#: src/views/file/composables/usePaste.ts:15 msgid "Please mark the files/folders to copy or move first" msgstr "" -#: src/views/file/composables/usePaste.ts:28 +#: src/views/file/composables/usePaste.ts:29 msgid "Moved successfully" msgstr "" -#: src/views/file/composables/usePaste.ts:51 +#: src/views/file/composables/usePaste.ts:58 msgid "Please enter a new name" msgstr "" -#: src/views/file/composables/usePaste.ts:56 -#: src/views/file/composables/usePaste.ts:70 +#: src/views/file/composables/usePaste.ts:63 +#: src/views/file/composables/usePaste.ts:77 msgid "Name cannot be empty" msgstr "" -#: src/views/file/composables/usePaste.ts:89 -#: src/views/file/composables/usePaste.ts:143 +#: src/views/file/composables/usePaste.ts:96 +#: src/views/file/composables/usePaste.ts:150 msgid "Canceled" msgstr "" -#: src/views/file/composables/usePaste.ts:131 -#: src/views/file/ListView.vue:239 -#: src/views/file/ListView.vue:766 -#: src/views/file/ListView.vue:850 +#: src/views/file/composables/usePaste.ts:138 +#: src/views/file/ListView.vue:281 +#: src/views/file/ListView.vue:818 +#: src/views/file/ListView.vue:867 msgid "Warning" msgstr "" -#: src/views/file/composables/usePaste.ts:132 +#: src/views/file/composables/usePaste.ts:139 msgid "There are items with the same name %{ items } Do you want to overwrite?" msgstr "" -#: src/views/file/composables/usePaste.ts:168 -#: src/views/file/ListView.vue:768 +#: src/views/file/composables/usePaste.ts:175 +#: src/views/file/ListView.vue:820 #: src/views/file/UploadModal.vue:752 #: src/views/file/UploadModal.vue:784 msgid "Overwrite" msgstr "" -#: src/views/file/CompressModal.vue:47 +#: src/views/file/CompressModal.vue:52 msgid "Compress task created successfully, please check the task list for progress" msgstr "" -#: src/views/file/CompressModal.vue:70 -#: src/views/file/CompressModal.vue:103 -#: src/views/file/ListView.vue:309 -#: src/views/file/ListView.vue:345 -#: src/views/file/ListView.vue:953 -#: src/views/file/ListView.vue:1532 -#: src/views/file/ToolBar.vue:216 +#: src/views/file/CompressModal.vue:97 +#: src/views/file/CompressModal.vue:116 +#: src/views/file/ListView.vue:351 +#: src/views/file/ListView.vue:387 +#: src/views/file/ListView.vue:974 +#: src/views/file/ListView.vue:1596 +#: src/views/file/ToolBar.vue:189 msgid "Compress" msgstr "" -#: src/views/file/CompressModal.vue:78 +#: src/views/file/CompressModal.vue:105 msgid "Files to compress" msgstr "" -#: src/views/file/CompressModal.vue:81 +#: src/views/file/CompressModal.vue:108 msgid "Compress to" msgstr "" -#: src/views/file/CompressModal.vue:84 +#: src/views/file/CompressModal.vue:111 msgid "Format" msgstr "" @@ -6915,128 +7101,145 @@ msgstr "" msgid "You have unsaved changes. Do you want to save them before closing?" msgstr "" -#: src/views/file/EditModal.vue:105 +#: src/views/file/EditModal.vue:83 msgid "Failed to save files: %{ files }" msgstr "" -#: src/views/file/EditModal.vue:185 +#: src/views/file/EditModal.vue:141 msgid "File Editor" msgstr "" -#: src/views/file/ListView.vue:240 +#: src/views/file/IndexView.vue:242 +msgid "Drop files to upload" +msgstr "" + +#: src/views/file/ListView.vue:259 +#: src/views/file/ListView.vue:399 +#: src/views/file/ListView.vue:992 +msgid "Add Protection" +msgstr "" + +#: src/views/file/ListView.vue:259 +#: src/views/file/ListView.vue:398 +#: src/views/file/ListView.vue:992 +msgid "Remove Protection" +msgstr "" + +#: src/views/file/ListView.vue:261 +msgid "Add tamper protection for %{ name }?" +msgstr "" + +#: src/views/file/ListView.vue:262 +msgid "Remove tamper protection for %{ name }? The matching rule or exclusions will be adjusted accordingly." +msgstr "" + +#: src/views/file/ListView.vue:270 +#: src/views/monitor/IndexView.vue:695 +#: src/views/monitor/IndexView.vue:704 +msgid "Operation successful" +msgstr "" + +#: src/views/file/ListView.vue:282 msgid "%{ name } has immutable attribute. The panel will temporarily remove the immutable attribute, perform the operation, and then restore the immutable attribute. Do you want to continue?" msgstr "" -#: src/views/file/ListView.vue:244 -#: src/views/file/UploadModal.vue:506 -#: src/views/file/UploadModal.vue:641 -msgid "Continue" -msgstr "" - -#: src/views/file/ListView.vue:297 -#: src/views/file/ListView.vue:315 -#: src/views/file/ListView.vue:359 -#: src/views/file/ToolBar.vue:211 +#: src/views/file/ListView.vue:339 +#: src/views/file/ListView.vue:357 +#: src/views/file/ListView.vue:408 +#: src/views/file/ToolBar.vue:184 msgid "Paste" msgstr "" -#: src/views/file/ListView.vue:308 -#: src/views/file/ListView.vue:342 -#: src/views/file/ListView.vue:951 -#: src/views/file/ToolBar.vue:215 +#: src/views/file/ListView.vue:350 +#: src/views/file/ListView.vue:384 +#: src/views/file/ListView.vue:972 +#: src/views/file/ToolBar.vue:188 msgid "Move" msgstr "" -#: src/views/file/ListView.vue:310 -#: src/views/file/ListView.vue:343 -#: src/views/file/ListView.vue:952 -#: src/views/file/ListView.vue:1350 +#: src/views/file/ListView.vue:352 +#: src/views/file/ListView.vue:385 +#: src/views/file/ListView.vue:973 +#: src/views/file/ListView.vue:1402 #: src/views/file/PermissionModal.vue:146 #: src/views/file/PropertyModal.vue:42 -#: src/views/file/ToolBar.vue:217 +#: src/views/file/ToolBar.vue:190 msgid "Permission" msgstr "" -#: src/views/file/ListView.vue:327 -#: src/views/file/ListView.vue:1519 +#: src/views/file/ListView.vue:369 +#: src/views/file/ListView.vue:1583 msgid "Open" msgstr "" -#: src/views/file/ListView.vue:329 -#: src/views/file/ListView.vue:1538 +#: src/views/file/ListView.vue:371 +#: src/views/file/ListView.vue:1602 msgid "Preview" msgstr "" -#: src/views/file/ListView.vue:331 -#: src/views/file/ListView.vue:958 -#: src/views/file/ListView.vue:1647 +#: src/views/file/ListView.vue:373 +#: src/views/file/ListView.vue:979 +#: src/views/file/ListView.vue:1705 msgid "Uncompress" msgstr "" -#: src/views/file/ListView.vue:354 -#: src/views/file/ListView.vue:968 +#: src/views/file/ListView.vue:403 +#: src/views/file/ListView.vue:997 #: src/views/file/PropertyModal.vue:11 msgid "Properties" msgstr "" -#: src/views/file/ListView.vue:677 -#: src/views/file/ToolBar.vue:78 -#: src/views/file/ToolBar.vue:97 -msgid "Marked successfully, please navigate to the destination path to paste" -msgstr "" - -#: src/views/file/ListView.vue:767 -msgid "There are items with the same name. Do you want to overwrite?" -msgstr "" - -#: src/views/file/ListView.vue:775 -#: src/views/file/ListView.vue:794 +#: src/views/file/ListView.vue:806 msgid "Renamed %{ source } to %{ target } successfully" msgstr "" -#: src/views/file/ListView.vue:841 +#: src/views/file/ListView.vue:819 +msgid "There are items with the same name. Do you want to overwrite?" +msgstr "" + +#: src/views/file/ListView.vue:858 msgid "Some files are immutable and cannot be deleted" msgstr "" -#: src/views/file/ListView.vue:848 +#: src/views/file/ListView.vue:865 msgid "Are you sure you want to delete %{count} items?" msgstr "" -#: src/views/file/ListView.vue:861 +#: src/views/file/ListView.vue:878 #: src/views/file/PathInput.vue:34 msgid "Path copied to clipboard" msgstr "" -#: src/views/file/ListView.vue:961 +#: src/views/file/ListView.vue:982 msgid "Copy Path" msgstr "" -#: src/views/file/ListView.vue:1217 +#: src/views/file/ListView.vue:1250 msgid "Uncompress task created successfully, please check the task list for progress" msgstr "" -#: src/views/file/ListView.vue:1578 +#: src/views/file/ListView.vue:1642 msgid "No files" msgstr "" -#: src/views/file/ListView.vue:1588 +#: src/views/file/ListView.vue:1652 msgid "%{count} item(s) selected" msgstr "" -#: src/views/file/ListView.vue:1596 +#: src/views/file/ListView.vue:1660 msgid "%{count} item(s)" msgstr "" -#: src/views/file/ListView.vue:1635 +#: src/views/file/ListView.vue:1693 msgid "Uncompress - %{ file }" msgstr "" -#: src/views/file/ListView.vue:1643 +#: src/views/file/ListView.vue:1701 msgid "Uncompress to" msgstr "" -#: src/views/file/ListView.vue:1655 -#: src/views/file/ToolBar.vue:264 +#: src/views/file/ListView.vue:1713 +#: src/views/file/ToolBar.vue:237 msgid "Terminal - %{ path }" msgstr "" @@ -7121,7 +7324,7 @@ msgstr "" msgid "Others" msgstr "" -#: src/views/file/PreviewModal.vue:32 +#: src/views/file/PreviewModal.vue:31 msgid "Preview - " msgstr "" @@ -7145,44 +7348,44 @@ msgstr "" msgid "Immutable" msgstr "" -#: src/views/file/ToolBar.vue:55 +#: src/views/file/ToolBar.vue:57 msgid "Download task created successfully, please check the task list for progress" msgstr "" -#: src/views/file/ToolBar.vue:65 +#: src/views/file/ToolBar.vue:67 msgid "Please select files/folders to copy" msgstr "" -#: src/views/file/ToolBar.vue:84 +#: src/views/file/ToolBar.vue:75 msgid "Please select files/folders to move" msgstr "" -#: src/views/file/ToolBar.vue:157 +#: src/views/file/ToolBar.vue:130 msgid "Sort" msgstr "" -#: src/views/file/ToolBar.vue:182 -#: src/views/file/ToolBar.vue:236 +#: src/views/file/ToolBar.vue:155 +#: src/views/file/ToolBar.vue:209 msgid "Remote Download" msgstr "" -#: src/views/file/ToolBar.vue:201 +#: src/views/file/ToolBar.vue:174 msgid "Switch to grid view" msgstr "" -#: src/views/file/ToolBar.vue:202 +#: src/views/file/ToolBar.vue:175 msgid "Switch to list view" msgstr "" -#: src/views/file/ToolBar.vue:220 +#: src/views/file/ToolBar.vue:193 msgid "Are you sure you want to delete in bulk?" msgstr "" -#: src/views/file/ToolBar.vue:244 +#: src/views/file/ToolBar.vue:217 msgid "Download URL" msgstr "" -#: src/views/file/ToolBar.vue:247 +#: src/views/file/ToolBar.vue:220 msgid "Save as" msgstr "" @@ -7326,7 +7529,7 @@ msgstr "" #: src/views/firewall/CreateIpModal.vue:96 #: src/views/firewall/CreateModal.vue:108 #: src/views/firewall/IpRuleView.vue:195 -#: src/views/firewall/RuleView.vue:303 +#: src/views/firewall/RuleView.vue:324 msgid "Create Rule" msgstr "" @@ -7371,19 +7574,19 @@ msgstr "" #: src/views/firewall/CreateModal.vue:144 #: src/views/firewall/IpRuleView.vue:111 #: src/views/firewall/RuleView.vue:216 -#: src/views/website/EditModal.vue:1797 +#: src/views/website/EditModal.vue:1807 msgid "Target" msgstr "" #: src/views/firewall/ForwardView.vue:125 #: src/views/firewall/IpRuleView.vue:167 -#: src/views/firewall/RuleView.vue:275 +#: src/views/firewall/RuleView.vue:296 msgid "Please select rules to delete" msgstr "" #: src/views/firewall/ForwardView.vue:157 #: src/views/firewall/IpRuleView.vue:199 -#: src/views/firewall/RuleView.vue:307 +#: src/views/firewall/RuleView.vue:328 msgid "Are you sure you want to delete the selected rules?" msgstr "" @@ -7422,6 +7625,18 @@ msgstr "" msgid "No process information" msgstr "" +#: src/views/firewall/RuleView.vue:275 +msgid "Import finished: %{succeeded} succeeded, %{failed} failed" +msgstr "" + +#: src/views/firewall/RuleView.vue:338 +msgid "Export" +msgstr "" + +#: src/views/firewall/RuleView.vue:342 +msgid "Import" +msgstr "" + #: src/views/firewall/ScanView.vue:193 #: src/views/firewall/ScanView.vue:211 #: src/views/firewall/ScanView.vue:223 @@ -7947,6 +8162,7 @@ msgstr "" #: src/views/log/HttpLog.vue:56 #: src/views/log/OperationLog.vue:51 #: src/views/log/SSHLog.vue:58 +#: src/views/tamper/IndexView.vue:182 #: src/views/toolbox/SystemView.vue:250 #: src/views/website/stats/ErrorsTab.vue:87 msgid "Time" @@ -7963,8 +8179,8 @@ msgstr "" #: src/views/log/DatabaseLog.vue:81 #: src/views/log/HttpLog.vue:107 -#: src/views/toolbox/MigrationView.vue:697 -#: src/views/toolbox/MigrationView.vue:784 +#: src/views/toolbox/MigrationView.vue:728 +#: src/views/toolbox/MigrationView.vue:815 msgid "Duration" msgstr "" @@ -8026,7 +8242,7 @@ msgid "Message" msgstr "" #: src/views/log/OperationLog.vue:100 -#: src/views/toolbox/MigrationView.vue:785 +#: src/views/toolbox/MigrationView.vue:816 msgid "Details" msgstr "" @@ -8102,6 +8318,7 @@ msgstr "" #: src/views/monitor/IndexView.vue:335 #: src/views/monitor/IndexView.vue:347 +#: src/views/tamper/IndexView.vue:196 #: src/views/toolbox/IndexView.vue:27 #: src/views/toolbox/NetworkView.vue:75 msgid "Process" @@ -8140,11 +8357,6 @@ msgstr "" msgid "Unit MB" msgstr "" -#: src/views/monitor/IndexView.vue:695 -#: src/views/monitor/IndexView.vue:704 -msgid "Operation successful" -msgstr "" - #: src/views/monitor/IndexView.vue:715 msgid "Enable Monitoring" msgstr "" @@ -8167,7 +8379,7 @@ msgid "minutes" msgstr "" #: src/views/monitor/IndexView.vue:743 -#: src/views/website/EditModal.vue:2101 +#: src/views/website/EditModal.vue:2111 msgid "Are you sure you want to clear?" msgstr "" @@ -8332,13 +8544,13 @@ msgstr "" #: src/views/project/CreateModal.vue:548 #: src/views/website/CreateModal.vue:236 -#: src/views/website/EditModal.vue:926 +#: src/views/website/EditModal.vue:936 msgid "PHP Version" msgstr "" #: src/views/project/CreateModal.vue:552 #: src/views/website/CreateModal.vue:240 -#: src/views/website/EditModal.vue:931 +#: src/views/website/EditModal.vue:941 msgid "Select PHP Version" msgstr "" @@ -8427,9 +8639,10 @@ msgstr "" #: src/views/project/EditModal.vue:72 #: src/views/setting/SettingBase.vue:187 #: src/views/setting/SettingSafe.vue:246 -#: src/views/website/EditModal.vue:778 -#: src/views/website/EditModal.vue:782 -#: src/views/website/EditModal.vue:997 +#: src/views/tamper/IndexView.vue:132 +#: src/views/website/EditModal.vue:788 +#: src/views/website/EditModal.vue:792 +#: src/views/website/EditModal.vue:1007 msgid "Disabled" msgstr "" @@ -8708,7 +8921,7 @@ msgid "Panel is restarting, page will refresh in 5 seconds" msgstr "" #: src/views/setting/IndexView.vue:118 -#: src/views/website/EditModal.vue:225 +#: src/views/website/EditModal.vue:235 msgid "Please wait..." msgstr "" @@ -9086,7 +9299,7 @@ msgid "Enter the code" msgstr "" #: src/views/ssh/CreateModal.vue:53 -#: src/views/ssh/IndexView.vue:533 +#: src/views/ssh/IndexView.vue:575 msgid "Create Host" msgstr "" @@ -9110,51 +9323,289 @@ msgstr "" msgid "Remarks" msgstr "" -#: src/views/ssh/IndexView.vue:65 +#: src/views/ssh/IndexView.vue:67 msgid "Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" msgstr "" -#: src/views/ssh/IndexView.vue:121 +#: src/views/ssh/IndexView.vue:97 +#: src/views/ssh/IndexView.vue:178 +msgid "File Transfer" +msgstr "" + +#: src/views/ssh/IndexView.vue:128 msgid "Are you sure you want to delete this host?" msgstr "" -#: src/views/ssh/IndexView.vue:284 +#: src/views/ssh/IndexView.vue:316 msgid "Connection closed. Please refresh." msgstr "" -#: src/views/ssh/IndexView.vue:289 +#: src/views/ssh/IndexView.vue:321 msgid "Connection error. Please refresh." msgstr "" -#: src/views/ssh/IndexView.vue:473 +#: src/views/ssh/IndexView.vue:511 msgid "New Session" msgstr "" -#: src/views/ssh/IndexView.vue:500 +#: src/views/ssh/IndexView.vue:538 msgid "Manage Hosts" msgstr "" -#: src/views/ssh/IndexView.vue:505 +#: src/views/ssh/IndexView.vue:543 msgid "Exit Fullscreen" msgstr "" -#: src/views/ssh/IndexView.vue:505 +#: src/views/ssh/IndexView.vue:543 msgid "Fullscreen" msgstr "" -#: src/views/ssh/IndexView.vue:527 +#: src/views/ssh/IndexView.vue:569 #: src/views/toolbox/SystemView.vue:237 msgid "Hosts" msgstr "" -#: src/views/ssh/IndexView.vue:552 +#: src/views/ssh/IndexView.vue:594 msgid "Bash session on this server" msgstr "" +#: src/views/ssh/SftpBrowser.vue:133 +msgid "Parent Directory" +msgstr "" + +#: src/views/ssh/SftpBrowser.vue:145 +msgid "Create Directory" +msgstr "" + +#: src/views/ssh/SftpBrowser.vue:155 +msgid "Directory name" +msgstr "" + +#: src/views/ssh/SftpBrowser.vue:195 +msgid "Empty directory" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:60 +msgid "Please select files to transfer" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:64 +msgid "Source and destination are the same directory" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:134 +msgid "Connection closed" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:165 +msgid "Cancelled" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:206 +msgid "Transfer to right" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:216 +msgid "Transfer to left" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:234 +msgid "Transfer Queue" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:236 +msgid "Clear Finished" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:272 +#: src/views/task/TaskView.vue:42 +#: src/views/toolbox/ProcessView.vue:53 +#: src/views/toolbox/ProcessView.vue:89 +msgid "Waiting" +msgstr "" + #: src/views/ssh/UpdateModal.vue:59 msgid "Update Host" msgstr "" +#: src/views/tamper/IndexView.vue:47 +msgid "eBPF mode is not available, please activate it first" +msgstr "" + +#: src/views/tamper/IndexView.vue:64 +msgid "Activate eBPF LSM" +msgstr "" + +#: src/views/tamper/IndexView.vue:65 +msgid "The panel will modify the kernel boot parameters (append bpf to the LSM list) and reboot the server immediately. All services will be interrupted during the reboot. Continue?" +msgstr "" + +#: src/views/tamper/IndexView.vue:74 +msgid "The server is rebooting, please reconnect later" +msgstr "" + +#: src/views/tamper/IndexView.vue:116 +#: src/views/tamper/RuleModal.vue:102 +msgid "Protected Directory" +msgstr "" + +#: src/views/tamper/IndexView.vue:118 +msgid "Extensions" +msgstr "" + +#: src/views/tamper/IndexView.vue:122 +msgid "All files" +msgstr "" + +#: src/views/tamper/IndexView.vue:132 +#: src/views/tamper/RuleModal.vue:111 +#: src/views/task/CronView.vue:76 +#: src/views/toolbox/WebHookView.vue:91 +#: src/views/toolbox/WebHookView.vue:386 +msgid "Enabled" +msgstr "" + +#: src/views/tamper/IndexView.vue:149 +msgid "Are you sure to delete this rule?" +msgstr "" + +#: src/views/tamper/IndexView.vue:188 +msgid "Operation" +msgstr "" + +#: src/views/tamper/IndexView.vue:202 +#: src/views/tamper/IndexView.vue:370 +#: src/views/website/EditModal.vue:2116 +msgid "Clear Logs" +msgstr "" + +#: src/views/tamper/IndexView.vue:203 +msgid "Are you sure to clear all interception logs?" +msgstr "" + +#: src/views/tamper/IndexView.vue:218 +msgid "Protection Rules" +msgstr "" + +#: src/views/tamper/IndexView.vue:219 +msgid "Interception Logs" +msgstr "" + +#: src/views/tamper/IndexView.vue:226 +msgid "Tamper protection is only supported on Linux." +msgstr "" + +#: src/views/tamper/IndexView.vue:233 +msgid "Protecting" +msgstr "" + +#: src/views/tamper/IndexView.vue:236 +msgid "Protected Files" +msgstr "" + +#: src/views/tamper/IndexView.vue:239 +msgid "Protected Directories" +msgstr "" + +#: src/views/tamper/IndexView.vue:247 +msgid "Enable Protection" +msgstr "" + +#: src/views/tamper/IndexView.vue:252 +msgid "File Lock (chattr)" +msgstr "" + +#: src/views/tamper/IndexView.vue:256 +msgid "Mode Description" +msgstr "" + +#: src/views/tamper/IndexView.vue:259 +msgid "Locks files with the immutable attribute, enforced by the kernel at the VFS layer. Works on all distributions with no kernel dependency. Blocks tampering by web processes, but not root." +msgstr "" + +#: src/views/tamper/IndexView.vue:266 +msgid "Intercepts write/delete/rename via eBPF-LSM with per-process tracing. More precise and auditable, but requires the bpf LSM to be active in the kernel." +msgstr "" + +#: src/views/tamper/IndexView.vue:272 +msgid "Block New Files" +msgstr "" + +#: src/views/tamper/IndexView.vue:277 +msgid "Delete newly created files of protected types in protected directories. When off, new files are frozen and logged instead." +msgstr "" + +#: src/views/tamper/IndexView.vue:284 +msgid "Log Retention (days)" +msgstr "" + +#: src/views/tamper/IndexView.vue:294 +#: src/views/website/SettingView.vue:108 +#: src/views/website/SettingView.vue:123 +#: src/views/website/SettingView.vue:138 +#: src/views/website/SettingView.vue:162 +#: src/views/website/SettingView.vue:202 +#: src/views/website/SettingView.vue:265 +msgid "Save Changes" +msgstr "" + +#: src/views/tamper/IndexView.vue:301 +msgid "eBPF Environment" +msgstr "" + +#: src/views/tamper/IndexView.vue:304 +msgid "Kernel Version" +msgstr "" + +#: src/views/tamper/IndexView.vue:307 +msgid "Active LSM" +msgstr "" + +#: src/views/tamper/IndexView.vue:310 +msgid "eBPF Available" +msgstr "" + +#: src/views/tamper/IndexView.vue:312 +#: src/views/toolbox/DiskView.vue:250 +msgid "Available" +msgstr "" + +#: src/views/tamper/IndexView.vue:312 +msgid "Unavailable" +msgstr "" + +#: src/views/tamper/IndexView.vue:326 +msgid "Activate eBPF and Reboot" +msgstr "" + +#: src/views/tamper/RuleModal.vue:83 +msgid "Edit Rule" +msgstr "" + +#: src/views/tamper/RuleModal.vue:90 +msgid "Quick Select Website" +msgstr "" + +#: src/views/tamper/RuleModal.vue:95 +msgid "Pick a website to fill name and path" +msgstr "" + +#: src/views/tamper/RuleModal.vue:100 +msgid "Rule identifier, usually the website name" +msgstr "" + +#: src/views/tamper/RuleModal.vue:105 +msgid "Protected Extensions" +msgstr "" + +#: src/views/tamper/RuleModal.vue:108 +msgid "Exclude Paths" +msgstr "" + +#: src/views/tamper/RuleModal.vue:117 +msgid "Leave extensions empty to protect all files (directories become append-only). Excludes accept a path segment name (e.g. cache) or an absolute path." +msgstr "" + #: src/views/task/CreateModal.vue:36 msgid "# Enter your script content here" msgstr "" @@ -9349,12 +9800,6 @@ msgstr "" msgid "Select storage" msgstr "" -#: src/views/task/CronView.vue:76 -#: src/views/toolbox/WebHookView.vue:91 -#: src/views/toolbox/WebHookView.vue:386 -msgid "Enabled" -msgstr "" - #: src/views/task/CronView.vue:110 msgid "Last Update Time" msgstr "" @@ -9387,12 +9832,6 @@ msgstr "" msgid "Completed" msgstr "" -#: src/views/task/TaskView.vue:42 -#: src/views/toolbox/ProcessView.vue:53 -#: src/views/toolbox/ProcessView.vue:89 -msgid "Waiting" -msgstr "" - #: src/views/task/TaskView.vue:58 msgid "Completion Time" msgstr "" @@ -9681,11 +10120,6 @@ msgstr "" msgid "No SMART-capable disks found" msgstr "" -#: src/views/toolbox/disk/SmartView.vue:280 -#: src/views/toolbox/PanelView.vue:98 -msgid "Basic Info" -msgstr "" - #: src/views/toolbox/disk/SmartView.vue:301 msgid "Health Status" msgstr "" @@ -9720,10 +10154,6 @@ msgstr "" msgid "Used" msgstr "" -#: src/views/toolbox/DiskView.vue:250 -msgid "Available" -msgstr "" - #: src/views/toolbox/DiskView.vue:267 msgid "Not Mounted" msgstr "" @@ -10149,244 +10579,256 @@ msgstr "" msgid "Clean" msgstr "" -#: src/views/toolbox/MigrationView.vue:88 -#: src/views/toolbox/MigrationView.vue:112 +#: src/views/toolbox/MigrationView.vue:89 +#: src/views/toolbox/MigrationView.vue:113 msgid "Please fill in all connection fields" msgstr "" -#: src/views/toolbox/MigrationView.vue:124 +#: src/views/toolbox/MigrationView.vue:125 msgid "Environment check refreshed" msgstr "" -#: src/views/toolbox/MigrationView.vue:142 +#: src/views/toolbox/MigrationView.vue:144 msgid "Web server mismatch: local is %{local}, remote is %{remote}. Migration cannot proceed." msgstr "" -#: src/views/toolbox/MigrationView.vue:145 -#: src/views/toolbox/MigrationView.vue:146 +#: src/views/toolbox/MigrationView.vue:147 +#: src/views/toolbox/MigrationView.vue:148 msgid "none" msgstr "" -#: src/views/toolbox/MigrationView.vue:160 +#: src/views/toolbox/MigrationView.vue:162 msgid "%{type} is installed locally but not on the remote server. Related projects may need reconfiguration." msgstr "" -#: src/views/toolbox/MigrationView.vue:180 +#: src/views/toolbox/MigrationView.vue:182 msgid "%{type} is installed locally but not on the remote server. Database migration for this type will be skipped." msgstr "" -#: src/views/toolbox/MigrationView.vue:248 +#: src/views/toolbox/MigrationView.vue:203 +msgid "Ignore Environment Check" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:204 +msgid "Due to environment inconsistency, migrated items may not work properly after migration. Do you still want to continue?" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:269 msgid "Please select at least one item to migrate" msgstr "" -#: src/views/toolbox/MigrationView.vue:253 +#: src/views/toolbox/MigrationView.vue:274 msgid "Confirm Migration" msgstr "" -#: src/views/toolbox/MigrationView.vue:254 +#: src/views/toolbox/MigrationView.vue:275 msgid "Are you sure you want to start migration? This will transfer the selected items to the remote server." msgstr "" -#: src/views/toolbox/MigrationView.vue:345 +#: src/views/toolbox/MigrationView.vue:366 msgid "Reset Migration" msgstr "" -#: src/views/toolbox/MigrationView.vue:346 +#: src/views/toolbox/MigrationView.vue:367 msgid "Are you sure you want to reset the migration state?" msgstr "" -#: src/views/toolbox/MigrationView.vue:369 +#: src/views/toolbox/MigrationView.vue:391 msgid "Migration state has been reset" msgstr "" -#: src/views/toolbox/MigrationView.vue:407 +#: src/views/toolbox/MigrationView.vue:429 msgid "Enter remote server info" msgstr "" -#: src/views/toolbox/MigrationView.vue:409 +#: src/views/toolbox/MigrationView.vue:431 msgid "Pre-check" msgstr "" -#: src/views/toolbox/MigrationView.vue:409 +#: src/views/toolbox/MigrationView.vue:431 msgid "Verify environment" msgstr "" -#: src/views/toolbox/MigrationView.vue:411 +#: src/views/toolbox/MigrationView.vue:433 msgid "Select Items" msgstr "" -#: src/views/toolbox/MigrationView.vue:412 +#: src/views/toolbox/MigrationView.vue:434 msgid "Choose what to migrate" msgstr "" -#: src/views/toolbox/MigrationView.vue:414 +#: src/views/toolbox/MigrationView.vue:436 msgid "Migrating" msgstr "" -#: src/views/toolbox/MigrationView.vue:414 +#: src/views/toolbox/MigrationView.vue:436 msgid "Transfer in progress" msgstr "" -#: src/views/toolbox/MigrationView.vue:415 +#: src/views/toolbox/MigrationView.vue:437 msgid "Complete" msgstr "" -#: src/views/toolbox/MigrationView.vue:415 +#: src/views/toolbox/MigrationView.vue:437 msgid "View results" msgstr "" -#: src/views/toolbox/MigrationView.vue:420 +#: src/views/toolbox/MigrationView.vue:442 msgid "Remote Server Connection" msgstr "" -#: src/views/toolbox/MigrationView.vue:422 +#: src/views/toolbox/MigrationView.vue:444 msgid "Panel URL" msgstr "" -#: src/views/toolbox/MigrationView.vue:425 +#: src/views/toolbox/MigrationView.vue:447 msgid "e.g. https://remote-server:8888" msgstr "" -#: src/views/toolbox/MigrationView.vue:428 +#: src/views/toolbox/MigrationView.vue:450 msgid "Token ID" msgstr "" -#: src/views/toolbox/MigrationView.vue:431 +#: src/views/toolbox/MigrationView.vue:453 msgid "API Token ID" msgstr "" -#: src/views/toolbox/MigrationView.vue:436 +#: src/views/toolbox/MigrationView.vue:458 msgid "Access Token" msgstr "" -#: src/views/toolbox/MigrationView.vue:441 +#: src/views/toolbox/MigrationView.vue:463 msgid "API Access Token" msgstr "" -#: src/views/toolbox/MigrationView.vue:453 +#: src/views/toolbox/MigrationView.vue:475 msgid "Environment Pre-check" msgstr "" -#: src/views/toolbox/MigrationView.vue:472 +#: src/views/toolbox/MigrationView.vue:494 msgid "Remote" msgstr "" -#: src/views/toolbox/MigrationView.vue:478 +#: src/views/toolbox/MigrationView.vue:500 msgid "Web Server" msgstr "" -#: src/views/toolbox/MigrationView.vue:488 -#: src/views/toolbox/MigrationView.vue:539 +#: src/views/toolbox/MigrationView.vue:510 +#: src/views/toolbox/MigrationView.vue:561 msgid "Match" msgstr "" -#: src/views/toolbox/MigrationView.vue:489 +#: src/views/toolbox/MigrationView.vue:511 msgid "Mismatch" msgstr "" -#: src/views/toolbox/MigrationView.vue:508 -#: src/views/toolbox/MigrationView.vue:523 +#: src/views/toolbox/MigrationView.vue:530 +#: src/views/toolbox/MigrationView.vue:545 msgid "Not installed" msgstr "" -#: src/views/toolbox/MigrationView.vue:540 +#: src/views/toolbox/MigrationView.vue:562 msgid "Different" msgstr "" -#: src/views/toolbox/MigrationView.vue:603 +#: src/views/toolbox/MigrationView.vue:619 +msgid "Ignore environment check" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:634 msgid "Select Migration Items" msgstr "" -#: src/views/toolbox/MigrationView.vue:605 +#: src/views/toolbox/MigrationView.vue:636 msgid "Websites" msgstr "" -#: src/views/toolbox/MigrationView.vue:616 +#: src/views/toolbox/MigrationView.vue:647 msgid "No websites found" msgstr "" -#: src/views/toolbox/MigrationView.vue:620 +#: src/views/toolbox/MigrationView.vue:651 msgid "Databases" msgstr "" -#: src/views/toolbox/MigrationView.vue:632 +#: src/views/toolbox/MigrationView.vue:663 msgid "No databases found" msgstr "" -#: src/views/toolbox/MigrationView.vue:636 +#: src/views/toolbox/MigrationView.vue:667 msgid "Database Users" msgstr "" -#: src/views/toolbox/MigrationView.vue:649 +#: src/views/toolbox/MigrationView.vue:680 msgid "No database users found" msgstr "" -#: src/views/toolbox/MigrationView.vue:653 +#: src/views/toolbox/MigrationView.vue:684 msgid "Projects" msgstr "" -#: src/views/toolbox/MigrationView.vue:665 +#: src/views/toolbox/MigrationView.vue:696 msgid "No projects found" msgstr "" -#: src/views/toolbox/MigrationView.vue:671 +#: src/views/toolbox/MigrationView.vue:702 msgid "Stop services during migration to ensure data consistency (recommended)" msgstr "" -#: src/views/toolbox/MigrationView.vue:683 +#: src/views/toolbox/MigrationView.vue:714 msgid "Start Migration" msgstr "" -#: src/views/toolbox/MigrationView.vue:689 +#: src/views/toolbox/MigrationView.vue:720 msgid "Migration Progress" msgstr "" -#: src/views/toolbox/MigrationView.vue:717 +#: src/views/toolbox/MigrationView.vue:748 msgid "Migration Logs" msgstr "" -#: src/views/toolbox/MigrationView.vue:726 -#: src/views/toolbox/MigrationView.vue:831 +#: src/views/toolbox/MigrationView.vue:757 +#: src/views/toolbox/MigrationView.vue:862 msgid "Download Log" msgstr "" -#: src/views/toolbox/MigrationView.vue:750 +#: src/views/toolbox/MigrationView.vue:781 msgid "Migration in progress..." msgstr "" -#: src/views/toolbox/MigrationView.vue:757 +#: src/views/toolbox/MigrationView.vue:788 msgid "Migration Complete" msgstr "" -#: src/views/toolbox/MigrationView.vue:762 +#: src/views/toolbox/MigrationView.vue:793 msgid "All items migrated successfully" msgstr "" -#: src/views/toolbox/MigrationView.vue:763 +#: src/views/toolbox/MigrationView.vue:794 msgid "Migration completed with some issues" msgstr "" -#: src/views/toolbox/MigrationView.vue:769 +#: src/views/toolbox/MigrationView.vue:800 msgid "Started" msgstr "" -#: src/views/toolbox/MigrationView.vue:771 +#: src/views/toolbox/MigrationView.vue:802 msgid "Ended" msgstr "" -#: src/views/toolbox/MigrationView.vue:803 +#: src/views/toolbox/MigrationView.vue:834 msgid "Migration succeeded" msgstr "" -#: src/views/toolbox/MigrationView.vue:819 +#: src/views/toolbox/MigrationView.vue:850 msgid "Reminder" msgstr "" -#: src/views/toolbox/MigrationView.vue:823 +#: src/views/toolbox/MigrationView.vue:854 msgid "Some environments differ between local and remote servers. You may need to adjust settings on the remote server otherwise related items may not work properly after migration." msgstr "" -#: src/views/toolbox/MigrationView.vue:834 +#: src/views/toolbox/MigrationView.vue:865 msgid "Start New Migration" msgstr "" @@ -10643,10 +11085,6 @@ msgstr "" msgid "Command Line" msgstr "" -#: src/views/toolbox/ProcessView.vue:453 -msgid "No environment variables" -msgstr "" - #: src/views/toolbox/ProcessView.vue:461 msgid "Open Files" msgstr "" @@ -10772,10 +11210,6 @@ msgstr "" msgid "Generate Random" msgstr "" -#: src/views/toolbox/SshView.vue:314 -msgid "Reset" -msgstr "" - #: src/views/toolbox/SshView.vue:324 msgid "Root SSH Key" msgstr "" @@ -10888,12 +11322,6 @@ msgstr "" msgid "Reset to Default" msgstr "" -#: src/views/toolbox/WebHookView.vue:73 -#: src/views/toolbox/WebHookView.vue:339 -#: src/views/toolbox/WebHookView.vue:380 -msgid "Raw Output" -msgstr "" - #: src/views/toolbox/WebHookView.vue:105 msgid "Call Count" msgstr "" @@ -11104,673 +11532,669 @@ msgstr "" msgid "Edit Website" msgstr "" -#: src/views/website/EditModal.vue:171 +#: src/views/website/EditModal.vue:181 msgid "Reset successfully" msgstr "" -#: src/views/website/EditModal.vue:199 +#: src/views/website/EditModal.vue:209 msgid "Your website contains wildcard domains, which require DNS verification. Please add a DNS provider in Certificate Management first." msgstr "" -#: src/views/website/EditModal.vue:216 +#: src/views/website/EditModal.vue:226 msgid "Please select a DNS provider" msgstr "" -#: src/views/website/EditModal.vue:231 +#: src/views/website/EditModal.vue:241 msgid "Issued successfully" msgstr "" -#: src/views/website/EditModal.vue:245 +#: src/views/website/EditModal.vue:255 msgid "The selected certificate is invalid" msgstr "" -#: src/views/website/EditModal.vue:374 +#: src/views/website/EditModal.vue:384 msgid "Exact Match (=)" msgstr "" -#: src/views/website/EditModal.vue:375 +#: src/views/website/EditModal.vue:385 msgid "Priority Prefix Match (^~)" msgstr "" -#: src/views/website/EditModal.vue:376 +#: src/views/website/EditModal.vue:386 msgid "Prefix Match" msgstr "" -#: src/views/website/EditModal.vue:377 +#: src/views/website/EditModal.vue:387 msgid "Case-sensitive Regex (~)" msgstr "" -#: src/views/website/EditModal.vue:378 +#: src/views/website/EditModal.vue:388 msgid "Case-insensitive Regex (~*)" msgstr "" -#: src/views/website/EditModal.vue:730 +#: src/views/website/EditModal.vue:740 msgid "URL Redirect" msgstr "" -#: src/views/website/EditModal.vue:731 +#: src/views/website/EditModal.vue:741 msgid "Host Redirect" msgstr "" -#: src/views/website/EditModal.vue:732 +#: src/views/website/EditModal.vue:742 msgid "404 Redirect" msgstr "" -#: src/views/website/EditModal.vue:737 +#: src/views/website/EditModal.vue:747 msgid "Moved Permanently" msgstr "" -#: src/views/website/EditModal.vue:738 +#: src/views/website/EditModal.vue:748 msgid "Found" msgstr "" -#: src/views/website/EditModal.vue:739 +#: src/views/website/EditModal.vue:749 msgid "Temporary Redirect" msgstr "" -#: src/views/website/EditModal.vue:740 +#: src/views/website/EditModal.vue:750 msgid "Permanent Redirect" msgstr "" -#: src/views/website/EditModal.vue:779 -#: src/views/website/EditModal.vue:783 +#: src/views/website/EditModal.vue:789 +#: src/views/website/EditModal.vue:793 msgid "Default Path" msgstr "" -#: src/views/website/EditModal.vue:864 +#: src/views/website/EditModal.vue:874 msgid "Domain & Listening" msgstr "" -#: src/views/website/EditModal.vue:874 +#: src/views/website/EditModal.vue:884 msgid "Listening Address" msgstr "" -#: src/views/website/EditModal.vue:909 +#: src/views/website/EditModal.vue:919 msgid "Website Directory" msgstr "" -#: src/views/website/EditModal.vue:912 +#: src/views/website/EditModal.vue:922 msgid "Enter website directory (absolute path)" msgstr "" -#: src/views/website/EditModal.vue:915 +#: src/views/website/EditModal.vue:925 msgid "Running Directory" msgstr "" -#: src/views/website/EditModal.vue:919 +#: src/views/website/EditModal.vue:929 msgid "Enter running directory (needed for Laravel etc.) (absolute path)" msgstr "" -#: src/views/website/EditModal.vue:923 +#: src/views/website/EditModal.vue:933 msgid "Default Document" msgstr "" -#: src/views/website/EditModal.vue:936 +#: src/views/website/EditModal.vue:946 msgid "Anti-cross-site Attack" msgstr "" -#: src/views/website/EditModal.vue:942 +#: src/views/website/EditModal.vue:952 msgid "Upstreams" msgstr "" -#: src/views/website/EditModal.vue:963 +#: src/views/website/EditModal.vue:973 msgid "Upstream name" msgstr "" -#: src/views/website/EditModal.vue:977 -#: src/views/website/EditModal.vue:984 +#: src/views/website/EditModal.vue:987 +#: src/views/website/EditModal.vue:994 msgid "Round Robin (default)" msgstr "" -#: src/views/website/EditModal.vue:985 +#: src/views/website/EditModal.vue:995 msgid "Least Busy" msgstr "" -#: src/views/website/EditModal.vue:986 +#: src/views/website/EditModal.vue:996 msgid "By Traffic" msgstr "" -#: src/views/website/EditModal.vue:991 +#: src/views/website/EditModal.vue:1001 msgid "Keepalive Connections" msgstr "" -#: src/views/website/EditModal.vue:1036 +#: src/views/website/EditModal.vue:1046 msgid "Backend Servers" msgstr "" -#: src/views/website/EditModal.vue:1039 +#: src/views/website/EditModal.vue:1049 msgid "Server address, e.g., 127.0.0.1:8080" msgstr "" -#: src/views/website/EditModal.vue:1040 +#: src/views/website/EditModal.vue:1050 msgid "Options, e.g., weight=5 backup" msgstr "" -#: src/views/website/EditModal.vue:1052 +#: src/views/website/EditModal.vue:1062 msgid "No upstreams configured" msgstr "" -#: src/views/website/EditModal.vue:1061 +#: src/views/website/EditModal.vue:1071 msgid "Proxies" msgstr "" -#: src/views/website/EditModal.vue:1079 -#: src/views/website/EditModal.vue:1759 +#: src/views/website/EditModal.vue:1089 +#: src/views/website/EditModal.vue:1769 msgid "Rule" msgstr "" -#: src/views/website/EditModal.vue:1087 +#: src/views/website/EditModal.vue:1097 msgid "Match Type" msgstr "" -#: src/views/website/EditModal.vue:1096 +#: src/views/website/EditModal.vue:1106 msgid "Match Expression" msgstr "" -#: src/views/website/EditModal.vue:1100 +#: src/views/website/EditModal.vue:1110 msgid "e.g., /, /api, ^/api/v[0-9]+/" msgstr "" -#: src/views/website/EditModal.vue:1108 +#: src/views/website/EditModal.vue:1118 msgid "Backend address, e.g., http://127.0.0.1:8080 or http://upstream_name" msgstr "" -#: src/views/website/EditModal.vue:1115 +#: src/views/website/EditModal.vue:1125 msgid "Proxy Host" msgstr "" -#: src/views/website/EditModal.vue:1119 +#: src/views/website/EditModal.vue:1129 msgid "Default: $proxy_host, or extracted from Proxy Pass" msgstr "" -#: src/views/website/EditModal.vue:1123 +#: src/views/website/EditModal.vue:1133 msgid "Proxy SNI" msgstr "" -#: src/views/website/EditModal.vue:1126 +#: src/views/website/EditModal.vue:1136 msgid "Optional, for HTTPS backends" msgstr "" -#: src/views/website/EditModal.vue:1129 +#: src/views/website/EditModal.vue:1139 msgid "Enable Cache" msgstr "" -#: src/views/website/EditModal.vue:1135 +#: src/views/website/EditModal.vue:1145 msgid "Enable Buffering" msgstr "" -#: src/views/website/EditModal.vue:1176 +#: src/views/website/EditModal.vue:1186 msgid "Cache Settings" msgstr "" -#: src/views/website/EditModal.vue:1181 +#: src/views/website/EditModal.vue:1191 msgid "Cache Valid" msgstr "" -#: src/views/website/EditModal.vue:1184 +#: src/views/website/EditModal.vue:1194 msgid "Status codes, e.g., 200 302 or any" msgstr "" -#: src/views/website/EditModal.vue:1185 +#: src/views/website/EditModal.vue:1195 msgid "Duration, e.g., 10m, 1h, 1d" msgstr "" -#: src/views/website/EditModal.vue:1186 +#: src/views/website/EditModal.vue:1196 msgid "Add Cache Valid Rule" msgstr "" -#: src/views/website/EditModal.vue:1192 +#: src/views/website/EditModal.vue:1202 msgid "No Cache Conditions" msgstr "" -#: src/views/website/EditModal.vue:1205 +#: src/views/website/EditModal.vue:1215 msgid "Select or enter conditions" msgstr "" -#: src/views/website/EditModal.vue:1209 +#: src/views/website/EditModal.vue:1219 msgid "Use Stale" msgstr "" -#: src/views/website/EditModal.vue:1222 +#: src/views/website/EditModal.vue:1232 msgid "When to use stale cache" msgstr "" -#: src/views/website/EditModal.vue:1226 +#: src/views/website/EditModal.vue:1236 msgid "Background Update" msgstr "" -#: src/views/website/EditModal.vue:1230 +#: src/views/website/EditModal.vue:1240 msgid "Cache Lock" msgstr "" -#: src/views/website/EditModal.vue:1234 +#: src/views/website/EditModal.vue:1244 msgid "Min Uses" msgstr "" -#: src/views/website/EditModal.vue:1245 +#: src/views/website/EditModal.vue:1255 msgid "Cache Methods" msgstr "" -#: src/views/website/EditModal.vue:1254 +#: src/views/website/EditModal.vue:1264 msgid "Default: GET HEAD" msgstr "" -#: src/views/website/EditModal.vue:1258 +#: src/views/website/EditModal.vue:1268 msgid "Cache Key" msgstr "" -#: src/views/website/EditModal.vue:1262 +#: src/views/website/EditModal.vue:1272 msgid "Custom cache key, e.g., $scheme$host$request_uri" msgstr "" -#: src/views/website/EditModal.vue:1270 +#: src/views/website/EditModal.vue:1280 msgid "Custom Request Headers" msgstr "" -#: src/views/website/EditModal.vue:1273 -#: src/views/website/EditModal.vue:1572 +#: src/views/website/EditModal.vue:1283 +#: src/views/website/EditModal.vue:1582 msgid "Header name" msgstr "" -#: src/views/website/EditModal.vue:1275 +#: src/views/website/EditModal.vue:1285 msgid "Value or variable like $host, $remote_addr" msgstr "" -#: src/views/website/EditModal.vue:1277 +#: src/views/website/EditModal.vue:1287 msgid "Add Request Header" msgstr "" -#: src/views/website/EditModal.vue:1284 +#: src/views/website/EditModal.vue:1294 msgid "Response Content Replacement" msgstr "" -#: src/views/website/EditModal.vue:1289 +#: src/views/website/EditModal.vue:1299 msgid "Original content" msgstr "" -#: src/views/website/EditModal.vue:1290 +#: src/views/website/EditModal.vue:1300 msgid "Replacement content" msgstr "" -#: src/views/website/EditModal.vue:1291 +#: src/views/website/EditModal.vue:1301 msgid "Add Replacement Rule" msgstr "" -#: src/views/website/EditModal.vue:1301 -#: src/views/website/EditModal.vue:1831 +#: src/views/website/EditModal.vue:1311 +#: src/views/website/EditModal.vue:1841 msgid "Advanced Settings" msgstr "" -#: src/views/website/EditModal.vue:1306 +#: src/views/website/EditModal.vue:1316 msgid "HTTP Version" msgstr "" -#: src/views/website/EditModal.vue:1314 +#: src/views/website/EditModal.vue:1324 msgid "Select HTTP version" msgstr "" -#: src/views/website/EditModal.vue:1319 +#: src/views/website/EditModal.vue:1329 msgid "Max Body Size" msgstr "" -#: src/views/website/EditModal.vue:1325 +#: src/views/website/EditModal.vue:1335 msgid "Use global" msgstr "" -#: src/views/website/EditModal.vue:1344 +#: src/views/website/EditModal.vue:1354 msgid "Timeout Settings" msgstr "" -#: src/views/website/EditModal.vue:1355 +#: src/views/website/EditModal.vue:1365 msgid "Connect Timeout" msgstr "" -#: src/views/website/EditModal.vue:1381 +#: src/views/website/EditModal.vue:1391 msgid "Read Timeout" msgstr "" -#: src/views/website/EditModal.vue:1407 +#: src/views/website/EditModal.vue:1417 msgid "Send Timeout" msgstr "" -#: src/views/website/EditModal.vue:1438 +#: src/views/website/EditModal.vue:1448 msgid "Retry Settings" msgstr "" -#: src/views/website/EditModal.vue:1449 +#: src/views/website/EditModal.vue:1459 msgid "SSL Backend Verify" msgstr "" -#: src/views/website/EditModal.vue:1458 +#: src/views/website/EditModal.vue:1468 msgid "Response Headers" msgstr "" -#: src/views/website/EditModal.vue:1469 +#: src/views/website/EditModal.vue:1479 msgid "Retry Conditions" msgstr "" -#: src/views/website/EditModal.vue:1485 +#: src/views/website/EditModal.vue:1495 msgid "Select retry conditions" msgstr "" -#: src/views/website/EditModal.vue:1488 +#: src/views/website/EditModal.vue:1498 msgid "Max Tries" msgstr "" -#: src/views/website/EditModal.vue:1492 -#: src/views/website/EditModal.vue:1507 -#: src/views/website/EditModal.vue:1883 -#: src/views/website/EditModal.vue:1896 -#: src/views/website/EditModal.vue:1909 +#: src/views/website/EditModal.vue:1502 +#: src/views/website/EditModal.vue:1517 +#: src/views/website/EditModal.vue:1893 +#: src/views/website/EditModal.vue:1906 +#: src/views/website/EditModal.vue:1919 msgid "Unlimited" msgstr "" -#: src/views/website/EditModal.vue:1496 +#: src/views/website/EditModal.vue:1506 msgid "Retry Timeout" msgstr "" -#: src/views/website/EditModal.vue:1526 +#: src/views/website/EditModal.vue:1536 msgid "Enable Verify" msgstr "" -#: src/views/website/EditModal.vue:1529 +#: src/views/website/EditModal.vue:1539 msgid "Verify Depth" msgstr "" -#: src/views/website/EditModal.vue:1536 +#: src/views/website/EditModal.vue:1546 msgid "Trusted Certificate" msgstr "" -#: src/views/website/EditModal.vue:1540 +#: src/views/website/EditModal.vue:1550 msgid "CA certificate path, e.g. /etc/ssl/certs/ca-certificates.crt" msgstr "" -#: src/views/website/EditModal.vue:1552 +#: src/views/website/EditModal.vue:1562 msgid "Hide Headers" msgstr "" -#: src/views/website/EditModal.vue:1566 +#: src/views/website/EditModal.vue:1576 msgid "Select or input headers to hide" msgstr "" -#: src/views/website/EditModal.vue:1569 +#: src/views/website/EditModal.vue:1579 msgid "Add Headers" msgstr "" -#: src/views/website/EditModal.vue:1573 +#: src/views/website/EditModal.vue:1583 msgid "Header value" msgstr "" -#: src/views/website/EditModal.vue:1574 +#: src/views/website/EditModal.vue:1584 msgid "Add Response Header" msgstr "" -#: src/views/website/EditModal.vue:1583 +#: src/views/website/EditModal.vue:1593 msgid "IP Access Control" msgstr "" -#: src/views/website/EditModal.vue:1594 +#: src/views/website/EditModal.vue:1604 msgid "Allow IPs" msgstr "" -#: src/views/website/EditModal.vue:1597 +#: src/views/website/EditModal.vue:1607 msgid "IP or CIDR, e.g. 192.168.1.0/24" msgstr "" -#: src/views/website/EditModal.vue:1600 +#: src/views/website/EditModal.vue:1610 msgid "Deny IPs" msgstr "" -#: src/views/website/EditModal.vue:1603 +#: src/views/website/EditModal.vue:1613 msgid "IP or CIDR, e.g. all" msgstr "" -#: src/views/website/EditModal.vue:1617 +#: src/views/website/EditModal.vue:1627 msgid "No proxy rules configured" msgstr "" -#: src/views/website/EditModal.vue:1622 +#: src/views/website/EditModal.vue:1632 msgid "Add Proxy Rule" msgstr "" -#: src/views/website/EditModal.vue:1631 +#: src/views/website/EditModal.vue:1641 msgid "Certificate Validity" msgstr "" -#: src/views/website/EditModal.vue:1645 +#: src/views/website/EditModal.vue:1655 msgid "Domains" msgstr "" -#: src/views/website/EditModal.vue:1654 +#: src/views/website/EditModal.vue:1664 msgid "Main Switch" msgstr "" -#: src/views/website/EditModal.vue:1660 +#: src/views/website/EditModal.vue:1670 msgid "Use Existing Certificate" msgstr "" -#: src/views/website/EditModal.vue:1677 +#: src/views/website/EditModal.vue:1687 msgid "HTTP Redirect" msgstr "" -#: src/views/website/EditModal.vue:1680 +#: src/views/website/EditModal.vue:1690 msgid "OCSP Stapling" msgstr "" -#: src/views/website/EditModal.vue:1685 +#: src/views/website/EditModal.vue:1695 msgid "TLS Version" msgstr "" -#: src/views/website/EditModal.vue:1726 +#: src/views/website/EditModal.vue:1736 msgid "Rewrite" msgstr "" -#: src/views/website/EditModal.vue:1741 +#: src/views/website/EditModal.vue:1751 msgid "Redirects" msgstr "" -#: src/views/website/EditModal.vue:1772 +#: src/views/website/EditModal.vue:1782 msgid "Redirect Type" msgstr "" -#: src/views/website/EditModal.vue:1775 +#: src/views/website/EditModal.vue:1785 #: src/views/website/stats/ErrorsTab.vue:115 msgid "Status Code" msgstr "" -#: src/views/website/EditModal.vue:1790 +#: src/views/website/EditModal.vue:1800 msgid "Source path, e.g., /old" msgstr "" -#: src/views/website/EditModal.vue:1791 +#: src/views/website/EditModal.vue:1801 msgid "Source host, e.g., example.com" msgstr "" -#: src/views/website/EditModal.vue:1803 +#: src/views/website/EditModal.vue:1813 msgid "Target path, e.g., /new" msgstr "" -#: src/views/website/EditModal.vue:1804 +#: src/views/website/EditModal.vue:1814 msgid "Target URL, e.g., https://example.com" msgstr "" -#: src/views/website/EditModal.vue:1808 +#: src/views/website/EditModal.vue:1818 msgid "Keep URI" msgstr "" -#: src/views/website/EditModal.vue:1811 +#: src/views/website/EditModal.vue:1821 msgid "Keep the original request path and query parameters" msgstr "" -#: src/views/website/EditModal.vue:1822 +#: src/views/website/EditModal.vue:1832 msgid "No redirect rules configured" msgstr "" -#: src/views/website/EditModal.vue:1827 +#: src/views/website/EditModal.vue:1837 msgid "Add Redirect Rule" msgstr "" -#: src/views/website/EditModal.vue:1836 +#: src/views/website/EditModal.vue:1846 msgid "Access Statistics" msgstr "" -#: src/views/website/EditModal.vue:1840 +#: src/views/website/EditModal.vue:1850 msgid "Enable Statistics" msgstr "" -#: src/views/website/EditModal.vue:1847 +#: src/views/website/EditModal.vue:1857 msgid "Log Settings" msgstr "" -#: src/views/website/EditModal.vue:1849 -#: src/views/website/EditModal.vue:2066 +#: src/views/website/EditModal.vue:1859 +#: src/views/website/EditModal.vue:2076 msgid "Access Log" msgstr "" -#: src/views/website/EditModal.vue:1858 -#: src/views/website/EditModal.vue:2082 +#: src/views/website/EditModal.vue:1868 +#: src/views/website/EditModal.vue:2092 msgid "Error Log" msgstr "" -#: src/views/website/EditModal.vue:1871 +#: src/views/website/EditModal.vue:1881 msgid "Rate Limiting" msgstr "" -#: src/views/website/EditModal.vue:1873 +#: src/views/website/EditModal.vue:1883 msgid "Enable Rate Limiting" msgstr "" -#: src/views/website/EditModal.vue:1877 +#: src/views/website/EditModal.vue:1887 msgid "Concurrent Limit" msgstr "" -#: src/views/website/EditModal.vue:1887 +#: src/views/website/EditModal.vue:1897 msgid "Limit the maximum concurrent connections for this site" msgstr "" -#: src/views/website/EditModal.vue:1890 +#: src/views/website/EditModal.vue:1900 msgid "Per IP Limit" msgstr "" -#: src/views/website/EditModal.vue:1900 +#: src/views/website/EditModal.vue:1910 msgid "Limit the maximum concurrent connections per IP" msgstr "" -#: src/views/website/EditModal.vue:1903 +#: src/views/website/EditModal.vue:1913 msgid "Rate Limit" msgstr "" -#: src/views/website/EditModal.vue:1913 +#: src/views/website/EditModal.vue:1923 msgid "Limit the rate of each request (unit: KB)" msgstr "" -#: src/views/website/EditModal.vue:1921 +#: src/views/website/EditModal.vue:1931 msgid "Real IP" msgstr "" -#: src/views/website/EditModal.vue:1924 +#: src/views/website/EditModal.vue:1934 msgid "Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." msgstr "" -#: src/views/website/EditModal.vue:1931 +#: src/views/website/EditModal.vue:1941 msgid "If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) or ::/0 (ipv6) [insecure]." msgstr "" -#: src/views/website/EditModal.vue:1937 +#: src/views/website/EditModal.vue:1947 msgid "Enable" msgstr "" -#: src/views/website/EditModal.vue:1941 +#: src/views/website/EditModal.vue:1951 msgid "IP Sources" msgstr "" -#: src/views/website/EditModal.vue:1945 +#: src/views/website/EditModal.vue:1955 msgid "One per line, e.g., 127.0.0.1 or 10.0.0.0/8" msgstr "" -#: src/views/website/EditModal.vue:1949 +#: src/views/website/EditModal.vue:1959 msgid "IP Header" msgstr "" -#: src/views/website/EditModal.vue:1964 +#: src/views/website/EditModal.vue:1974 msgid "Recursive" msgstr "" -#: src/views/website/EditModal.vue:1967 +#: src/views/website/EditModal.vue:1977 msgid "Recursively search for real IP in X-Forwarded-For header" msgstr "" -#: src/views/website/EditModal.vue:1975 +#: src/views/website/EditModal.vue:1985 msgid "Basic Authentication" msgstr "" -#: src/views/website/EditModal.vue:1977 +#: src/views/website/EditModal.vue:1987 msgid "User Credentials" msgstr "" -#: src/views/website/EditModal.vue:1991 +#: src/views/website/EditModal.vue:2001 msgid "Visitors will need to enter a username and password to access this website." msgstr "" -#: src/views/website/EditModal.vue:1999 +#: src/views/website/EditModal.vue:2009 msgid "Custom Configs" msgstr "" -#: src/views/website/EditModal.vue:2026 +#: src/views/website/EditModal.vue:2036 msgid "Config name (letters, numbers, underscore, hyphen)" msgstr "" -#: src/views/website/EditModal.vue:2034 +#: src/views/website/EditModal.vue:2044 msgid "This Website" msgstr "" -#: src/views/website/EditModal.vue:2035 +#: src/views/website/EditModal.vue:2045 msgid "Global" msgstr "" -#: src/views/website/EditModal.vue:2040 +#: src/views/website/EditModal.vue:2050 msgid "Content" msgstr "" -#: src/views/website/EditModal.vue:2054 +#: src/views/website/EditModal.vue:2064 msgid "No custom configs" msgstr "" -#: src/views/website/EditModal.vue:2059 +#: src/views/website/EditModal.vue:2069 msgid "Add Custom Config" msgstr "" -#: src/views/website/EditModal.vue:2071 -#: src/views/website/EditModal.vue:2087 +#: src/views/website/EditModal.vue:2081 +#: src/views/website/EditModal.vue:2097 msgid "All logs can be viewed by downloading the file" msgstr "" -#: src/views/website/EditModal.vue:2073 -#: src/views/website/EditModal.vue:2089 +#: src/views/website/EditModal.vue:2083 +#: src/views/website/EditModal.vue:2099 msgid "view" msgstr "" -#: src/views/website/EditModal.vue:2106 -msgid "Clear Logs" -msgstr "" - -#: src/views/website/EditModal.vue:2117 +#: src/views/website/EditModal.vue:2127 msgid "One-click Certificate Issuance" msgstr "" -#: src/views/website/EditModal.vue:2121 +#: src/views/website/EditModal.vue:2131 msgid "Are you sure you want to reset the configuration?" msgstr "" -#: src/views/website/EditModal.vue:2126 +#: src/views/website/EditModal.vue:2136 msgid "Reset Configuration" msgstr "" -#: src/views/website/EditModal.vue:2148 +#: src/views/website/EditModal.vue:2158 msgid "Select DNS Provider" msgstr "" -#: src/views/website/EditModal.vue:2156 +#: src/views/website/EditModal.vue:2166 msgid "Your website contains wildcard domains (e.g. *.example.com), which require DNS verification to issue certificates." msgstr "" @@ -11822,75 +12246,76 @@ msgstr "" msgid "This will delete the website directory but not the database with the same name. Are you sure you want to delete the selected websites?" msgstr "" -#: src/views/website/SettingView.vue:67 +#: src/views/website/SettingView.vue:80 +msgid "Built-in default page" +msgstr "" + +#: src/views/website/SettingView.vue:98 msgid "Default Page" msgstr "" -#: src/views/website/SettingView.vue:77 -#: src/views/website/SettingView.vue:92 -#: src/views/website/SettingView.vue:107 -#: src/views/website/SettingView.vue:150 -#: src/views/website/SettingView.vue:213 -msgid "Save Changes" -msgstr "" - -#: src/views/website/SettingView.vue:82 +#: src/views/website/SettingView.vue:113 msgid "Stop Page" msgstr "" -#: src/views/website/SettingView.vue:97 +#: src/views/website/SettingView.vue:128 msgid "404 Page" msgstr "" -#: src/views/website/SettingView.vue:112 +#: src/views/website/SettingView.vue:143 +#: src/views/website/SettingView.vue:153 msgid "Default Site" msgstr "" -#: src/views/website/SettingView.vue:115 +#: src/views/website/SettingView.vue:147 +msgid "The default site handles requests that do not match any website domain, such as direct access via IP address. By default, the panel built-in page is displayed." +msgstr "" + +#: src/views/website/SettingView.vue:167 msgid "Default Settings" msgstr "" -#: src/views/website/SettingView.vue:119 +#: src/views/website/SettingView.vue:171 msgid "Modifying the default TLS version will affect all newly created websites. Existing websites will not be affected." msgstr "" -#: src/views/website/SettingView.vue:126 +#: src/views/website/SettingView.vue:178 msgid "Please adjust the settings carefully, improper configuration may lead to website inaccessible." msgstr "" -#: src/views/website/SettingView.vue:132 +#: src/views/website/SettingView.vue:184 msgid "Default TLS Version" msgstr "" -#: src/views/website/SettingView.vue:155 +#: src/views/website/SettingView.vue:207 msgid "Statistics" msgstr "" -#: src/views/website/SettingView.vue:159 +#: src/views/website/SettingView.vue:211 msgid "Modifications to the limits below will take effect after restarting the panel." msgstr "" -#: src/views/website/SettingView.vue:165 +#: src/views/website/SettingView.vue:217 msgid "Data Retention Days" msgstr "" -#: src/views/website/SettingView.vue:168 +#: src/views/website/SettingView.vue:220 msgid "Error Buffer Max Size" msgstr "" -#: src/views/website/SettingView.vue:177 +#: src/views/website/SettingView.vue:229 msgid "UV Max Keys" msgstr "" -#: src/views/website/SettingView.vue:186 +#: src/views/website/SettingView.vue:238 msgid "IP Max Keys" msgstr "" -#: src/views/website/SettingView.vue:195 +#: src/views/website/SettingView.vue:247 msgid "Detail Max Keys" msgstr "" -#: src/views/website/SettingView.vue:204 +#: src/views/website/SettingView.vue:256 msgid "Record Request Body" msgstr "" diff --git a/web/src/locales/zh_CN.po b/web/src/locales/zh_CN.po index 5037e133..7010a6ab 100644 --- a/web/src/locales/zh_CN.po +++ b/web/src/locales/zh_CN.po @@ -1,5 +1,9 @@ msgid "" msgstr "" +"Project-Id-Version: acepanel\n" +"PO-Revision-Date: 2026-07-02 20:36\n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: acepanel\n" @@ -7,13 +11,8 @@ msgstr "" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: frontend.pot\n" "X-Crowdin-File-ID: 1168\n" -"Project-Id-Version: acepanel\n" -"Language-Team: Chinese Simplified\n" -"Language: zh_CN\n" -"PO-Revision-Date: 2026-07-02 20:36\n" -#: src/components/common/AppFooter.vue:18 -#: src/views/home/IndexView.vue:548 +#: src/components/common/AppFooter.vue:18 src/views/home/IndexView.vue:548 msgid "AcePanel" msgstr "AcePanel" @@ -25,18 +24,12 @@ msgstr "版权所有" msgid "QQ Group" msgstr "QQ 群" -#: src/components/common/AppFooter.vue:38 -#: src/locales/menu.ts:23 -#: src/views/apps/fail2ban/IndexView.vue:313 -#: src/views/backup/IndexView.vue:53 -#: src/views/backup/ListView.vue:269 -#: src/views/backup/ListView.vue:317 -#: src/views/cert/CertView.vue:467 -#: src/views/cert/CertView.vue:583 -#: src/views/cert/CreateCertModal.vue:118 -#: src/views/home/IndexView.vue:530 -#: src/views/task/CreateModal.vue:448 -#: src/views/task/CreateModal.vue:470 +#: src/components/common/AppFooter.vue:38 src/locales/menu.ts:23 +#: src/views/apps/fail2ban/IndexView.vue:313 src/views/backup/IndexView.vue:53 +#: src/views/backup/ListView.vue:269 src/views/backup/ListView.vue:317 +#: src/views/cert/CertView.vue:467 src/views/cert/CertView.vue:583 +#: src/views/cert/CreateCertModal.vue:118 src/views/home/IndexView.vue:530 +#: src/views/task/CreateModal.vue:448 src/views/task/CreateModal.vue:470 msgid "Website" msgstr "网站" @@ -188,16 +181,11 @@ msgid "After Reboot" msgstr "重启后" #: src/components/common/CronSelector.vue:192 -#: src/views/monitor/IndexView.vue:789 -#: src/views/monitor/IndexView.vue:843 -#: src/views/monitor/IndexView.vue:895 -#: src/views/monitor/IndexView.vue:951 -#: src/views/monitor/IndexView.vue:1018 -#: src/views/project/CreateModal.vue:22 -#: src/views/project/CreateModal.vue:33 -#: src/views/project/CreateModal.vue:46 -#: src/views/project/CreateModal.vue:58 -#: src/views/project/CreateModal.vue:70 +#: src/views/monitor/IndexView.vue:789 src/views/monitor/IndexView.vue:843 +#: src/views/monitor/IndexView.vue:895 src/views/monitor/IndexView.vue:951 +#: src/views/monitor/IndexView.vue:1018 src/views/project/CreateModal.vue:22 +#: src/views/project/CreateModal.vue:33 src/views/project/CreateModal.vue:46 +#: src/views/project/CreateModal.vue:58 src/views/project/CreateModal.vue:70 #: src/views/website/StatsView.vue:160 msgid "Custom" msgstr "自定义" @@ -207,20 +195,17 @@ msgid "Month %{month}" msgstr "%{month} 月" #: src/components/common/CronSelector.vue:347 -#: src/views/apps/nginx/NginxIndex.vue:799 -#: src/views/website/EditModal.vue:676 +#: src/views/apps/nginx/NginxIndex.vue:799 src/views/website/EditModal.vue:686 msgid "Seconds" msgstr "秒" #: src/components/common/CronSelector.vue:358 -#: src/views/apps/nginx/NginxIndex.vue:800 -#: src/views/website/EditModal.vue:677 +#: src/views/apps/nginx/NginxIndex.vue:800 src/views/website/EditModal.vue:687 msgid "Minutes" msgstr "分" #: src/components/common/CronSelector.vue:369 -#: src/views/apps/nginx/NginxIndex.vue:801 -#: src/views/website/EditModal.vue:678 +#: src/views/apps/nginx/NginxIndex.vue:801 src/views/website/EditModal.vue:688 msgid "Hours" msgstr "时" @@ -258,10 +243,9 @@ msgid "Maximize" msgstr "最大化" #: src/components/common/DraggableWindow.vue:289 -#: src/components/file-editor/EditorPane.vue:254 +#: src/components/file-editor/EditorPane.vue:282 #: src/layouts/tab/components/ContextMenu.vue:29 -#: src/views/cert/ObtainModal.vue:183 -#: src/views/ssh/IndexView.vue:468 +#: src/views/cert/ObtainModal.vue:183 src/views/ssh/IndexView.vue:506 msgid "Close" msgstr "关闭" @@ -274,9 +258,9 @@ msgid "Cannot save in current state" msgstr "当前状态无法保存" #: src/components/common/FileEditor.vue:94 -#: src/components/file-editor/EditorPane.vue:160 -#: src/components/file-editor/EditorToolbar.vue:40 -#: src/views/apps/apache/IndexView.vue:46 +#: src/components/file-editor/EditorPane.vue:190 +#: src/components/file-editor/EditorToolbar.vue:38 +#: src/views/app/CustomModal.vue:44 src/views/apps/apache/IndexView.vue:46 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:58 #: src/views/apps/clickhouse/IndexView.vue:57 #: src/views/apps/codeserver/IndexView.vue:26 @@ -285,8 +269,7 @@ msgstr "当前状态无法保存" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:58 #: src/views/apps/elasticsearch/IndexView.vue:51 #: src/views/apps/fail2ban/IndexView.vue:146 -#: src/views/apps/frp/IndexView.vue:38 -#: src/views/apps/frp/IndexView.vue:49 +#: src/views/apps/frp/IndexView.vue:38 src/views/apps/frp/IndexView.vue:49 #: src/views/apps/gitea/IndexView.vue:24 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:139 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:174 @@ -306,6 +289,7 @@ msgstr "当前状态无法保存" #: src/views/apps/nginx/NginxIndex.vue:478 #: src/views/apps/opensearch/IndexView.vue:51 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:58 +#: src/views/apps/pgadmin/IndexView.vue:36 #: src/views/apps/phpmyadmin/IndexView.vue:40 #: src/views/apps/phpmyadmin/IndexView.vue:52 #: src/views/apps/podman/IndexView.vue:29 @@ -330,21 +314,16 @@ msgstr "当前状态无法保存" #: src/views/apps/valkey/IndexView.vue:51 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:103 #: src/views/database/ElasticsearchDocModal.vue:61 -#: src/views/database/RedisKeyModal.vue:77 -#: src/views/environment/GoView.vue:52 +#: src/views/database/RedisKeyModal.vue:77 src/views/environment/GoView.vue:52 #: src/views/environment/NodejsView.vue:55 #: src/views/environment/PhpConfigTuneView.vue:183 -#: src/views/environment/PHPView.vue:149 -#: src/views/environment/PHPView.vue:155 -#: src/views/environment/PythonView.vue:59 -#: src/views/project/EditModal.vue:159 -#: src/views/setting/IndexView.vue:84 -#: src/views/toolbox/SystemView.vue:72 -#: src/views/toolbox/SystemView.vue:83 -#: src/views/toolbox/SystemView.vue:97 -#: src/views/toolbox/SystemView.vue:111 -#: src/views/toolbox/SystemView.vue:158 -#: src/views/website/EditModal.vue:158 +#: src/views/environment/PHPView.vue:149 src/views/environment/PHPView.vue:155 +#: src/views/environment/PythonView.vue:59 src/views/project/EditModal.vue:159 +#: src/views/setting/IndexView.vue:84 src/views/tamper/IndexView.vue:53 +#: src/views/tamper/RuleModal.vue:70 src/views/toolbox/SystemView.vue:72 +#: src/views/toolbox/SystemView.vue:83 src/views/toolbox/SystemView.vue:97 +#: src/views/toolbox/SystemView.vue:111 src/views/toolbox/SystemView.vue:158 +#: src/views/website/EditModal.vue:168 msgid "Saved successfully" msgstr "保存成功" @@ -353,8 +332,7 @@ msgstr "保存成功" msgid "Remove" msgstr "移除" -#: src/components/common/PathSelector.vue:28 -#: src/views/task/CreateModal.vue:509 +#: src/components/common/PathSelector.vue:28 src/views/task/CreateModal.vue:509 msgid "Select Directory" msgstr "选择目录" @@ -364,8 +342,7 @@ msgstr "选择文件" #: src/components/common/PathSelector.vue:51 #: src/components/common/PathSelector.vue:395 -#: src/views/app/EnvironmentView.vue:31 -#: src/views/app/InstalledView.vue:161 +#: src/views/app/EnvironmentView.vue:36 src/views/app/InstalledView.vue:184 #: src/views/apps/fail2ban/IndexView.vue:41 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:72 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:206 @@ -374,38 +351,26 @@ msgstr "选择文件" #: src/views/apps/nginx/NginxIndex.vue:619 #: src/views/apps/nginx/NginxIndex.vue:705 #: src/views/apps/prometheus/PrometheusExportersView.vue:26 -#: src/views/apps/rsync/IndexView.vue:43 -#: src/views/apps/rsync/IndexView.vue:263 +#: src/views/apps/rsync/IndexView.vue:43 src/views/apps/rsync/IndexView.vue:263 #: src/views/apps/supervisor/IndexView.vue:56 #: src/views/apps/supervisor/IndexView.vue:392 -#: src/views/backup/StorageView.vue:66 -#: src/views/backup/StorageView.vue:230 -#: src/views/backup/StorageView.vue:392 -#: src/views/container/ComposeView.vue:59 -#: src/views/container/NetworkView.vue:48 -#: src/views/container/VolumeView.vue:29 +#: src/views/backup/StorageView.vue:66 src/views/backup/StorageView.vue:230 +#: src/views/backup/StorageView.vue:392 src/views/container/ComposeView.vue:59 +#: src/views/container/NetworkView.vue:48 src/views/container/VolumeView.vue:29 #: src/views/database/CreateServerModal.vue:108 #: src/views/database/ServerList.vue:66 -#: src/views/database/UpdateServerModal.vue:65 -#: src/views/file/ListView.vue:1340 -#: src/views/file/PropertyModal.vue:27 -#: src/views/file/ToolBar.vue:150 -#: src/views/home/IndexView.vue:659 -#: src/views/home/IndexView.vue:760 -#: src/views/project/ListView.vue:37 -#: src/views/setting/PasskeyModal.vue:26 -#: src/views/ssh/CreateModal.vue:60 -#: src/views/ssh/UpdateModal.vue:66 -#: src/views/toolbox/LogView.vue:219 -#: src/views/toolbox/MigrationView.vue:695 -#: src/views/toolbox/MigrationView.vue:782 -#: src/views/toolbox/ProcessView.vue:106 -#: src/views/toolbox/ProcessView.vue:393 -#: src/views/toolbox/WebHookView.vue:37 -#: src/views/toolbox/WebHookView.vue:330 -#: src/views/toolbox/WebHookView.vue:371 -#: src/views/website/CreateModal.vue:187 -#: src/views/website/EditModal.vue:2022 +#: src/views/database/UpdateServerModal.vue:66 src/views/file/ListView.vue:1392 +#: src/views/file/PropertyModal.vue:27 src/views/file/ToolBar.vue:123 +#: src/views/home/IndexView.vue:659 src/views/home/IndexView.vue:760 +#: src/views/project/ListView.vue:37 src/views/setting/PasskeyModal.vue:26 +#: src/views/ssh/CreateModal.vue:60 src/views/ssh/UpdateModal.vue:66 +#: src/views/tamper/IndexView.vue:115 src/views/tamper/RuleModal.vue:99 +#: src/views/toolbox/LogView.vue:219 src/views/toolbox/MigrationView.vue:726 +#: src/views/toolbox/MigrationView.vue:813 +#: src/views/toolbox/ProcessView.vue:106 src/views/toolbox/ProcessView.vue:393 +#: src/views/toolbox/WebHookView.vue:37 src/views/toolbox/WebHookView.vue:330 +#: src/views/toolbox/WebHookView.vue:371 src/views/website/CreateModal.vue:187 +#: src/views/website/EditModal.vue:2032 msgid "Name" msgstr "名称" @@ -413,101 +378,82 @@ msgstr "名称" msgid "Permissions" msgstr "权限" -#: src/components/common/PathSelector.vue:102 -#: src/views/file/ListView.vue:1351 +#: src/components/common/PathSelector.vue:102 src/views/file/ListView.vue:1403 msgid "Owner / Group" msgstr "所有者 / 组" -#: src/components/common/PathSelector.vue:114 -#: src/views/backup/ListView.vue:51 +#: src/components/common/PathSelector.vue:114 src/views/backup/ListView.vue:51 #: src/views/container/ImageView.vue:70 #: src/views/database/ElasticsearchDataView.vue:112 -#: src/views/database/RedisDataView.vue:116 -#: src/views/file/ListView.vue:1347 -#: src/views/file/PropertyModal.vue:39 -#: src/views/file/ToolBar.vue:151 +#: src/views/database/RedisDataView.vue:116 src/views/file/ListView.vue:1399 +#: src/views/file/PropertyModal.vue:39 src/views/file/ToolBar.vue:124 #: src/views/toolbox/disk/RaidView.vue:95 -#: src/views/toolbox/disk/RaidView.vue:177 -#: src/views/toolbox/DiskView.vue:233 +#: src/views/toolbox/disk/RaidView.vue:177 src/views/toolbox/DiskView.vue:233 #: src/views/toolbox/LogView.vue:220 msgid "Size" msgstr "大小" -#: src/components/common/PathSelector.vue:149 -#: src/views/file/ListView.vue:1490 +#: src/components/common/PathSelector.vue:149 src/views/file/ListView.vue:1554 msgid "Calculate" msgstr "计算" -#: src/components/common/PathSelector.vue:154 -#: src/views/file/ListView.vue:1356 -#: src/views/file/PropertyModal.vue:51 -#: src/views/file/ToolBar.vue:152 +#: src/components/common/PathSelector.vue:154 src/views/file/ListView.vue:1408 +#: src/views/file/PropertyModal.vue:51 src/views/file/ToolBar.vue:125 msgid "Modification Time" msgstr "修改时间" -#: src/components/common/PathSelector.vue:188 -#: src/views/file/ListView.vue:1210 +#: src/components/common/PathSelector.vue:188 src/views/file/ListView.vue:1243 #: src/views/file/PathInput.vue:43 msgid "Invalid path" msgstr "无效路径" -#: src/components/common/PathSelector.vue:248 -#: src/views/file/ListView.vue:142 -#: src/views/file/ListView.vue:756 -#: src/views/file/ToolBar.vue:44 +#: src/components/common/PathSelector.vue:248 src/views/file/ListView.vue:144 +#: src/views/file/ListView.vue:795 src/views/file/ToolBar.vue:46 msgid "Invalid name" msgstr "无效的名称" #: src/components/common/PathSelector.vue:258 -#: src/components/file-editor/FileTree.vue:286 +#: src/components/file-editor/FileTree.vue:266 #: src/views/app/TemplateDeployModal.vue:237 #: src/views/backup/StorageView.vue:150 #: src/views/cert/CreateAccountModal.vue:55 -#: src/views/cert/CreateCertModal.vue:75 -#: src/views/cert/CreateDnsModal.vue:44 +#: src/views/cert/CreateCertModal.vue:75 src/views/cert/CreateDnsModal.vue:44 #: src/views/cert/UploadCertModal.vue:26 #: src/views/container/ComposeView.vue:231 -#: src/views/container/ContainerCreate.vue:109 +#: src/views/container/ContainerCreate.vue:118 #: src/views/container/NetworkView.vue:184 #: src/views/container/VolumeView.vue:132 #: src/views/database/CreateDatabaseModal.vue:48 #: src/views/database/CreateUserModal.vue:56 #: src/views/database/ElasticsearchDataView.vue:263 -#: src/views/file/ListView.vue:151 -#: src/views/firewall/CreateForwardModal.vue:44 -#: src/views/setting/CreateModal.vue:22 -#: src/views/setting/TokenModal.vue:117 -#: src/views/ssh/CreateModal.vue:41 -#: src/views/task/CreateModal.vue:120 +#: src/views/file/ListView.vue:153 src/views/firewall/CreateForwardModal.vue:44 +#: src/views/setting/CreateModal.vue:22 src/views/setting/TokenModal.vue:117 +#: src/views/ssh/CreateModal.vue:41 src/views/task/CreateModal.vue:120 #: src/views/toolbox/WebHookView.vue:249 msgid "Created successfully" msgstr "创建成功" #: src/components/common/PathSelector.vue:319 -#: src/views/file/PropertyModal.vue:34 -#: src/views/file/ToolBar.vue:174 +#: src/views/file/PropertyModal.vue:34 src/views/file/ToolBar.vue:147 msgid "File" msgstr "文件" -#: src/components/common/PathSelector.vue:320 -#: src/views/file/ToolBar.vue:175 +#: src/components/common/PathSelector.vue:320 src/views/file/ToolBar.vue:148 msgid "Folder" msgstr "文件夹" #: src/components/common/PathSelector.vue:324 #: src/components/common/PathSelector.vue:387 #: src/views/app/TemplateDeployModal.vue:652 -#: src/views/container/ContainerCreate.vue:537 -#: src/views/project/CreateModal.vue:693 -#: src/views/setting/TokenModal.vue:270 -#: src/views/toolbox/WebHookView.vue:356 +#: src/views/container/ContainerCreate.vue:638 +#: src/views/project/CreateModal.vue:693 src/views/setting/TokenModal.vue:270 +#: src/views/ssh/SftpBrowser.vue:160 src/views/toolbox/WebHookView.vue:356 #: src/views/website/BulkCreateModal.vue:240 #: src/views/website/CreateModal.vue:342 msgid "Create" msgstr "创建" -#: src/components/common/PathSelector.vue:333 -#: src/views/file/PathInput.vue:155 +#: src/components/common/PathSelector.vue:333 src/views/file/PathInput.vue:155 msgid "Root Directory" msgstr "根目录" @@ -519,25 +465,18 @@ msgstr "根目录" #: src/views/apps/nginx/NginxIndex.vue:816 #: src/views/apps/pureftpd/IndexView.vue:266 #: src/views/apps/pureftpd/IndexView.vue:296 -#: src/views/apps/rsync/IndexView.vue:319 -#: src/views/apps/s3fs/IndexView.vue:185 +#: src/views/apps/rsync/IndexView.vue:319 src/views/apps/s3fs/IndexView.vue:185 #: src/views/apps/supervisor/IndexView.vue:435 -#: src/views/backup/ListView.vue:303 -#: src/views/backup/ListView.vue:344 -#: src/views/backup/StorageView.vue:376 -#: src/views/backup/StorageView.vue:529 -#: src/views/cert/AccountView.vue:258 -#: src/views/cert/CertView.vue:568 -#: src/views/cert/CertView.vue:596 -#: src/views/cert/CreateAccountModal.vue:136 -#: src/views/cert/CreateCertModal.vue:163 -#: src/views/cert/CreateDnsModal.vue:199 -#: src/views/cert/DnsView.vue:330 -#: src/views/cert/ObtainModal.vue:180 +#: src/views/backup/ListView.vue:303 src/views/backup/ListView.vue:344 +#: src/views/backup/StorageView.vue:376 src/views/backup/StorageView.vue:529 +#: src/views/cert/AccountView.vue:258 src/views/cert/CertView.vue:568 +#: src/views/cert/CertView.vue:596 src/views/cert/CreateAccountModal.vue:136 +#: src/views/cert/CreateCertModal.vue:163 src/views/cert/CreateDnsModal.vue:199 +#: src/views/cert/DnsView.vue:330 src/views/cert/ObtainModal.vue:180 #: src/views/cert/UploadCertModal.vue:64 #: src/views/container/ComposeView.vue:341 #: src/views/container/ComposeView.vue:367 -#: src/views/container/ContainerView.vue:636 +#: src/views/container/ContainerView.vue:663 #: src/views/container/ImageView.vue:401 #: src/views/container/NetworkView.vue:339 #: src/views/container/VolumeView.vue:233 @@ -549,28 +488,24 @@ msgstr "根目录" #: src/views/database/RedisDataView.vue:358 #: src/views/database/RedisDataView.vue:378 #: src/views/database/RedisKeyModal.vue:130 -#: src/views/database/UpdateServerModal.vue:123 -#: src/views/database/UpdateUserModal.vue:88 -#: src/views/file/ToolBar.vue:257 +#: src/views/database/UpdateServerModal.vue:124 +#: src/views/database/UpdateUserModal.vue:88 src/views/file/ToolBar.vue:230 #: src/views/firewall/CreateForwardModal.vue:94 #: src/views/firewall/CreateIpModal.vue:125 -#: src/views/firewall/CreateModal.vue:159 -#: src/views/setting/CreateModal.vue:71 -#: src/views/setting/PasswordModal.vue:53 -#: src/views/setting/TwoFaModal.vue:95 -#: src/views/ssh/CreateModal.vue:110 -#: src/views/ssh/UpdateModal.vue:116 +#: src/views/firewall/CreateModal.vue:159 src/views/setting/CreateModal.vue:71 +#: src/views/setting/PasswordModal.vue:53 src/views/setting/TwoFaModal.vue:95 +#: src/views/ssh/CreateModal.vue:110 src/views/ssh/UpdateModal.vue:116 #: src/views/task/CreateModal.vue:551 msgid "Submit" msgstr "提交" #: src/components/common/PtyTerminalModal.vue:125 -#: src/views/container/ContainerView.vue:472 +#: src/views/container/ContainerView.vue:499 msgid "Connection closed." msgstr "连接已关闭。" #: src/components/common/PtyTerminalModal.vue:134 -#: src/views/container/ContainerView.vue:479 +#: src/views/container/ContainerView.vue:506 msgid "Connection error." msgstr "连接错误。" @@ -582,7 +517,7 @@ msgstr "连接错误" #: src/components/common/PtyTerminalModal.vue:143 #: src/views/container/ImagePullModal.vue:93 -#: src/views/container/ImageView.vue:227 +#: src/views/container/ImageView.vue:227 src/views/ssh/SftpPanel.vue:140 msgid "Failed to connect" msgstr "连接失败" @@ -595,40 +530,30 @@ msgstr "连接失败" #: src/views/apps/supervisor/IndexView.vue:133 #: src/views/apps/supervisor/IndexView.vue:151 #: src/views/container/ComposeView.vue:171 -#: src/views/file/composables/usePaste.ts:65 -#: src/views/file/UploadModal.vue:791 -#: src/views/home/IndexView.vue:1029 -#: src/views/home/UpdateView.vue:109 -#: src/views/monitor/IndexView.vue:736 -#: src/views/toolbox/DiskView.vue:353 -#: src/views/toolbox/DiskView.vue:355 -#: src/views/toolbox/DiskView.vue:375 -#: src/views/toolbox/DiskView.vue:377 -#: src/views/toolbox/DiskView.vue:441 -#: src/views/toolbox/DiskView.vue:445 -#: src/views/toolbox/DiskView.vue:463 -#: src/views/toolbox/DiskView.vue:480 -#: src/views/toolbox/DiskView.vue:484 -#: src/views/toolbox/DiskView.vue:504 -#: src/views/toolbox/DiskView.vue:521 -#: src/views/toolbox/DiskView.vue:526 -#: src/views/toolbox/DiskView.vue:547 -#: src/views/toolbox/DiskView.vue:564 -#: src/views/toolbox/DiskView.vue:569 -#: src/views/toolbox/DiskView.vue:591 -#: src/views/toolbox/MigrationView.vue:347 -#: src/views/toolbox/ProcessView.vue:242 -#: src/views/toolbox/ProcessView.vue:247 +#: src/views/file/composables/usePaste.ts:72 src/views/file/UploadModal.vue:791 +#: src/views/home/IndexView.vue:1029 src/views/home/UpdateView.vue:109 +#: src/views/monitor/IndexView.vue:736 src/views/toolbox/DiskView.vue:353 +#: src/views/toolbox/DiskView.vue:355 src/views/toolbox/DiskView.vue:375 +#: src/views/toolbox/DiskView.vue:377 src/views/toolbox/DiskView.vue:441 +#: src/views/toolbox/DiskView.vue:445 src/views/toolbox/DiskView.vue:463 +#: src/views/toolbox/DiskView.vue:480 src/views/toolbox/DiskView.vue:484 +#: src/views/toolbox/DiskView.vue:504 src/views/toolbox/DiskView.vue:521 +#: src/views/toolbox/DiskView.vue:526 src/views/toolbox/DiskView.vue:547 +#: src/views/toolbox/DiskView.vue:564 src/views/toolbox/DiskView.vue:569 +#: src/views/toolbox/DiskView.vue:591 src/views/toolbox/MigrationView.vue:368 +#: src/views/toolbox/ProcessView.vue:242 src/views/toolbox/ProcessView.vue:247 msgid "Confirm" msgstr "确认" #: src/components/common/PtyTerminalModal.vue:203 -msgid "Command may still running. Closing the window will terminate the command. Are you sure?" +msgid "" +"Command may still running. Closing the window will terminate the command. " +"Are you sure?" msgstr "命令可能仍在运行。关闭窗口将终止命令。您确定吗?" #: src/components/common/PtyTerminalModal.vue:207 -#: src/components/file-editor/EditorToolbar.vue:102 -#: src/components/file-editor/FileTree.vue:605 +#: src/components/file-editor/EditorToolbar.vue:77 +#: src/components/file-editor/FileTree.vue:590 #: src/components/system/composables/useConfirm.ts:37 #: src/components/system/composables/useConfirm.ts:83 #: src/components/system/ConfirmDialog.vue:58 @@ -637,49 +562,36 @@ msgstr "命令可能仍在运行。关闭窗口将终止命令。您确定吗? #: src/layouts/header/components/UserAvatar.vue:31 #: src/views/app/TemplateDeployModal.vue:637 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:239 -#: src/views/container/ContainerCreate.vue:534 +#: src/views/container/ContainerCreate.vue:147 +#: src/views/container/ContainerCreate.vue:635 #: src/views/container/ImagePullModal.vue:185 #: src/views/container/ImagePullModal.vue:199 -#: src/views/container/ImageView.vue:347 -#: src/views/container/ImageView.vue:362 -#: src/views/file/composables/usePaste.ts:66 -#: src/views/file/composables/usePaste.ts:146 -#: src/views/file/ListView.vue:245 -#: src/views/file/ListView.vue:769 -#: src/views/file/ToolBar.vue:208 -#: src/views/file/UploadModal.vue:507 -#: src/views/file/UploadModal.vue:642 -#: src/views/file/UploadModal.vue:790 -#: src/views/home/IndexView.vue:1030 -#: src/views/home/UpdateView.vue:110 -#: src/views/project/EditModal.vue:579 -#: src/views/toolbox/DiskView.vue:356 -#: src/views/toolbox/DiskView.vue:378 -#: src/views/toolbox/DiskView.vue:399 -#: src/views/toolbox/DiskView.vue:423 -#: src/views/toolbox/DiskView.vue:446 -#: src/views/toolbox/DiskView.vue:464 -#: src/views/toolbox/DiskView.vue:485 -#: src/views/toolbox/DiskView.vue:505 -#: src/views/toolbox/DiskView.vue:527 -#: src/views/toolbox/DiskView.vue:548 -#: src/views/toolbox/DiskView.vue:570 -#: src/views/toolbox/DiskView.vue:592 -#: src/views/toolbox/MigrationView.vue:258 -#: src/views/toolbox/MigrationView.vue:348 -#: src/views/toolbox/ProcessView.vue:248 -#: src/views/website/EditModal.vue:2131 +#: src/views/container/ImageView.vue:347 src/views/container/ImageView.vue:362 +#: src/views/file/composables/usePaste.ts:73 +#: src/views/file/composables/usePaste.ts:153 src/views/file/ListView.vue:287 +#: src/views/file/ListView.vue:821 src/views/file/ToolBar.vue:181 +#: src/views/file/UploadModal.vue:507 src/views/file/UploadModal.vue:642 +#: src/views/file/UploadModal.vue:790 src/views/home/IndexView.vue:1030 +#: src/views/home/UpdateView.vue:110 src/views/project/EditModal.vue:579 +#: src/views/ssh/SftpPanel.vue:277 src/views/tamper/RuleModal.vue:124 +#: src/views/toolbox/DiskView.vue:356 src/views/toolbox/DiskView.vue:378 +#: src/views/toolbox/DiskView.vue:399 src/views/toolbox/DiskView.vue:423 +#: src/views/toolbox/DiskView.vue:446 src/views/toolbox/DiskView.vue:464 +#: src/views/toolbox/DiskView.vue:485 src/views/toolbox/DiskView.vue:505 +#: src/views/toolbox/DiskView.vue:527 src/views/toolbox/DiskView.vue:548 +#: src/views/toolbox/DiskView.vue:570 src/views/toolbox/DiskView.vue:592 +#: src/views/toolbox/MigrationView.vue:208 +#: src/views/toolbox/MigrationView.vue:279 +#: src/views/toolbox/MigrationView.vue:369 +#: src/views/toolbox/ProcessView.vue:248 src/views/website/EditModal.vue:2141 msgid "Cancel" msgstr "取消" -#: src/components/common/PtyTerminalModal.vue:259 -#: src/locales/menu.ts:19 -#: src/views/container/ContainerView.vue:123 -#: src/views/container/ContainerView.vue:642 -#: src/views/database/ServerList.vue:174 -#: src/views/file/ListView.vue:350 -#: src/views/file/ListView.vue:965 -#: src/views/file/ToolBar.vue:183 +#: src/components/common/PtyTerminalModal.vue:259 src/locales/menu.ts:19 +#: src/views/container/ContainerView.vue:142 +#: src/views/container/ContainerView.vue:669 +#: src/views/database/ServerList.vue:174 src/views/file/ListView.vue:392 +#: src/views/file/ListView.vue:986 src/views/file/ToolBar.vue:156 msgid "Terminal" msgstr "终端" @@ -704,12 +616,10 @@ msgid "Jump to Bottom" msgstr "跳转到底部" #: src/components/common/RealtimeLog.vue:306 -#: src/components/file-editor/EditorToolbar.vue:222 -#: src/components/file-editor/FileTree.vue:719 -#: src/components/system/SearchToolbar.vue:58 -#: src/views/app/AppView.vue:237 -#: src/views/app/EnvironmentView.vue:226 -#: src/views/app/TemplateView.vue:102 +#: src/components/file-editor/EditorToolbar.vue:190 +#: src/components/file-editor/FileTree.vue:702 +#: src/components/system/SearchToolbar.vue:58 src/views/app/AppView.vue:258 +#: src/views/app/EnvironmentView.vue:248 src/views/app/TemplateView.vue:102 #: src/views/database/ElasticsearchDataView.vue:314 #: src/views/database/RedisDataView.vue:289 msgid "Search" @@ -731,13 +641,10 @@ msgstr "增大字体大小" msgid "No logs available" msgstr "暂无日志数据" -#: src/components/common/RealtimeLogModal.vue:37 -#: src/locales/menu.ts:15 +#: src/components/common/RealtimeLogModal.vue:37 src/locales/menu.ts:15 #: src/views/apps/supervisor/IndexView.vue:98 -#: src/views/container/ContainerView.vue:135 -#: src/views/project/ListView.vue:168 -#: src/views/project/ListView.vue:334 -#: src/views/task/CronView.vue:146 +#: src/views/container/ContainerView.vue:154 src/views/project/ListView.vue:168 +#: src/views/project/ListView.vue:334 src/views/task/CronView.vue:146 #: src/views/task/TaskView.vue:86 msgid "Logs" msgstr "日志" @@ -758,33 +665,27 @@ msgstr "您确定要清除日志吗?" msgid "Clear Log" msgstr "清除日志" -#: src/components/common/ServiceStatus.vue:29 -#: src/views/home/IndexView.vue:891 -#: src/views/home/IndexView.vue:899 -#: src/views/home/IndexView.vue:906 -#: src/views/home/IndexView.vue:912 -#: src/views/home/IndexView.vue:923 +#: src/components/common/ServiceStatus.vue:29 src/views/home/IndexView.vue:891 +#: src/views/home/IndexView.vue:899 src/views/home/IndexView.vue:906 +#: src/views/home/IndexView.vue:912 src/views/home/IndexView.vue:923 #: src/views/home/IndexView.vue:935 msgid "Loading..." msgstr "加载中……" #: src/components/common/ServiceStatus.vue:30 -#: src/views/app/InstalledView.vue:19 +#: src/views/app/InstalledView.vue:30 #: src/views/apps/prometheus/PrometheusExportersView.vue:50 -#: src/views/project/ListView.vue:70 -#: src/views/task/TaskView.vue:45 -#: src/views/toolbox/ProcessView.vue:48 -#: src/views/toolbox/ProcessView.vue:77 +#: src/views/project/ListView.vue:70 src/views/task/TaskView.vue:45 +#: src/views/toolbox/ProcessView.vue:48 src/views/toolbox/ProcessView.vue:77 #: src/views/website/ListView.vue:135 msgid "Running" msgstr "运行中" #: src/components/common/ServiceStatus.vue:30 -#: src/views/app/InstalledView.vue:20 +#: src/views/app/InstalledView.vue:31 #: src/views/apps/prometheus/PrometheusExportersView.vue:51 -#: src/views/project/ListView.vue:72 -#: src/views/toolbox/ProcessView.vue:50 -#: src/views/toolbox/ProcessView.vue:83 +#: src/views/project/ListView.vue:72 src/views/tamper/IndexView.vue:233 +#: src/views/toolbox/ProcessView.vue:50 src/views/toolbox/ProcessView.vue:83 msgid "Stopped" msgstr "已停止" @@ -795,8 +696,7 @@ msgstr "正在启动……" #: src/components/common/ServiceStatus.vue:52 #: src/views/apps/prometheus/PrometheusExportersView.vue:160 #: src/views/apps/supervisor/IndexView.vue:236 -#: src/views/project/ListView.vue:222 -#: src/views/website/ListView.vue:335 +#: src/views/project/ListView.vue:222 src/views/website/ListView.vue:335 msgid "Started successfully" msgstr "启动成功" @@ -808,8 +708,7 @@ msgstr "停止中..." #: src/components/common/ServiceStatus.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:167 #: src/views/apps/supervisor/IndexView.vue:243 -#: src/views/project/ListView.vue:217 -#: src/views/website/ListView.vue:337 +#: src/views/project/ListView.vue:217 src/views/website/ListView.vue:337 msgid "Stopped successfully" msgstr "停止成功" @@ -870,8 +769,8 @@ msgstr "自启动已成功禁用" #: src/views/apps/rsync/IndexView.vue:194 #: src/views/apps/supervisor/IndexView.vue:308 #: src/views/apps/valkey/IndexView.vue:62 -#: src/views/container/ContainerView.vue:101 -#: src/views/environment/PHPView.vue:189 +#: src/views/container/ContainerView.vue:106 +#: src/views/environment/PHPView.vue:189 src/views/tamper/IndexView.vue:229 msgid "Running Status" msgstr "运行状态" @@ -887,10 +786,9 @@ msgstr "自启动关闭" #: src/views/apps/prometheus/PrometheusExportersView.vue:88 #: src/views/apps/supervisor/IndexView.vue:120 #: src/views/container/ComposeView.vue:160 -#: src/views/container/ContainerView.vue:158 -#: src/views/container/ContainerView.vue:566 -#: src/views/project/ListView.vue:130 -#: src/views/toolbox/MigrationView.vue:257 +#: src/views/container/ContainerView.vue:181 +#: src/views/container/ContainerView.vue:593 src/views/project/ListView.vue:130 +#: src/views/toolbox/MigrationView.vue:278 msgid "Start" msgstr "启动" @@ -902,18 +800,16 @@ msgstr "您确定要停止 %{ service } 吗?" #: src/views/apps/prometheus/PrometheusExportersView.vue:96 #: src/views/apps/supervisor/IndexView.vue:141 #: src/views/container/ComposeView.vue:189 -#: src/views/container/ContainerView.vue:163 -#: src/views/container/ContainerView.vue:569 -#: src/views/project/ListView.vue:130 +#: src/views/container/ContainerView.vue:186 +#: src/views/container/ContainerView.vue:596 src/views/project/ListView.vue:130 msgid "Stop" msgstr "停止" #: src/components/common/ServiceStatus.vue:181 #: src/views/apps/prometheus/PrometheusExportersView.vue:103 #: src/views/apps/supervisor/IndexView.vue:159 -#: src/views/container/ContainerView.vue:168 -#: src/views/container/ContainerView.vue:572 -#: src/views/home/IndexView.vue:555 +#: src/views/container/ContainerView.vue:191 +#: src/views/container/ContainerView.vue:599 src/views/home/IndexView.vue:555 #: src/views/project/ListView.vue:145 msgid "Restart" msgstr "重启" @@ -924,33 +820,29 @@ msgstr "重启" msgid "Reload" msgstr "重载" -#: src/components/file-editor/EditorPane.vue:126 -#: src/components/file-editor/EditorToolbar.vue:99 +#: src/components/file-editor/EditorPane.vue:158 +#: src/components/file-editor/EditorToolbar.vue:74 #: src/views/file/EditModal.vue:41 msgid "Unsaved Changes" msgstr "未保存的更改" -#: src/components/file-editor/EditorPane.vue:127 +#: src/components/file-editor/EditorPane.vue:159 msgid "This file has unsaved changes. Are you sure you want to close it?" msgstr "此文件有未保存的更改。您确定要关闭它吗?" -#: src/components/file-editor/EditorPane.vue:139 +#: src/components/file-editor/EditorPane.vue:171 #: src/views/file/EditModal.vue:55 msgid "Go Back" msgstr "返回" -#: src/components/file-editor/EditorPane.vue:150 +#: src/components/file-editor/EditorPane.vue:182 #: src/views/file/EditModal.vue:66 msgid "Discard" msgstr "放弃" -#: src/components/file-editor/EditorPane.vue:165 -msgid "Failed to save file" -msgstr "保存文件失败" - -#: src/components/file-editor/EditorPane.vue:170 -#: src/components/file-editor/EditorToolbar.vue:185 -#: src/views/apps/apache/IndexView.vue:92 +#: src/components/file-editor/EditorPane.vue:198 +#: src/components/file-editor/EditorToolbar.vue:153 +#: src/views/app/CustomModal.vue:104 src/views/apps/apache/IndexView.vue:92 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:91 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:116 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:138 @@ -963,10 +855,8 @@ msgstr "保存文件失败" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:97 #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:132 #: src/views/apps/elasticsearch/IndexView.vue:82 -#: src/views/apps/frp/IndexView.vue:76 -#: src/views/apps/frp/IndexView.vue:91 -#: src/views/apps/frp/IndexView.vue:109 -#: src/views/apps/frp/IndexView.vue:124 +#: src/views/apps/frp/IndexView.vue:76 src/views/apps/frp/IndexView.vue:91 +#: src/views/apps/frp/IndexView.vue:109 src/views/apps/frp/IndexView.vue:124 #: src/views/apps/gitea/IndexView.vue:55 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:184 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:218 @@ -1001,6 +891,7 @@ msgstr "保存文件失败" #: src/views/apps/opensearch/IndexView.vue:82 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:97 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:132 +#: src/views/apps/pgadmin/IndexView.vue:96 #: src/views/apps/phpmyadmin/IndexView.vue:83 #: src/views/apps/phpmyadmin/IndexView.vue:107 #: src/views/apps/podman/IndexView.vue:80 @@ -1036,48 +927,40 @@ msgstr "保存文件失败" #: src/views/apps/valkey/ValkeyConfigTuneView.vue:171 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:205 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:230 -#: src/views/environment/GoView.vue:90 -#: src/views/environment/NodejsView.vue:93 +#: src/views/container/ContainerCreate.vue:638 +#: src/views/environment/GoView.vue:90 src/views/environment/NodejsView.vue:93 #: src/views/environment/PhpConfigTuneView.vue:274 #: src/views/environment/PhpConfigTuneView.vue:305 #: src/views/environment/PhpConfigTuneView.vue:376 #: src/views/environment/PhpConfigTuneView.vue:421 #: src/views/environment/PhpConfigTuneView.vue:486 #: src/views/environment/PhpConfigTuneView.vue:561 -#: src/views/environment/PHPView.vue:236 -#: src/views/environment/PHPView.vue:254 -#: src/views/environment/PythonView.vue:97 -#: src/views/file/EditModal.vue:111 -#: src/views/firewall/SettingView.vue:136 -#: src/views/project/EditModal.vue:582 -#: src/views/setting/IndexView.vue:169 -#: src/views/task/CreateModal.vue:551 -#: src/views/task/CronView.vue:344 -#: src/views/toolbox/SshView.vue:220 -#: src/views/toolbox/SystemView.vue:195 -#: src/views/toolbox/SystemView.vue:224 -#: src/views/toolbox/SystemView.vue:247 -#: src/views/toolbox/SystemView.vue:290 -#: src/views/toolbox/SystemView.vue:372 -#: src/views/toolbox/WebHookView.vue:400 -#: src/views/website/EditModal.vue:2140 +#: src/views/environment/PHPView.vue:236 src/views/environment/PHPView.vue:254 +#: src/views/environment/PythonView.vue:97 src/views/file/EditModal.vue:89 +#: src/views/firewall/SettingView.vue:136 src/views/project/EditModal.vue:582 +#: src/views/setting/IndexView.vue:169 src/views/tamper/RuleModal.vue:126 +#: src/views/task/CreateModal.vue:551 src/views/task/CronView.vue:344 +#: src/views/toolbox/SshView.vue:220 src/views/toolbox/SystemView.vue:195 +#: src/views/toolbox/SystemView.vue:224 src/views/toolbox/SystemView.vue:247 +#: src/views/toolbox/SystemView.vue:290 src/views/toolbox/SystemView.vue:372 +#: src/views/toolbox/WebHookView.vue:400 src/views/website/EditModal.vue:2150 msgid "Save" msgstr "保存" -#: src/components/file-editor/EditorPane.vue:258 +#: src/components/file-editor/EditorPane.vue:286 #: src/layouts/tab/components/ContextMenu.vue:53 msgid "Close Others" msgstr "关闭其他" -#: src/components/file-editor/EditorPane.vue:262 +#: src/components/file-editor/EditorPane.vue:290 msgid "Close All" msgstr "关闭所有" -#: src/components/file-editor/EditorPane.vue:266 +#: src/components/file-editor/EditorPane.vue:294 msgid "Close Saved" msgstr "关闭已保存" -#: src/components/file-editor/EditorPane.vue:470 +#: src/components/file-editor/EditorPane.vue:518 msgid "Select a file to edit" msgstr "选择要编辑的文件" @@ -1115,336 +998,310 @@ msgid "No file to save" msgstr "没有文件可保存" #: src/components/file-editor/EditorToolbar.vue:32 -#: src/components/file-editor/EditorToolbar.vue:51 +#: src/components/file-editor/EditorToolbar.vue:47 msgid "No changes to save" msgstr "没有要保存的更改" -#: src/components/file-editor/EditorToolbar.vue:81 -#: src/views/file/EditModal.vue:100 +#: src/components/file-editor/EditorToolbar.vue:56 +#: src/views/file/EditModal.vue:78 msgid "All files saved successfully" msgstr "所有文件已成功保存" -#: src/components/file-editor/EditorToolbar.vue:84 +#: src/components/file-editor/EditorToolbar.vue:59 msgid "Saved %{ success } files, %{ fail } failed" msgstr "保存了 %{ success } 个文件,%{ fail } 个失败" -#: src/components/file-editor/EditorToolbar.vue:100 +#: src/components/file-editor/EditorToolbar.vue:75 msgid "This file has unsaved changes. Refreshing will discard them. Continue?" msgstr "此文件有未保存的更改。刷新将丢弃它们。是否继续?" -#: src/components/file-editor/EditorToolbar.vue:101 -#: src/components/file-editor/EditorToolbar.vue:201 -#: src/components/file-editor/EditorToolbar.vue:206 -#: src/components/file-editor/FileTree.vue:697 +#: src/components/file-editor/EditorToolbar.vue:76 +#: src/components/file-editor/EditorToolbar.vue:169 +#: src/components/file-editor/EditorToolbar.vue:174 +#: src/components/file-editor/FileTree.vue:680 #: src/components/system/RefreshButton.vue:31 -#: src/components/system/RefreshButton.vue:37 -#: src/views/file/PathInput.vue:133 -#: src/views/home/UpdateView.vue:166 -#: src/views/log/DatabaseLog.vue:132 -#: src/views/log/HttpLog.vue:161 -#: src/views/log/OperationLog.vue:184 -#: src/views/log/SSHLog.vue:115 -#: src/views/toolbox/MigrationView.vue:588 -#: src/views/toolbox/NetworkView.vue:188 -#: src/views/toolbox/PanelView.vue:100 -#: src/views/toolbox/PanelView.vue:233 -#: src/views/toolbox/ProcessView.vue:335 +#: src/components/system/RefreshButton.vue:37 src/views/file/PathInput.vue:133 +#: src/views/home/UpdateView.vue:166 src/views/log/DatabaseLog.vue:132 +#: src/views/log/HttpLog.vue:161 src/views/log/OperationLog.vue:184 +#: src/views/log/SSHLog.vue:115 src/views/ssh/SftpBrowser.vue:138 +#: src/views/tamper/IndexView.vue:376 src/views/toolbox/MigrationView.vue:610 +#: src/views/toolbox/NetworkView.vue:188 src/views/toolbox/PanelView.vue:100 +#: src/views/toolbox/PanelView.vue:233 src/views/toolbox/ProcessView.vue:335 #: src/views/website/StatsView.vue:176 msgid "Refresh" msgstr "刷新" -#: src/components/file-editor/EditorToolbar.vue:118 +#: src/components/file-editor/EditorToolbar.vue:89 msgid "Refreshed successfully" msgstr "刷新成功" -#: src/components/file-editor/EditorToolbar.vue:180 +#: src/components/file-editor/EditorToolbar.vue:148 msgid "Save (Ctrl+S)" msgstr "保存(Ctrl+S)" -#: src/components/file-editor/EditorToolbar.vue:191 +#: src/components/file-editor/EditorToolbar.vue:159 msgid "Save All (Ctrl+Shift+S)" msgstr "保存所有(Ctrl+Shift+S)" -#: src/components/file-editor/EditorToolbar.vue:196 +#: src/components/file-editor/EditorToolbar.vue:164 msgid "Save All" msgstr "保存所有" -#: src/components/file-editor/EditorToolbar.vue:217 +#: src/components/file-editor/EditorToolbar.vue:185 msgid "Search (Ctrl+F)" msgstr "搜索(Ctrl+F)" -#: src/components/file-editor/EditorToolbar.vue:227 +#: src/components/file-editor/EditorToolbar.vue:195 msgid "Replace (Ctrl+H)" msgstr "替换(Ctrl+H)" -#: src/components/file-editor/EditorToolbar.vue:232 +#: src/components/file-editor/EditorToolbar.vue:200 msgid "Replace" msgstr "替换" -#: src/components/file-editor/EditorToolbar.vue:237 +#: src/components/file-editor/EditorToolbar.vue:205 msgid "Go to Line (Ctrl+G)" msgstr "转到行(Ctrl+G)" -#: src/components/file-editor/EditorToolbar.vue:242 +#: src/components/file-editor/EditorToolbar.vue:210 msgid "Go to" msgstr "转到" -#: src/components/file-editor/EditorToolbar.vue:271 +#: src/components/file-editor/EditorToolbar.vue:239 msgid "Toggle Word Wrap" msgstr "切换自动换行" -#: src/components/file-editor/EditorToolbar.vue:282 +#: src/components/file-editor/EditorToolbar.vue:250 msgid "Toggle Minimap" msgstr "切换小地图" -#: src/components/file-editor/EditorToolbar.vue:292 -#: src/views/firewall/IndexView.vue:26 -#: src/views/ssh/IndexView.vue:483 -#: src/views/website/IndexView.vue:30 +#: src/components/file-editor/EditorToolbar.vue:260 +#: src/views/firewall/IndexView.vue:26 src/views/ssh/IndexView.vue:521 +#: src/views/tamper/IndexView.vue:217 src/views/website/IndexView.vue:30 msgid "Settings" msgstr "设置" -#: src/components/file-editor/FileEditorView.vue:146 +#: src/components/file-editor/FileEditorView.vue:149 msgid "Editor Settings" msgstr "编辑器设置" -#: src/components/file-editor/FileEditorView.vue:152 +#: src/components/file-editor/FileEditorView.vue:155 #: src/views/setting/IndexView.vue:147 msgid "Basic" msgstr "基本" -#: src/components/file-editor/FileEditorView.vue:154 +#: src/components/file-editor/FileEditorView.vue:157 msgid "Tab Size" msgstr "Tab 大小" -#: src/components/file-editor/FileEditorView.vue:162 +#: src/components/file-editor/FileEditorView.vue:165 msgid "Use Spaces" msgstr "使用空格" -#: src/components/file-editor/FileEditorView.vue:168 -#: src/views/ssh/IndexView.vue:489 +#: src/components/file-editor/FileEditorView.vue:171 +#: src/views/ssh/IndexView.vue:527 msgid "Font Size" msgstr "字体大小" -#: src/components/file-editor/FileEditorView.vue:178 +#: src/components/file-editor/FileEditorView.vue:181 msgid "Word Wrap" msgstr "自动换行" -#: src/components/file-editor/FileEditorView.vue:182 -#: src/components/file-editor/FileEditorView.vue:208 +#: src/components/file-editor/FileEditorView.vue:185 +#: src/components/file-editor/FileEditorView.vue:211 #: src/views/apps/mysql/MysqlConfigTuneView.vue:102 msgid "Off" msgstr "关闭" -#: src/components/file-editor/FileEditorView.vue:183 -#: src/components/file-editor/FileEditorView.vue:207 +#: src/components/file-editor/FileEditorView.vue:186 +#: src/components/file-editor/FileEditorView.vue:210 #: src/views/apps/mysql/MysqlConfigTuneView.vue:101 msgid "On" msgstr "开启" -#: src/components/file-editor/FileEditorView.vue:184 +#: src/components/file-editor/FileEditorView.vue:187 msgid "Word Wrap Column" msgstr "换行列" -#: src/components/file-editor/FileEditorView.vue:185 +#: src/components/file-editor/FileEditorView.vue:188 msgid "Bounded" msgstr "边界" -#: src/components/file-editor/FileEditorView.vue:193 +#: src/components/file-editor/FileEditorView.vue:196 msgid "Show Minimap" msgstr "显示小地图" -#: src/components/file-editor/FileEditorView.vue:201 +#: src/components/file-editor/FileEditorView.vue:204 msgid "Display" msgstr "显示" -#: src/components/file-editor/FileEditorView.vue:203 +#: src/components/file-editor/FileEditorView.vue:206 msgid "Line Numbers" msgstr "行号" -#: src/components/file-editor/FileEditorView.vue:209 +#: src/components/file-editor/FileEditorView.vue:212 msgid "Relative" msgstr "相对" -#: src/components/file-editor/FileEditorView.vue:210 +#: src/components/file-editor/FileEditorView.vue:213 msgid "Interval" msgstr "间隔" -#: src/components/file-editor/FileEditorView.vue:218 +#: src/components/file-editor/FileEditorView.vue:221 msgid "Render Whitespace" msgstr "渲染空格" -#: src/components/file-editor/FileEditorView.vue:222 -#: src/views/apps/docker/IndexView.vue:83 -#: src/views/cert/CertView.vue:88 -#: src/views/cert/CertView.vue:142 -#: src/views/cert/CertView.vue:153 -#: src/views/cert/CertView.vue:171 -#: src/views/container/ContainerCreate.vue:53 -#: src/views/database/ServerList.vue:78 -#: src/views/database/ServerList.vue:93 -#: src/views/database/UserList.vue:28 -#: src/views/database/UserList.vue:68 -#: src/views/firewall/ForwardView.vue:27 -#: src/views/firewall/IpRuleView.vue:27 -#: src/views/firewall/IpRuleView.vue:44 -#: src/views/firewall/RuleView.vue:44 -#: src/views/firewall/RuleView.vue:61 -#: src/views/toolbox/MigrationView.vue:479 -#: src/views/toolbox/MigrationView.vue:480 -#: src/views/toolbox/MigrationView.vue:559 -#: src/views/toolbox/MigrationView.vue:574 +#: src/components/file-editor/FileEditorView.vue:225 +#: src/views/apps/docker/IndexView.vue:83 src/views/cert/CertView.vue:88 +#: src/views/cert/CertView.vue:142 src/views/cert/CertView.vue:153 +#: src/views/cert/CertView.vue:171 src/views/container/ContainerCreate.vue:57 +#: src/views/database/ServerList.vue:78 src/views/database/ServerList.vue:93 +#: src/views/database/UserList.vue:28 src/views/database/UserList.vue:68 +#: src/views/firewall/ForwardView.vue:27 src/views/firewall/IpRuleView.vue:27 +#: src/views/firewall/IpRuleView.vue:44 src/views/firewall/RuleView.vue:44 +#: src/views/firewall/RuleView.vue:61 src/views/toolbox/MigrationView.vue:501 +#: src/views/toolbox/MigrationView.vue:502 +#: src/views/toolbox/MigrationView.vue:581 +#: src/views/toolbox/MigrationView.vue:596 msgid "None" msgstr "无" -#: src/components/file-editor/FileEditorView.vue:223 +#: src/components/file-editor/FileEditorView.vue:226 msgid "Boundary" msgstr "边界" -#: src/components/file-editor/FileEditorView.vue:224 +#: src/components/file-editor/FileEditorView.vue:227 msgid "Selection" msgstr "选择" -#: src/components/file-editor/FileEditorView.vue:225 +#: src/components/file-editor/FileEditorView.vue:228 msgid "Trailing" msgstr "尾部" -#: src/components/file-editor/FileEditorView.vue:226 -#: src/views/app/AppView.vue:222 -#: src/views/app/EnvironmentView.vue:211 -#: src/views/app/TemplateView.vue:87 -#: src/views/firewall/RuleView.vue:223 -#: src/views/project/IndexView.vue:21 -#: src/views/website/IndexView.vue:25 +#: src/components/file-editor/FileEditorView.vue:229 +#: src/views/app/AppView.vue:243 src/views/app/EnvironmentView.vue:233 +#: src/views/app/TemplateView.vue:87 src/views/firewall/RuleView.vue:223 +#: src/views/project/IndexView.vue:21 src/views/website/IndexView.vue:25 #: src/views/website/stats/ErrorsTab.vue:18 msgid "All" msgstr "全部" -#: src/components/file-editor/FileEditorView.vue:234 +#: src/components/file-editor/FileEditorView.vue:237 msgid "Bracket Colorization" msgstr "括号着色" -#: src/components/file-editor/FileEditorView.vue:242 +#: src/components/file-editor/FileEditorView.vue:245 msgid "Indent Guides" msgstr "缩进指示" -#: src/components/file-editor/FileEditorView.vue:248 +#: src/components/file-editor/FileEditorView.vue:251 msgid "Code Folding" msgstr "代码折叠" -#: src/components/file-editor/FileEditorView.vue:256 +#: src/components/file-editor/FileEditorView.vue:259 msgid "Cursor" msgstr "光标" -#: src/components/file-editor/FileEditorView.vue:258 +#: src/components/file-editor/FileEditorView.vue:261 msgid "Cursor Style" msgstr "光标样式" -#: src/components/file-editor/FileEditorView.vue:262 +#: src/components/file-editor/FileEditorView.vue:265 msgid "Line" msgstr "线" -#: src/components/file-editor/FileEditorView.vue:263 +#: src/components/file-editor/FileEditorView.vue:266 msgid "Block" msgstr "块" -#: src/components/file-editor/FileEditorView.vue:264 +#: src/components/file-editor/FileEditorView.vue:267 msgid "Underline" msgstr "下划线" -#: src/components/file-editor/FileEditorView.vue:265 +#: src/components/file-editor/FileEditorView.vue:268 msgid "Line Thin" msgstr "细线" -#: src/components/file-editor/FileEditorView.vue:266 +#: src/components/file-editor/FileEditorView.vue:269 msgid "Block Outline" msgstr "块轮廓" -#: src/components/file-editor/FileEditorView.vue:267 +#: src/components/file-editor/FileEditorView.vue:270 msgid "Underline Thin" msgstr "细下划线" -#: src/components/file-editor/FileEditorView.vue:282 +#: src/components/file-editor/FileEditorView.vue:285 msgid "Cursor Blinking" msgstr "光标闪烁" -#: src/components/file-editor/FileEditorView.vue:286 +#: src/components/file-editor/FileEditorView.vue:289 msgid "Blink" msgstr "闪烁" -#: src/components/file-editor/FileEditorView.vue:287 +#: src/components/file-editor/FileEditorView.vue:290 msgid "Smooth" msgstr "平滑" -#: src/components/file-editor/FileEditorView.vue:288 +#: src/components/file-editor/FileEditorView.vue:291 msgid "Phase" msgstr "阶段" -#: src/components/file-editor/FileEditorView.vue:289 +#: src/components/file-editor/FileEditorView.vue:292 msgid "Expand" msgstr "展开" -#: src/components/file-editor/FileEditorView.vue:290 +#: src/components/file-editor/FileEditorView.vue:293 msgid "Solid" msgstr "实体" -#: src/components/file-editor/FileEditorView.vue:298 +#: src/components/file-editor/FileEditorView.vue:301 msgid "Smooth Scrolling" msgstr "平滑滚动" -#: src/components/file-editor/FileEditorView.vue:306 +#: src/components/file-editor/FileEditorView.vue:309 msgid "Behavior" msgstr "行为" -#: src/components/file-editor/FileEditorView.vue:308 +#: src/components/file-editor/FileEditorView.vue:311 msgid "Mouse Wheel Zoom" msgstr "鼠标滚轮缩放" -#: src/components/file-editor/FileEditorView.vue:314 +#: src/components/file-editor/FileEditorView.vue:317 msgid "Format On Paste" msgstr "粘贴时格式化" -#: src/components/file-editor/FileEditorView.vue:320 +#: src/components/file-editor/FileEditorView.vue:323 msgid "Format On Type" msgstr "输入时格式化" -#: src/components/file-editor/FileTree.vue:155 -#: src/views/file/EditModal.vue:138 -msgid "Failed to load file" -msgstr "加载文件失败" - -#: src/components/file-editor/FileTree.vue:311 +#: src/components/file-editor/FileTree.vue:291 msgid "Failed to create" msgstr "创建失败" -#: src/components/file-editor/FileTree.vue:380 -#: src/views/file/ListView.vue:1377 -#: src/views/file/ListView.vue:1398 +#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1429 +#: src/views/file/ListView.vue:1450 msgid "Folder name" msgstr "文件夹名" -#: src/components/file-editor/FileTree.vue:380 -#: src/views/file/ListView.vue:1377 -#: src/views/file/ListView.vue:1398 +#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1429 +#: src/views/file/ListView.vue:1450 msgid "File name" msgstr "文件名" -#: src/components/file-editor/FileTree.vue:479 -#: src/views/container/ContainerView.vue:150 -#: src/views/container/ContainerView.vue:613 +#: src/components/file-editor/FileTree.vue:459 +#: src/views/container/ContainerView.vue:169 +#: src/views/container/ContainerView.vue:640 #: src/views/database/RedisDataView.vue:168 -#: src/views/file/composables/usePaste.ts:41 -#: src/views/file/composables/usePaste.ts:157 -#: src/views/file/ListView.vue:348 -#: src/views/file/ListView.vue:1546 -#: src/views/file/UploadModal.vue:749 +#: src/views/file/composables/usePaste.ts:48 +#: src/views/file/composables/usePaste.ts:164 src/views/file/ListView.vue:390 +#: src/views/file/ListView.vue:1610 src/views/file/UploadModal.vue:749 #: src/views/file/UploadModal.vue:783 msgid "Rename" msgstr "重命名" -#: src/components/file-editor/FileTree.vue:480 -#: src/components/file-editor/FileTree.vue:602 -#: src/components/file-editor/FileTree.vue:604 +#: src/components/file-editor/FileTree.vue:460 +#: src/components/file-editor/FileTree.vue:587 +#: src/components/file-editor/FileTree.vue:589 #: src/components/system/composables/useConfirm.ts:32 #: src/components/system/ConfirmDialog.vue:54 #: src/views/apps/fail2ban/IndexView.vue:96 @@ -1455,90 +1312,73 @@ msgstr "重命名" #: src/views/apps/prometheus/PrometheusExportersView.vue:134 #: src/views/apps/pureftpd/IndexView.vue:87 #: src/views/apps/rsync/IndexView.vue:101 -#: src/views/apps/supervisor/IndexView.vue:178 -#: src/views/backup/ListView.vue:97 -#: src/views/backup/StorageView.vue:126 -#: src/views/cert/AccountView.vue:113 -#: src/views/cert/CertView.vue:308 -#: src/views/cert/DnsView.vue:109 +#: src/views/apps/supervisor/IndexView.vue:178 src/views/backup/ListView.vue:97 +#: src/views/backup/StorageView.vue:126 src/views/cert/AccountView.vue:113 +#: src/views/cert/CertView.vue:308 src/views/cert/DnsView.vue:109 #: src/views/container/ComposeView.vue:209 #: src/views/container/ComposeView.vue:289 -#: src/views/container/ContainerView.vue:188 -#: src/views/container/ContainerView.vue:584 -#: src/views/container/ImageView.vue:103 -#: src/views/container/ImageView.vue:273 +#: src/views/container/ContainerView.vue:211 +#: src/views/container/ContainerView.vue:611 +#: src/views/container/ImageView.vue:103 src/views/container/ImageView.vue:273 #: src/views/container/NetworkView.vue:130 #: src/views/container/NetworkView.vue:219 -#: src/views/container/VolumeView.vue:83 -#: src/views/container/VolumeView.vue:167 +#: src/views/container/VolumeView.vue:83 src/views/container/VolumeView.vue:167 #: src/views/database/DatabaseList.vue:86 #: src/views/database/ElasticsearchDataView.vue:146 #: src/views/database/ElasticsearchDataView.vue:200 #: src/views/database/RedisDataView.vue:182 -#: src/views/database/ServerList.vue:247 -#: src/views/database/UserList.vue:165 -#: src/views/environment/PHPView.vue:107 -#: src/views/file/ListView.vue:311 -#: src/views/file/ListView.vue:355 -#: src/views/file/ListView.vue:1557 -#: src/views/file/ToolBar.vue:225 -#: src/views/firewall/ForwardView.vue:98 -#: src/views/firewall/ForwardView.vue:162 -#: src/views/firewall/IpRuleView.vue:140 -#: src/views/firewall/IpRuleView.vue:204 -#: src/views/firewall/RuleView.vue:248 -#: src/views/firewall/RuleView.vue:312 -#: src/views/project/ListView.vue:194 -#: src/views/project/ListView.vue:305 -#: src/views/setting/PasskeyModal.vue:68 -#: src/views/setting/SettingUser.vue:142 -#: src/views/setting/TokenModal.vue:87 -#: src/views/ssh/IndexView.vue:572 -#: src/views/task/CronView.vue:169 -#: src/views/task/IndexView.vue:41 -#: src/views/task/TaskView.vue:104 -#: src/views/toolbox/WebHookView.vue:172 -#: src/views/website/ListView.vue:305 -#: src/views/website/ListView.vue:423 +#: src/views/database/ServerList.vue:247 src/views/database/UserList.vue:165 +#: src/views/environment/PHPView.vue:107 src/views/file/ListView.vue:353 +#: src/views/file/ListView.vue:404 src/views/file/ListView.vue:1621 +#: src/views/file/ToolBar.vue:198 src/views/firewall/ForwardView.vue:98 +#: src/views/firewall/ForwardView.vue:162 src/views/firewall/IpRuleView.vue:140 +#: src/views/firewall/IpRuleView.vue:204 src/views/firewall/RuleView.vue:248 +#: src/views/firewall/RuleView.vue:333 src/views/project/ListView.vue:194 +#: src/views/project/ListView.vue:305 src/views/setting/PasskeyModal.vue:68 +#: src/views/setting/SettingUser.vue:142 src/views/setting/TokenModal.vue:87 +#: src/views/ssh/IndexView.vue:614 src/views/tamper/IndexView.vue:148 +#: src/views/task/CronView.vue:169 src/views/task/IndexView.vue:41 +#: src/views/task/TaskView.vue:104 src/views/toolbox/WebHookView.vue:172 +#: src/views/website/ListView.vue:305 src/views/website/ListView.vue:423 msgid "Delete" msgstr "删除" -#: src/components/file-editor/FileTree.vue:483 -#: src/views/file/ListView.vue:345 -#: src/views/file/ListView.vue:1541 -#: src/views/monitor/IndexView.vue:602 +#: src/components/file-editor/FileTree.vue:463 src/views/file/ListView.vue:387 +#: src/views/file/ListView.vue:1605 src/views/monitor/IndexView.vue:602 #: src/views/toolbox/SshView.vue:345 msgid "Download" msgstr "下载" -#: src/components/file-editor/FileTree.vue:567 +#: src/components/file-editor/FileTree.vue:549 +#, fuzzy +msgid "Target name already exists" +msgstr "文件已存在" + +#: src/components/file-editor/FileTree.vue:555 #: src/views/database/RedisDataView.vue:238 msgid "Renamed successfully" msgstr "重命名成功" -#: src/components/file-editor/FileTree.vue:592 +#: src/components/file-editor/FileTree.vue:573 msgid "Failed to rename" msgstr "重命名失败" -#: src/components/file-editor/FileTree.vue:603 +#: src/components/file-editor/FileTree.vue:588 #: src/views/apps/nginx/NginxIndex.vue:211 -#: src/views/apps/nginx/NginxIndex.vue:275 -#: src/views/file/ListView.vue:847 -#: src/views/file/ListView.vue:1551 +#: src/views/apps/nginx/NginxIndex.vue:275 src/views/file/ListView.vue:864 +#: src/views/file/ListView.vue:1615 msgid "Are you sure you want to delete %{ name }?" msgstr "您确定要删除 %{ name } 吗?" -#: src/components/file-editor/FileTree.vue:609 +#: src/components/file-editor/FileTree.vue:594 #: src/views/apps/fail2ban/IndexView.vue:190 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:185 #: src/views/apps/nginx/NginxIndex.vue:405 #: src/views/apps/nginx/NginxIndex.vue:489 #: src/views/apps/pureftpd/IndexView.vue:155 -#: src/views/apps/rsync/IndexView.vue:160 -#: src/views/apps/s3fs/IndexView.vue:87 +#: src/views/apps/rsync/IndexView.vue:160 src/views/apps/s3fs/IndexView.vue:87 #: src/views/apps/supervisor/IndexView.vue:257 -#: src/views/backup/ListView.vue:149 -#: src/views/backup/StorageView.vue:183 +#: src/views/backup/ListView.vue:149 src/views/backup/StorageView.vue:183 #: src/views/container/ImageView.vue:144 #: src/views/container/NetworkView.vue:176 #: src/views/container/VolumeView.vue:124 @@ -1546,63 +1386,50 @@ msgstr "您确定要删除 %{ name } 吗?" #: src/views/database/ElasticsearchDataView.vue:241 #: src/views/database/ElasticsearchDataView.vue:250 #: src/views/database/RedisDataView.vue:211 -#: src/views/database/ServerList.vue:268 -#: src/views/database/UserList.vue:185 -#: src/views/file/ListView.vue:824 -#: src/views/file/ListView.vue:831 -#: src/views/file/ToolBar.vue:115 +#: src/views/database/ServerList.vue:269 src/views/database/UserList.vue:185 +#: src/views/file/composables/useFileOps.ts:31 #: src/views/firewall/ForwardView.vue:119 -#: src/views/firewall/ForwardView.vue:137 -#: src/views/firewall/IpRuleView.vue:161 -#: src/views/firewall/IpRuleView.vue:179 -#: src/views/firewall/RuleView.vue:269 -#: src/views/firewall/RuleView.vue:287 -#: src/views/project/ListView.vue:268 -#: src/views/project/ListView.vue:278 -#: src/views/setting/PasskeyModal.vue:96 -#: src/views/setting/SettingUser.vue:173 -#: src/views/setting/TokenModal.vue:106 -#: src/views/task/CronView.vue:231 -#: src/views/task/CronView.vue:241 -#: src/views/task/TaskView.vue:126 -#: src/views/toolbox/WebHookView.vue:225 -#: src/views/website/ListView.vue:379 +#: src/views/firewall/ForwardView.vue:137 src/views/firewall/IpRuleView.vue:161 +#: src/views/firewall/IpRuleView.vue:179 src/views/firewall/RuleView.vue:290 +#: src/views/firewall/RuleView.vue:308 src/views/project/ListView.vue:268 +#: src/views/project/ListView.vue:278 src/views/setting/PasskeyModal.vue:96 +#: src/views/setting/SettingUser.vue:173 src/views/setting/TokenModal.vue:106 +#: src/views/tamper/IndexView.vue:109 src/views/task/CronView.vue:231 +#: src/views/task/CronView.vue:241 src/views/task/TaskView.vue:126 +#: src/views/toolbox/WebHookView.vue:225 src/views/website/ListView.vue:379 #: src/views/website/ListView.vue:389 msgid "Deleted successfully" msgstr "删除成功" -#: src/components/file-editor/FileTree.vue:628 +#: src/components/file-editor/FileTree.vue:611 msgid "Failed to delete" msgstr "删除失败" -#: src/components/file-editor/FileTree.vue:692 +#: src/components/file-editor/FileTree.vue:675 msgid "Go Up" msgstr "上一级" -#: src/components/file-editor/FileTree.vue:704 -#: src/views/file/ListView.vue:292 +#: src/components/file-editor/FileTree.vue:687 src/views/file/ListView.vue:334 msgid "New File" msgstr "新文件" -#: src/components/file-editor/FileTree.vue:705 -#: src/views/file/ListView.vue:293 +#: src/components/file-editor/FileTree.vue:688 src/views/file/ListView.vue:335 msgid "New Folder" msgstr "新文件夹" -#: src/components/file-editor/FileTree.vue:709 -#: src/views/file/ToolBar.vue:179 +#: src/components/file-editor/FileTree.vue:692 src/views/file/ToolBar.vue:152 msgid "New" msgstr "新建" -#: src/components/file-editor/FileTree.vue:742 +#: src/components/file-editor/FileTree.vue:725 msgid "Enter path" msgstr "输入路径" -#: src/components/file-editor/FileTree.vue:772 +#: src/components/file-editor/FileTree.vue:755 msgid "No results found" msgstr "未找到结果" -#: src/components/file-editor/FileTree.vue:797 +#: src/components/file-editor/FileTree.vue:780 #: src/components/system/EmptyState.vue:34 #: src/views/website/stats/GeoTab.vue:163 msgid "No data" @@ -1612,8 +1439,7 @@ msgstr "无数据" msgid "selected" msgstr "已选择" -#: src/components/system/BatchActions.vue:70 -#: src/views/file/ListView.vue:1591 +#: src/components/system/BatchActions.vue:70 src/views/file/ListView.vue:1655 msgid "Clear" msgstr "清除" @@ -1621,8 +1447,7 @@ msgstr "清除" msgid "Confirm Deletion" msgstr "确认删除" -#: src/components/system/CopyButton.vue:26 -#: src/views/website/ListView.vue:100 +#: src/components/system/CopyButton.vue:26 src/views/website/ListView.vue:100 msgid "Copied" msgstr "已复制" @@ -1633,12 +1458,9 @@ msgstr "已复制" #: src/views/apps/mongodb/IndexView.vue:101 #: src/views/apps/mysql/MysqlIndex.vue:134 #: src/views/apps/postgresql/IndexView.vue:172 -#: src/views/database/ServerList.vue:106 -#: src/views/database/UserList.vue:56 -#: src/views/file/ListView.vue:307 -#: src/views/file/ListView.vue:341 -#: src/views/file/ListView.vue:950 -#: src/views/file/ToolBar.vue:214 +#: src/views/database/ServerList.vue:106 src/views/database/UserList.vue:56 +#: src/views/file/ListView.vue:349 src/views/file/ListView.vue:383 +#: src/views/file/ListView.vue:971 src/views/file/ToolBar.vue:187 msgid "Copy" msgstr "复制" @@ -1669,7 +1491,9 @@ msgid "Panel encountered a fault: %{key}" msgstr "面板遇到故障:%{key}" #: src/components/system/HealthBanner.vue:37 -msgid "Try running \"acepanel fix\" on the server to detect and rebuild the broken database file." +msgid "" +"Try running \"acepanel fix\" on the server to detect and rebuild the broken " +"database file." msgstr "尝试在服务器上运行「acepanel fix」来检测并重建损坏的数据库文件。" #: src/components/system/TableLayout.vue:86 @@ -1716,8 +1540,7 @@ msgstr "切换主题" #: src/layouts/header/components/UserAvatar.vue:14 #: src/views/apps/pureftpd/IndexView.vue:71 #: src/views/apps/pureftpd/IndexView.vue:274 -#: src/views/setting/PasswordModal.vue:34 -#: src/views/setting/SettingUser.vue:128 +#: src/views/setting/PasswordModal.vue:34 src/views/setting/SettingUser.vue:128 msgid "Change Password" msgstr "更改密码" @@ -1738,16 +1561,12 @@ msgid "Logged out successfully!" msgstr "退出登录成功!" #: src/layouts/header/components/UserAvatar.vue:49 -#: src/views/cert/DnsView.vue:61 -#: src/views/firewall/IpRuleView.vue:78 -#: src/views/firewall/IpRuleView.vue:103 -#: src/views/firewall/RuleView.vue:183 -#: src/views/firewall/RuleView.vue:208 -#: src/views/toolbox/DiskView.vue:159 +#: src/views/cert/DnsView.vue:61 src/views/firewall/IpRuleView.vue:78 +#: src/views/firewall/IpRuleView.vue:103 src/views/firewall/RuleView.vue:183 +#: src/views/firewall/RuleView.vue:208 src/views/toolbox/DiskView.vue:159 #: src/views/website/stats/GeoTab.vue:102 #: src/views/website/stats/GeoTab.vue:104 -#: src/views/website/stats/GeoTab.vue:225 -#: src/views/website/stats/IPsTab.vue:98 +#: src/views/website/stats/GeoTab.vue:225 src/views/website/stats/IPsTab.vue:98 msgid "Unknown" msgstr "未知" @@ -1771,33 +1590,26 @@ msgstr "关闭右侧" msgid "Apps" msgstr "应用" -#: src/locales/menu.ts:8 -#: src/views/task/CreateModal.vue:145 +#: src/locales/menu.ts:8 src/views/task/CreateModal.vue:145 msgid "Backup" msgstr "备份" -#: src/locales/menu.ts:9 -#: src/views/cert/CertView.vue:523 -#: src/views/cert/CertView.vue:611 -#: src/views/cert/IndexView.vue:96 -#: src/views/cert/UploadCertModal.vue:46 -#: src/views/setting/SettingSafe.vue:275 -#: src/views/website/EditModal.vue:1702 +#: src/locales/menu.ts:9 src/views/cert/CertView.vue:523 +#: src/views/cert/CertView.vue:611 src/views/cert/IndexView.vue:96 +#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingSafe.vue:275 +#: src/views/website/EditModal.vue:1712 msgid "Certificate" msgstr "证书" -#: src/locales/menu.ts:10 -#: src/views/home/IndexView.vue:525 +#: src/locales/menu.ts:10 src/views/home/IndexView.vue:525 #: src/views/task/CreateModal.vue:472 msgid "Container" msgstr "容器" -#: src/locales/menu.ts:11 -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:189 +#: src/locales/menu.ts:11 src/views/apps/grafana/GrafanaConfigTuneView.vue:189 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:222 -#: src/views/backup/ListView.vue:327 -#: src/views/home/IndexView.vue:534 -#: src/views/toolbox/MigrationView.vue:546 +#: src/views/backup/ListView.vue:327 src/views/home/IndexView.vue:534 +#: src/views/toolbox/MigrationView.vue:568 #: src/views/website/CreateModal.vue:248 msgid "Database" msgstr "数据库" @@ -1818,8 +1630,7 @@ msgstr "首页" msgid "Monitoring" msgstr "监控" -#: src/locales/menu.ts:17 -#: src/views/home/IndexView.vue:539 +#: src/locales/menu.ts:17 src/views/home/IndexView.vue:539 msgid "Project" msgstr "项目" @@ -1835,13 +1646,10 @@ msgstr "任务" msgid "Toolbox" msgstr "工具箱" -#: src/locales/menu.ts:22 -#: src/views/app/AppView.vue:97 -#: src/views/app/EnvironmentView.vue:81 -#: src/views/app/InstalledView.vue:106 -#: src/views/app/InstalledView.vue:205 -#: src/views/app/TemplateDeployModal.vue:652 -#: src/views/home/IndexView.vue:563 +#: src/locales/menu.ts:22 src/views/app/AppView.vue:102 +#: src/views/app/EnvironmentView.vue:86 src/views/app/InstalledView.vue:117 +#: src/views/app/InstalledView.vue:228 +#: src/views/app/TemplateDeployModal.vue:652 src/views/home/IndexView.vue:563 #: src/views/setting/TokenModal.vue:308 msgid "Update" msgstr "更新" @@ -1870,52 +1678,40 @@ msgstr "Rsync 管理器" msgid "Frp Manager" msgstr "Frp 管理器" -#: src/router/routes/index.ts:18 -#: src/views/login/IndexView.vue:309 +#: src/router/routes/index.ts:18 src/views/login/IndexView.vue:309 msgid "Login" msgstr "登录" -#: src/views/app/AppView.vue:19 -#: src/views/app/AppView.vue:143 -#: src/views/app/AppView.vue:147 -#: src/views/app/EnvironmentView.vue:134 +#: src/views/app/AppView.vue:20 src/views/app/AppView.vue:148 +#: src/views/app/AppView.vue:152 src/views/app/EnvironmentView.vue:139 #: src/views/apps/prometheus/PrometheusExportersView.vue:79 #: src/views/environment/PHPView.vue:107 msgid "Install" msgstr "安装" -#: src/views/app/AppView.vue:37 -#: src/views/app/InstalledView.vue:37 +#: src/views/app/AppView.vue:42 src/views/app/InstalledView.vue:47 msgid "App Name" msgstr "应用名称" -#: src/views/app/AppView.vue:43 -#: src/views/app/EnvironmentView.vue:37 -#: src/views/app/InstalledView.vue:43 -#: src/views/app/InstalledView.vue:167 +#: src/views/app/AppView.vue:48 src/views/app/EnvironmentView.vue:42 +#: src/views/app/InstalledView.vue:53 src/views/app/InstalledView.vue:190 #: src/views/apps/prometheus/PrometheusExportersView.vue:32 -#: src/views/environment/PHPView.vue:64 -#: src/views/project/EditModal.vue:193 +#: src/views/environment/PHPView.vue:64 src/views/project/EditModal.vue:193 #: src/views/project/ListView.vue:44 msgid "Description" msgstr "描述" -#: src/views/app/AppView.vue:49 -#: src/views/app/EnvironmentView.vue:49 -#: src/views/app/InstalledView.vue:49 -#: src/views/app/InstalledView.vue:173 +#: src/views/app/AppView.vue:54 src/views/app/EnvironmentView.vue:54 +#: src/views/app/InstalledView.vue:59 src/views/app/InstalledView.vue:196 msgid "Installed Version" msgstr "已安装版本" -#: src/views/app/AppView.vue:55 -#: src/views/app/InstalledView.vue:64 +#: src/views/app/AppView.vue:60 src/views/app/InstalledView.vue:75 msgid "Show in Home" msgstr "在主页显示" -#: src/views/app/AppView.vue:68 -#: src/views/app/EnvironmentView.vue:55 -#: src/views/app/InstalledView.vue:77 -#: src/views/app/InstalledView.vue:179 +#: src/views/app/AppView.vue:73 src/views/app/EnvironmentView.vue:60 +#: src/views/app/InstalledView.vue:88 src/views/app/InstalledView.vue:202 #: src/views/apps/fail2ban/IndexView.vue:63 #: src/views/apps/fail2ban/IndexView.vue:112 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:99 @@ -1924,133 +1720,140 @@ msgstr "在主页显示" #: src/views/apps/nginx/NginxIndex.vue:751 #: src/views/apps/prometheus/PrometheusExportersView.vue:55 #: src/views/apps/pureftpd/IndexView.vue:53 -#: src/views/apps/rsync/IndexView.vue:72 -#: src/views/apps/s3fs/IndexView.vue:35 -#: src/views/apps/supervisor/IndexView.vue:84 -#: src/views/backup/ListView.vue:66 -#: src/views/backup/StorageView.vue:95 -#: src/views/cert/AccountView.vue:74 -#: src/views/cert/CertView.vue:189 -#: src/views/cert/DnsView.vue:69 +#: src/views/apps/rsync/IndexView.vue:72 src/views/apps/s3fs/IndexView.vue:35 +#: src/views/apps/supervisor/IndexView.vue:84 src/views/backup/ListView.vue:66 +#: src/views/backup/StorageView.vue:95 src/views/cert/AccountView.vue:74 +#: src/views/cert/CertView.vue:189 src/views/cert/DnsView.vue:69 #: src/views/container/ComposeView.vue:102 -#: src/views/container/ContainerView.vue:108 -#: src/views/container/ImageView.vue:86 -#: src/views/container/NetworkView.vue:112 -#: src/views/container/VolumeView.vue:66 -#: src/views/database/DatabaseList.vue:68 +#: src/views/container/ContainerView.vue:113 +#: src/views/container/ImageView.vue:86 src/views/container/NetworkView.vue:112 +#: src/views/container/VolumeView.vue:66 src/views/database/DatabaseList.vue:68 #: src/views/database/ElasticsearchDataView.vue:117 #: src/views/database/ElasticsearchDataView.vue:169 #: src/views/database/RedisDataView.vue:124 -#: src/views/database/ServerList.vue:161 -#: src/views/database/UserList.vue:134 -#: src/views/environment/PHPView.vue:71 -#: src/views/file/ListView.vue:1359 -#: src/views/firewall/ForwardView.vue:81 -#: src/views/firewall/IpRuleView.vue:123 -#: src/views/firewall/RuleView.vue:231 -#: src/views/firewall/ScanView.vue:256 -#: src/views/project/ListView.vue:117 -#: src/views/setting/PasskeyModal.vue:51 -#: src/views/setting/SettingUser.vue:88 -#: src/views/setting/TokenModal.vue:57 -#: src/views/task/CronView.vue:119 -#: src/views/task/TaskView.vue:67 -#: src/views/toolbox/DiskView.vue:298 -#: src/views/toolbox/DiskView.vue:608 -#: src/views/toolbox/WebHookView.vue:135 +#: src/views/database/ServerList.vue:161 src/views/database/UserList.vue:134 +#: src/views/environment/PHPView.vue:71 src/views/file/ListView.vue:1411 +#: src/views/firewall/ForwardView.vue:81 src/views/firewall/IpRuleView.vue:123 +#: src/views/firewall/RuleView.vue:231 src/views/firewall/ScanView.vue:256 +#: src/views/project/ListView.vue:117 src/views/setting/PasskeyModal.vue:51 +#: src/views/setting/SettingUser.vue:88 src/views/setting/TokenModal.vue:57 +#: src/views/tamper/IndexView.vue:137 src/views/task/CronView.vue:119 +#: src/views/task/TaskView.vue:67 src/views/toolbox/DiskView.vue:298 +#: src/views/toolbox/DiskView.vue:608 src/views/toolbox/WebHookView.vue:135 #: src/views/website/ListView.vue:246 msgid "Actions" msgstr "操作" -#: src/views/app/AppView.vue:88 -#: src/views/app/EnvironmentView.vue:73 -#: src/views/app/InstalledView.vue:97 -#: src/views/app/InstalledView.vue:197 +#: src/views/app/AppView.vue:93 src/views/app/EnvironmentView.vue:78 +#: src/views/app/InstalledView.vue:108 src/views/app/InstalledView.vue:220 +#: src/views/container/ContainerCreate.vue:142 msgid "Confirm Update" msgstr "确认更新" -#: src/views/app/AppView.vue:89 -#: src/views/app/InstalledView.vue:98 -msgid "Updating app %{ app } to %{ version } may reset related configurations to default state, are you sure to continue?" -msgstr "更新应用 %{ app } 到 %{ version } 可能会将相关配置重置为默认状态,您确定要继续吗?" +#: src/views/app/AppView.vue:94 src/views/app/InstalledView.vue:109 +msgid "" +"Updating app %{ app } to %{ version } may reset related configurations to " +"default state, are you sure to continue?" +msgstr "" +"更新应用 %{ app } 到 %{ version } 可能会将相关配置重置为默认状态,您确定要继" +"续吗?" -#: src/views/app/AppView.vue:110 -#: src/views/app/EnvironmentView.vue:94 -#: src/views/app/InstalledView.vue:118 -#: src/views/app/InstalledView.vue:217 +#: src/views/app/AppView.vue:115 src/views/app/EnvironmentView.vue:99 +#: src/views/app/InstalledView.vue:129 src/views/app/InstalledView.vue:240 msgid "Manage" msgstr "管理" -#: src/views/app/AppView.vue:119 -#: src/views/app/EnvironmentView.vue:103 -#: src/views/app/InstalledView.vue:127 -#: src/views/app/InstalledView.vue:226 +#: src/views/app/AppView.vue:124 src/views/app/EnvironmentView.vue:108 +#: src/views/app/InstalledView.vue:138 src/views/app/InstalledView.vue:249 #: src/views/apps/prometheus/PrometheusExportersView.vue:124 #: src/views/environment/PHPView.vue:85 msgid "Confirm Uninstall" msgstr "确认卸载" -#: src/views/app/AppView.vue:121 -#: src/views/app/InstalledView.vue:129 -msgid "Reinstalling/Switching to a different web server will reset the configuration of all websites, are you sure to continue?" +#: src/views/app/AppView.vue:126 src/views/app/InstalledView.vue:140 +msgid "" +"Reinstalling/Switching to a different web server will reset the " +"configuration of all websites, are you sure to continue?" msgstr "重新安装/切换到不同的 Web 服务器将重置所有网站的配置,您确定要继续吗?" -#: src/views/app/AppView.vue:124 -#: src/views/app/InstalledView.vue:132 +#: src/views/app/AppView.vue:129 src/views/app/InstalledView.vue:143 msgid "Are you sure to uninstall app %{ app }?" msgstr "您确定要卸载应用 %{ app } 吗?" -#: src/views/app/AppView.vue:125 -#: src/views/app/AppView.vue:131 -#: src/views/app/EnvironmentView.vue:107 -#: src/views/app/EnvironmentView.vue:113 -#: src/views/app/InstalledView.vue:133 -#: src/views/app/InstalledView.vue:139 -#: src/views/app/InstalledView.vue:230 -#: src/views/app/InstalledView.vue:236 +#: src/views/app/AppView.vue:130 src/views/app/AppView.vue:136 +#: src/views/app/EnvironmentView.vue:112 src/views/app/EnvironmentView.vue:118 +#: src/views/app/InstalledView.vue:144 src/views/app/InstalledView.vue:150 +#: src/views/app/InstalledView.vue:253 src/views/app/InstalledView.vue:259 #: src/views/apps/prometheus/PrometheusExportersView.vue:128 msgid "Uninstall" msgstr "卸载" -#: src/views/app/AppView.vue:183 -#: src/views/app/InstalledView.vue:275 +#: src/views/app/AppView.vue:168 src/views/app/CustomModal.vue:83 +#: src/views/app/EnvironmentView.vue:156 src/views/app/InstalledView.vue:161 +#: src/views/app/InstalledView.vue:271 +#, fuzzy +msgid "Compile Params" +msgstr "编排名称" + +#: src/views/app/AppView.vue:204 src/views/app/InstalledView.vue:311 msgid "Setup successfully" msgstr "设置成功" -#: src/views/app/AppView.vue:190 -#: src/views/app/AppView.vue:198 -#: src/views/app/EnvironmentView.vue:171 -#: src/views/app/EnvironmentView.vue:179 -#: src/views/app/EnvironmentView.vue:187 -#: src/views/app/InstalledView.vue:282 -#: src/views/app/InstalledView.vue:290 -#: src/views/app/InstalledView.vue:303 -#: src/views/app/InstalledView.vue:311 -#: src/views/app/VersionModal.vue:42 +#: src/views/app/AppView.vue:211 src/views/app/AppView.vue:219 +#: src/views/app/EnvironmentView.vue:193 src/views/app/EnvironmentView.vue:201 +#: src/views/app/EnvironmentView.vue:209 src/views/app/InstalledView.vue:318 +#: src/views/app/InstalledView.vue:326 src/views/app/InstalledView.vue:339 +#: src/views/app/InstalledView.vue:347 src/views/app/VersionModal.vue:42 msgid "Task submitted, please check the progress in background tasks" msgstr "任务已提交,请在后台任务中查看进度" -#: src/views/app/EnvironmentView.vue:43 +#: src/views/app/CustomModal.vue:56 +#, fuzzy +msgid "Custom Compile Params" +msgstr "自定义配置" + +#: src/views/app/CustomModal.vue:65 +msgid "" +"Settings are saved persistently and applied automatically on every install " +"and update (recompile), no need to re-enter after reinstalling." +msgstr "" + +#: src/views/app/CustomModal.vue:71 +#, fuzzy +msgid "Pre-script" +msgstr "描述" + +#: src/views/app/CustomModal.vue:75 +msgid "" +"Runs before configure, can be used to download and prepare third-party " +"module sources." +msgstr "" + +#: src/views/app/CustomModal.vue:87 +msgid "" +"One param per line, appended to the end of configure. Lines starting with # " +"are ignored." +msgstr "" + +#: src/views/app/EnvironmentView.vue:48 msgid "Latest Version" msgstr "最新版本" -#: src/views/app/EnvironmentView.vue:74 -#: src/views/app/InstalledView.vue:198 +#: src/views/app/EnvironmentView.vue:79 src/views/app/InstalledView.vue:221 msgid "Are you sure to update environment %{ environment }?" msgstr "您确定要更新环境 %{ environment } 吗?" -#: src/views/app/EnvironmentView.vue:104 -#: src/views/app/InstalledView.vue:227 +#: src/views/app/EnvironmentView.vue:109 src/views/app/InstalledView.vue:250 msgid "Are you sure to uninstall environment %{ environment }?" msgstr "您确定要卸载环境 %{ environment } 吗?" -#: src/views/app/EnvironmentView.vue:126 +#: src/views/app/EnvironmentView.vue:131 #: src/views/apps/prometheus/PrometheusExportersView.vue:71 #: src/views/environment/PHPView.vue:99 msgid "Confirm Install" msgstr "确认安装" -#: src/views/app/EnvironmentView.vue:127 +#: src/views/app/EnvironmentView.vue:132 msgid "Are you sure to install environment %{ environment }?" msgstr "您确定要安装环境 %{ environment } 吗?" @@ -2062,13 +1865,11 @@ msgstr "缓存更新成功" msgid "Installed" msgstr "已安装" -#: src/views/app/IndexView.vue:41 -#: src/views/app/InstalledView.vue:330 +#: src/views/app/IndexView.vue:41 src/views/app/InstalledView.vue:366 msgid "Native App" msgstr "原生应用" -#: src/views/app/IndexView.vue:42 -#: src/views/app/InstalledView.vue:354 +#: src/views/app/IndexView.vue:42 src/views/app/InstalledView.vue:390 msgid "Operating Environment" msgstr "运行环境" @@ -2080,36 +1881,27 @@ msgstr "容器模板" msgid "Update Cache" msgstr "更新缓存" -#: src/views/app/InstalledView.vue:21 +#: src/views/app/InstalledView.vue:32 msgid "Partial" msgstr "部分运行" -#: src/views/app/InstalledView.vue:22 -msgid "N/A" -msgstr "未知" - -#: src/views/app/InstalledView.vue:55 -#: src/views/apps/fail2ban/IndexView.vue:47 +#: src/views/app/InstalledView.vue:65 src/views/apps/fail2ban/IndexView.vue:47 #: src/views/apps/phpmyadmin/IndexView.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:38 #: src/views/apps/supervisor/IndexView.vue:63 #: src/views/container/ComposeView.vue:86 -#: src/views/container/ContainerView.vue:53 -#: src/views/database/ServerList.vue:140 -#: src/views/database/UserList.vue:113 -#: src/views/firewall/RuleView.vue:80 -#: src/views/log/HttpLog.vue:95 -#: src/views/log/SSHLog.vue:63 -#: src/views/project/ListView.vue:59 -#: src/views/task/TaskView.vue:34 -#: src/views/toolbox/disk/RaidView.vue:97 +#: src/views/container/ContainerInfoModal.vue:108 +#: src/views/container/ContainerView.vue:58 +#: src/views/database/ServerList.vue:140 src/views/database/UserList.vue:113 +#: src/views/firewall/RuleView.vue:80 src/views/log/HttpLog.vue:95 +#: src/views/log/SSHLog.vue:63 src/views/project/ListView.vue:59 +#: src/views/tamper/IndexView.vue:127 src/views/tamper/IndexView.vue:231 +#: src/views/task/TaskView.vue:34 src/views/toolbox/disk/RaidView.vue:97 #: src/views/toolbox/disk/SmartView.vue:217 -#: src/views/toolbox/MigrationView.vue:473 -#: src/views/toolbox/MigrationView.vue:696 -#: src/views/toolbox/MigrationView.vue:783 -#: src/views/toolbox/NetworkView.vue:96 -#: src/views/toolbox/ProcessView.vue:134 -#: src/views/toolbox/ProcessView.vue:399 +#: src/views/toolbox/MigrationView.vue:495 +#: src/views/toolbox/MigrationView.vue:727 +#: src/views/toolbox/MigrationView.vue:814 src/views/toolbox/NetworkView.vue:96 +#: src/views/toolbox/ProcessView.vue:134 src/views/toolbox/ProcessView.vue:399 #: src/views/website/stats/ErrorsTab.vue:95 msgid "Status" msgstr "状态" @@ -2134,12 +1926,9 @@ msgstr "请输入编排名称" msgid "Please select a compose" msgstr "请选择一个编排" -#: src/views/app/TemplateDeployModal.vue:258 -#: src/views/cert/AccountView.vue:145 -#: src/views/cert/CertView.vue:343 -#: src/views/cert/CertView.vue:364 -#: src/views/cert/DnsView.vue:137 -#: src/views/container/ComposeView.vue:249 +#: src/views/app/TemplateDeployModal.vue:258 src/views/cert/AccountView.vue:145 +#: src/views/cert/CertView.vue:343 src/views/cert/CertView.vue:364 +#: src/views/cert/DnsView.vue:137 src/views/container/ComposeView.vue:249 msgid "Update successful" msgstr "更新成功" @@ -2152,7 +1941,7 @@ msgstr "部署模板" msgid "Deploy Mode" msgstr "部署模式" -#: src/views/app/TemplateDeployModal.vue:340 +#: src/views/app/TemplateDeployModal.vue:340 src/views/tamper/IndexView.vue:245 msgid "Configuration" msgstr "配置" @@ -2213,9 +2002,9 @@ msgstr "自动放行在 compose 中定义的端口" #: src/views/apps/minio/IndexView.vue:38 #: src/views/container/ComposeView.vue:331 #: src/views/container/ComposeView.vue:357 -#: src/views/container/ContainerCreate.vue:452 -#: src/views/project/EditModal.vue:380 -#: src/views/toolbox/ProcessView.vue:445 +#: src/views/container/ContainerCreate.vue:553 +#: src/views/container/ContainerInfoModal.vue:178 +#: src/views/project/EditModal.vue:380 src/views/toolbox/ProcessView.vue:445 msgid "Environment Variables" msgstr "环境变量" @@ -2237,7 +2026,9 @@ msgid "Compose File" msgstr "编排文件" #: src/views/app/TemplateDeployModal.vue:567 -msgid "Left side shows the original compose, right side shows the new compose. You can edit the right side." +msgid "" +"Left side shows the original compose, right side shows the new compose. You " +"can edit the right side." msgstr "左侧显示旧编排,右侧显示新编排。您可以编辑右侧。" #: src/views/app/TemplateDeployModal.vue:586 @@ -2264,9 +2055,9 @@ msgstr "更新现有" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:94 #: src/views/apps/nginx/NginxIndex.vue:186 -#: src/views/file/ListView.vue:852 -#: src/views/file/PropertyModal.vue:55 -#: src/views/file/PropertyModal.vue:59 +#: src/views/container/ContainerInfoModal.vue:123 +#: src/views/file/ListView.vue:266 src/views/file/ListView.vue:869 +#: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 msgid "Yes" msgstr "是" @@ -2275,9 +2066,9 @@ msgstr "是" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:95 #: src/views/apps/nginx/NginxIndex.vue:186 -#: src/views/file/ListView.vue:853 -#: src/views/file/PropertyModal.vue:55 -#: src/views/file/PropertyModal.vue:59 +#: src/views/container/ContainerInfoModal.vue:123 +#: src/views/file/ListView.vue:267 src/views/file/ListView.vue:870 +#: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 msgid "No" msgstr "否" @@ -2291,15 +2082,15 @@ msgid "Compose Content" msgstr "编排内容" #: src/views/app/TemplateDeployModal.vue:631 -#: src/views/toolbox/MigrationView.vue:586 -#: src/views/toolbox/MigrationView.vue:676 +#: src/views/toolbox/MigrationView.vue:608 +#: src/views/toolbox/MigrationView.vue:707 msgid "Previous" msgstr "返回" #: src/views/app/TemplateDeployModal.vue:640 #: src/views/app/TemplateDeployModal.vue:643 -#: src/views/toolbox/MigrationView.vue:447 -#: src/views/toolbox/MigrationView.vue:597 +#: src/views/toolbox/MigrationView.vue:469 +#: src/views/toolbox/MigrationView.vue:627 msgid "Next" msgstr "下一步" @@ -2308,16 +2099,13 @@ msgstr "下一步" msgid "Starting Compose" msgstr "正在启动编排" -#: src/views/app/TemplateView.vue:142 -#: src/views/backup/StorageView.vue:78 -#: src/views/ssh/IndexView.vue:80 -#: src/views/ssh/IndexView.vue:86 -#: src/views/toolbox/MigrationView.vue:471 +#: src/views/app/TemplateView.vue:142 src/views/backup/StorageView.vue:78 +#: src/views/ssh/IndexView.vue:82 src/views/ssh/IndexView.vue:88 +#: src/views/toolbox/MigrationView.vue:493 msgid "Local" msgstr "本地" -#: src/views/app/TemplateView.vue:152 -#: src/views/cert/CertView.vue:227 +#: src/views/app/TemplateView.vue:152 src/views/cert/CertView.vue:227 msgid "Deploy" msgstr "部署" @@ -2351,8 +2139,7 @@ msgstr "发行日志" #: src/views/apps/prometheus/IndexView.vue:44 #: src/views/apps/redis/IndexView.vue:33 #: src/views/apps/rocketmq/IndexView.vue:33 -#: src/views/apps/valkey/IndexView.vue:33 -#: src/views/environment/PHPView.vue:115 +#: src/views/apps/valkey/IndexView.vue:33 src/views/environment/PHPView.vue:115 msgid "Property" msgstr "属性" @@ -2370,8 +2157,7 @@ msgstr "属性" #: src/views/apps/prometheus/IndexView.vue:51 #: src/views/apps/redis/IndexView.vue:40 #: src/views/apps/rocketmq/IndexView.vue:40 -#: src/views/apps/valkey/IndexView.vue:40 -#: src/views/environment/PHPView.vue:122 +#: src/views/apps/valkey/IndexView.vue:40 src/views/environment/PHPView.vue:122 msgid "Current Value" msgstr "当前值" @@ -2385,20 +2171,16 @@ msgstr "当前值" #: src/views/apps/supervisor/IndexView.vue:213 #: src/views/apps/supervisor/IndexView.vue:269 #: src/views/database/RedisDataView.vue:252 -#: src/views/environment/PHPView.vue:162 -#: src/views/environment/PHPView.vue:169 -#: src/views/firewall/ScanView.vue:336 -#: src/views/task/CronView.vue:23 -#: src/views/task/TaskView.vue:21 -#: src/views/website/EditModal.vue:261 -#: src/views/website/StatsView.vue:93 +#: src/views/environment/PHPView.vue:162 src/views/environment/PHPView.vue:169 +#: src/views/firewall/ScanView.vue:336 src/views/tamper/IndexView.vue:207 +#: src/views/task/CronView.vue:23 src/views/task/TaskView.vue:21 +#: src/views/website/EditModal.vue:271 src/views/website/StatsView.vue:93 msgid "Cleared successfully" msgstr "清除成功" #: src/views/apps/apache/IndexView.vue:74 #: src/views/apps/codeserver/IndexView.vue:40 -#: src/views/apps/frp/IndexView.vue:88 -#: src/views/apps/frp/IndexView.vue:121 +#: src/views/apps/frp/IndexView.vue:88 src/views/apps/frp/IndexView.vue:121 #: src/views/apps/gitea/IndexView.vue:38 #: src/views/apps/mysql/MysqlIndex.vue:150 #: src/views/apps/nginx/NginxIndex.vue:501 @@ -2408,8 +2190,11 @@ msgstr "修改配置" #: src/views/apps/apache/IndexView.vue:78 #: src/views/apps/nginx/NginxIndex.vue:505 -msgid "This modifies the %{name} main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 %{name} 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the %{name} main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 %{name} 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/apache/IndexView.vue:97 #: src/views/apps/clickhouse/IndexView.vue:146 @@ -2425,8 +2210,7 @@ msgstr "这将修改 %{name} 主配置文件。如果您不了解每个参数的 #: src/views/apps/prometheus/IndexView.vue:147 #: src/views/apps/redis/IndexView.vue:90 #: src/views/apps/rocketmq/IndexView.vue:93 -#: src/views/apps/valkey/IndexView.vue:90 -#: src/views/environment/PHPView.vue:259 +#: src/views/apps/valkey/IndexView.vue:90 src/views/environment/PHPView.vue:259 #: src/views/home/IndexView.vue:575 msgid "Load Status" msgstr "负载状态" @@ -2466,11 +2250,10 @@ msgstr "错误日志" #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:68 #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:88 -#: src/views/container/ContainerCreate.vue:213 -#: src/views/home/IndexView.vue:188 -#: src/views/home/IndexView.vue:955 -#: src/views/monitor/IndexView.vue:990 -#: src/views/toolbox/IndexView.vue:28 +#: src/views/container/ContainerCreate.vue:314 +#: src/views/container/ContainerInfoModal.vue:125 +#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:955 +#: src/views/monitor/IndexView.vue:990 src/views/toolbox/IndexView.vue:28 msgid "Network" msgstr "网络" @@ -2537,22 +2320,16 @@ msgstr "日志级别(logger.level)" #: src/views/apps/pureftpd/IndexView.vue:145 #: src/views/database/DatabaseList.vue:113 #: src/views/database/RedisDataView.vue:222 -#: src/views/database/ServerList.vue:274 +#: src/views/database/ServerList.vue:275 #: src/views/database/UpdateServerModal.vue:27 #: src/views/database/UpdateUserModal.vue:23 -#: src/views/database/UserList.vue:191 -#: src/views/file/PermissionModal.vue:57 -#: src/views/setting/SettingUser.vue:161 -#: src/views/setting/SettingUser.vue:167 -#: src/views/task/CreateModal.vue:121 -#: src/views/task/CronView.vue:189 -#: src/views/task/CronView.vue:259 -#: src/views/toolbox/WebHookView.vue:200 -#: src/views/toolbox/WebHookView.vue:278 -#: src/views/website/ListView.vue:360 -#: src/views/website/ListView.vue:366 -#: src/views/website/SettingView.vue:46 -#: src/views/website/SettingView.vue:57 +#: src/views/database/UserList.vue:191 src/views/file/PermissionModal.vue:57 +#: src/views/setting/SettingUser.vue:161 src/views/setting/SettingUser.vue:167 +#: src/views/task/CreateModal.vue:121 src/views/task/CronView.vue:189 +#: src/views/task/CronView.vue:259 src/views/toolbox/WebHookView.vue:200 +#: src/views/toolbox/WebHookView.vue:278 src/views/website/ListView.vue:360 +#: src/views/website/ListView.vue:366 src/views/website/SettingView.vue:46 +#: src/views/website/SettingView.vue:57 src/views/website/SettingView.vue:88 msgid "Modified successfully" msgstr "修改成功" @@ -2560,9 +2337,8 @@ msgstr "修改成功" #: src/views/apps/mongodb/IndexView.vue:77 #: src/views/apps/mysql/MysqlIndex.vue:110 #: src/views/apps/postgresql/IndexView.vue:144 -#: src/views/database/ServerList.vue:102 -#: src/views/database/UserList.vue:52 -#: src/views/file/composables/usePaste.ts:28 +#: src/views/database/ServerList.vue:102 src/views/database/UserList.vue:52 +#: src/views/file/composables/usePaste.ts:29 #: src/views/setting/TokenModal.vue:155 msgid "Copied successfully" msgstr "复制成功" @@ -2572,7 +2348,9 @@ msgid "Default User Password" msgstr "默认用户密码" #: src/views/apps/clickhouse/IndexView.vue:92 -msgid "The ClickHouse default user password is used to access the database. Keep it safe!" +msgid "" +"The ClickHouse default user password is used to access the database. Keep it " +"safe!" msgstr "ClickHouse 默认用户密码用于访问数据库。请妥善保管!" #: src/views/apps/clickhouse/IndexView.vue:121 @@ -2587,14 +2365,16 @@ msgstr "ClickHouse 默认用户密码用于访问数据库。请妥善保管!" #: src/views/apps/rocketmq/IndexView.vue:68 #: src/views/apps/rsync/IndexView.vue:225 #: src/views/apps/supervisor/IndexView.vue:339 -#: src/views/apps/valkey/IndexView.vue:65 -#: src/views/environment/PHPView.vue:223 +#: src/views/apps/valkey/IndexView.vue:65 src/views/environment/PHPView.vue:223 msgid "Main Configuration" msgstr "主配置" #: src/views/apps/clickhouse/IndexView.vue:125 -msgid "This modifies the ClickHouse configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 ClickHouse 配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the ClickHouse configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 ClickHouse 配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/clickhouse/IndexView.vue:143 #: src/views/apps/elasticsearch/IndexView.vue:87 @@ -2610,20 +2390,22 @@ msgstr "这将修改 ClickHouse 配置文件。如果您不理解每个参数的 #: src/views/apps/pureftpd/IndexView.vue:215 #: src/views/apps/redis/IndexView.vue:87 #: src/views/apps/rocketmq/IndexView.vue:90 -#: src/views/apps/valkey/IndexView.vue:87 -#: src/views/environment/PHPView.vue:220 +#: src/views/apps/valkey/IndexView.vue:87 src/views/environment/PHPView.vue:220 msgid "Parameter Tuning" msgstr "参数调优" #: src/views/apps/codeserver/IndexView.vue:44 -msgid "This modifies the Code Server configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 Code Server 配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the Code Server configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 Code Server 配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/docker/IndexView.vue:63 #: src/views/apps/docker/IndexView.vue:70 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:89 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:218 -#: src/views/website/EditModal.vue:1240 +#: src/views/website/EditModal.vue:1250 msgid "Default" msgstr "默认" @@ -2640,9 +2422,8 @@ msgid "China - Tencent (Internal only)" msgstr "中国 - 腾讯(仅内网)" #: src/views/apps/docker/IndexView.vue:194 -#: src/views/container/ContainerCreate.vue:193 -#: src/views/project/EditModal.vue:182 -#: src/views/website/EditModal.vue:907 +#: src/views/container/ContainerCreate.vue:294 +#: src/views/project/EditModal.vue:182 src/views/website/EditModal.vue:917 msgid "Basic Settings" msgstr "基本设置" @@ -2650,13 +2431,14 @@ msgstr "基本设置" msgid "Registry Mirrors" msgstr "注册表镜像" -#: src/views/apps/docker/IndexView.vue:203 -#: src/views/website/EditModal.vue:1729 +#: src/views/apps/docker/IndexView.vue:203 src/views/website/EditModal.vue:1739 msgid "Presets" msgstr "预设" #: src/views/apps/docker/IndexView.vue:226 -msgid "Configure registry mirrors to speed up image downloads. Domestic users can configure domestic mirrors." +msgid "" +"Configure registry mirrors to speed up image downloads. Domestic users can " +"configure domestic mirrors." msgstr "配置注册表镜像以加快镜像下载。国内用户可以配置国内镜像。" #: src/views/apps/docker/IndexView.vue:235 @@ -2667,8 +2449,7 @@ msgstr "输入镜像地址,例如 https://registry.example.com" #: src/views/apps/docker/IndexView.vue:392 #: src/views/apps/docker/IndexView.vue:420 #: src/views/apps/docker/IndexView.vue:445 -#: src/views/apps/nginx/NginxIndex.vue:743 -#: src/views/toolbox/SystemView.vue:360 +#: src/views/apps/nginx/NginxIndex.vue:743 src/views/toolbox/SystemView.vue:360 msgid "Add" msgstr "添加" @@ -2677,8 +2458,12 @@ msgid "Log Configuration" msgstr "日志配置" #: src/views/apps/docker/IndexView.vue:253 -msgid "Configure log driver and rotation settings. Setting max-size and max-file can prevent log files from growing indefinitely." -msgstr "配置日志驱动程序和轮转设置。设置 max-size 和 max-file 可以防止日志文件无限增长。" +msgid "" +"Configure log driver and rotation settings. Setting max-size and max-file " +"can prevent log files from growing indefinitely." +msgstr "" +"配置日志驱动程序和轮转设置。设置 max-size 和 max-file 可以防止日志文件无限增" +"长。" #: src/views/apps/docker/IndexView.vue:259 msgid "Log Driver" @@ -2749,7 +2534,9 @@ msgid "Firewall Configuration" msgstr "防火墙配置" #: src/views/apps/docker/IndexView.vue:347 -msgid "Configure Docker firewall backend. nftables is experimental and does not support Swarm mode." +msgid "" +"Configure Docker firewall backend. nftables is experimental and does not " +"support Swarm mode." msgstr "配置 Docker 防火墙后端。nftables 是实验性的,不支持 Swarm 模式。" #: src/views/apps/docker/IndexView.vue:353 @@ -2813,8 +2600,12 @@ msgid "Insecure Registries" msgstr "不安全的注册表" #: src/views/apps/docker/IndexView.vue:433 -msgid "Insecure registries allow Docker to communicate with registries using HTTP or self-signed certificates. Use with caution." -msgstr "不安全的注册表允许 Docker 使用 HTTP 或自签名证书与注册表进行通信。请谨慎使用。" +msgid "" +"Insecure registries allow Docker to communicate with registries using HTTP " +"or self-signed certificates. Use with caution." +msgstr "" +"不安全的注册表允许 Docker 使用 HTTP 或自签名证书与注册表进行通信。请谨慎使" +"用。" #: src/views/apps/docker/IndexView.vue:441 msgid "e.g., 192.168.1.100:5000" @@ -2869,7 +2660,9 @@ msgstr "路径和 JVM" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:106 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:106 -msgid "Data paths and JVM heap memory settings. Heap size is recommended to be 50% of system RAM, max 31g." +msgid "" +"Data paths and JVM heap memory settings. Heap size is recommended to be 50% " +"of system RAM, max 31g." msgstr "数据路径和 JVM 堆内存设置。建议堆大小为系统 RAM 的 50%,最大 31g。" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:112 @@ -2899,8 +2692,12 @@ msgid "Max Heap Size (-Xmx)" msgstr "最大堆大小(-Xmx)" #: src/views/apps/elasticsearch/IndexView.vue:69 -msgid "This modifies the ElasticSearch main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 ElasticSearch 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the ElasticSearch main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 ElasticSearch 主配置文件。如果您不理解每个参数的含义,请不要随意修" +"改!" #: src/views/apps/fail2ban/IndexView.vue:59 #: src/views/apps/fail2ban/IndexView.vue:356 @@ -2917,8 +2714,7 @@ msgstr "封禁时间" msgid "Find Time" msgstr "查找时间" -#: src/views/apps/fail2ban/IndexView.vue:80 -#: src/views/cert/CertView.vue:261 +#: src/views/apps/fail2ban/IndexView.vue:80 src/views/cert/CertView.vue:261 #: src/views/database/ElasticsearchDataView.vue:186 #: src/views/database/RedisDataView.vue:141 msgid "View" @@ -2939,8 +2735,7 @@ msgstr "解封" #: src/views/apps/fail2ban/IndexView.vue:179 #: src/views/apps/pureftpd/IndexView.vue:130 -#: src/views/apps/rsync/IndexView.vue:149 -#: src/views/apps/s3fs/IndexView.vue:77 +#: src/views/apps/rsync/IndexView.vue:149 src/views/apps/s3fs/IndexView.vue:77 #: src/views/apps/supervisor/IndexView.vue:226 #: src/views/database/CreateServerModal.vue:79 msgid "Added successfully" @@ -2973,35 +2768,40 @@ msgstr "规则列表" #: src/views/apps/fail2ban/IndexView.vue:275 #: src/views/apps/fail2ban/IndexView.vue:285 -#: src/views/apps/fail2ban/IndexView.vue:289 +#: src/views/apps/fail2ban/IndexView.vue:289 src/views/tamper/IndexView.vue:340 +#: src/views/tamper/RuleModal.vue:83 msgid "Add Rule" msgstr "添加规则" #: src/views/apps/fail2ban/IndexView.vue:295 -msgid "If an IP exceeds the maximum retries within the find time (seconds), it will be banned for the ban time (seconds)" -msgstr "如果一个 IP 在查找时间(秒)内超过最大重试次数,它将被禁止访问指定的禁止时间(秒)" +msgid "" +"If an IP exceeds the maximum retries within the find time (seconds), it will " +"be banned for the ban time (seconds)" +msgstr "" +"如果一个 IP 在查找时间(秒)内超过最大重试次数,它将被禁止访问指定的禁止时间" +"(秒)" #: src/views/apps/fail2ban/IndexView.vue:302 -msgid "Protected ports are automatically obtained. If you modify the port corresponding to a rule, please delete and re-add the rule, otherwise protection may not be effective" -msgstr "受保护的端口会自动获取。如果您修改了某个规则对应的端口,请删除并重新添加该规则,否则保护可能无效" +msgid "" +"Protected ports are automatically obtained. If you modify the port " +"corresponding to a rule, please delete and re-add the rule, otherwise " +"protection may not be effective" +msgstr "" +"受保护的端口会自动获取。如果您修改了某个规则对应的端口,请删除并重新添加该规" +"则,否则保护可能无效" #: src/views/apps/fail2ban/IndexView.vue:309 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:78 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:209 -#: src/views/backup/StorageView.vue:73 -#: src/views/backup/StorageView.vue:233 -#: src/views/backup/StorageView.vue:395 -#: src/views/cert/CertView.vue:105 -#: src/views/cert/DnsView.vue:43 +#: src/views/backup/StorageView.vue:73 src/views/backup/StorageView.vue:233 +#: src/views/backup/StorageView.vue:395 src/views/cert/CertView.vue:105 +#: src/views/cert/DnsView.vue:43 src/views/container/ContainerInfoModal.vue:149 #: src/views/database/CreateServerModal.vue:100 #: src/views/database/RedisDataView.vue:94 -#: src/views/database/RedisKeyModal.vue:99 -#: src/views/file/PropertyModal.vue:33 -#: src/views/log/OperationLog.vue:74 -#: src/views/project/ListView.vue:51 -#: src/views/toolbox/MigrationView.vue:694 -#: src/views/toolbox/MigrationView.vue:781 -#: src/views/toolbox/NetworkView.vue:61 +#: src/views/database/RedisKeyModal.vue:99 src/views/file/PropertyModal.vue:33 +#: src/views/log/OperationLog.vue:74 src/views/project/ListView.vue:51 +#: src/views/toolbox/MigrationView.vue:725 +#: src/views/toolbox/MigrationView.vue:812 src/views/toolbox/NetworkView.vue:61 msgid "Type" msgstr "类型" @@ -3011,25 +2811,21 @@ msgid "Service" msgstr "服务" #: src/views/apps/fail2ban/IndexView.vue:319 -#: src/views/apps/fail2ban/IndexView.vue:323 -#: src/views/task/CreateModal.vue:482 +#: src/views/apps/fail2ban/IndexView.vue:323 src/views/task/CreateModal.vue:482 #: src/views/task/CreateModal.vue:488 msgid "Select Website" msgstr "选择网站" -#: src/views/apps/fail2ban/IndexView.vue:326 +#: src/views/apps/fail2ban/IndexView.vue:326 src/views/tamper/IndexView.vue:250 msgid "Protection Mode" msgstr "保护模式" #: src/views/apps/fail2ban/IndexView.vue:331 #: src/views/apps/pureftpd/IndexView.vue:46 -#: src/views/backup/StorageView.vue:277 -#: src/views/backup/StorageView.vue:331 -#: src/views/backup/StorageView.vue:361 -#: src/views/backup/StorageView.vue:433 -#: src/views/backup/StorageView.vue:487 -#: src/views/backup/StorageView.vue:514 -#: src/views/log/HttpLog.vue:85 +#: src/views/backup/StorageView.vue:277 src/views/backup/StorageView.vue:331 +#: src/views/backup/StorageView.vue:361 src/views/backup/StorageView.vue:433 +#: src/views/backup/StorageView.vue:487 src/views/backup/StorageView.vue:514 +#: src/views/log/HttpLog.vue:85 src/views/tamper/IndexView.vue:195 msgid "Path" msgstr "路径" @@ -3059,55 +2855,42 @@ msgstr "总封禁次数" msgid "Ban List" msgstr "封禁列表" -#: src/views/apps/frp/IndexView.vue:68 -#: src/views/apps/frp/IndexView.vue:101 -#: src/views/project/CreateModal.vue:622 -#: src/views/project/EditModal.vue:237 +#: src/views/apps/frp/IndexView.vue:68 src/views/apps/frp/IndexView.vue:101 +#: src/views/project/CreateModal.vue:622 src/views/project/EditModal.vue:237 msgid "Run User" msgstr "运行用户" -#: src/views/apps/frp/IndexView.vue:80 -#: src/views/apps/frp/IndexView.vue:81 -#: src/views/apps/frp/IndexView.vue:113 -#: src/views/apps/frp/IndexView.vue:114 +#: src/views/apps/frp/IndexView.vue:80 src/views/apps/frp/IndexView.vue:81 +#: src/views/apps/frp/IndexView.vue:113 src/views/apps/frp/IndexView.vue:114 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:225 -#: src/views/apps/rsync/IndexView.vue:57 -#: src/views/apps/rsync/IndexView.vue:279 -#: src/views/apps/rsync/IndexView.vue:340 -#: src/views/database/IndexView.vue:37 -#: src/views/home/IndexView.vue:661 -#: src/views/home/IndexView.vue:762 -#: src/views/log/SSHLog.vue:73 -#: src/views/monitor/IndexView.vue:335 -#: src/views/monitor/IndexView.vue:347 -#: src/views/setting/IndexView.vue:149 -#: src/views/toolbox/ProcessView.vue:128 -#: src/views/toolbox/ProcessView.vue:396 -#: src/views/toolbox/WebHookView.vue:333 -#: src/views/toolbox/WebHookView.vue:374 +#: src/views/apps/rsync/IndexView.vue:57 src/views/apps/rsync/IndexView.vue:279 +#: src/views/apps/rsync/IndexView.vue:340 src/views/database/IndexView.vue:135 +#: src/views/home/IndexView.vue:661 src/views/home/IndexView.vue:762 +#: src/views/log/SSHLog.vue:73 src/views/monitor/IndexView.vue:335 +#: src/views/monitor/IndexView.vue:347 src/views/setting/IndexView.vue:149 +#: src/views/toolbox/ProcessView.vue:128 src/views/toolbox/ProcessView.vue:396 +#: src/views/toolbox/WebHookView.vue:333 src/views/toolbox/WebHookView.vue:374 msgid "User" msgstr "用户" -#: src/views/apps/frp/IndexView.vue:83 -#: src/views/apps/frp/IndexView.vue:84 -#: src/views/apps/frp/IndexView.vue:116 -#: src/views/apps/frp/IndexView.vue:117 +#: src/views/apps/frp/IndexView.vue:83 src/views/apps/frp/IndexView.vue:84 +#: src/views/apps/frp/IndexView.vue:116 src/views/apps/frp/IndexView.vue:117 #: src/views/file/PermissionModal.vue:128 -#: src/views/file/PermissionModal.vue:152 -#: src/views/file/PropertyModal.vue:48 +#: src/views/file/PermissionModal.vue:152 src/views/file/PropertyModal.vue:48 msgid "Group" msgstr "组" #: src/views/apps/gitea/IndexView.vue:42 -msgid "This modifies the Gitea configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgid "" +"This modifies the Gitea configuration file. If you do not understand the " +"meaning of each parameter, please do not modify it randomly!" msgstr "这将修改 Gitea 配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/grafana/GrafanaConfigTuneView.vue:149 #: src/views/apps/nginx/NginxIndex.vue:529 #: src/views/database/CreateDatabaseModal.vue:86 #: src/views/database/CreateUserModal.vue:104 -#: src/views/database/DatabaseList.vue:28 -#: src/views/database/IndexView.vue:38 +#: src/views/database/DatabaseList.vue:28 src/views/database/IndexView.vue:136 #: src/views/database/UserList.vue:73 msgid "Server" msgstr "服务器" @@ -3261,15 +3044,12 @@ msgstr "浏览器(直连)" #: src/views/apps/grafana/GrafanaDataSourcesView.vue:111 #: src/views/apps/nginx/NginxIndex.vue:202 -#: src/views/apps/nginx/NginxIndex.vue:266 -#: src/views/backup/StorageView.vue:111 +#: src/views/apps/nginx/NginxIndex.vue:266 src/views/backup/StorageView.vue:111 #: src/views/container/ComposeView.vue:123 -#: src/views/file/ListView.vue:332 -#: src/views/file/ListView.vue:1538 -#: src/views/project/ListView.vue:177 -#: src/views/ssh/IndexView.vue:560 -#: src/views/task/CronView.vue:155 -#: src/views/toolbox/WebHookView.vue:158 +#: src/views/container/ContainerView.vue:177 src/views/file/ListView.vue:374 +#: src/views/file/ListView.vue:1602 src/views/project/ListView.vue:177 +#: src/views/ssh/IndexView.vue:602 src/views/tamper/IndexView.vue:143 +#: src/views/task/CronView.vue:155 src/views/toolbox/WebHookView.vue:158 #: src/views/website/ListView.vue:259 msgid "Edit" msgstr "编辑" @@ -3299,28 +3079,20 @@ msgstr "访问" #: src/views/apps/pureftpd/IndexView.vue:239 #: src/views/apps/pureftpd/IndexView.vue:278 #: src/views/apps/rsync/IndexView.vue:287 -#: src/views/apps/rsync/IndexView.vue:348 -#: src/views/backup/StorageView.vue:35 -#: src/views/backup/StorageView.vue:309 -#: src/views/backup/StorageView.vue:353 -#: src/views/backup/StorageView.vue:465 -#: src/views/backup/StorageView.vue:506 +#: src/views/apps/rsync/IndexView.vue:348 src/views/backup/StorageView.vue:35 +#: src/views/backup/StorageView.vue:309 src/views/backup/StorageView.vue:353 +#: src/views/backup/StorageView.vue:465 src/views/backup/StorageView.vue:506 #: src/views/container/ImageView.vue:390 #: src/views/database/CreateDatabaseModal.vue:125 #: src/views/database/CreateServerModal.vue:179 #: src/views/database/CreateUserModal.vue:120 #: src/views/database/ServerList.vue:82 -#: src/views/database/UpdateServerModal.vue:104 -#: src/views/database/UpdateUserModal.vue:63 -#: src/views/database/UserList.vue:32 -#: src/views/login/IndexView.vue:261 -#: src/views/setting/CreateModal.vue:53 -#: src/views/setting/PasswordModal.vue:42 -#: src/views/ssh/CreateModal.vue:80 -#: src/views/ssh/CreateModal.vue:89 -#: src/views/ssh/UpdateModal.vue:86 -#: src/views/ssh/UpdateModal.vue:95 -#: src/views/website/EditModal.vue:1981 +#: src/views/database/UpdateServerModal.vue:105 +#: src/views/database/UpdateUserModal.vue:63 src/views/database/UserList.vue:32 +#: src/views/login/IndexView.vue:261 src/views/setting/CreateModal.vue:53 +#: src/views/setting/PasswordModal.vue:42 src/views/ssh/CreateModal.vue:80 +#: src/views/ssh/CreateModal.vue:89 src/views/ssh/UpdateModal.vue:86 +#: src/views/ssh/UpdateModal.vue:95 src/views/website/EditModal.vue:1991 msgid "Password" msgstr "密码" @@ -3337,20 +3109,30 @@ msgid "Import dashboards in Grafana via Dashboard ID:" msgstr "通过 Dashboard ID 在 Grafana 中导入仪表盘:" #: src/views/apps/grafana/IndexView.vue:83 -msgid "Go to Grafana → Dashboards → New → Import, enter the ID above and select the Prometheus data source." -msgstr "前往 Grafana → Dashboards → New → Import,输入上方 ID 并选择 Prometheus 数据源。" +msgid "" +"Go to Grafana → Dashboards → New → Import, enter the ID above and select the " +"Prometheus data source." +msgstr "" +"前往 Grafana → Dashboards → New → Import,输入上方 ID 并选择 Prometheus 数据" +"源。" #: src/views/apps/grafana/IndexView.vue:96 -msgid "This modifies the Grafana main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 Grafana 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the Grafana main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 Grafana 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/grafana/IndexView.vue:117 msgid "Data Sources" msgstr "数据源" #: src/views/apps/kafka/IndexView.vue:69 -msgid "This modifies the Kafka main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 Kafka 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the Kafka main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 Kafka 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/kafka/KafkaConfigTuneView.vue:60 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:83 @@ -3457,25 +3239,33 @@ msgid "e.g. 4" msgstr "例如 4" #: src/views/apps/minio/IndexView.vue:42 -msgid "This is modifying the MinIO environment variable file /etc/default/minio. If you do not understand the meaning of each parameter, please do not modify it arbitrarily!" -msgstr "这将修改 MinIO 环境变量文件 /etc/default/minio。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This is modifying the MinIO environment variable file /etc/default/minio. If " +"you do not understand the meaning of each parameter, please do not modify it " +"arbitrarily!" +msgstr "" +"这将修改 MinIO 环境变量文件 /etc/default/minio。如果您不了解每个参数的含义," +"请不要随意修改!" #: src/views/apps/mongodb/IndexView.vue:88 msgid "Admin Password" msgstr "管理员密码" #: src/views/apps/mongodb/IndexView.vue:92 -msgid "The MongoDB admin password is used to manage the database. Keep it safe!" +msgid "" +"The MongoDB admin password is used to manage the database. Keep it safe!" msgstr "MongoDB 管理员密码用于管理数据库。请妥善保管!" #: src/views/apps/mongodb/IndexView.vue:121 -msgid "This modifies the MongoDB configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 MongoDB 配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the MongoDB configuration file. If you do not understand the " +"meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 MongoDB 配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:59 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:117 -#: src/views/backup/IndexView.vue:59 -#: src/views/task/CreateModal.vue:541 +#: src/views/backup/IndexView.vue:59 src/views/task/CreateModal.vue:541 msgid "Storage" msgstr "存储" @@ -3516,8 +3306,7 @@ msgstr "系统日志路径(systemLog.path)" #: src/views/apps/redis/RedisConfigTuneView.vue:119 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:113 #: src/views/environment/PhpConfigTuneView.vue:248 -#: src/views/project/IndexView.vue:22 -#: src/views/project/ListView.vue:25 +#: src/views/project/IndexView.vue:22 src/views/project/ListView.vue:25 msgid "General" msgstr "通用" @@ -3728,12 +3517,17 @@ msgid "Root Password" msgstr "Root 密码" #: src/views/apps/mysql/MysqlIndex.vue:125 -msgid "The \"root\" user password is used to manage the database system. Keep it safe!" +msgid "" +"The \"root\" user password is used to manage the database system. Keep it " +"safe!" msgstr "\"root\" 用户密码用于管理数据库系统。请妥善保管!" #: src/views/apps/mysql/MysqlIndex.vue:154 -msgid "This modifies the %{ name } main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 %{ name } 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the %{ name } main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 %{ name } 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/mysql/MysqlIndex.vue:201 msgid "Slow Query Log" @@ -3809,7 +3603,9 @@ msgid "Server Tokens (server_tokens)" msgstr "服务器标识(server_tokens)" #: src/views/apps/nginx/NginxConfigTuneView.vue:281 -msgid "Gzip compression settings. Gzip is the most widely supported compression method." +msgid "" +"Gzip compression settings. Gzip is the most widely supported compression " +"method." msgstr "Gzip 压缩设置。Gzip 是支持最广泛的压缩方法。" #: src/views/apps/nginx/NginxConfigTuneView.vue:287 @@ -3847,7 +3643,9 @@ msgid "e.g. any" msgstr "例如 any" #: src/views/apps/nginx/NginxConfigTuneView.vue:331 -msgid "Brotli compression settings. Brotli provides better compression ratio than Gzip." +msgid "" +"Brotli compression settings. Brotli provides better compression ratio than " +"Gzip." msgstr "Brotli 压缩设置。Brotli 提供比 Gzip 更好的压缩率。" #: src/views/apps/nginx/NginxConfigTuneView.vue:337 @@ -3871,7 +3669,8 @@ msgid "Static (brotli_static)" msgstr "静态(brotli_static)" #: src/views/apps/nginx/NginxConfigTuneView.vue:382 -msgid "Zstd compression settings. Zstd provides fast compression with high ratio." +msgid "" +"Zstd compression settings. Zstd provides fast compression with high ratio." msgstr "Zstd 压缩设置。Zstd 提供快速压缩和高压缩率。" #: src/views/apps/nginx/NginxConfigTuneView.vue:386 @@ -3898,15 +3697,13 @@ msgstr "静态(zstd_static)" msgid "Listen" msgstr "监听" -#: src/views/apps/nginx/NginxIndex.vue:167 -#: src/views/firewall/ScanView.vue:301 +#: src/views/apps/nginx/NginxIndex.vue:167 src/views/firewall/ScanView.vue:301 #: src/views/firewall/ScanView.vue:317 msgid "Protocol" msgstr "协议" #: src/views/apps/nginx/NginxIndex.vue:175 -#: src/views/apps/nginx/NginxIndex.vue:635 -#: src/views/website/EditModal.vue:1104 +#: src/views/apps/nginx/NginxIndex.vue:635 src/views/website/EditModal.vue:1114 msgid "Proxy Pass" msgstr "代理目标" @@ -3957,18 +3754,15 @@ msgstr "Stream" #: src/views/apps/nginx/NginxIndex.vue:533 #: src/views/database/CreateServerModal.vue:92 -#: src/views/database/IndexView.vue:58 -#: src/views/website/EditModal.vue:1041 +#: src/views/database/IndexView.vue:184 src/views/website/EditModal.vue:1051 msgid "Add Server" msgstr "添加服务器" -#: src/views/apps/nginx/NginxIndex.vue:546 -#: src/views/website/EditModal.vue:960 +#: src/views/apps/nginx/NginxIndex.vue:546 src/views/website/EditModal.vue:970 msgid "Upstream" msgstr "上游" -#: src/views/apps/nginx/NginxIndex.vue:550 -#: src/views/website/EditModal.vue:1057 +#: src/views/apps/nginx/NginxIndex.vue:550 src/views/website/EditModal.vue:1067 msgid "Add Upstream" msgstr "添加上游" @@ -4025,8 +3819,7 @@ msgstr "SSL 私钥路径" msgid "e.g. /path/to/key.pem" msgstr "例如 /path/to/key.pem" -#: src/views/apps/nginx/NginxIndex.vue:713 -#: src/views/website/EditModal.vue:971 +#: src/views/apps/nginx/NginxIndex.vue:713 src/views/website/EditModal.vue:981 msgid "Load Balancing Algorithm" msgstr "负载均衡算法" @@ -4048,8 +3841,7 @@ msgstr "地址" #: src/views/apps/nginx/NginxIndex.vue:750 #: src/views/container/NetworkView.vue:329 -#: src/views/container/VolumeView.vue:223 -#: src/views/toolbox/DiskView.vue:606 +#: src/views/container/VolumeView.vue:223 src/views/toolbox/DiskView.vue:606 msgid "Options" msgstr "选项" @@ -4057,62 +3849,118 @@ msgstr "选项" msgid "No servers added yet" msgstr "尚未添加服务器" -#: src/views/apps/nginx/NginxIndex.vue:777 -#: src/views/website/EditModal.vue:1001 -#: src/views/website/EditModal.vue:1138 +#: src/views/apps/nginx/NginxIndex.vue:777 src/views/website/EditModal.vue:1011 +#: src/views/website/EditModal.vue:1148 msgid "DNS Resolver" msgstr "DNS 解析器" -#: src/views/apps/nginx/NginxIndex.vue:780 -#: src/views/website/EditModal.vue:1004 -#: src/views/website/EditModal.vue:1141 +#: src/views/apps/nginx/NginxIndex.vue:780 src/views/website/EditModal.vue:1014 +#: src/views/website/EditModal.vue:1151 msgid "e.g., 8.8.8.8" msgstr "例如 8.8.8.8" -#: src/views/apps/nginx/NginxIndex.vue:786 -#: src/views/website/EditModal.vue:1010 -#: src/views/website/EditModal.vue:1147 +#: src/views/apps/nginx/NginxIndex.vue:786 src/views/website/EditModal.vue:1020 +#: src/views/website/EditModal.vue:1157 msgid "Resolver Timeout" msgstr "解析超时" #: src/views/apps/opensearch/IndexView.vue:69 -msgid "This modifies the OpenSearch main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 OpenSearch 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the OpenSearch main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 OpenSearch 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:71 msgid "OpenSearch cluster and network settings." msgstr "OpenSearch 集群和网络设置。" +#: src/views/apps/pgadmin/IndexView.vue:48 +#, fuzzy +msgid "Password reset successfully" +msgstr "通行密钥注册成功" + +#: src/views/apps/pgadmin/IndexView.vue:65 #: src/views/apps/phpmyadmin/IndexView.vue:69 msgid "Access Information" msgstr "访问信息" +#: src/views/apps/pgadmin/IndexView.vue:68 #: src/views/apps/phpmyadmin/IndexView.vue:71 msgid "Access URL:" msgstr "访问 URL:" +#: src/views/apps/pgadmin/IndexView.vue:71 +#, fuzzy +msgid "Login Email" +msgstr "登录" + +#: src/views/apps/pgadmin/IndexView.vue:74 +#, fuzzy +msgid "Login Password" +msgstr "管理员密码" + +#: src/views/apps/pgadmin/IndexView.vue:80 +msgid "" +"If the password has been changed in pgAdmin, the actual password shall " +"prevail." +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:87 #: src/views/apps/phpmyadmin/IndexView.vue:74 msgid "Modify Port" msgstr "修改端口" +#: src/views/apps/pgadmin/IndexView.vue:99 +#, fuzzy +msgid "Modify pgAdmin access port" +msgstr "修改 phpMyAdmin 访问端口" + +#: src/views/apps/pgadmin/IndexView.vue:101 +#, fuzzy +msgid "Reset Password" +msgstr "Redis 密码" + +#: src/views/apps/pgadmin/IndexView.vue:108 +#, fuzzy +msgid "New password" +msgstr "输入密码" + +#: src/views/apps/pgadmin/IndexView.vue:116 src/views/toolbox/SshView.vue:314 +msgid "Reset" +msgstr "重置" + +#: src/views/apps/pgadmin/IndexView.vue:119 +msgid "Reset the login password of the pgAdmin administrator account" +msgstr "" + #: src/views/apps/phpmyadmin/IndexView.vue:86 msgid "Modify phpMyAdmin access port" msgstr "修改 phpMyAdmin 访问端口" #: src/views/apps/phpmyadmin/IndexView.vue:94 -msgid "This modifies the OpenResty configuration file for phpMyAdmin. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 phpMyAdmin 的 OpenResty 配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the OpenResty configuration file for phpMyAdmin. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 phpMyAdmin 的 OpenResty 配置文件。如果您不了解每个参数的含义,请不要" +"随意修改!" #: src/views/apps/podman/IndexView.vue:55 -msgid "Podman is a daemonless container management tool. Being in a stopped state is normal and does not affect usage!" -msgstr "Podman 是一个无守护进程的容器管理工具。处于停止状态是正常的,不影响使用!" +msgid "" +"Podman is a daemonless container management tool. Being in a stopped state " +"is normal and does not affect usage!" +msgstr "" +"Podman 是一个无守护进程的容器管理工具。处于停止状态是正常的,不影响使用!" #: src/views/apps/podman/IndexView.vue:63 msgid "Registry Configuration" msgstr "注册表配置" #: src/views/apps/podman/IndexView.vue:67 -msgid "This modifies the Podman registry configuration file (/etc/containers/registries.conf)" +msgid "" +"This modifies the Podman registry configuration file (/etc/containers/" +"registries.conf)" msgstr "这会修改 Podman 注册表配置文件 (/etc/containers/registries.conf)" #: src/views/apps/podman/IndexView.vue:85 @@ -4120,7 +3968,9 @@ msgid "Storage Configuration" msgstr "存储配置" #: src/views/apps/podman/IndexView.vue:89 -msgid "This modifies the Podman storage configuration file (/etc/containers/storage.conf)" +msgid "" +"This modifies the Podman storage configuration file (/etc/containers/storage." +"conf)" msgstr "这会修改 Podman 存储配置文件 (/etc/containers/storage.conf)" #: src/views/apps/postgresql/IndexView.vue:155 @@ -4128,27 +3978,36 @@ msgid "Super Password" msgstr "超级密码" #: src/views/apps/postgresql/IndexView.vue:159 -msgid "The \"postgres\" superuser password is used to manage the database system. Keep it safe!" +msgid "" +"The \"postgres\" superuser password is used to manage the database system. " +"Keep it safe!" msgstr "\"postgres\" 超级用户密码用于管理数据库系统。请妥善保管!" #: src/views/apps/postgresql/IndexView.vue:192 -msgid "This modifies the PostgreSQL main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 PostgreSQL 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the PostgreSQL main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 PostgreSQL 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/postgresql/IndexView.vue:213 msgid "User Configuration" msgstr "用户配置" #: src/views/apps/postgresql/IndexView.vue:217 -msgid "This modifies the PostgreSQL user configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 PostgreSQL 用户配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the PostgreSQL user configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 PostgreSQL 用户配置文件。如果您不了解每个参数的含义,请不要随意修" +"改!" #: src/views/apps/postgresql/IndexView.vue:260 msgid "Application Logs" msgstr "应用日志" #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:174 -#: src/views/toolbox/MigrationView.vue:406 +#: src/views/toolbox/MigrationView.vue:428 msgid "Connection" msgstr "连接" @@ -4180,16 +4039,11 @@ msgstr "例如 3" #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:226 #: src/views/apps/redis/RedisConfigTuneView.vue:182 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:176 -#: src/views/container/ContainerCreate.vue:426 -#: src/views/home/IndexView.vue:688 -#: src/views/home/IndexView.vue:761 -#: src/views/monitor/IndexView.vue:532 -#: src/views/monitor/IndexView.vue:539 -#: src/views/monitor/IndexView.vue:555 -#: src/views/monitor/IndexView.vue:867 -#: src/views/toolbox/BenchmarkView.vue:178 -#: src/views/toolbox/PanelView.vue:122 -#: src/views/toolbox/ProcessView.vue:152 +#: src/views/container/ContainerCreate.vue:527 src/views/home/IndexView.vue:688 +#: src/views/home/IndexView.vue:761 src/views/monitor/IndexView.vue:532 +#: src/views/monitor/IndexView.vue:539 src/views/monitor/IndexView.vue:555 +#: src/views/monitor/IndexView.vue:867 src/views/toolbox/BenchmarkView.vue:178 +#: src/views/toolbox/PanelView.vue:122 src/views/toolbox/ProcessView.vue:152 msgid "Memory" msgstr "内存" @@ -4319,20 +4173,33 @@ msgid "IO Method (io_method)" msgstr "IO 方法(io_method)" #: src/views/apps/prometheus/IndexView.vue:89 -msgid "By default, the firewall does not allow access to the Prometheus port (9090). If you need external access, please manually open the port in the firewall settings." -msgstr "默认情况下,防火墙不允许访问 Prometheus 端口(9090)。如果您需要外部访问,请在防火墙设置中手动开放该端口。" +msgid "" +"By default, the firewall does not allow access to the Prometheus port " +"(9090). If you need external access, please manually open the port in the " +"firewall settings." +msgstr "" +"默认情况下,防火墙不允许访问 Prometheus 端口(9090)。如果您需要外部访问,请" +"在防火墙设置中手动开放该端口。" #: src/views/apps/prometheus/IndexView.vue:100 -msgid "This modifies the Prometheus main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 Prometheus 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the Prometheus main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 Prometheus 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/prometheus/IndexView.vue:121 msgid "Alertmanager" msgstr "Alertmanager" #: src/views/apps/prometheus/IndexView.vue:126 -msgid "Configure Alertmanager notification channels (email, webhook, Slack, etc). To enable alert rules, uncomment the rule_files section in the main configuration and create rule files in the rules directory." -msgstr "配置 Alertmanager 通知渠道(邮件、webhook、Slack 等)。要启用告警规则,请在主配置中取消注释 rule_files 部分,并在 rules 目录中创建规则文件。" +msgid "" +"Configure Alertmanager notification channels (email, webhook, Slack, etc). " +"To enable alert rules, uncomment the rule_files section in the main " +"configuration and create rule files in the rules directory." +msgstr "" +"配置 Alertmanager 通知渠道(邮件、webhook、Slack 等)。要启用告警规则,请在主" +"配置中取消注释 rule_files 部分,并在 rules 目录中创建规则文件。" #: src/views/apps/prometheus/IndexView.vue:144 msgid "Exporters" @@ -4373,7 +4240,7 @@ msgid "Are you sure you want to install %{ name }?" msgstr "您确定要安装 %{ name } 吗?" #: src/views/apps/prometheus/PrometheusExportersView.vue:112 -#: src/views/website/EditModal.vue:2017 +#: src/views/website/EditModal.vue:2027 msgid "Config" msgstr "配置" @@ -4384,13 +4251,13 @@ msgstr "您确定要卸载 %{ name } 吗?" #: src/views/apps/prometheus/PrometheusExportersView.vue:146 #: src/views/apps/prometheus/PrometheusExportersView.vue:153 -#: src/views/environment/PHPView.vue:175 -#: src/views/environment/PHPView.vue:181 +#: src/views/environment/PHPView.vue:175 src/views/environment/PHPView.vue:181 msgid "Task submitted, please check progress in background tasks" msgstr "任务已提交,请在后台任务中查看进度" #: src/views/apps/prometheus/PrometheusExportersView.vue:204 -msgid "Manage Prometheus exporters. Exporters collect metrics from various services." +msgid "" +"Manage Prometheus exporters. Exporters collect metrics from various services." msgstr "管理 Prometheus exporters。Exporters 从各种服务中收集指标。" #: src/views/apps/prometheus/PrometheusExportersView.vue:211 @@ -4403,23 +4270,18 @@ msgstr "修改 exporter 配置将重启 exporter 服务。" #: src/views/apps/pureftpd/IndexView.vue:39 #: src/views/apps/pureftpd/IndexView.vue:231 -#: src/views/backup/StorageView.vue:298 -#: src/views/backup/StorageView.vue:347 -#: src/views/backup/StorageView.vue:454 -#: src/views/backup/StorageView.vue:500 +#: src/views/backup/StorageView.vue:298 src/views/backup/StorageView.vue:347 +#: src/views/backup/StorageView.vue:454 src/views/backup/StorageView.vue:500 #: src/views/container/ImageView.vue:382 #: src/views/database/CreateDatabaseModal.vue:117 #: src/views/database/CreateServerModal.vue:167 #: src/views/database/CreateUserModal.vue:112 #: src/views/database/ServerList.vue:73 -#: src/views/database/UpdateServerModal.vue:96 -#: src/views/database/UserList.vue:22 -#: src/views/login/IndexView.vue:252 -#: src/views/setting/CreateModal.vue:46 -#: src/views/setting/SettingUser.vue:24 -#: src/views/ssh/CreateModal.vue:86 -#: src/views/ssh/UpdateModal.vue:92 -#: src/views/website/EditModal.vue:1980 +#: src/views/database/UpdateServerModal.vue:97 +#: src/views/database/UserList.vue:22 src/views/login/IndexView.vue:252 +#: src/views/setting/CreateModal.vue:46 src/views/setting/SettingUser.vue:24 +#: src/views/ssh/CreateModal.vue:86 src/views/ssh/UpdateModal.vue:92 +#: src/views/website/EditModal.vue:1990 msgid "Username" msgstr "用户名" @@ -4440,7 +4302,7 @@ msgid "User Management" msgstr "用户管理" #: src/views/apps/pureftpd/IndexView.vue:191 -#: src/views/website/EditModal.vue:1982 +#: src/views/website/EditModal.vue:1992 msgid "Add User" msgstr "添加用户" @@ -4452,17 +4314,14 @@ msgstr "运行日志" #: src/views/apps/pureftpd/IndexView.vue:227 #: src/views/database/CreateDatabaseModal.vue:102 #: src/views/database/CreateUserModal.vue:90 -#: src/views/database/IndexView.vue:51 -#: src/views/setting/CreateModal.vue:38 +#: src/views/database/IndexView.vue:177 src/views/setting/CreateModal.vue:38 #: src/views/setting/IndexView.vue:155 msgid "Create User" msgstr "创建用户" #: src/views/apps/pureftpd/IndexView.vue:236 -#: src/views/backup/StorageView.vue:301 -#: src/views/backup/StorageView.vue:350 -#: src/views/backup/StorageView.vue:457 -#: src/views/backup/StorageView.vue:503 +#: src/views/backup/StorageView.vue:301 src/views/backup/StorageView.vue:350 +#: src/views/backup/StorageView.vue:457 src/views/backup/StorageView.vue:503 #: src/views/container/ImageView.vue:387 #: src/views/database/CreateDatabaseModal.vue:122 #: src/views/database/CreateUserModal.vue:117 @@ -4475,15 +4334,11 @@ msgid "It is recommended to use the generator to generate a random password" msgstr "建议使用生成器生成随机密码" #: src/views/apps/pureftpd/IndexView.vue:250 -#: src/views/apps/rsync/IndexView.vue:50 -#: src/views/apps/rsync/IndexView.vue:271 +#: src/views/apps/rsync/IndexView.vue:50 src/views/apps/rsync/IndexView.vue:271 #: src/views/apps/rsync/IndexView.vue:332 -#: src/views/container/ComposeView.vue:66 -#: src/views/file/PropertyModal.vue:34 -#: src/views/project/ListView.vue:97 -#: src/views/task/CreateModal.vue:464 -#: src/views/website/CreateModal.vue:305 -#: src/views/website/ListView.vue:148 +#: src/views/container/ComposeView.vue:66 src/views/file/PropertyModal.vue:34 +#: src/views/project/ListView.vue:97 src/views/task/CreateModal.vue:464 +#: src/views/website/CreateModal.vue:305 src/views/website/ListView.vue:148 msgid "Directory" msgstr "目录" @@ -4540,8 +4395,11 @@ msgid "e.g. 99" msgstr "例如 99" #: src/views/apps/redis/IndexView.vue:69 -msgid "This modifies the Redis main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 Redis 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the Redis main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 Redis 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/redis/RedisConfigTuneView.vue:122 msgid "Common Redis general settings." @@ -4626,8 +4484,12 @@ msgid "Append Fsync (appendfsync)" msgstr "追加同步(appendfsync)" #: src/views/apps/rocketmq/IndexView.vue:72 -msgid "This modifies the RocketMQ broker configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 RocketMQ broker 配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the RocketMQ broker configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 RocketMQ broker 配置文件。如果您不理解每个参数的含义,请不要随意修" +"改!" #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:86 msgid "RocketMQ broker basic settings." @@ -4677,33 +4539,26 @@ msgstr "JVM" msgid "JVM heap memory settings for NameServer and Broker." msgstr "NameServer 和 Broker 的 JVM 堆内存设置。" -#: src/views/apps/rsync/IndexView.vue:64 -#: src/views/apps/rsync/IndexView.vue:295 -#: src/views/apps/rsync/IndexView.vue:357 -#: src/views/backup/StorageView.vue:287 +#: src/views/apps/rsync/IndexView.vue:64 src/views/apps/rsync/IndexView.vue:295 +#: src/views/apps/rsync/IndexView.vue:357 src/views/backup/StorageView.vue:287 #: src/views/backup/StorageView.vue:443 #: src/views/database/CreateDatabaseModal.vue:142 #: src/views/database/CreateServerModal.vue:143 #: src/views/database/CreateUserModal.vue:134 #: src/views/database/ServerList.vue:113 -#: src/views/database/UpdateServerModal.vue:75 -#: src/views/database/UserList.vue:63 -#: src/views/ssh/CreateModal.vue:65 -#: src/views/ssh/UpdateModal.vue:71 -#: src/views/toolbox/SystemView.vue:229 +#: src/views/database/UpdateServerModal.vue:76 +#: src/views/database/UserList.vue:63 src/views/ssh/CreateModal.vue:65 +#: src/views/ssh/UpdateModal.vue:71 src/views/toolbox/SystemView.vue:229 msgid "Host" msgstr "主机" -#: src/views/apps/rsync/IndexView.vue:70 -#: src/views/apps/rsync/IndexView.vue:303 +#: src/views/apps/rsync/IndexView.vue:70 src/views/apps/rsync/IndexView.vue:303 #: src/views/apps/rsync/IndexView.vue:365 #: src/views/database/CreateServerModal.vue:190 #: src/views/database/CreateUserModal.vue:160 -#: src/views/database/DatabaseList.vue:49 -#: src/views/database/ServerList.vue:123 -#: src/views/database/UpdateServerModal.vue:113 -#: src/views/database/UpdateUserModal.vue:78 -#: src/views/database/UserList.vue:96 +#: src/views/database/DatabaseList.vue:49 src/views/database/ServerList.vue:123 +#: src/views/database/UpdateServerModal.vue:114 +#: src/views/database/UpdateUserModal.vue:78 src/views/database/UserList.vue:96 msgid "Comment" msgstr "注释" @@ -4716,8 +4571,7 @@ msgstr "配置" msgid "Are you sure you want to delete module %{ name }?" msgstr "确定要删除模块 %{ name } 吗?" -#: src/views/apps/rsync/IndexView.vue:197 -#: src/views/environment/PHPView.vue:207 +#: src/views/apps/rsync/IndexView.vue:197 src/views/environment/PHPView.vue:207 msgid "Module Management" msgstr "模块管理" @@ -4727,8 +4581,11 @@ msgid "Add Module" msgstr "添加模块" #: src/views/apps/rsync/IndexView.vue:229 -msgid "This modifies the Rsync main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 Rsync 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the Rsync main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 Rsync 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/rsync/IndexView.vue:268 #: src/views/apps/supervisor/IndexView.vue:397 @@ -4764,8 +4621,7 @@ msgstr "输入注释" msgid "Module Configuration" msgstr "模块配置" -#: src/views/apps/s3fs/IndexView.vue:27 -#: src/views/toolbox/DiskView.vue:696 +#: src/views/apps/s3fs/IndexView.vue:27 src/views/toolbox/DiskView.vue:696 msgid "Mount Path" msgstr "挂载路径" @@ -4773,14 +4629,12 @@ msgstr "挂载路径" msgid "Are you sure you want to delete mount %{ path }?" msgstr "您确定要删除挂载 %{ path } 吗?" -#: src/views/apps/s3fs/IndexView.vue:50 -#: src/views/apps/s3fs/IndexView.vue:55 +#: src/views/apps/s3fs/IndexView.vue:50 src/views/apps/s3fs/IndexView.vue:55 #: src/views/toolbox/DiskView.vue:312 msgid "Unmount" msgstr "卸载" -#: src/views/apps/s3fs/IndexView.vue:101 -#: src/views/apps/s3fs/IndexView.vue:125 +#: src/views/apps/s3fs/IndexView.vue:101 src/views/apps/s3fs/IndexView.vue:125 #: src/views/apps/s3fs/IndexView.vue:129 msgid "Add Mount" msgstr "添加挂载" @@ -4802,7 +4656,9 @@ msgid "Region Endpoint" msgstr "区域端点" #: src/views/apps/s3fs/IndexView.vue:163 -msgid "Enter complete URL of region endpoint (e.g., https://oss-cn-beijing.aliyuncs.com)" +msgid "" +"Enter complete URL of region endpoint (e.g., https://oss-cn-beijing.aliyuncs." +"com)" msgstr "输入完整的区域端点 URL(例如:https://oss-cn-beijing.aliyuncs.com)" #: src/views/apps/s3fs/IndexView.vue:169 @@ -4840,16 +4696,18 @@ msgid "Add Process" msgstr "添加进程" #: src/views/apps/supervisor/IndexView.vue:343 -msgid "This modifies the Supervisor main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 Supervisor 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the Supervisor main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 Supervisor 主配置文件。如果您不了解每个参数的含义,请不要随意修改!" #: src/views/apps/supervisor/IndexView.vue:364 msgid "Daemon Logs" msgstr "守护进程日志" #: src/views/apps/supervisor/IndexView.vue:400 -#: src/views/project/CreateModal.vue:641 -#: src/views/project/EditModal.vue:257 +#: src/views/project/CreateModal.vue:641 src/views/project/EditModal.vue:257 msgid "Start Command" msgstr "启动命令" @@ -4858,8 +4716,7 @@ msgid "Please enter absolute path for files in start command" msgstr "请在启动命令中输入文件的绝对路径" #: src/views/apps/supervisor/IndexView.vue:408 -#: src/views/project/EditModal.vue:219 -#: src/views/toolbox/ProcessView.vue:431 +#: src/views/project/EditModal.vue:219 src/views/toolbox/ProcessView.vue:431 msgid "Working Directory" msgstr "工作目录" @@ -4885,8 +4742,11 @@ msgid "Process Configuration" msgstr "进程配置" #: src/views/apps/valkey/IndexView.vue:69 -msgid "This modifies the Valkey main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 Valkey 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the Valkey main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 Valkey 主配置文件。如果您不理解每个参数的含义,请不要随意修改!" #: src/views/apps/valkey/ValkeyConfigTuneView.vue:116 msgid "Common Valkey general settings." @@ -4904,8 +4764,7 @@ msgstr "Valkey AOF 持久化设置。" msgid "Filename" msgstr "文件名" -#: src/views/backup/ListView.vue:57 -#: src/views/database/ServerList.vue:152 +#: src/views/backup/ListView.vue:57 src/views/database/ServerList.vue:152 #: src/views/database/UserList.vue:125 msgid "Update Date" msgstr "更新日期" @@ -4927,34 +4786,31 @@ msgid "Restored successfully" msgstr "恢复成功" #: src/views/backup/ListView.vue:225 -msgid "Only local backups are displayed here. Remote backups are stored in the corresponding backup storage." +msgid "" +"Only local backups are displayed here. Remote backups are stored in the " +"corresponding backup storage." msgstr "此处仅显示本地备份。远程备份存储在相应的备份存储中。" -#: src/views/backup/ListView.vue:232 -#: src/views/backup/ListView.vue:261 +#: src/views/backup/ListView.vue:232 src/views/backup/ListView.vue:261 msgid "Create Backup" msgstr "创建备份" -#: src/views/backup/ListView.vue:235 -#: src/views/backup/UploadModal.vue:38 +#: src/views/backup/ListView.vue:235 src/views/backup/UploadModal.vue:38 msgid "Upload Backup" msgstr "上传备份" -#: src/views/backup/ListView.vue:273 -#: src/views/backup/ListView.vue:321 +#: src/views/backup/ListView.vue:273 src/views/backup/ListView.vue:321 msgid "Select website" msgstr "选择网站" #: src/views/backup/ListView.vue:279 #: src/views/database/CreateDatabaseModal.vue:94 -#: src/views/database/DatabaseList.vue:21 -#: src/views/website/CreateModal.vue:269 +#: src/views/database/DatabaseList.vue:21 src/views/website/CreateModal.vue:269 #: src/views/website/CreateModal.vue:274 msgid "Database Name" msgstr "数据库名称" -#: src/views/backup/ListView.vue:285 -#: src/views/backup/ListView.vue:333 +#: src/views/backup/ListView.vue:285 src/views/backup/ListView.vue:333 msgid "Select database" msgstr "选择数据库" @@ -4970,22 +4826,17 @@ msgstr "选择备份存储" msgid "Restore Backup" msgstr "恢复备份" -#: src/views/backup/StorageView.vue:36 -#: src/views/backup/StorageView.vue:321 -#: src/views/backup/StorageView.vue:477 -#: src/views/cert/CertView.vue:535 -#: src/views/cert/CertView.vue:614 -#: src/views/cert/UploadCertModal.vue:54 -#: src/views/setting/SettingSafe.vue:282 -#: src/views/ssh/CreateModal.vue:81 -#: src/views/ssh/CreateModal.vue:92 -#: src/views/ssh/UpdateModal.vue:87 -#: src/views/ssh/UpdateModal.vue:98 -#: src/views/website/EditModal.vue:1712 +#: src/views/backup/StorageView.vue:36 src/views/backup/StorageView.vue:321 +#: src/views/backup/StorageView.vue:477 src/views/cert/CertView.vue:535 +#: src/views/cert/CertView.vue:614 src/views/cert/UploadCertModal.vue:54 +#: src/views/setting/SettingSafe.vue:282 src/views/ssh/CreateModal.vue:81 +#: src/views/ssh/CreateModal.vue:92 src/views/ssh/UpdateModal.vue:87 +#: src/views/ssh/UpdateModal.vue:98 src/views/website/EditModal.vue:1722 msgid "Private Key" msgstr "私钥" #: src/views/backup/StorageView.vue:87 +#: src/views/container/ContainerInfoModal.vue:113 msgid "Created At" msgstr "创建于" @@ -4994,50 +4845,41 @@ msgid "Are you sure you want to delete this storage?" msgstr "您确定要删除此存储吗?" #: src/views/backup/StorageView.vue:173 -#: src/views/setting/PasswordModal.vue:21 -#: src/views/setting/TokenModal.vue:178 -#: src/views/setting/TwoFaModal.vue:28 -#: src/views/ssh/UpdateModal.vue:32 +#: src/views/container/ContainerCreate.vue:118 +#: src/views/setting/PasswordModal.vue:21 src/views/setting/TokenModal.vue:178 +#: src/views/setting/TwoFaModal.vue:28 src/views/ssh/UpdateModal.vue:32 msgid "Updated successfully" msgstr "更新成功" -#: src/views/backup/StorageView.vue:195 -#: src/views/backup/StorageView.vue:222 +#: src/views/backup/StorageView.vue:195 src/views/backup/StorageView.vue:222 msgid "Add Storage" msgstr "添加存储" -#: src/views/backup/StorageView.vue:231 -#: src/views/backup/StorageView.vue:393 +#: src/views/backup/StorageView.vue:231 src/views/backup/StorageView.vue:393 msgid "Enter storage name" msgstr "输入存储名称" -#: src/views/backup/StorageView.vue:239 -#: src/views/backup/StorageView.vue:401 +#: src/views/backup/StorageView.vue:239 src/views/backup/StorageView.vue:401 msgid "Access Key" msgstr "Access Key" -#: src/views/backup/StorageView.vue:242 -#: src/views/backup/StorageView.vue:404 +#: src/views/backup/StorageView.vue:242 src/views/backup/StorageView.vue:404 msgid "Enter access key" msgstr "输入 Access Key" -#: src/views/backup/StorageView.vue:245 -#: src/views/backup/StorageView.vue:407 +#: src/views/backup/StorageView.vue:245 src/views/backup/StorageView.vue:407 msgid "Secret Key" msgstr "Secret Key" -#: src/views/backup/StorageView.vue:250 -#: src/views/backup/StorageView.vue:412 +#: src/views/backup/StorageView.vue:250 src/views/backup/StorageView.vue:412 msgid "Enter secret key" msgstr "输入 Secret Key" -#: src/views/backup/StorageView.vue:253 -#: src/views/backup/StorageView.vue:415 +#: src/views/backup/StorageView.vue:253 src/views/backup/StorageView.vue:415 msgid "Style" msgstr "风格" -#: src/views/backup/StorageView.vue:256 -#: src/views/website/stats/GeoTab.vue:91 +#: src/views/backup/StorageView.vue:256 src/views/website/stats/GeoTab.vue:91 #: src/views/website/stats/GeoTab.vue:248 msgid "Region" msgstr "区域" @@ -5046,74 +4888,56 @@ msgstr "区域" msgid "Enter region (e.g., us-east-1)" msgstr "输入区域(例如 us-east-1)" -#: src/views/backup/StorageView.vue:262 -#: src/views/backup/StorageView.vue:418 +#: src/views/backup/StorageView.vue:262 src/views/backup/StorageView.vue:418 msgid "Endpoint" msgstr "端点" -#: src/views/backup/StorageView.vue:265 -#: src/views/backup/StorageView.vue:421 +#: src/views/backup/StorageView.vue:265 src/views/backup/StorageView.vue:421 msgid "Enter endpoint URL" msgstr "输入端点 URL" -#: src/views/backup/StorageView.vue:268 -#: src/views/backup/StorageView.vue:424 +#: src/views/backup/StorageView.vue:268 src/views/backup/StorageView.vue:424 msgid "Scheme" msgstr "协议" -#: src/views/backup/StorageView.vue:271 -#: src/views/backup/StorageView.vue:427 +#: src/views/backup/StorageView.vue:271 src/views/backup/StorageView.vue:427 msgid "Bucket" msgstr "存储桶" -#: src/views/backup/StorageView.vue:274 -#: src/views/backup/StorageView.vue:430 +#: src/views/backup/StorageView.vue:274 src/views/backup/StorageView.vue:430 msgid "Enter bucket name" msgstr "输入存储桶名称" -#: src/views/backup/StorageView.vue:280 -#: src/views/backup/StorageView.vue:364 -#: src/views/backup/StorageView.vue:436 -#: src/views/backup/StorageView.vue:517 +#: src/views/backup/StorageView.vue:280 src/views/backup/StorageView.vue:364 +#: src/views/backup/StorageView.vue:436 src/views/backup/StorageView.vue:517 msgid "Enter path (optional)" msgstr "输入路径(可选)" -#: src/views/backup/StorageView.vue:288 -#: src/views/backup/StorageView.vue:444 +#: src/views/backup/StorageView.vue:288 src/views/backup/StorageView.vue:444 msgid "Enter host" msgstr "输入主机" -#: src/views/backup/StorageView.vue:290 -#: src/views/backup/StorageView.vue:446 +#: src/views/backup/StorageView.vue:290 src/views/backup/StorageView.vue:446 #: src/views/database/CreateServerModal.vue:154 -#: src/views/database/UpdateServerModal.vue:86 -#: src/views/firewall/ForwardView.vue:33 -#: src/views/firewall/RuleView.vue:67 -#: src/views/firewall/ScanView.vue:300 -#: src/views/firewall/ScanView.vue:316 -#: src/views/firewall/ScanView.vue:380 -#: src/views/log/SSHLog.vue:83 -#: src/views/setting/SettingBase.vue:137 -#: src/views/ssh/CreateModal.vue:71 -#: src/views/ssh/UpdateModal.vue:77 -#: src/views/website/CreateModal.vue:224 +#: src/views/database/UpdateServerModal.vue:87 +#: src/views/firewall/ForwardView.vue:33 src/views/firewall/RuleView.vue:67 +#: src/views/firewall/ScanView.vue:300 src/views/firewall/ScanView.vue:316 +#: src/views/firewall/ScanView.vue:380 src/views/log/SSHLog.vue:83 +#: src/views/setting/SettingBase.vue:137 src/views/ssh/CreateModal.vue:71 +#: src/views/ssh/UpdateModal.vue:77 src/views/website/CreateModal.vue:224 msgid "Port" msgstr "端口" -#: src/views/backup/StorageView.vue:295 -#: src/views/backup/StorageView.vue:451 +#: src/views/backup/StorageView.vue:295 src/views/backup/StorageView.vue:451 msgid "Enter port" msgstr "输入端口" -#: src/views/backup/StorageView.vue:304 -#: src/views/backup/StorageView.vue:460 +#: src/views/backup/StorageView.vue:304 src/views/backup/StorageView.vue:460 msgid "Auth Type" msgstr "认证类型" -#: src/views/backup/StorageView.vue:316 -#: src/views/backup/StorageView.vue:358 -#: src/views/backup/StorageView.vue:472 -#: src/views/backup/StorageView.vue:511 +#: src/views/backup/StorageView.vue:316 src/views/backup/StorageView.vue:358 +#: src/views/backup/StorageView.vue:472 src/views/backup/StorageView.vue:511 #: src/views/container/ImageView.vue:396 #: src/views/database/CreateDatabaseModal.vue:132 #: src/views/database/CreateUserModal.vue:127 @@ -5121,23 +4945,19 @@ msgstr "认证类型" msgid "Enter password" msgstr "输入密码" -#: src/views/backup/StorageView.vue:328 -#: src/views/backup/StorageView.vue:484 +#: src/views/backup/StorageView.vue:328 src/views/backup/StorageView.vue:484 msgid "Enter private key" msgstr "输入私钥" -#: src/views/backup/StorageView.vue:334 -#: src/views/backup/StorageView.vue:490 +#: src/views/backup/StorageView.vue:334 src/views/backup/StorageView.vue:490 msgid "Enter remote path" msgstr "输入远程路径" -#: src/views/backup/StorageView.vue:341 -#: src/views/backup/StorageView.vue:497 +#: src/views/backup/StorageView.vue:341 src/views/backup/StorageView.vue:497 msgid "URL" msgstr "URL" -#: src/views/backup/StorageView.vue:344 -#: src/views/backup/StorageView.vue:498 +#: src/views/backup/StorageView.vue:344 src/views/backup/StorageView.vue:498 msgid "Enter WebDAV URL" msgstr "输入 WebDAV URL" @@ -5149,37 +4969,30 @@ msgstr "编辑存储" msgid "Upload %{ filename } successfully" msgstr "上传 %{ filename } 成功" -#: src/views/backup/UploadModal.vue:50 -#: src/views/file/UploadModal.vue:712 +#: src/views/backup/UploadModal.vue:50 src/views/file/UploadModal.vue:712 msgid "Click or drag files to this area to upload" msgstr "点击或将文件拖到此区域上传" #: src/views/backup/UploadModal.vue:52 -msgid "For large files, it is recommended to use SFTP or other methods to upload" +msgid "" +"For large files, it is recommended to use SFTP or other methods to upload" msgstr "对于大文件,建议使用 SFTP 或其他方法上传" -#: src/views/cert/AccountView.vue:39 -#: src/views/cert/AccountView.vue:226 +#: src/views/cert/AccountView.vue:39 src/views/cert/AccountView.vue:226 #: src/views/cert/CreateAccountModal.vue:104 -#: src/views/setting/CreateModal.vue:62 -#: src/views/setting/SettingUser.vue:40 +#: src/views/setting/CreateModal.vue:62 src/views/setting/SettingUser.vue:40 msgid "Email" msgstr "邮箱" -#: src/views/cert/AccountView.vue:67 -#: src/views/cert/AccountView.vue:218 -#: src/views/cert/CertView.vue:459 -#: src/views/cert/CreateAccountModal.vue:96 +#: src/views/cert/AccountView.vue:67 src/views/cert/AccountView.vue:218 +#: src/views/cert/CertView.vue:459 src/views/cert/CreateAccountModal.vue:96 #: src/views/cert/CreateCertModal.vue:110 msgid "Key Type" msgstr "密钥类型" -#: src/views/cert/AccountView.vue:95 -#: src/views/cert/CertView.vue:290 -#: src/views/cert/DnsView.vue:91 -#: src/views/database/ServerList.vue:214 -#: src/views/database/UserList.vue:150 -#: src/views/file/PermissionModal.vue:156 +#: src/views/cert/AccountView.vue:95 src/views/cert/CertView.vue:290 +#: src/views/cert/DnsView.vue:91 src/views/database/ServerList.vue:214 +#: src/views/database/UserList.vue:150 src/views/file/PermissionModal.vue:156 #: src/views/setting/TokenModal.vue:73 msgid "Modify" msgstr "修改" @@ -5188,14 +5001,12 @@ msgstr "修改" msgid "Are you sure you want to delete the account?" msgstr "您确定要删除该账户吗?" -#: src/views/cert/AccountView.vue:108 -#: src/views/cert/CertView.vue:304 +#: src/views/cert/AccountView.vue:108 src/views/cert/CertView.vue:304 #: src/views/cert/DnsView.vue:105 msgid "Deletion successful" msgstr "删除成功" -#: src/views/cert/AccountView.vue:133 -#: src/views/cert/CreateAccountModal.vue:42 +#: src/views/cert/AccountView.vue:133 src/views/cert/CreateAccountModal.vue:42 msgid "Registering account with CA, please wait patiently" msgstr "正在向 CA 注册账户,请耐心等待" @@ -5203,61 +5014,54 @@ msgstr "正在向 CA 注册账户,请耐心等待" msgid "Modify Account" msgstr "修改账户" -#: src/views/cert/AccountView.vue:198 -#: src/views/cert/CreateAccountModal.vue:76 -msgid "LiteSSL, Google and SSL.com require obtaining EAB (KID and HMAC) from their official websites first" +#: src/views/cert/AccountView.vue:198 src/views/cert/CreateAccountModal.vue:76 +msgid "" +"LiteSSL, Google and SSL.com require obtaining EAB (KID and HMAC) from their " +"official websites first" msgstr "LiteSSL、Google 和 SSL.com 需要先从其官网获取 EAB(KID 和 HMAC)" -#: src/views/cert/AccountView.vue:204 -#: src/views/cert/CreateAccountModal.vue:82 -msgid "Google is not accessible in mainland China, other CAs depend on network conditions, recommend using Let's Encrypt or LiteSSL" -msgstr "Google 在中国大陆无法访问,其他 CA 取决于网络条件,建议使用 Let's Encrypt 或 LiteSSL" +#: src/views/cert/AccountView.vue:204 src/views/cert/CreateAccountModal.vue:82 +msgid "" +"Google is not accessible in mainland China, other CAs depend on network " +"conditions, recommend using Let's Encrypt or LiteSSL" +msgstr "" +"Google 在中国大陆无法访问,其他 CA 取决于网络条件,建议使用 Let's Encrypt 或 " +"LiteSSL" -#: src/views/cert/AccountView.vue:210 -#: src/views/cert/CreateAccountModal.vue:88 +#: src/views/cert/AccountView.vue:210 src/views/cert/CreateAccountModal.vue:88 msgid "CA" msgstr "CA" -#: src/views/cert/AccountView.vue:213 -#: src/views/cert/CreateAccountModal.vue:91 +#: src/views/cert/AccountView.vue:213 src/views/cert/CreateAccountModal.vue:91 msgid "Select CA" msgstr "选择 CA" -#: src/views/cert/AccountView.vue:221 -#: src/views/cert/CertView.vue:462 +#: src/views/cert/AccountView.vue:221 src/views/cert/CertView.vue:462 #: src/views/cert/CreateAccountModal.vue:99 #: src/views/cert/CreateCertModal.vue:113 msgid "Select key type" msgstr "选择密钥类型" -#: src/views/cert/AccountView.vue:231 -#: src/views/cert/CreateAccountModal.vue:109 +#: src/views/cert/AccountView.vue:231 src/views/cert/CreateAccountModal.vue:109 msgid "Enter email address" msgstr "输入电子邮件地址" -#: src/views/cert/AccountView.vue:239 -#: src/views/cert/CreateAccountModal.vue:117 +#: src/views/cert/AccountView.vue:239 src/views/cert/CreateAccountModal.vue:117 msgid "Enter KID" msgstr "输入 KID" -#: src/views/cert/AccountView.vue:247 -#: src/views/cert/CreateAccountModal.vue:125 +#: src/views/cert/AccountView.vue:247 src/views/cert/CreateAccountModal.vue:125 msgid "Enter HMAC" msgstr "输入 HMAC" -#: src/views/cert/CertView.vue:82 -#: src/views/cert/CertView.vue:451 -#: src/views/cert/CreateCertModal.vue:102 -#: src/views/project/CreateModal.vue:661 -#: src/views/website/CreateModal.vue:201 -#: src/views/website/EditModal.vue:866 +#: src/views/cert/CertView.vue:82 src/views/cert/CertView.vue:451 +#: src/views/cert/CreateCertModal.vue:102 src/views/project/CreateModal.vue:661 +#: src/views/website/CreateModal.vue:201 src/views/website/EditModal.vue:876 msgid "Domain" msgstr "域名" -#: src/views/cert/CertView.vue:127 -#: src/views/file/ToolBar.vue:181 -#: src/views/file/UploadModal.vue:676 -#: src/views/monitor/IndexView.vue:596 +#: src/views/cert/CertView.vue:127 src/views/file/ToolBar.vue:154 +#: src/views/file/UploadModal.vue:676 src/views/monitor/IndexView.vue:596 msgid "Upload" msgstr "上传" @@ -5265,15 +5069,12 @@ msgstr "上传" msgid "Associated Account" msgstr "关联账户" -#: src/views/cert/CertView.vue:148 -#: src/views/website/EditModal.vue:1639 +#: src/views/cert/CertView.vue:148 src/views/website/EditModal.vue:1649 msgid "Issuer" msgstr "颁发者" -#: src/views/cert/CertView.vue:157 -#: src/views/setting/TokenModal.vue:48 -#: src/views/setting/TokenModal.vue:255 -#: src/views/setting/TokenModal.vue:293 +#: src/views/cert/CertView.vue:157 src/views/setting/TokenModal.vue:48 +#: src/views/setting/TokenModal.vue:255 src/views/setting/TokenModal.vue:293 msgid "Expiration Time" msgstr "过期时间" @@ -5285,8 +5086,7 @@ msgstr "下次续签时间" msgid "Auto Renewal" msgstr "自动续签" -#: src/views/cert/CertView.vue:208 -#: src/views/website/EditModal.vue:2171 +#: src/views/cert/CertView.vue:208 src/views/website/EditModal.vue:2181 msgid "Issue" msgstr "签发" @@ -5307,64 +5107,58 @@ msgid "Modify Certificate" msgstr "修改证书" #: src/views/cert/CertView.vue:445 -msgid "You can automatically issue and deploy certificates by selecting any website/DNS, or manually enter domain names and set DNS resolution to issue certificates, or fill in deployment scripts to automatically deploy certificates." -msgstr "您可以通过选择任何网站 / DNS 自动颁发和部署证书,或手动输入域名并设置 DNS 解析以颁发证书,或填写部署脚本以自动部署证书。" +msgid "" +"You can automatically issue and deploy certificates by selecting any website/" +"DNS, or manually enter domain names and set DNS resolution to issue " +"certificates, or fill in deployment scripts to automatically deploy " +"certificates." +msgstr "" +"您可以通过选择任何网站 / DNS 自动颁发和部署证书,或手动输入域名并设置 DNS 解" +"析以颁发证书,或填写部署脚本以自动部署证书。" -#: src/views/cert/CertView.vue:470 -#: src/views/cert/CreateCertModal.vue:121 +#: src/views/cert/CertView.vue:470 src/views/cert/CreateCertModal.vue:121 msgid "Select website for certificate deployment" msgstr "选择要部署证书的网站" -#: src/views/cert/CertView.vue:478 -#: src/views/cert/CreateCertModal.vue:126 +#: src/views/cert/CertView.vue:478 src/views/cert/CreateCertModal.vue:126 #: src/views/cert/IndexView.vue:97 msgid "Account" msgstr "账户" -#: src/views/cert/CertView.vue:482 -#: src/views/cert/CreateCertModal.vue:129 +#: src/views/cert/CertView.vue:482 src/views/cert/CreateCertModal.vue:129 msgid "Select account for certificate issuance" msgstr "选择用于证书颁发的账户" -#: src/views/cert/CertView.vue:487 -#: src/views/cert/CreateCertModal.vue:134 -#: src/views/cert/CreateDnsModal.vue:71 -#: src/views/cert/DnsView.vue:196 -#: src/views/cert/IndexView.vue:98 -#: src/views/website/EditModal.vue:2162 +#: src/views/cert/CertView.vue:487 src/views/cert/CreateCertModal.vue:134 +#: src/views/cert/CreateDnsModal.vue:71 src/views/cert/DnsView.vue:196 +#: src/views/cert/IndexView.vue:98 src/views/website/EditModal.vue:2172 msgid "DNS" msgstr "DNS" -#: src/views/cert/CertView.vue:490 -#: src/views/cert/CreateCertModal.vue:137 -#: src/views/website/EditModal.vue:2165 +#: src/views/cert/CertView.vue:490 src/views/cert/CreateCertModal.vue:137 +#: src/views/website/EditModal.vue:2175 msgid "Select DNS for certificate issuance" msgstr "选择用于证书颁发的 DNS" -#: src/views/cert/CertView.vue:497 -#: src/views/cert/CreateCertModal.vue:142 +#: src/views/cert/CertView.vue:497 src/views/cert/CreateCertModal.vue:142 msgid "DNS Alias" msgstr "DNS 别名" -#: src/views/cert/CertView.vue:507 -#: src/views/cert/CreateCertModal.vue:148 +#: src/views/cert/CertView.vue:507 src/views/cert/CreateCertModal.vue:148 msgid "Original domain, e.g. example.com" msgstr "原始域名,例如 example.com" -#: src/views/cert/CertView.vue:513 -#: src/views/cert/CreateCertModal.vue:154 +#: src/views/cert/CertView.vue:513 src/views/cert/CreateCertModal.vue:154 msgid "Alias record, e.g. _acme-challenge.delegated.com" msgstr "别名记录,例如 _acme-challenge.delegated.com" -#: src/views/cert/CertView.vue:528 -#: src/views/cert/UploadCertModal.vue:50 -#: src/views/website/EditModal.vue:1706 +#: src/views/cert/CertView.vue:528 src/views/cert/UploadCertModal.vue:50 +#: src/views/website/EditModal.vue:1716 msgid "Enter the content of the PEM certificate file" msgstr "输入 PEM 证书文件的内容" -#: src/views/cert/CertView.vue:540 -#: src/views/cert/UploadCertModal.vue:58 -#: src/views/website/EditModal.vue:1716 +#: src/views/cert/CertView.vue:540 src/views/cert/UploadCertModal.vue:58 +#: src/views/website/EditModal.vue:1726 msgid "Enter the content of the KEY private key file" msgstr "输入 KEY 私钥文件的内容" @@ -5373,7 +5167,9 @@ msgid "Deployment Script" msgstr "部署脚本" #: src/views/cert/CertView.vue:553 -msgid "The {cert} and {key} in the script will be replaced with the certificate and private key content" +msgid "" +"The {cert} and {key} in the script will be replaced with the certificate and " +"private key content" msgstr "脚本中的 {cert} 和 {key} 将被替换为证书和私钥内容" #: src/views/cert/CertView.vue:575 @@ -5392,22 +5188,24 @@ msgstr "启用 HTTPS" msgid "View Certificate" msgstr "查看证书" -#: src/views/cert/CreateAccountModal.vue:68 -#: src/views/cert/IndexView.vue:110 +#: src/views/cert/CreateAccountModal.vue:68 src/views/cert/IndexView.vue:110 msgid "Create Account" msgstr "创建账户" -#: src/views/cert/CreateCertModal.vue:87 -#: src/views/cert/IndexView.vue:107 +#: src/views/cert/CreateCertModal.vue:87 src/views/cert/IndexView.vue:107 msgid "Create Certificate" msgstr "创建证书" #: src/views/cert/CreateCertModal.vue:96 -msgid "You can automatically issue and deploy certificates by selecting either Website or DNS, or you can manually enter domain names and set up DNS resolution to issue certificates" -msgstr "您可以通过选择网站或 DNS 来自动颁发和部署证书,或者手动输入域名并设置 DNS 解析以颁发证书" +msgid "" +"You can automatically issue and deploy certificates by selecting either " +"Website or DNS, or you can manually enter domain names and set up DNS " +"resolution to issue certificates" +msgstr "" +"您可以通过选择网站或 DNS 来自动颁发和部署证书,或者手动输入域名并设置 DNS 解" +"析以颁发证书" -#: src/views/cert/CreateDnsModal.vue:56 -#: src/views/cert/IndexView.vue:113 +#: src/views/cert/CreateDnsModal.vue:56 src/views/cert/IndexView.vue:113 msgid "Create DNS" msgstr "创建 DNS" @@ -5419,108 +5217,87 @@ msgstr "备注名称" msgid "Enter comment name" msgstr "输入备注名称" -#: src/views/cert/CreateDnsModal.vue:74 -#: src/views/cert/DnsView.vue:199 +#: src/views/cert/CreateDnsModal.vue:74 src/views/cert/DnsView.vue:199 msgid "Select DNS" msgstr "选择 DNS" -#: src/views/cert/CreateDnsModal.vue:83 -#: src/views/cert/DnsView.vue:208 +#: src/views/cert/CreateDnsModal.vue:83 src/views/cert/DnsView.vue:208 msgid "Enter Aliyun Access Key" msgstr "输入阿里云 Access Key" -#: src/views/cert/CreateDnsModal.vue:90 -#: src/views/cert/DnsView.vue:215 +#: src/views/cert/CreateDnsModal.vue:90 src/views/cert/DnsView.vue:215 msgid "Enter Aliyun Secret Key" msgstr "输入阿里云 Secret Key" -#: src/views/cert/CreateDnsModal.vue:97 -#: src/views/cert/DnsView.vue:222 +#: src/views/cert/CreateDnsModal.vue:97 src/views/cert/DnsView.vue:222 msgid "Enter Tencent Cloud SecretId" msgstr "输入腾讯云 SecretId" -#: src/views/cert/CreateDnsModal.vue:104 -#: src/views/cert/DnsView.vue:229 +#: src/views/cert/CreateDnsModal.vue:104 src/views/cert/DnsView.vue:229 msgid "Enter Tencent Cloud SecretKey" msgstr "输入腾讯云 SecretKey" -#: src/views/cert/CreateDnsModal.vue:111 -#: src/views/cert/DnsView.vue:236 +#: src/views/cert/CreateDnsModal.vue:111 src/views/cert/DnsView.vue:236 msgid "Enter Huawei Cloud AccessKeyId" msgstr "输入华为云 AccessKeyId" -#: src/views/cert/CreateDnsModal.vue:118 -#: src/views/cert/DnsView.vue:243 +#: src/views/cert/CreateDnsModal.vue:118 src/views/cert/DnsView.vue:243 msgid "Enter Huawei Cloud SecretAccessKey" msgstr "输入华为云 SecretAccessKey" -#: src/views/cert/CreateDnsModal.vue:125 -#: src/views/cert/DnsView.vue:250 +#: src/views/cert/CreateDnsModal.vue:125 src/views/cert/DnsView.vue:250 msgid "Enter West.cn Username" msgstr "输入西部数码用户名" -#: src/views/cert/CreateDnsModal.vue:132 -#: src/views/cert/DnsView.vue:257 +#: src/views/cert/CreateDnsModal.vue:132 src/views/cert/DnsView.vue:257 msgid "Enter West.cn API Password" msgstr "输入西部数码 API 密码" -#: src/views/cert/CreateDnsModal.vue:139 -#: src/views/cert/DnsView.vue:264 +#: src/views/cert/CreateDnsModal.vue:139 src/views/cert/DnsView.vue:264 msgid "Enter Cloudflare API Key" msgstr "输入 Cloudflare API 密钥" -#: src/views/cert/CreateDnsModal.vue:146 -#: src/views/cert/DnsView.vue:271 +#: src/views/cert/CreateDnsModal.vue:146 src/views/cert/DnsView.vue:271 msgid "Enter G-Core API Key" msgstr "输入 G-Core API 密钥" -#: src/views/cert/CreateDnsModal.vue:153 -#: src/views/cert/DnsView.vue:278 +#: src/views/cert/CreateDnsModal.vue:153 src/views/cert/DnsView.vue:278 msgid "Enter Porkbun API Key" msgstr "输入 Porkbun API 密钥" -#: src/views/cert/CreateDnsModal.vue:160 -#: src/views/cert/DnsView.vue:285 +#: src/views/cert/CreateDnsModal.vue:160 src/views/cert/DnsView.vue:285 msgid "Enter Porkbun Secret Key" msgstr "输入 Porkbun 密钥" -#: src/views/cert/CreateDnsModal.vue:167 -#: src/views/cert/DnsView.vue:292 +#: src/views/cert/CreateDnsModal.vue:167 src/views/cert/DnsView.vue:292 msgid "Enter NameSilo API Token" msgstr "输入 NameSilo API 令牌" -#: src/views/cert/CreateDnsModal.vue:174 -#: src/views/cert/DnsView.vue:299 +#: src/views/cert/CreateDnsModal.vue:174 src/views/cert/DnsView.vue:299 msgid "Enter ClouDNS Auth ID (use Sub Auth ID by adding sub-prefix)" msgstr "输入 ClouDNS 认证 ID(使用子认证 ID 时添加 sub- 前缀)" -#: src/views/cert/CreateDnsModal.vue:181 -#: src/views/cert/DnsView.vue:306 +#: src/views/cert/CreateDnsModal.vue:181 src/views/cert/DnsView.vue:306 msgid "Enter ClouDNS Auth Password" msgstr "输入 ClouDNS 认证密码" -#: src/views/cert/CreateDnsModal.vue:184 -#: src/views/cert/DnsView.vue:309 +#: src/views/cert/CreateDnsModal.vue:184 src/views/cert/DnsView.vue:309 msgid "DNS Server" msgstr "DNS 服务器" -#: src/views/cert/CreateDnsModal.vue:188 -#: src/views/cert/DnsView.vue:313 +#: src/views/cert/CreateDnsModal.vue:188 src/views/cert/DnsView.vue:313 msgid "DNS server for propagation check, e.g. 8.8.8.8" msgstr "用于生效检查的 DNS 服务器,例如 8.8.8.8" -#: src/views/cert/CreateDnsModal.vue:191 -#: src/views/cert/DnsView.vue:316 +#: src/views/cert/CreateDnsModal.vue:191 src/views/cert/DnsView.vue:316 msgid "Skip DNS Verification" msgstr "跳过 DNS 验证" -#: src/views/cert/CreateDnsModal.vue:194 -#: src/views/cert/DnsView.vue:319 +#: src/views/cert/CreateDnsModal.vue:194 src/views/cert/DnsView.vue:319 msgid "For intranet environments, will wait 60s instead of polling DNS" msgstr "在内网环境中,将等待 60 秒而不是轮询 DNS" -#: src/views/cert/DnsView.vue:36 -#: src/views/cert/DnsView.vue:189 +#: src/views/cert/DnsView.vue:36 src/views/cert/DnsView.vue:189 msgid "Note Name" msgstr "备注名称" @@ -5536,8 +5313,7 @@ msgstr "修改 DNS" msgid "Enter note name" msgstr "输入备注名称" -#: src/views/cert/IndexView.vue:104 -#: src/views/cert/UploadCertModal.vue:38 +#: src/views/cert/IndexView.vue:104 src/views/cert/UploadCertModal.vue:38 msgid "Upload Certificate" msgstr "上传证书" @@ -5549,21 +5325,17 @@ msgstr "自动" msgid "Self-signed" msgstr "自签名" -#: src/views/cert/ObtainModal.vue:67 -#: src/views/cert/ObtainModal.vue:167 +#: src/views/cert/ObtainModal.vue:67 src/views/cert/ObtainModal.vue:167 msgid "Renewal successful" msgstr "续签成功" -#: src/views/cert/ObtainModal.vue:68 -#: src/views/cert/ObtainModal.vue:110 +#: src/views/cert/ObtainModal.vue:68 src/views/cert/ObtainModal.vue:110 #: src/views/cert/ObtainModal.vue:167 msgid "Issuance successful" msgstr "签发成功" -#: src/views/cert/ObtainModal.vue:84 -#: src/views/cert/ObtainModal.vue:90 -#: src/views/home/UpdateView.vue:96 -#: src/views/home/UpdateView.vue:101 +#: src/views/cert/ObtainModal.vue:84 src/views/cert/ObtainModal.vue:90 +#: src/views/home/UpdateView.vue:96 src/views/home/UpdateView.vue:101 msgid "WebSocket connection failed" msgstr "WebSocket 连接失败" @@ -5579,15 +5351,11 @@ msgstr "签发证书" msgid "Issuance Mode" msgstr "签发模式" -#: src/views/container/ComposeView.vue:93 -#: src/views/container/ImageView.vue:77 +#: src/views/container/ComposeView.vue:93 src/views/container/ImageView.vue:77 #: src/views/container/NetworkView.vue:103 -#: src/views/container/VolumeView.vue:57 -#: src/views/setting/PasskeyModal.vue:33 -#: src/views/setting/SettingUser.vue:79 -#: src/views/setting/TokenModal.vue:39 -#: src/views/task/CronView.vue:100 -#: src/views/task/TaskView.vue:49 +#: src/views/container/VolumeView.vue:57 src/views/setting/PasskeyModal.vue:33 +#: src/views/setting/SettingUser.vue:79 src/views/setting/TokenModal.vue:39 +#: src/views/task/CronView.vue:100 src/views/task/TaskView.vue:49 #: src/views/toolbox/WebHookView.vue:125 msgid "Creation Time" msgstr "创建时间" @@ -5605,8 +5373,8 @@ msgid "Are you sure you want to stop compose %{ name }?" msgstr "您确定要停止编排 %{ name } 吗?" #: src/views/container/ComposeView.vue:184 -#: src/views/container/ContainerView.vue:276 -#: src/views/container/ContainerView.vue:342 +#: src/views/container/ContainerView.vue:303 +#: src/views/container/ContainerView.vue:369 msgid "Stop successful" msgstr "停止成功" @@ -5616,8 +5384,8 @@ msgstr "您确定要删除编排 %{ name } 吗?" #: src/views/container/ComposeView.vue:205 #: src/views/container/ComposeView.vue:268 -#: src/views/container/ContainerView.vue:311 -#: src/views/container/ContainerView.vue:369 +#: src/views/container/ContainerView.vue:338 +#: src/views/container/ContainerView.vue:396 #: src/views/container/ImageView.vue:122 #: src/views/container/NetworkView.vue:149 #: src/views/container/VolumeView.vue:102 @@ -5634,8 +5402,7 @@ msgid "Are you sure you want to delete the selected composes?" msgstr "您确定要删除所选的编排吗?" #: src/views/container/ComposeView.vue:328 -#: src/views/container/ComposeView.vue:354 -#: src/views/container/IndexView.vue:23 +#: src/views/container/ComposeView.vue:354 src/views/container/IndexView.vue:23 msgid "Compose" msgstr "编排" @@ -5643,337 +5410,431 @@ msgstr "编排" msgid "Edit Compose" msgstr "编辑编排" -#: src/views/container/ContainerCreate.vue:54 +#: src/views/container/ContainerCreate.vue:58 msgid "Always" msgstr "总是" -#: src/views/container/ContainerCreate.vue:55 +#: src/views/container/ContainerCreate.vue:59 msgid "On failure (default 5 retries)" msgstr "失败时(默认重试 5 次)" -#: src/views/container/ContainerCreate.vue:56 +#: src/views/container/ContainerCreate.vue:60 msgid "Unless stopped" msgstr "除非停止" -#: src/views/container/ContainerCreate.vue:65 +#: src/views/container/ContainerCreate.vue:69 +#: src/views/container/ContainerInfoModal.vue:168 msgid "Read-Write" msgstr "读写" -#: src/views/container/ContainerCreate.vue:66 +#: src/views/container/ContainerCreate.vue:70 +#: src/views/container/ContainerInfoModal.vue:168 msgid "Read-Only" msgstr "只读" -#: src/views/container/ContainerCreate.vue:125 +#: src/views/container/ContainerCreate.vue:135 #: src/views/container/ImageView.vue:167 msgid "Please enter image name" msgstr "请输入镜像名" -#: src/views/container/ContainerCreate.vue:182 -#: src/views/container/ContainerView.vue:553 +#: src/views/container/ContainerCreate.vue:143 +msgid "" +"Updating will remove the current container and recreate it with the new " +"configuration. Data not stored in mounted volumes will be lost. Continue?" +msgstr "" + +#: src/views/container/ContainerCreate.vue:146 src/views/file/ListView.vue:286 +#: src/views/file/UploadModal.vue:506 src/views/file/UploadModal.vue:641 +#: src/views/toolbox/MigrationView.vue:207 +msgid "Continue" +msgstr "继续" + +#: src/views/container/ContainerCreate.vue:283 +#, fuzzy +msgid "Edit Container" +msgstr "容器" + +#: src/views/container/ContainerCreate.vue:283 +#: src/views/container/ContainerView.vue:580 msgid "Create Container" msgstr "创建容器" -#: src/views/container/ContainerCreate.vue:195 -#: src/views/container/ContainerView.vue:46 +#: src/views/container/ContainerCreate.vue:296 +#: src/views/container/ContainerInfoModal.vue:99 +#: src/views/container/ContainerView.vue:51 msgid "Container Name" msgstr "容器名称" -#: src/views/container/ContainerCreate.vue:200 +#: src/views/container/ContainerCreate.vue:301 msgid "Optional, auto-generated if empty" msgstr "可选,如果为空则自动生成" -#: src/views/container/ContainerCreate.vue:204 -#: src/views/container/ContainerView.vue:73 +#: src/views/container/ContainerCreate.vue:305 +#: src/views/container/ContainerInfoModal.vue:105 +#: src/views/container/ContainerView.vue:78 #: src/views/container/ImageView.vue:60 msgid "Image" msgstr "镜像" -#: src/views/container/ContainerCreate.vue:209 +#: src/views/container/ContainerCreate.vue:310 msgid "e.g., nginx, mysql:8.4, your_username/your_image:tag" msgstr "例如 nginx,mysql:8.4,your_username/your_image:tag" -#: src/views/container/ContainerCreate.vue:217 +#: src/views/container/ContainerCreate.vue:318 msgid "Select network" msgstr "选择网络" -#: src/views/container/ContainerCreate.vue:221 +#: src/views/container/ContainerCreate.vue:322 +#: src/views/container/ContainerInfoModal.vue:119 #: src/views/project/EditModal.vue:298 msgid "Restart Policy" msgstr "重启策略" -#: src/views/container/ContainerCreate.vue:225 +#: src/views/container/ContainerCreate.vue:326 msgid "Select restart policy" msgstr "选择重启策略" -#: src/views/container/ContainerCreate.vue:229 +#: src/views/container/ContainerCreate.vue:330 msgid "Container Options" msgstr "容器选项" -#: src/views/container/ContainerCreate.vue:233 +#: src/views/container/ContainerCreate.vue:334 msgid "TTY (-t)" msgstr "TTY (-t)" -#: src/views/container/ContainerCreate.vue:238 +#: src/views/container/ContainerCreate.vue:339 msgid "STDIN (-i)" msgstr "STDIN (-i)" -#: src/views/container/ContainerCreate.vue:243 +#: src/views/container/ContainerCreate.vue:344 msgid "Auto Remove" msgstr "自动移除" -#: src/views/container/ContainerCreate.vue:248 +#: src/views/container/ContainerCreate.vue:349 +#: src/views/container/ContainerInfoModal.vue:122 msgid "Privileged" msgstr "特权模式" -#: src/views/container/ContainerCreate.vue:257 -#: src/views/container/ContainerCreate.vue:268 +#: src/views/container/ContainerCreate.vue:358 +#: src/views/container/ContainerCreate.vue:369 msgid "Port Mapping" msgstr "端口映射" -#: src/views/container/ContainerCreate.vue:259 +#: src/views/container/ContainerCreate.vue:360 msgid "Port Mode" msgstr "端口模式" -#: src/views/container/ContainerCreate.vue:261 +#: src/views/container/ContainerCreate.vue:362 msgid "Map Ports" msgstr "映射端口" -#: src/views/container/ContainerCreate.vue:262 +#: src/views/container/ContainerCreate.vue:363 msgid "Expose All" msgstr "全部暴露" -#: src/views/container/ContainerCreate.vue:280 +#: src/views/container/ContainerCreate.vue:381 msgid "IP (optional)" msgstr "IP(可选)" -#: src/views/container/ContainerCreate.vue:289 +#: src/views/container/ContainerCreate.vue:390 msgid "Host Start" msgstr "主机起始" -#: src/views/container/ContainerCreate.vue:298 +#: src/views/container/ContainerCreate.vue:399 msgid "Host End" msgstr "主机结束" -#: src/views/container/ContainerCreate.vue:307 +#: src/views/container/ContainerCreate.vue:408 msgid "Container Start" msgstr "容器起始" -#: src/views/container/ContainerCreate.vue:316 +#: src/views/container/ContainerCreate.vue:417 msgid "Container End" msgstr "容器结束" -#: src/views/container/ContainerCreate.vue:331 -msgid "All exposed ports in the image will be automatically mapped to random host ports." +#: src/views/container/ContainerCreate.vue:432 +msgid "" +"All exposed ports in the image will be automatically mapped to random host " +"ports." msgstr "镜像中的所有暴露端口将自动映射到随机主机端口。" -#: src/views/container/ContainerCreate.vue:340 +#: src/views/container/ContainerCreate.vue:441 #: src/views/container/IndexView.vue:26 msgid "Volumes" msgstr "卷" -#: src/views/container/ContainerCreate.vue:342 +#: src/views/container/ContainerCreate.vue:443 msgid "Volume Mounts" msgstr "卷挂载" -#: src/views/container/ContainerCreate.vue:352 +#: src/views/container/ContainerCreate.vue:453 msgid "Host path" msgstr "主机路径" -#: src/views/container/ContainerCreate.vue:358 +#: src/views/container/ContainerCreate.vue:459 msgid "Container path" msgstr "容器路径" -#: src/views/container/ContainerCreate.vue:369 -msgid "Mount host directories or volumes into the container. Use absolute paths for host directories." +#: src/views/container/ContainerCreate.vue:470 +msgid "" +"Mount host directories or volumes into the container. Use absolute paths for " +"host directories." msgstr "将主机目录或卷挂载到容器中。主机目录需使用绝对路径。" -#: src/views/container/ContainerCreate.vue:378 +#: src/views/container/ContainerCreate.vue:479 #: src/views/project/EditModal.vue:458 msgid "Resource Limits" msgstr "资源限制" -#: src/views/container/ContainerCreate.vue:382 -msgid "Set resource limits to prevent the container from consuming too many system resources. Set to 0 for no limit." +#: src/views/container/ContainerCreate.vue:483 +msgid "" +"Set resource limits to prevent the container from consuming too many system " +"resources. Set to 0 for no limit." msgstr "设置资源限制以防止容器消耗过多系统资源。设置为 0 表示无限制。" -#: src/views/container/ContainerCreate.vue:390 +#: src/views/container/ContainerCreate.vue:491 msgid "Memory (MB)" msgstr "内存(MB)" -#: src/views/container/ContainerCreate.vue:395 -#: src/views/container/ContainerCreate.vue:407 +#: src/views/container/ContainerCreate.vue:496 +#: src/views/container/ContainerCreate.vue:508 msgid "0 = no limit" msgstr "0 = 无限制" -#: src/views/container/ContainerCreate.vue:400 -#: src/views/container/ContainerCreate.vue:429 +#: src/views/container/ContainerCreate.vue:501 +#: src/views/container/ContainerCreate.vue:530 #: src/views/toolbox/PanelView.vue:113 msgid "CPU Cores" msgstr "CPU 核心数" -#: src/views/container/ContainerCreate.vue:412 -#: src/views/container/ContainerCreate.vue:436 +#: src/views/container/ContainerCreate.vue:513 +#: src/views/container/ContainerCreate.vue:537 msgid "CPU Shares" msgstr "CPU 份额" -#: src/views/container/ContainerCreate.vue:424 +#: src/views/container/ContainerCreate.vue:525 msgid "Resource Limit Description" msgstr "资源限制描述" -#: src/views/container/ContainerCreate.vue:427 +#: src/views/container/ContainerCreate.vue:528 msgid "Maximum memory the container can use, in MB. 0 means no limit." msgstr "容器可以使用的最大内存,单位为 MB。0 表示无限制。" -#: src/views/container/ContainerCreate.vue:431 -msgid "Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 cores." +#: src/views/container/ContainerCreate.vue:532 +msgid "" +"Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 " +"cores." msgstr "容器可以使用的 CPU 核心数。0.5 意味着半个核心,2 意味着 2 个核心。" -#: src/views/container/ContainerCreate.vue:438 -msgid "Relative CPU weight. Default is 1024. Higher values get more CPU time when competing." -msgstr "相对 CPU 权重。默认值为 1024。当竞争时,更高的值会获得更多的 CPU 时间。" +#: src/views/container/ContainerCreate.vue:539 +msgid "" +"Relative CPU weight. Default is 1024. Higher values get more CPU time when " +"competing." +msgstr "" +"相对 CPU 权重。默认值为 1024。当竞争时,更高的值会获得更多的 CPU 时间。" -#: src/views/container/ContainerCreate.vue:450 -#: src/views/toolbox/MigrationView.vue:470 +#: src/views/container/ContainerCreate.vue:551 +#: src/views/toolbox/MigrationView.vue:492 msgid "Environment" msgstr "环境" -#: src/views/container/ContainerCreate.vue:462 +#: src/views/container/ContainerCreate.vue:563 #: src/views/project/EditModal.vue:390 msgid "Variable name" msgstr "变量名称" -#: src/views/container/ContainerCreate.vue:468 +#: src/views/container/ContainerCreate.vue:569 #: src/views/project/EditModal.vue:396 msgid "Variable value" msgstr "变量值" -#: src/views/container/ContainerCreate.vue:476 +#: src/views/container/ContainerCreate.vue:577 msgid "Startup Commands" msgstr "启动命令" -#: src/views/container/ContainerCreate.vue:478 -#: src/views/home/IndexView.vue:662 -#: src/views/home/IndexView.vue:763 -#: src/views/monitor/IndexView.vue:335 -#: src/views/monitor/IndexView.vue:347 +#: src/views/container/ContainerCreate.vue:579 +#: src/views/container/ContainerInfoModal.vue:139 +#: src/views/home/IndexView.vue:662 src/views/home/IndexView.vue:763 +#: src/views/monitor/IndexView.vue:335 src/views/monitor/IndexView.vue:347 msgid "Command" msgstr "命令" -#: src/views/container/ContainerCreate.vue:481 +#: src/views/container/ContainerCreate.vue:582 msgid "Command argument" msgstr "命令参数" -#: src/views/container/ContainerCreate.vue:485 +#: src/views/container/ContainerCreate.vue:586 msgid "Override the default CMD of the image" msgstr "覆盖镜像的默认 CMD" -#: src/views/container/ContainerCreate.vue:490 +#: src/views/container/ContainerCreate.vue:591 msgid "Entrypoint" msgstr "入口点" -#: src/views/container/ContainerCreate.vue:493 +#: src/views/container/ContainerCreate.vue:594 msgid "Entrypoint argument" msgstr "入口点参数" -#: src/views/container/ContainerCreate.vue:497 +#: src/views/container/ContainerCreate.vue:598 msgid "Override the default ENTRYPOINT of the image" msgstr "覆盖镜像的默认 ENTRYPOINT" -#: src/views/container/ContainerCreate.vue:502 +#: src/views/container/ContainerCreate.vue:603 +#: src/views/container/ContainerInfoModal.vue:192 #: src/views/container/NetworkView.vue:321 #: src/views/container/VolumeView.vue:215 msgid "Labels" msgstr "标签" -#: src/views/container/ContainerCreate.vue:504 +#: src/views/container/ContainerCreate.vue:605 msgid "Container Labels" msgstr "容器标签" -#: src/views/container/ContainerCreate.vue:514 +#: src/views/container/ContainerCreate.vue:615 msgid "Label name" msgstr "标签名称" -#: src/views/container/ContainerCreate.vue:520 +#: src/views/container/ContainerCreate.vue:621 msgid "Label value" msgstr "标签值" -#: src/views/container/ContainerView.vue:80 +#: src/views/container/ContainerInfoModal.vue:86 +#, fuzzy +msgid "Container Info" +msgstr "容器结束" + +#: src/views/container/ContainerInfoModal.vue:96 +#: src/views/toolbox/disk/SmartView.vue:280 src/views/toolbox/PanelView.vue:98 +msgid "Basic Info" +msgstr "基本信息" + +#: src/views/container/ContainerInfoModal.vue:102 +#, fuzzy +msgid "Container ID" +msgstr "容器" + +#: src/views/container/ContainerInfoModal.vue:116 +#, fuzzy +msgid "Started At" +msgstr "开始" + +#: src/views/container/ContainerInfoModal.vue:133 +#: src/views/container/ContainerView.vue:85 msgid "Ports (Host->Container)" msgstr "端口(主机->容器)" -#: src/views/container/ContainerView.vue:173 -#: src/views/container/ContainerView.vue:575 +#: src/views/container/ContainerInfoModal.vue:145 +#, fuzzy +msgid "Mounts" +msgstr "挂载" + +#: src/views/container/ContainerInfoModal.vue:150 +msgid "Host Path / Volume" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:151 +#, fuzzy +msgid "Container Path" +msgstr "容器路径" + +#: src/views/container/ContainerInfoModal.vue:152 +#, fuzzy +msgid "Mode" +msgstr "型号" + +#: src/views/container/ContainerInfoModal.vue:174 +#, fuzzy +msgid "No mounts" +msgstr "未挂载" + +#: src/views/container/ContainerInfoModal.vue:188 +#: src/views/toolbox/ProcessView.vue:453 +msgid "No environment variables" +msgstr "无环境变量" + +#: src/views/container/ContainerInfoModal.vue:207 +#: src/views/toolbox/WebHookView.vue:73 src/views/toolbox/WebHookView.vue:339 +#: src/views/toolbox/WebHookView.vue:380 +msgid "Raw Output" +msgstr "原始输出" + +#: src/views/container/ContainerView.vue:130 +#, fuzzy +msgid "Info" +msgstr "PHPInfo" + +#: src/views/container/ContainerView.vue:196 +#: src/views/container/ContainerView.vue:602 msgid "Force Stop" msgstr "强制停止" -#: src/views/container/ContainerView.vue:178 -#: src/views/container/ContainerView.vue:578 +#: src/views/container/ContainerView.vue:201 +#: src/views/container/ContainerView.vue:605 msgid "Pause" msgstr "暂停" -#: src/views/container/ContainerView.vue:183 -#: src/views/container/ContainerView.vue:581 +#: src/views/container/ContainerView.vue:206 +#: src/views/container/ContainerView.vue:608 msgid "Resume" msgstr "恢复" -#: src/views/container/ContainerView.vue:227 -#: src/views/file/ListView.vue:1567 +#: src/views/container/ContainerView.vue:254 src/views/file/ListView.vue:1631 msgid "More" msgstr "更多" -#: src/views/container/ContainerView.vue:259 +#: src/views/container/ContainerView.vue:286 msgid "Rename successful" msgstr "重命名成功" -#: src/views/container/ContainerView.vue:269 -#: src/views/container/ContainerView.vue:333 +#: src/views/container/ContainerView.vue:296 +#: src/views/container/ContainerView.vue:360 msgid "Start successful" msgstr "启动成功" -#: src/views/container/ContainerView.vue:283 -#: src/views/container/ContainerView.vue:351 +#: src/views/container/ContainerView.vue:310 +#: src/views/container/ContainerView.vue:378 msgid "Restart successful" msgstr "重启成功" -#: src/views/container/ContainerView.vue:290 -#: src/views/container/ContainerView.vue:360 +#: src/views/container/ContainerView.vue:317 +#: src/views/container/ContainerView.vue:387 msgid "Force stop successful" msgstr "强制停止成功" -#: src/views/container/ContainerView.vue:297 -#: src/views/container/ContainerView.vue:378 +#: src/views/container/ContainerView.vue:324 +#: src/views/container/ContainerView.vue:405 msgid "Pause successful" msgstr "暂停成功" -#: src/views/container/ContainerView.vue:304 -#: src/views/container/ContainerView.vue:387 +#: src/views/container/ContainerView.vue:331 +#: src/views/container/ContainerView.vue:414 msgid "Resume successful" msgstr "恢复成功" -#: src/views/container/ContainerView.vue:320 +#: src/views/container/ContainerView.vue:347 #: src/views/container/ImageView.vue:131 #: src/views/container/NetworkView.vue:158 #: src/views/container/VolumeView.vue:111 msgid "Cleanup successful" msgstr "清理成功" -#: src/views/container/ContainerView.vue:403 +#: src/views/container/ContainerView.vue:430 msgid "Terminal container not found" msgstr "未找到终端容器" -#: src/views/container/ContainerView.vue:486 +#: src/views/container/ContainerView.vue:513 msgid "Failed to connect to container terminal" msgstr "无法连接到容器终端" -#: src/views/container/ContainerView.vue:562 +#: src/views/container/ContainerView.vue:589 msgid "Cleanup Containers" msgstr "清理容器" -#: src/views/container/ContainerView.vue:620 +#: src/views/container/ContainerView.vue:647 msgid "New Name" msgstr "新名称" -#: src/views/container/ContainerView.vue:625 +#: src/views/container/ContainerView.vue:652 msgid "Enter new name" msgstr "输入新名称" @@ -6005,12 +5866,9 @@ msgstr "拉取失败" msgid "Container Count" msgstr "容器数量" -#: src/views/container/ImageView.vue:98 -#: src/views/container/NetworkView.vue:125 -#: src/views/container/VolumeView.vue:78 -#: src/views/firewall/ForwardView.vue:93 -#: src/views/firewall/IpRuleView.vue:135 -#: src/views/firewall/RuleView.vue:243 +#: src/views/container/ImageView.vue:98 src/views/container/NetworkView.vue:125 +#: src/views/container/VolumeView.vue:78 src/views/firewall/ForwardView.vue:93 +#: src/views/firewall/IpRuleView.vue:135 src/views/firewall/RuleView.vue:243 #: src/views/task/TaskView.vue:99 msgid "Are you sure you want to delete?" msgstr "您确定要删除吗?" @@ -6019,8 +5877,7 @@ msgstr "您确定要删除吗?" msgid "Pull successful" msgstr "拉取成功" -#: src/views/container/ImageView.vue:256 -#: src/views/container/ImageView.vue:302 +#: src/views/container/ImageView.vue:256 src/views/container/ImageView.vue:302 msgid "Pull Image" msgstr "拉取镜像" @@ -6058,14 +5915,12 @@ msgstr "网络" #: src/views/container/NetworkView.vue:55 #: src/views/container/NetworkView.vue:258 -#: src/views/container/VolumeView.vue:36 -#: src/views/container/VolumeView.vue:206 +#: src/views/container/VolumeView.vue:36 src/views/container/VolumeView.vue:206 msgid "Driver" msgstr "驱动" -#: src/views/container/NetworkView.vue:62 -#: src/views/container/VolumeView.vue:43 -#: src/views/website/EditModal.vue:2030 +#: src/views/container/NetworkView.vue:62 src/views/container/VolumeView.vue:43 +#: src/views/website/EditModal.vue:2040 msgid "Scope" msgstr "范围" @@ -6144,10 +5999,8 @@ msgstr "选项名称" msgid "Option Value" msgstr "选项值" -#: src/views/container/VolumeView.vue:50 -#: src/views/home/IndexView.vue:806 -#: src/views/toolbox/DiskView.vue:282 -#: src/views/toolbox/DiskView.vue:604 +#: src/views/container/VolumeView.vue:50 src/views/home/IndexView.vue:806 +#: src/views/toolbox/DiskView.vue:282 src/views/toolbox/DiskView.vue:604 msgid "Mount Point" msgstr "挂载点" @@ -6184,7 +6037,7 @@ msgid "Specific" msgstr "特定" #: src/views/database/CreateDatabaseModal.vue:78 -#: src/views/database/IndexView.vue:48 +#: src/views/database/IndexView.vue:146 msgid "Create Database" msgstr "创建数据库" @@ -6232,7 +6085,7 @@ msgid "Select type" msgstr "选择类型" #: src/views/database/CreateServerModal.vue:113 -#: src/views/database/UpdateServerModal.vue:70 +#: src/views/database/UpdateServerModal.vue:71 msgid "Enter database server name" msgstr "输入数据库服务器名称" @@ -6249,38 +6102,38 @@ msgid "Select" msgstr "选择" #: src/views/database/CreateServerModal.vue:148 -#: src/views/database/UpdateServerModal.vue:80 +#: src/views/database/UpdateServerModal.vue:81 msgid "Enter database server host" msgstr "输入数据库服务器主机" #: src/views/database/CreateServerModal.vue:159 -#: src/views/database/UpdateServerModal.vue:91 +#: src/views/database/UpdateServerModal.vue:92 msgid "Enter database server port" msgstr "输入数据库服务器端口" #: src/views/database/CreateServerModal.vue:173 -#: src/views/database/UpdateServerModal.vue:101 +#: src/views/database/UpdateServerModal.vue:102 msgid "Enter database server username" msgstr "输入数据库服务器用户名" #: src/views/database/CreateServerModal.vue:186 -#: src/views/database/UpdateServerModal.vue:110 +#: src/views/database/UpdateServerModal.vue:111 msgid "Enter database server password" msgstr "输入数据库服务器密码" #: src/views/database/CreateServerModal.vue:195 -#: src/views/database/UpdateServerModal.vue:118 +#: src/views/database/UpdateServerModal.vue:119 msgid "Enter database server comment" msgstr "输入数据库服务器备注" #: src/views/database/CreateUserModal.vue:100 #: src/views/database/UpdateUserModal.vue:59 -msgid "If the privilege databases does not exist, it will be created automatically." +msgid "" +"If the privilege databases does not exist, it will be created automatically." msgstr "如果特权数据库不存在,将会自动创建。" #: src/views/database/CreateUserModal.vue:154 -#: src/views/database/UpdateUserModal.vue:72 -#: src/views/database/UserList.vue:81 +#: src/views/database/UpdateUserModal.vue:72 src/views/database/UserList.vue:81 msgid "Privileges" msgstr "权限" @@ -6320,7 +6173,7 @@ msgid "Are you sure you want to delete this index?" msgstr "您确定要删除此索引吗?" #: src/views/database/ElasticsearchDataView.vue:162 -#: src/views/website/EditModal.vue:1784 +#: src/views/website/EditModal.vue:1794 msgid "Source" msgstr "来源" @@ -6430,8 +6283,7 @@ msgstr "新键名" msgid "Enter new key name" msgstr "输入新的键名称" -#: src/views/database/RedisKeyModal.vue:90 -#: src/views/toolbox/SshView.vue:339 +#: src/views/database/RedisKeyModal.vue:90 src/views/toolbox/SshView.vue:339 msgid "View Key" msgstr "查看密钥" @@ -6461,13 +6313,11 @@ msgstr "输入 JSON 值" msgid "Unsupported database type" msgstr "不支持的数据库类型" -#: src/views/database/ServerList.vue:147 -#: src/views/database/UserList.vue:120 +#: src/views/database/ServerList.vue:147 src/views/database/UserList.vue:120 msgid "Valid" msgstr "有效" -#: src/views/database/ServerList.vue:147 -#: src/views/database/UserList.vue:120 +#: src/views/database/ServerList.vue:147 src/views/database/UserList.vue:120 msgid "Invalid" msgstr "无效" @@ -6476,11 +6326,12 @@ msgid "Confirm Sync" msgstr "确认同步" #: src/views/database/ServerList.vue:188 -msgid "Are you sure you want to synchronize database users (excluding password) to the panel?" +msgid "" +"Are you sure you want to synchronize database users (excluding password) to " +"the panel?" msgstr "您确定要将数据库用户(不包括密码)同步到面板吗?" -#: src/views/database/ServerList.vue:195 -#: src/views/toolbox/SystemView.vue:122 +#: src/views/database/ServerList.vue:195 src/views/toolbox/SystemView.vue:122 msgid "Synchronized successfully" msgstr "同步成功" @@ -6489,14 +6340,16 @@ msgid "Sync" msgstr "同步" #: src/views/database/ServerList.vue:234 -msgid "Built-in servers cannot be deleted. If you need to delete them, please uninstall the corresponding app" +msgid "" +"Built-in servers cannot be deleted. If you need to delete them, please " +"uninstall the corresponding app" msgstr "内置服务器无法删除。如果需要删除它们,请卸载相应的应用" #: src/views/database/ServerList.vue:241 msgid "Are you sure you want to delete the server?" msgstr "您确定要删除该服务器吗?" -#: src/views/database/UpdateServerModal.vue:57 +#: src/views/database/UpdateServerModal.vue:58 msgid "Modify Server" msgstr "修改服务器" @@ -6512,8 +6365,7 @@ msgstr "未保存" msgid "Are you sure you want to delete the user?" msgstr "您确定要删除该用户吗?" -#: src/views/environment/DotnetView.vue:13 -#: src/views/environment/GoView.vue:46 +#: src/views/environment/DotnetView.vue:13 src/views/environment/GoView.vue:46 #: src/views/environment/JavaView.vue:13 #: src/views/environment/NodejsView.vue:49 #: src/views/environment/PHPView.vue:131 @@ -6521,8 +6373,7 @@ msgstr "您确定要删除该用户吗?" msgid "Set successfully" msgstr "设置成功" -#: src/views/environment/DotnetView.vue:25 -#: src/views/environment/GoView.vue:64 +#: src/views/environment/DotnetView.vue:25 src/views/environment/GoView.vue:64 #: src/views/environment/JavaView.vue:25 #: src/views/environment/NodejsView.vue:67 #: src/views/environment/PHPView.vue:196 @@ -6531,8 +6382,11 @@ msgid "Set as CLI Default Version" msgstr "设置为 CLI 默认版本" #: src/views/environment/DotnetView.vue:30 -msgid ".NET is a free, open-source, cross-platform framework for building modern apps and powerful cloud services." -msgstr ".NET 是一个免费、开源、跨平台的框架,用于构建现代应用程序和强大的云服务。" +msgid "" +".NET is a free, open-source, cross-platform framework for building modern " +"apps and powerful cloud services." +msgstr "" +".NET 是一个免费、开源、跨平台的框架,用于构建现代应用程序和强大的云服务。" #: src/views/environment/GoView.vue:16 msgid "Official (proxy.golang.org)" @@ -6542,13 +6396,11 @@ msgstr "官方(proxy.golang.org)" msgid "China - Qiniu (goproxy.cn)" msgstr "中国 - 七牛云(goproxy.cn)" -#: src/views/environment/GoView.vue:19 -#: src/views/environment/PythonView.vue:18 +#: src/views/environment/GoView.vue:19 src/views/environment/PythonView.vue:18 msgid "China - Alibaba (mirrors.aliyun.com)" msgstr "中国 - 阿里巴巴(mirrors.aliyun.com)" -#: src/views/environment/GoView.vue:23 -#: src/views/environment/NodejsView.vue:22 +#: src/views/environment/GoView.vue:23 src/views/environment/NodejsView.vue:22 #: src/views/environment/PythonView.vue:22 msgid "China - Tencent (mirrors.tencent.com)" msgstr "中国 - 腾讯(mirrors.tencent.com)" @@ -6558,7 +6410,9 @@ msgid "Proxy Settings" msgstr "代理设置" #: src/views/environment/GoView.vue:74 -msgid "GOPROXY is used to configure the Go module proxy. Using a domestic mirror can speed up dependency downloads." +msgid "" +"GOPROXY is used to configure the Go module proxy. Using a domestic mirror " +"can speed up dependency downloads." msgstr "GOPROXY 用于配置 Go 模块代理。使用国内镜像可以加快依赖项下载速度。" #: src/views/environment/GoView.vue:79 @@ -6570,8 +6424,12 @@ msgid "Select or enter proxy address" msgstr "选择或输入代理地址" #: src/views/environment/JavaView.vue:30 -msgid "Amazon Corretto is a no-cost, multiplatform, production-ready distribution of the Open Java Development Kit (OpenJDK)." -msgstr "Amazon Corretto 是一个无成本、多平台、生产就绪的 Open Java Development Kit(OpenJDK)发行版。" +msgid "" +"Amazon Corretto is a no-cost, multiplatform, production-ready distribution " +"of the Open Java Development Kit (OpenJDK)." +msgstr "" +"Amazon Corretto 是一个无成本、多平台、生产就绪的 Open Java Development Kit" +"(OpenJDK)发行版。" #: src/views/environment/NodejsView.vue:16 msgid "Official (registry.npmjs.org)" @@ -6590,7 +6448,9 @@ msgid "Registry Settings" msgstr "注册表设置" #: src/views/environment/NodejsView.vue:77 -msgid "npm registry is used to configure the npm package source. Using a domestic mirror can speed up package downloads." +msgid "" +"npm registry is used to configure the npm package source. Using a domestic " +"mirror can speed up package downloads." msgstr "npm 注册表用于配置 npm 包源。使用国内镜像可以加速包下载。" #: src/views/environment/NodejsView.vue:82 @@ -6635,8 +6495,12 @@ msgid "Disabled Functions" msgstr "禁用函数" #: src/views/environment/PhpConfigTuneView.vue:283 -msgid "Enter the PHP functions to disable, separated by commas. Common dangerous functions include: exec, shell_exec, system, passthru, proc_open, popen, etc." -msgstr "输入要禁用的 PHP 函数,用逗号分隔。常见的危险函数包括:exec、shell_exec、system、passthru、proc_open、popen 等。" +msgid "" +"Enter the PHP functions to disable, separated by commas. Common dangerous " +"functions include: exec, shell_exec, system, passthru, proc_open, popen, etc." +msgstr "" +"输入要禁用的 PHP 函数,用逗号分隔。常见的危险函数包括:exec、shell_exec、" +"system、passthru、proc_open、popen 等。" #: src/views/environment/PhpConfigTuneView.vue:294 msgid "e.g. exec,shell_exec,system,passthru" @@ -6647,7 +6511,9 @@ msgid "Upload Limits" msgstr "上传限制" #: src/views/environment/PhpConfigTuneView.vue:314 -msgid "Adjust PHP file upload limits. post_max_size should be greater than upload_max_filesize." +msgid "" +"Adjust PHP file upload limits. post_max_size should be greater than " +"upload_max_filesize." msgstr "调整 PHP 文件上传限制。post_max_size 应大于 upload_max_filesize。" #: src/views/environment/PhpConfigTuneView.vue:320 @@ -6675,7 +6541,8 @@ msgid "Timeout Limits" msgstr "超时限制" #: src/views/environment/PhpConfigTuneView.vue:385 -msgid "Adjust PHP script timeout limits. Values are in seconds, -1 means no limit." +msgid "" +"Adjust PHP script timeout limits. Values are in seconds, -1 means no limit." msgstr "调整 PHP 脚本超时限制。值以秒为单位,-1 表示无限制。" #: src/views/environment/PhpConfigTuneView.vue:389 @@ -6700,7 +6567,8 @@ msgid "e.g. 1000" msgstr "例如 1000" #: src/views/environment/PhpConfigTuneView.vue:430 -msgid "Adjust PHP-FPM process manager settings. These settings are in php-fpm.conf." +msgid "" +"Adjust PHP-FPM process manager settings. These settings are in php-fpm.conf." msgstr "调整 PHP-FPM 进程管理器设置。这些设置在 php-fpm.conf 中。" #: src/views/environment/PhpConfigTuneView.vue:434 @@ -6728,8 +6596,12 @@ msgid "Max Spare Servers (pm.max_spare_servers)" msgstr "最大空闲服务器数(pm.max_spare_servers)" #: src/views/environment/PhpConfigTuneView.vue:495 -msgid "Adjust PHP session settings. When using redis or memcached, make sure the corresponding extension is installed and the service is running." -msgstr "调整 PHP 会话设置。使用 redis 或 memcached 时,请确保已安装相应扩展且服务正在运行。" +msgid "" +"Adjust PHP session settings. When using redis or memcached, make sure the " +"corresponding extension is installed and the service is running." +msgstr "" +"调整 PHP 会话设置。使用 redis 或 memcached 时,请确保已安装相应扩展且服务正在" +"运行。" #: src/views/environment/PhpConfigTuneView.vue:501 msgid "Save Handler (session.save_handler)" @@ -6800,16 +6672,24 @@ msgid "View PHPInfo" msgstr "查看 PHPInfo" #: src/views/environment/PHPView.vue:227 -msgid "This modifies the PHP %{ version } main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 PHP %{ version } 的主配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the PHP %{ version } main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 PHP %{ version } 的主配置文件。如果您不了解每个参数的含义,请不要随" +"意修改!" #: src/views/environment/PHPView.vue:241 msgid "FPM Configuration" msgstr "FPM 配置" #: src/views/environment/PHPView.vue:245 -msgid "This modifies the PHP %{ version } FPM configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "这将修改 PHP %{ version } 的 FPM 配置文件。如果您不了解每个参数的含义,请不要随意修改!" +msgid "" +"This modifies the PHP %{ version } FPM configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"这将修改 PHP %{ version } 的 FPM 配置文件。如果您不了解每个参数的含义,请不要" +"随意修改!" #: src/views/environment/PHPView.vue:282 msgid "Slow Logs" @@ -6836,7 +6716,9 @@ msgid "Mirror Settings" msgstr "镜像设置" #: src/views/environment/PythonView.vue:81 -msgid "pip mirror is used to configure the Python package source. Using a domestic mirror can speed up package downloads." +msgid "" +"pip mirror is used to configure the Python package source. Using a domestic " +"mirror can speed up package downloads." msgstr "pip 镜像用于配置 Python 包源。使用国内镜像可以加速包下载。" #: src/views/environment/PythonView.vue:86 @@ -6855,69 +6737,67 @@ msgstr "抱歉,您访问的页面不存在。" msgid "Back to Home" msgstr "返回首页" -#: src/views/file/composables/usePaste.ts:14 +#: src/views/file/composables/useFileOps.ts:57 +msgid "Marked successfully, please navigate to the destination path to paste" +msgstr "标记成功,请导航到目标路径进行粘贴" + +#: src/views/file/composables/usePaste.ts:15 msgid "Please mark the files/folders to copy or move first" msgstr "请先标记要复制或移动的文件/文件夹" -#: src/views/file/composables/usePaste.ts:28 +#: src/views/file/composables/usePaste.ts:29 msgid "Moved successfully" msgstr "移动成功" -#: src/views/file/composables/usePaste.ts:51 +#: src/views/file/composables/usePaste.ts:58 msgid "Please enter a new name" msgstr "请键入新名称" -#: src/views/file/composables/usePaste.ts:56 -#: src/views/file/composables/usePaste.ts:70 +#: src/views/file/composables/usePaste.ts:63 +#: src/views/file/composables/usePaste.ts:77 msgid "Name cannot be empty" msgstr "名称不能为空" -#: src/views/file/composables/usePaste.ts:89 -#: src/views/file/composables/usePaste.ts:143 +#: src/views/file/composables/usePaste.ts:96 +#: src/views/file/composables/usePaste.ts:150 msgid "Canceled" msgstr "已取消" -#: src/views/file/composables/usePaste.ts:131 -#: src/views/file/ListView.vue:239 -#: src/views/file/ListView.vue:766 -#: src/views/file/ListView.vue:850 +#: src/views/file/composables/usePaste.ts:138 src/views/file/ListView.vue:281 +#: src/views/file/ListView.vue:818 src/views/file/ListView.vue:867 msgid "Warning" msgstr "警告" -#: src/views/file/composables/usePaste.ts:132 +#: src/views/file/composables/usePaste.ts:139 msgid "There are items with the same name %{ items } Do you want to overwrite?" msgstr "存在同名项目 %{ items } 是否要覆盖?" -#: src/views/file/composables/usePaste.ts:168 -#: src/views/file/ListView.vue:768 -#: src/views/file/UploadModal.vue:752 -#: src/views/file/UploadModal.vue:784 +#: src/views/file/composables/usePaste.ts:175 src/views/file/ListView.vue:820 +#: src/views/file/UploadModal.vue:752 src/views/file/UploadModal.vue:784 msgid "Overwrite" msgstr "覆盖" -#: src/views/file/CompressModal.vue:47 -msgid "Compress task created successfully, please check the task list for progress" +#: src/views/file/CompressModal.vue:52 +msgid "" +"Compress task created successfully, please check the task list for progress" msgstr "压缩任务创建成功,请在任务列表中查看进度" -#: src/views/file/CompressModal.vue:70 -#: src/views/file/CompressModal.vue:103 -#: src/views/file/ListView.vue:309 -#: src/views/file/ListView.vue:345 -#: src/views/file/ListView.vue:953 -#: src/views/file/ListView.vue:1532 -#: src/views/file/ToolBar.vue:216 +#: src/views/file/CompressModal.vue:97 src/views/file/CompressModal.vue:116 +#: src/views/file/ListView.vue:351 src/views/file/ListView.vue:387 +#: src/views/file/ListView.vue:974 src/views/file/ListView.vue:1596 +#: src/views/file/ToolBar.vue:189 msgid "Compress" msgstr "压缩" -#: src/views/file/CompressModal.vue:78 +#: src/views/file/CompressModal.vue:105 msgid "Files to compress" msgstr "要压缩的文件" -#: src/views/file/CompressModal.vue:81 +#: src/views/file/CompressModal.vue:108 msgid "Compress to" msgstr "压缩到" -#: src/views/file/CompressModal.vue:84 +#: src/views/file/CompressModal.vue:111 msgid "Format" msgstr "格式" @@ -6925,128 +6805,141 @@ msgstr "格式" msgid "You have unsaved changes. Do you want to save them before closing?" msgstr "您有未保存的更改,在关闭之前是否要保存它们?" -#: src/views/file/EditModal.vue:105 +#: src/views/file/EditModal.vue:83 msgid "Failed to save files: %{ files }" msgstr "保存文件失败:%{ files }" -#: src/views/file/EditModal.vue:185 +#: src/views/file/EditModal.vue:141 msgid "File Editor" msgstr "文件编辑器" -#: src/views/file/ListView.vue:240 -msgid "%{ name } has immutable attribute. The panel will temporarily remove the immutable attribute, perform the operation, and then restore the immutable attribute. Do you want to continue?" -msgstr "%{ name } 具有不可变属性。面板将暂时移除不可变属性,执行操作,然后恢复不可变属性。您要继续吗?" +#: src/views/file/IndexView.vue:242 +#, fuzzy +msgid "Drop files to upload" +msgstr "没有文件可保存" -#: src/views/file/ListView.vue:244 -#: src/views/file/UploadModal.vue:506 -#: src/views/file/UploadModal.vue:641 -msgid "Continue" -msgstr "继续" +#: src/views/file/ListView.vue:259 src/views/file/ListView.vue:399 +#: src/views/file/ListView.vue:992 +#, fuzzy +msgid "Add Protection" +msgstr "保护模式" -#: src/views/file/ListView.vue:297 -#: src/views/file/ListView.vue:315 -#: src/views/file/ListView.vue:359 -#: src/views/file/ToolBar.vue:211 +#: src/views/file/ListView.vue:259 src/views/file/ListView.vue:398 +#: src/views/file/ListView.vue:992 +#, fuzzy +msgid "Remove Protection" +msgstr "连接远程服务器" + +#: src/views/file/ListView.vue:261 +#, fuzzy +msgid "Add tamper protection for %{ name }?" +msgstr "编辑项目 - %{ name }" + +#: src/views/file/ListView.vue:262 +msgid "" +"Remove tamper protection for %{ name }? The matching rule or exclusions will " +"be adjusted accordingly." +msgstr "" + +#: src/views/file/ListView.vue:270 src/views/monitor/IndexView.vue:695 +#: src/views/monitor/IndexView.vue:704 +msgid "Operation successful" +msgstr "操作成功" + +#: src/views/file/ListView.vue:282 +msgid "" +"%{ name } has immutable attribute. The panel will temporarily remove the " +"immutable attribute, perform the operation, and then restore the immutable " +"attribute. Do you want to continue?" +msgstr "" +"%{ name } 具有不可变属性。面板将暂时移除不可变属性,执行操作,然后恢复不可变" +"属性。您要继续吗?" + +#: src/views/file/ListView.vue:339 src/views/file/ListView.vue:357 +#: src/views/file/ListView.vue:408 src/views/file/ToolBar.vue:184 msgid "Paste" msgstr "粘贴" -#: src/views/file/ListView.vue:308 -#: src/views/file/ListView.vue:342 -#: src/views/file/ListView.vue:951 -#: src/views/file/ToolBar.vue:215 +#: src/views/file/ListView.vue:350 src/views/file/ListView.vue:384 +#: src/views/file/ListView.vue:972 src/views/file/ToolBar.vue:188 msgid "Move" msgstr "移动" -#: src/views/file/ListView.vue:310 -#: src/views/file/ListView.vue:343 -#: src/views/file/ListView.vue:952 -#: src/views/file/ListView.vue:1350 -#: src/views/file/PermissionModal.vue:146 -#: src/views/file/PropertyModal.vue:42 -#: src/views/file/ToolBar.vue:217 +#: src/views/file/ListView.vue:352 src/views/file/ListView.vue:385 +#: src/views/file/ListView.vue:973 src/views/file/ListView.vue:1402 +#: src/views/file/PermissionModal.vue:146 src/views/file/PropertyModal.vue:42 +#: src/views/file/ToolBar.vue:190 msgid "Permission" msgstr "权限" -#: src/views/file/ListView.vue:327 -#: src/views/file/ListView.vue:1519 +#: src/views/file/ListView.vue:369 src/views/file/ListView.vue:1583 msgid "Open" msgstr "打开" -#: src/views/file/ListView.vue:329 -#: src/views/file/ListView.vue:1538 +#: src/views/file/ListView.vue:371 src/views/file/ListView.vue:1602 msgid "Preview" msgstr "预览" -#: src/views/file/ListView.vue:331 -#: src/views/file/ListView.vue:958 -#: src/views/file/ListView.vue:1647 +#: src/views/file/ListView.vue:373 src/views/file/ListView.vue:979 +#: src/views/file/ListView.vue:1705 msgid "Uncompress" msgstr "解压" -#: src/views/file/ListView.vue:354 -#: src/views/file/ListView.vue:968 +#: src/views/file/ListView.vue:403 src/views/file/ListView.vue:997 #: src/views/file/PropertyModal.vue:11 msgid "Properties" msgstr "属性" -#: src/views/file/ListView.vue:677 -#: src/views/file/ToolBar.vue:78 -#: src/views/file/ToolBar.vue:97 -msgid "Marked successfully, please navigate to the destination path to paste" -msgstr "标记成功,请导航到目标路径进行粘贴" - -#: src/views/file/ListView.vue:767 -msgid "There are items with the same name. Do you want to overwrite?" -msgstr "存在同名项目。您要覆盖吗?" - -#: src/views/file/ListView.vue:775 -#: src/views/file/ListView.vue:794 +#: src/views/file/ListView.vue:806 msgid "Renamed %{ source } to %{ target } successfully" msgstr "成功将 %{ source } 重命名为 %{ target }" -#: src/views/file/ListView.vue:841 +#: src/views/file/ListView.vue:819 +msgid "There are items with the same name. Do you want to overwrite?" +msgstr "存在同名项目。您要覆盖吗?" + +#: src/views/file/ListView.vue:858 msgid "Some files are immutable and cannot be deleted" msgstr "某些文件是不可变的,无法删除" -#: src/views/file/ListView.vue:848 +#: src/views/file/ListView.vue:865 msgid "Are you sure you want to delete %{count} items?" msgstr "您确定要删除 %{count} 项吗?" -#: src/views/file/ListView.vue:861 -#: src/views/file/PathInput.vue:34 +#: src/views/file/ListView.vue:878 src/views/file/PathInput.vue:34 msgid "Path copied to clipboard" msgstr "路径已复制到剪贴板" -#: src/views/file/ListView.vue:961 +#: src/views/file/ListView.vue:982 msgid "Copy Path" msgstr "复制路径" -#: src/views/file/ListView.vue:1217 -msgid "Uncompress task created successfully, please check the task list for progress" +#: src/views/file/ListView.vue:1250 +msgid "" +"Uncompress task created successfully, please check the task list for progress" msgstr "解压任务创建成功,请在任务列表中查看进度" -#: src/views/file/ListView.vue:1578 +#: src/views/file/ListView.vue:1642 msgid "No files" msgstr "没有文件" -#: src/views/file/ListView.vue:1588 +#: src/views/file/ListView.vue:1652 msgid "%{count} item(s) selected" msgstr "选择了 %{count} 项" -#: src/views/file/ListView.vue:1596 +#: src/views/file/ListView.vue:1660 msgid "%{count} item(s)" msgstr "共 %{count} 项" -#: src/views/file/ListView.vue:1635 +#: src/views/file/ListView.vue:1693 msgid "Uncompress - %{ file }" msgstr "解压 - %{ file }" -#: src/views/file/ListView.vue:1643 +#: src/views/file/ListView.vue:1701 msgid "Uncompress to" msgstr "解压到" -#: src/views/file/ListView.vue:1655 -#: src/views/file/ToolBar.vue:264 +#: src/views/file/ListView.vue:1713 src/views/file/ToolBar.vue:237 msgid "Terminal - %{ path }" msgstr "终端 - %{ path }" @@ -7054,8 +6947,7 @@ msgstr "终端 - %{ path }" msgid "Failed to copy path" msgstr "路径复制失败" -#: src/views/file/PathInput.vue:109 -#: src/views/home/UpdateView.vue:164 +#: src/views/file/PathInput.vue:109 src/views/home/UpdateView.vue:164 msgid "Back" msgstr "返回" @@ -7096,27 +6988,22 @@ msgid "Modify permissions - %{ path }" msgstr "修改权限 - %{ path }" #: src/views/file/PermissionModal.vue:119 -#: src/views/file/PermissionModal.vue:149 -#: src/views/file/PropertyModal.vue:45 +#: src/views/file/PermissionModal.vue:149 src/views/file/PropertyModal.vue:45 msgid "Owner" msgstr "所有者" #: src/views/file/PermissionModal.vue:121 #: src/views/file/PermissionModal.vue:130 -#: src/views/file/PermissionModal.vue:139 -#: src/views/home/IndexView.vue:212 -#: src/views/home/IndexView.vue:228 -#: src/views/home/IndexView.vue:1000 +#: src/views/file/PermissionModal.vue:139 src/views/home/IndexView.vue:212 +#: src/views/home/IndexView.vue:228 src/views/home/IndexView.vue:1000 #: src/views/monitor/IndexView.vue:639 msgid "Read" msgstr "读取" #: src/views/file/PermissionModal.vue:122 #: src/views/file/PermissionModal.vue:131 -#: src/views/file/PermissionModal.vue:140 -#: src/views/home/IndexView.vue:212 -#: src/views/home/IndexView.vue:252 -#: src/views/home/IndexView.vue:1001 +#: src/views/file/PermissionModal.vue:140 src/views/home/IndexView.vue:212 +#: src/views/home/IndexView.vue:252 src/views/home/IndexView.vue:1001 #: src/views/monitor/IndexView.vue:648 msgid "Write" msgstr "写入" @@ -7131,7 +7018,7 @@ msgstr "执行" msgid "Others" msgstr "其他" -#: src/views/file/PreviewModal.vue:32 +#: src/views/file/PreviewModal.vue:31 msgid "Preview - " msgstr "预览 - " @@ -7155,44 +7042,44 @@ msgstr "隐藏" msgid "Immutable" msgstr "不可变" -#: src/views/file/ToolBar.vue:55 -msgid "Download task created successfully, please check the task list for progress" +#: src/views/file/ToolBar.vue:57 +msgid "" +"Download task created successfully, please check the task list for progress" msgstr "下载任务创建成功,请在任务列表中查看进度" -#: src/views/file/ToolBar.vue:65 +#: src/views/file/ToolBar.vue:67 msgid "Please select files/folders to copy" msgstr "请选择要复制的文件/文件夹" -#: src/views/file/ToolBar.vue:84 +#: src/views/file/ToolBar.vue:75 msgid "Please select files/folders to move" msgstr "请选择要移动的文件/文件夹" -#: src/views/file/ToolBar.vue:157 +#: src/views/file/ToolBar.vue:130 msgid "Sort" msgstr "排序" -#: src/views/file/ToolBar.vue:182 -#: src/views/file/ToolBar.vue:236 +#: src/views/file/ToolBar.vue:155 src/views/file/ToolBar.vue:209 msgid "Remote Download" msgstr "远程下载" -#: src/views/file/ToolBar.vue:201 +#: src/views/file/ToolBar.vue:174 msgid "Switch to grid view" msgstr "切换为网格视图" -#: src/views/file/ToolBar.vue:202 +#: src/views/file/ToolBar.vue:175 msgid "Switch to list view" msgstr "切换为列表视图" -#: src/views/file/ToolBar.vue:220 +#: src/views/file/ToolBar.vue:193 msgid "Are you sure you want to delete in bulk?" msgstr "您确定要批量删除吗?" -#: src/views/file/ToolBar.vue:244 +#: src/views/file/ToolBar.vue:217 msgid "Download URL" msgstr "下载 URL" -#: src/views/file/ToolBar.vue:247 +#: src/views/file/ToolBar.vue:220 msgid "Save as" msgstr "另存为" @@ -7208,19 +7095,18 @@ msgstr "无效的新名称「%{name}」" msgid "Duplicate new name \"%{name}\"" msgstr "重复的新名称「%{name}」" -#: src/views/file/UploadModal.vue:473 -#: src/views/file/UploadModal.vue:593 +#: src/views/file/UploadModal.vue:473 src/views/file/UploadModal.vue:593 msgid "Upload %{ fileName } successful" msgstr "上传 %{ fileName } 成功" -#: src/views/file/UploadModal.vue:501 -#: src/views/file/UploadModal.vue:636 +#: src/views/file/UploadModal.vue:501 src/views/file/UploadModal.vue:636 msgid "Confirm Upload" msgstr "确认上传" -#: src/views/file/UploadModal.vue:502 -#: src/views/file/UploadModal.vue:637 -msgid "You are about to upload %{count} files. This may take a while. Do you want to continue?" +#: src/views/file/UploadModal.vue:502 src/views/file/UploadModal.vue:637 +msgid "" +"You are about to upload %{count} files. This may take a while. Do you want " +"to continue?" msgstr "您即将上传 %{count} 个文件。这可能需要一些时间。您想继续吗?" #: src/views/file/UploadModal.vue:685 @@ -7232,7 +7118,8 @@ msgid "Preparing..." msgstr "准备中……" #: src/views/file/UploadModal.vue:715 -msgid "For large files, it is recommended to use SFTP and other methods to upload" +msgid "" +"For large files, it is recommended to use SFTP and other methods to upload" msgstr "对于大文件,建议使用 SFTP 等方法上传" #: src/views/file/UploadModal.vue:727 @@ -7240,15 +7127,16 @@ msgid "Files already exist" msgstr "文件已存在" #: src/views/file/UploadModal.vue:738 -msgid "The following files already exist in the target directory. Choose an action for each." +msgid "" +"The following files already exist in the target directory. Choose an action " +"for each." msgstr "目标目录中已存在以下文件。请为每个文件选择一个操作。" #: src/views/file/UploadModal.vue:744 msgid "Apply to all:" msgstr "应用于所有:" -#: src/views/file/UploadModal.vue:746 -#: src/views/file/UploadModal.vue:782 +#: src/views/file/UploadModal.vue:746 src/views/file/UploadModal.vue:782 msgid "Skip" msgstr "跳过" @@ -7263,10 +7151,8 @@ msgstr "创建转发" #: src/views/firewall/CreateForwardModal.vue:64 #: src/views/firewall/CreateIpModal.vue:104 -#: src/views/firewall/CreateModal.vue:116 -#: src/views/firewall/ForwardView.vue:16 -#: src/views/firewall/IpRuleView.vue:16 -#: src/views/firewall/RuleView.vue:33 +#: src/views/firewall/CreateModal.vue:116 src/views/firewall/ForwardView.vue:16 +#: src/views/firewall/IpRuleView.vue:16 src/views/firewall/RuleView.vue:33 msgid "Transport Protocol" msgstr "传输协议" @@ -7285,29 +7171,25 @@ msgid "Target Port" msgstr "目标端口" #: src/views/firewall/CreateIpModal.vue:39 -#: src/views/firewall/CreateModal.vue:39 -#: src/views/firewall/IpRuleView.vue:70 +#: src/views/firewall/CreateModal.vue:39 src/views/firewall/IpRuleView.vue:70 #: src/views/firewall/RuleView.vue:175 msgid "Accept" msgstr "接受" #: src/views/firewall/CreateIpModal.vue:43 -#: src/views/firewall/CreateModal.vue:43 -#: src/views/firewall/IpRuleView.vue:72 +#: src/views/firewall/CreateModal.vue:43 src/views/firewall/IpRuleView.vue:72 #: src/views/firewall/RuleView.vue:177 msgid "Drop" msgstr "丢弃" #: src/views/firewall/CreateIpModal.vue:47 -#: src/views/firewall/CreateModal.vue:47 -#: src/views/firewall/IpRuleView.vue:74 +#: src/views/firewall/CreateModal.vue:47 src/views/firewall/IpRuleView.vue:74 #: src/views/firewall/RuleView.vue:179 msgid "Reject" msgstr "拒绝" #: src/views/firewall/CreateIpModal.vue:54 -#: src/views/firewall/CreateModal.vue:54 -#: src/views/firewall/IpRuleView.vue:99 +#: src/views/firewall/CreateModal.vue:54 src/views/firewall/IpRuleView.vue:99 #: src/views/firewall/RuleView.vue:204 #: src/views/website/stats/OverviewTab.vue:390 #: src/views/website/stats/OverviewTab.vue:424 @@ -7317,8 +7199,7 @@ msgid "Inbound" msgstr "入站" #: src/views/firewall/CreateIpModal.vue:58 -#: src/views/firewall/CreateModal.vue:58 -#: src/views/firewall/IpRuleView.vue:101 +#: src/views/firewall/CreateModal.vue:58 src/views/firewall/IpRuleView.vue:101 #: src/views/firewall/RuleView.vue:206 #: src/views/website/stats/OverviewTab.vue:388 #: src/views/website/stats/OverviewTab.vue:389 @@ -7334,15 +7215,13 @@ msgid "%{ address } created successfully" msgstr "%{ address } 创建成功" #: src/views/firewall/CreateIpModal.vue:96 -#: src/views/firewall/CreateModal.vue:108 -#: src/views/firewall/IpRuleView.vue:195 -#: src/views/firewall/RuleView.vue:303 +#: src/views/firewall/CreateModal.vue:108 src/views/firewall/IpRuleView.vue:195 +#: src/views/firewall/RuleView.vue:324 msgid "Create Rule" msgstr "创建规则" #: src/views/firewall/CreateIpModal.vue:107 -#: src/views/firewall/CreateModal.vue:119 -#: src/views/firewall/IpRuleView.vue:33 +#: src/views/firewall/CreateModal.vue:119 src/views/firewall/IpRuleView.vue:33 #: src/views/firewall/RuleView.vue:50 msgid "Network Protocol" msgstr "网络协议" @@ -7357,15 +7236,13 @@ msgid "IP or IP range: 172.16.0.1 or 172.16.0.0/16" msgstr "IP 或 IP 范围:172.16.0.1 或 172.16.0.0/16" #: src/views/firewall/CreateIpModal.vue:117 -#: src/views/firewall/CreateModal.vue:151 -#: src/views/firewall/IpRuleView.vue:50 +#: src/views/firewall/CreateModal.vue:151 src/views/firewall/IpRuleView.vue:50 #: src/views/firewall/RuleView.vue:155 msgid "Strategy" msgstr "策略" #: src/views/firewall/CreateIpModal.vue:120 -#: src/views/firewall/CreateModal.vue:154 -#: src/views/firewall/IpRuleView.vue:86 +#: src/views/firewall/CreateModal.vue:154 src/views/firewall/IpRuleView.vue:86 #: src/views/firewall/RuleView.vue:191 msgid "Direction" msgstr "方向" @@ -7378,22 +7255,18 @@ msgstr "起始端口" msgid "End Port" msgstr "结束端口" -#: src/views/firewall/CreateModal.vue:144 -#: src/views/firewall/IpRuleView.vue:111 -#: src/views/firewall/RuleView.vue:216 -#: src/views/website/EditModal.vue:1797 +#: src/views/firewall/CreateModal.vue:144 src/views/firewall/IpRuleView.vue:111 +#: src/views/firewall/RuleView.vue:216 src/views/website/EditModal.vue:1807 msgid "Target" msgstr "目标" -#: src/views/firewall/ForwardView.vue:125 -#: src/views/firewall/IpRuleView.vue:167 -#: src/views/firewall/RuleView.vue:275 +#: src/views/firewall/ForwardView.vue:125 src/views/firewall/IpRuleView.vue:167 +#: src/views/firewall/RuleView.vue:296 msgid "Please select rules to delete" msgstr "请选择要删除的规则" -#: src/views/firewall/ForwardView.vue:157 -#: src/views/firewall/IpRuleView.vue:199 -#: src/views/firewall/RuleView.vue:307 +#: src/views/firewall/ForwardView.vue:157 src/views/firewall/IpRuleView.vue:199 +#: src/views/firewall/RuleView.vue:328 msgid "Are you sure you want to delete the selected rules?" msgstr "您确定要删除所选规则吗?" @@ -7409,13 +7282,11 @@ msgstr "IP 规则" msgid "Port Forwarding" msgstr "端口转发" -#: src/views/firewall/IndexView.vue:25 -#: src/views/firewall/SettingView.vue:96 +#: src/views/firewall/IndexView.vue:25 src/views/firewall/SettingView.vue:96 msgid "Scan Awareness" msgstr "扫描感知" -#: src/views/firewall/IpRuleView.vue:76 -#: src/views/firewall/RuleView.vue:181 +#: src/views/firewall/IpRuleView.vue:76 src/views/firewall/RuleView.vue:181 msgid "Mark" msgstr "标记" @@ -7423,8 +7294,7 @@ msgstr "标记" msgid "Not Used" msgstr "未使用" -#: src/views/firewall/RuleView.vue:106 -#: src/views/toolbox/PanelView.vue:154 +#: src/views/firewall/RuleView.vue:106 src/views/toolbox/PanelView.vue:154 msgid "In Use" msgstr "使用中" @@ -7432,19 +7302,27 @@ msgstr "使用中" msgid "No process information" msgstr "没有进程信息" -#: src/views/firewall/ScanView.vue:193 -#: src/views/firewall/ScanView.vue:211 -#: src/views/firewall/ScanView.vue:223 -#: src/views/firewall/ScanView.vue:288 -#: src/views/firewall/ScanView.vue:302 -#: src/views/firewall/ScanView.vue:318 +#: src/views/firewall/RuleView.vue:275 +msgid "Import finished: %{succeeded} succeeded, %{failed} failed" +msgstr "" + +#: src/views/firewall/RuleView.vue:338 +#, fuzzy +msgid "Export" +msgstr "Exporters" + +#: src/views/firewall/RuleView.vue:342 +msgid "Import" +msgstr "" + +#: src/views/firewall/ScanView.vue:193 src/views/firewall/ScanView.vue:211 +#: src/views/firewall/ScanView.vue:223 src/views/firewall/ScanView.vue:288 +#: src/views/firewall/ScanView.vue:302 src/views/firewall/ScanView.vue:318 msgid "Scan Count" msgstr "扫描次数" -#: src/views/firewall/ScanView.vue:193 -#: src/views/firewall/ScanView.vue:216 -#: src/views/firewall/ScanView.vue:229 -#: src/views/firewall/ScanView.vue:440 +#: src/views/firewall/ScanView.vue:193 src/views/firewall/ScanView.vue:216 +#: src/views/firewall/ScanView.vue:229 src/views/firewall/ScanView.vue:440 msgid "Source IPs" msgstr "源 IP 数" @@ -7467,16 +7345,13 @@ msgctxt "firewall" msgid "Block" msgstr "阻止" -#: src/views/firewall/ScanView.vue:279 -#: src/views/firewall/ScanView.vue:307 +#: src/views/firewall/ScanView.vue:279 src/views/firewall/ScanView.vue:307 #: src/views/log/SSHLog.vue:78 msgid "Source IP" msgstr "源 IP" -#: src/views/firewall/ScanView.vue:281 -#: src/views/firewall/ScanView.vue:309 -#: src/views/firewall/ScanView.vue:390 -#: src/views/website/stats/IPsTab.vue:122 +#: src/views/firewall/ScanView.vue:281 src/views/firewall/ScanView.vue:309 +#: src/views/firewall/ScanView.vue:390 src/views/website/stats/IPsTab.vue:122 msgid "Location" msgstr "位置" @@ -7484,8 +7359,7 @@ msgstr "位置" msgid "Port Count" msgstr "端口数" -#: src/views/firewall/ScanView.vue:291 -#: src/views/firewall/ScanView.vue:326 +#: src/views/firewall/ScanView.vue:291 src/views/firewall/ScanView.vue:326 msgid "Last Seen" msgstr "最后记录" @@ -7502,11 +7376,11 @@ msgid "Scan Awareness Disabled" msgstr "扫描感知已禁用" #: src/views/firewall/ScanView.vue:348 -msgid "Enable scan awareness in the Settings tab to start detecting port scans." +msgid "" +"Enable scan awareness in the Settings tab to start detecting port scans." msgstr "在设置标签页中启用扫描感知以开始检测端口扫描。" -#: src/views/firewall/ScanView.vue:356 -#: src/views/website/StatsView.vue:194 +#: src/views/firewall/ScanView.vue:356 src/views/website/StatsView.vue:194 msgid "Overview" msgstr "概览" @@ -7522,8 +7396,7 @@ msgstr "搜索 IP" msgid "Are you sure you want to clear all scan data?" msgstr "您确定要清除所有扫描数据吗?" -#: src/views/firewall/ScanView.vue:403 -#: src/views/website/StatsView.vue:185 +#: src/views/firewall/ScanView.vue:403 src/views/website/StatsView.vue:185 msgid "Clear Data" msgstr "清除数据" @@ -7547,8 +7420,7 @@ msgstr "源 IP 前 10" msgid "Top 10 Scanned Ports" msgstr "扫描端口前 10" -#: src/views/firewall/SettingView.vue:22 -#: src/views/firewall/SettingView.vue:28 +#: src/views/firewall/SettingView.vue:22 src/views/firewall/SettingView.vue:28 #: src/views/firewall/SettingView.vue:79 msgid "Settings saved successfully" msgstr "设置保存成功" @@ -7609,22 +7481,17 @@ msgstr "运行正常" msgid "Running smoothly" msgstr "运行流畅" -#: src/views/home/IndexView.vue:188 -#: src/views/home/IndexView.vue:956 -#: src/views/home/IndexView.vue:976 -#: src/views/toolbox/BenchmarkView.vue:204 -#: src/views/toolbox/DiskView.vue:758 -#: src/views/toolbox/IndexView.vue:31 +#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:956 +#: src/views/home/IndexView.vue:976 src/views/toolbox/BenchmarkView.vue:204 +#: src/views/toolbox/DiskView.vue:758 src/views/toolbox/IndexView.vue:31 msgid "Disk" msgstr "磁盘" -#: src/views/home/IndexView.vue:211 -#: src/views/home/IndexView.vue:228 +#: src/views/home/IndexView.vue:211 src/views/home/IndexView.vue:228 msgid "Send" msgstr "发送" -#: src/views/home/IndexView.vue:211 -#: src/views/home/IndexView.vue:252 +#: src/views/home/IndexView.vue:211 src/views/home/IndexView.vue:252 msgid "Receive" msgstr "接收" @@ -7632,26 +7499,20 @@ msgstr "接收" msgid "Unit %{unit}" msgstr "单位 %{unit}" -#: src/views/home/IndexView.vue:234 -#: src/views/home/IndexView.vue:258 -#: src/views/monitor/IndexView.vue:433 -#: src/views/monitor/IndexView.vue:502 +#: src/views/home/IndexView.vue:234 src/views/home/IndexView.vue:258 +#: src/views/monitor/IndexView.vue:433 src/views/monitor/IndexView.vue:502 #: src/views/monitor/IndexView.vue:564 msgid "Maximum" msgstr "最大值" -#: src/views/home/IndexView.vue:235 -#: src/views/home/IndexView.vue:259 -#: src/views/monitor/IndexView.vue:434 -#: src/views/monitor/IndexView.vue:503 +#: src/views/home/IndexView.vue:235 src/views/home/IndexView.vue:259 +#: src/views/monitor/IndexView.vue:434 src/views/monitor/IndexView.vue:503 #: src/views/monitor/IndexView.vue:565 msgid "Minimum" msgstr "最小值" -#: src/views/home/IndexView.vue:239 -#: src/views/home/IndexView.vue:263 -#: src/views/monitor/IndexView.vue:438 -#: src/views/monitor/IndexView.vue:507 +#: src/views/home/IndexView.vue:239 src/views/home/IndexView.vue:263 +#: src/views/monitor/IndexView.vue:438 src/views/monitor/IndexView.vue:507 #: src/views/monitor/IndexView.vue:569 msgid "Average" msgstr "平均值" @@ -7672,8 +7533,7 @@ msgstr "服务器重启中……" msgid "Restart Panel" msgstr "重启面板" -#: src/views/home/IndexView.vue:394 -#: src/views/home/IndexView.vue:1025 +#: src/views/home/IndexView.vue:394 src/views/home/IndexView.vue:1025 msgid "Restart Server" msgstr "重启服务器" @@ -7682,15 +7542,24 @@ msgid "Current version is the latest" msgstr "当前版本是最新版本" #: src/views/home/IndexView.vue:501 -msgid "Your operating system %{ os_name } has reached its end-of-life. Please consider upgrading to a supported version to ensure optimal performance and security." -msgstr "您的操作系统 %{ os_name } 已经结束生命周期。请考虑升级到受支持的版本,以确保最佳的性能和安全性。" +msgid "" +"Your operating system %{ os_name } has reached its end-of-life. Please " +"consider upgrading to a supported version to ensure optimal performance and " +"security." +msgstr "" +"您的操作系统 %{ os_name } 已经结束生命周期。请考虑升级到受支持的版本,以确保" +"最佳的性能和安全性。" #: src/views/home/IndexView.vue:512 -msgid "Your operating system %{ os_name } is not officially supported. Some features may not work as expected. Please consider using a supported operating system for the best experience." -msgstr "您的操作系统 %{ os_name } 不受官方支持。某些功能可能无法按预期工作。请考虑使用受支持的操作系统以获得最佳体验。" +msgid "" +"Your operating system %{ os_name } is not officially supported. Some " +"features may not work as expected. Please consider using a supported " +"operating system for the best experience." +msgstr "" +"您的操作系统 %{ os_name } 不受官方支持。某些功能可能无法按预期工作。请考虑使" +"用受支持的操作系统以获得最佳体验。" -#: src/views/home/IndexView.vue:543 -#: src/views/task/IndexView.vue:25 +#: src/views/home/IndexView.vue:543 src/views/task/IndexView.vue:25 msgid "Scheduled Tasks" msgstr "计划任务" @@ -7718,8 +7587,7 @@ msgstr "最近 15 分钟" msgid "cores" msgstr "核心" -#: src/views/home/IndexView.vue:617 -#: src/views/toolbox/disk/RaidView.vue:111 +#: src/views/home/IndexView.vue:617 src/views/toolbox/disk/RaidView.vue:111 #: src/views/toolbox/disk/RaidView.vue:142 #: src/views/toolbox/disk/SmartView.vue:104 msgid "Model" @@ -7753,8 +7621,7 @@ msgstr "已用物理内存" msgid "Physical Memory Available" msgstr "可用物理内存" -#: src/views/home/IndexView.vue:709 -#: src/views/toolbox/DiskView.vue:218 +#: src/views/home/IndexView.vue:709 src/views/toolbox/DiskView.vue:218 msgid "Free" msgstr "空闲" @@ -7762,8 +7629,7 @@ msgstr "空闲" msgid "Active" msgstr "活跃" -#: src/views/home/IndexView.vue:715 -#: src/views/project/ListView.vue:76 +#: src/views/home/IndexView.vue:715 src/views/project/ListView.vue:76 msgid "Inactive" msgstr "非活跃" @@ -7823,8 +7689,7 @@ msgstr "您尚未设置任何要在此处显示的应用!" msgid "Environment Information" msgstr "环境信息" -#: src/views/home/IndexView.vue:889 -#: src/views/toolbox/SystemView.vue:231 +#: src/views/home/IndexView.vue:889 src/views/toolbox/SystemView.vue:231 msgid "System Hostname" msgstr "系统主机名" @@ -7885,7 +7750,9 @@ msgid "Read/Write Latency" msgstr "读/写延迟" #: src/views/home/IndexView.vue:1027 -msgid "Are you sure you want to restart the server? This will disconnect all connections." +msgid "" +"Are you sure you want to restart the server? This will disconnect all " +"connections." msgstr "您确定要重启服务器吗?这将断开所有连接。" #: src/views/home/UpdateView.vue:107 @@ -7913,7 +7780,8 @@ msgid "Panel is restarting, please wait..." msgstr "正在重启面板,请稍候……" #: src/views/home/UpdateView.vue:152 -msgid "Update may have failed, please check the panel logs and refresh manually." +msgid "" +"Update may have failed, please check the panel logs and refresh manually." msgstr "更新可能失败,请检查面板日志并手动刷新。" #: src/views/home/UpdateView.vue:158 @@ -7928,8 +7796,7 @@ msgstr "有一个新版本可用" msgid "Current" msgstr "当前" -#: src/views/home/UpdateView.vue:189 -#: src/views/home/UpdateView.vue:209 +#: src/views/home/UpdateView.vue:189 src/views/home/UpdateView.vue:209 msgid "Latest" msgstr "最新" @@ -7941,29 +7808,22 @@ msgstr "立即更新" msgid "Changelog" msgstr "更新日志" -#: src/views/log/DatabaseLog.vue:30 -#: src/views/log/HttpLog.vue:30 -#: src/views/log/OperationLog.vue:33 -#: src/views/monitor/IndexView.vue:773 -#: src/views/monitor/IndexView.vue:827 -#: src/views/monitor/IndexView.vue:879 -#: src/views/monitor/IndexView.vue:935 -#: src/views/monitor/IndexView.vue:1002 +#: src/views/log/DatabaseLog.vue:30 src/views/log/HttpLog.vue:30 +#: src/views/log/OperationLog.vue:33 src/views/monitor/IndexView.vue:773 +#: src/views/monitor/IndexView.vue:827 src/views/monitor/IndexView.vue:879 +#: src/views/monitor/IndexView.vue:935 src/views/monitor/IndexView.vue:1002 #: src/views/website/StatsView.vue:138 msgid "Today" msgstr "今天" -#: src/views/log/DatabaseLog.vue:48 -#: src/views/log/HttpLog.vue:56 -#: src/views/log/OperationLog.vue:51 -#: src/views/log/SSHLog.vue:58 -#: src/views/toolbox/SystemView.vue:250 +#: src/views/log/DatabaseLog.vue:48 src/views/log/HttpLog.vue:56 +#: src/views/log/OperationLog.vue:51 src/views/log/SSHLog.vue:58 +#: src/views/tamper/IndexView.vue:182 src/views/toolbox/SystemView.vue:250 #: src/views/website/stats/ErrorsTab.vue:87 msgid "Time" msgstr "时间" -#: src/views/log/DatabaseLog.vue:57 -#: src/views/log/OperationLog.vue:60 +#: src/views/log/DatabaseLog.vue:57 src/views/log/OperationLog.vue:60 msgid "Level" msgstr "级别" @@ -7971,10 +7831,9 @@ msgstr "级别" msgid "Query" msgstr "查询" -#: src/views/log/DatabaseLog.vue:81 -#: src/views/log/HttpLog.vue:107 -#: src/views/toolbox/MigrationView.vue:697 -#: src/views/toolbox/MigrationView.vue:784 +#: src/views/log/DatabaseLog.vue:81 src/views/log/HttpLog.vue:107 +#: src/views/toolbox/MigrationView.vue:728 +#: src/views/toolbox/MigrationView.vue:815 msgid "Duration" msgstr "持续时间" @@ -7982,21 +7841,17 @@ msgstr "持续时间" msgid "Rows" msgstr "行" -#: src/views/log/DatabaseLog.vue:112 -#: src/views/log/HttpLog.vue:141 +#: src/views/log/DatabaseLog.vue:112 src/views/log/HttpLog.vue:141 #: src/views/log/OperationLog.vue:164 msgid "Date" msgstr "日期" -#: src/views/log/DatabaseLog.vue:119 -#: src/views/log/HttpLog.vue:148 -#: src/views/log/OperationLog.vue:171 -#: src/views/log/SSHLog.vue:102 +#: src/views/log/DatabaseLog.vue:119 src/views/log/HttpLog.vue:148 +#: src/views/log/OperationLog.vue:171 src/views/log/SSHLog.vue:102 msgid "Show entries" msgstr "显示条目" -#: src/views/log/HttpLog.vue:65 -#: src/views/website/stats/ErrorsTab.vue:94 +#: src/views/log/HttpLog.vue:65 src/views/website/stats/ErrorsTab.vue:94 msgid "Method" msgstr "方法" @@ -8024,10 +7879,8 @@ msgstr "SSH 日志" msgid "Operator" msgstr "操作员" -#: src/views/log/OperationLog.vue:87 -#: src/views/toolbox/IndexView.vue:29 -#: src/views/toolbox/PanelView.vue:129 -#: src/views/toolbox/PanelView.vue:148 +#: src/views/log/OperationLog.vue:87 src/views/toolbox/IndexView.vue:29 +#: src/views/toolbox/PanelView.vue:129 src/views/toolbox/PanelView.vue:148 msgid "System" msgstr "系统" @@ -8035,8 +7888,7 @@ msgstr "系统" msgid "Message" msgstr "消息" -#: src/views/log/OperationLog.vue:100 -#: src/views/toolbox/MigrationView.vue:785 +#: src/views/log/OperationLog.vue:100 src/views/toolbox/MigrationView.vue:816 msgid "Details" msgstr "详情" @@ -8048,8 +7900,7 @@ msgstr "%{count} 个字段" msgid "Accepted" msgstr "已接受" -#: src/views/log/SSHLog.vue:46 -#: src/views/project/ListView.vue:74 +#: src/views/log/SSHLog.vue:46 src/views/project/ListView.vue:74 #: src/views/task/TaskView.vue:44 msgid "Failed" msgstr "失败" @@ -8079,7 +7930,8 @@ msgid "Please enter captcha code" msgstr "请输入验证码" #: src/views/login/IndexView.vue:153 -msgid "Failed to get encryption public key, please refresh the page and try again" +msgid "" +"Failed to get encryption public key, please refresh the page and try again" msgstr "获取加密公钥失败,请刷新页面后重试" #: src/views/login/IndexView.vue:238 @@ -8110,9 +7962,8 @@ msgstr "记住我" msgid "Login with Passkey" msgstr "使用通行密钥登录" -#: src/views/monitor/IndexView.vue:335 -#: src/views/monitor/IndexView.vue:347 -#: src/views/toolbox/IndexView.vue:27 +#: src/views/monitor/IndexView.vue:335 src/views/monitor/IndexView.vue:347 +#: src/views/tamper/IndexView.vue:196 src/views/toolbox/IndexView.vue:27 #: src/views/toolbox/NetworkView.vue:75 msgid "Process" msgstr "进程" @@ -8141,8 +7992,7 @@ msgstr "15 分钟" msgid "Usage %" msgstr "使用率 %" -#: src/views/monitor/IndexView.vue:493 -#: src/views/toolbox/DiskView.vue:259 +#: src/views/monitor/IndexView.vue:493 src/views/toolbox/DiskView.vue:259 msgid "Usage" msgstr "使用率" @@ -8150,11 +8000,6 @@ msgstr "使用率" msgid "Unit MB" msgstr "单位 MB" -#: src/views/monitor/IndexView.vue:695 -#: src/views/monitor/IndexView.vue:704 -msgid "Operation successful" -msgstr "操作成功" - #: src/views/monitor/IndexView.vue:715 msgid "Enable Monitoring" msgstr "启用监控" @@ -8171,13 +8016,11 @@ msgstr "天" msgid "Collection Interval" msgstr "采集间隔" -#: src/views/monitor/IndexView.vue:727 -#: src/views/setting/SettingSafe.vue:45 +#: src/views/monitor/IndexView.vue:727 src/views/setting/SettingSafe.vue:45 msgid "minutes" msgstr "分钟" -#: src/views/monitor/IndexView.vue:743 -#: src/views/website/EditModal.vue:2101 +#: src/views/monitor/IndexView.vue:743 src/views/website/EditModal.vue:2111 msgid "Are you sure you want to clear?" msgstr "确定要清除吗?" @@ -8189,22 +8032,17 @@ msgstr "清除监控记录" msgid "Load" msgstr "负载" -#: src/views/monitor/IndexView.vue:767 -#: src/views/monitor/IndexView.vue:821 -#: src/views/monitor/IndexView.vue:873 -#: src/views/monitor/IndexView.vue:929 +#: src/views/monitor/IndexView.vue:767 src/views/monitor/IndexView.vue:821 +#: src/views/monitor/IndexView.vue:873 src/views/monitor/IndexView.vue:929 #: src/views/monitor/IndexView.vue:996 #: src/views/website/stats/OverviewTab.vue:259 #: src/views/website/StatsView.vue:144 msgid "Yesterday" msgstr "昨天" -#: src/views/monitor/IndexView.vue:779 -#: src/views/monitor/IndexView.vue:833 -#: src/views/monitor/IndexView.vue:885 -#: src/views/monitor/IndexView.vue:941 -#: src/views/monitor/IndexView.vue:1008 -#: src/views/website/StatsView.vue:147 +#: src/views/monitor/IndexView.vue:779 src/views/monitor/IndexView.vue:833 +#: src/views/monitor/IndexView.vue:885 src/views/monitor/IndexView.vue:941 +#: src/views/monitor/IndexView.vue:1008 src/views/website/StatsView.vue:147 msgid "Last 7 Days" msgstr "近 7 天" @@ -8264,28 +8102,26 @@ msgstr "创建 Python 项目" msgid "Create .NET Project" msgstr "创建 .NET 项目" -#: src/views/project/CreateModal.vue:407 -#: src/views/project/ListView.vue:295 +#: src/views/project/CreateModal.vue:407 src/views/project/ListView.vue:295 msgid "Create Project" msgstr "创建项目" -#: src/views/project/CreateModal.vue:423 -#: src/views/project/EditModal.vue:184 +#: src/views/project/CreateModal.vue:423 src/views/project/EditModal.vue:184 msgid "Project Name" msgstr "项目名" -#: src/views/project/CreateModal.vue:428 -#: src/views/project/EditModal.vue:189 +#: src/views/project/CreateModal.vue:428 src/views/project/EditModal.vue:189 msgid "Project name, used as service identifier" msgstr "项目名称,用作服务标识符" -#: src/views/project/CreateModal.vue:432 -#: src/views/project/EditModal.vue:203 +#: src/views/project/CreateModal.vue:432 src/views/project/EditModal.vue:203 msgid "Project Directory" msgstr "项目目录" #: src/views/project/CreateModal.vue:439 -msgid "Project root directory (if left empty, defaults to project directory/project name)" +msgid "" +"Project root directory (if left empty, defaults to project directory/project " +"name)" msgstr "项目根目录(如果留空,默认为项目目录/项目名称)" #: src/views/project/CreateModal.vue:454 @@ -8316,18 +8152,14 @@ msgstr "Java 版本" msgid "Select Java Version" msgstr "选择 Java 版本" -#: src/views/project/CreateModal.vue:506 -#: src/views/project/CreateModal.vue:532 -#: src/views/project/CreateModal.vue:558 -#: src/views/project/CreateModal.vue:584 +#: src/views/project/CreateModal.vue:506 src/views/project/CreateModal.vue:532 +#: src/views/project/CreateModal.vue:558 src/views/project/CreateModal.vue:584 #: src/views/project/CreateModal.vue:610 msgid "Framework" msgstr "框架" -#: src/views/project/CreateModal.vue:510 -#: src/views/project/CreateModal.vue:536 -#: src/views/project/CreateModal.vue:562 -#: src/views/project/CreateModal.vue:588 +#: src/views/project/CreateModal.vue:510 src/views/project/CreateModal.vue:536 +#: src/views/project/CreateModal.vue:562 src/views/project/CreateModal.vue:588 #: src/views/project/CreateModal.vue:614 msgid "Select Framework" msgstr "选择框架" @@ -8340,15 +8172,13 @@ msgstr "Node.js 版本" msgid "Select Node.js Version" msgstr "选择 Node.js 版本" -#: src/views/project/CreateModal.vue:548 -#: src/views/website/CreateModal.vue:236 -#: src/views/website/EditModal.vue:926 +#: src/views/project/CreateModal.vue:548 src/views/website/CreateModal.vue:236 +#: src/views/website/EditModal.vue:936 msgid "PHP Version" msgstr "PHP 版本" -#: src/views/project/CreateModal.vue:552 -#: src/views/website/CreateModal.vue:240 -#: src/views/website/EditModal.vue:931 +#: src/views/project/CreateModal.vue:552 src/views/website/CreateModal.vue:240 +#: src/views/website/EditModal.vue:941 msgid "Select PHP Version" msgstr "选择 PHP 版本" @@ -8368,8 +8198,7 @@ msgstr ".NET 版本" msgid "Select .NET Version" msgstr "选择 .NET 版本" -#: src/views/project/CreateModal.vue:630 -#: src/views/project/EditModal.vue:245 +#: src/views/project/CreateModal.vue:630 src/views/project/EditModal.vue:245 msgid "Select or enter user" msgstr "选择或输入用户" @@ -8377,15 +8206,13 @@ msgstr "选择或输入用户" msgid "Select www user if no special requirements" msgstr "如果没有特殊要求,请选择 www 用户" -#: src/views/project/CreateModal.vue:646 -#: src/views/project/EditModal.vue:262 +#: src/views/project/CreateModal.vue:646 src/views/project/EditModal.vue:262 msgid "e.g., php artisan serve, node app.js" msgstr "例如,php artisan serve、node app.js" #: src/views/project/CreateModal.vue:649 #: src/views/website/BulkCreateModal.vue:59 -#: src/views/website/CreateModal.vue:28 -#: src/views/website/IndexView.vue:26 +#: src/views/website/CreateModal.vue:28 src/views/website/IndexView.vue:26 #: src/views/website/ListView.vue:126 msgid "Reverse Proxy" msgstr "反向代理" @@ -8434,12 +8261,10 @@ msgstr "文件(附加)" msgid "File (truncate)" msgstr "文件(截断)" -#: src/views/project/EditModal.vue:72 -#: src/views/setting/SettingBase.vue:187 -#: src/views/setting/SettingSafe.vue:246 -#: src/views/website/EditModal.vue:778 -#: src/views/website/EditModal.vue:782 -#: src/views/website/EditModal.vue:997 +#: src/views/project/EditModal.vue:72 src/views/setting/SettingBase.vue:187 +#: src/views/setting/SettingSafe.vue:246 src/views/tamper/IndexView.vue:132 +#: src/views/website/EditModal.vue:788 src/views/website/EditModal.vue:792 +#: src/views/website/EditModal.vue:1007 msgid "Disabled" msgstr "禁用" @@ -8536,8 +8361,12 @@ msgid "Dependencies" msgstr "依赖" #: src/views/project/EditModal.vue:411 -msgid "Configure service dependencies to control startup order. Common services: network.target, mysqld.service, postgresql.service, redis.service" -msgstr "配置服务依赖关系以控制启动顺序。常见服务:network.target、mysqld.service、postgresql.service、redis.service" +msgid "" +"Configure service dependencies to control startup order. Common services: " +"network.target, mysqld.service, postgresql.service, redis.service" +msgstr "" +"配置服务依赖关系以控制启动顺序。常见服务:network.target、mysqld.service、" +"postgresql.service、redis.service" #: src/views/project/EditModal.vue:417 msgid "Requires" @@ -8572,7 +8401,9 @@ msgid "Start this service before the specified services" msgstr "在指定的服务之前启动此服务" #: src/views/project/EditModal.vue:462 -msgid "Set resource limits to prevent the service from consuming too many system resources" +msgid "" +"Set resource limits to prevent the service from consuming too many system " +"resources" msgstr "设置资源限制以防止服务消耗过多系统资源" #: src/views/project/EditModal.vue:470 @@ -8604,7 +8435,9 @@ msgid "Security Settings" msgstr "安全设置" #: src/views/project/EditModal.vue:509 -msgid "Security settings can enhance service isolation but may affect functionality. Please test thoroughly before enabling." +msgid "" +"Security settings can enhance service isolation but may affect " +"functionality. Please test thoroughly before enabling." msgstr "安全设置可以增强服务隔离,但可能会影响功能。请在启用之前进行充分测试。" #: src/views/project/EditModal.vue:515 @@ -8628,8 +8461,11 @@ msgid "Protect System" msgstr "保护系统" #: src/views/project/EditModal.vue:544 -msgid "true: /usr, /boot read-only; full: + /etc read-only; strict: entire filesystem read-only" -msgstr "true:/usr,/boot 为只读;full:+ /etc 为只读;strict:整个文件系统为只读" +msgid "" +"true: /usr, /boot read-only; full: + /etc read-only; strict: entire " +"filesystem read-only" +msgstr "" +"true:/usr,/boot 为只读;full:+ /etc 为只读;strict:整个文件系统为只读" #: src/views/project/EditModal.vue:552 msgid "Path Access Control" @@ -8663,10 +8499,8 @@ msgstr "Java" msgid "Node.js" msgstr "Node.js" -#: src/views/project/IndexView.vue:26 -#: src/views/website/BulkCreateModal.vue:60 -#: src/views/website/CreateModal.vue:29 -#: src/views/website/IndexView.vue:27 +#: src/views/project/IndexView.vue:26 src/views/website/BulkCreateModal.vue:60 +#: src/views/website/CreateModal.vue:29 src/views/website/IndexView.vue:27 #: src/views/website/ListView.vue:127 msgid "PHP" msgstr "PHP" @@ -8703,8 +8537,7 @@ msgstr "您确定要删除所选项目吗?" msgid "Enter user name" msgstr "输入用户名" -#: src/views/setting/CreateModal.vue:59 -#: src/views/setting/PasswordModal.vue:48 +#: src/views/setting/CreateModal.vue:59 src/views/setting/PasswordModal.vue:48 msgid "Enter user password" msgstr "输入用户密码" @@ -8712,13 +8545,11 @@ msgstr "输入用户密码" msgid "Enter user email" msgstr "输入用户邮箱" -#: src/views/setting/IndexView.vue:100 -#: src/views/setting/IndexView.vue:124 +#: src/views/setting/IndexView.vue:100 src/views/setting/IndexView.vue:124 msgid "Panel is restarting, page will refresh in 5 seconds" msgstr "面板正在重启,页面将在 5 秒后刷新" -#: src/views/setting/IndexView.vue:118 -#: src/views/website/EditModal.vue:225 +#: src/views/setting/IndexView.vue:118 src/views/website/EditModal.vue:235 msgid "Please wait..." msgstr "请稍候……" @@ -8766,13 +8597,14 @@ msgstr "注册已取消" msgid "Passkey registration failed: %{msg}" msgstr "通行密钥注册失败:%{msg}" -#: src/views/setting/PasskeyModal.vue:152 -#: src/views/setting/SettingUser.vue:116 +#: src/views/setting/PasskeyModal.vue:152 src/views/setting/SettingUser.vue:116 msgid "Passkeys" msgstr "通行密钥" #: src/views/setting/PasskeyModal.vue:162 -msgid "Passkeys are only available when using a bound domain with a trusted HTTPS certificate." +msgid "" +"Passkeys are only available when using a bound domain with a trusted HTTPS " +"certificate." msgstr "通行密钥只有在绑定域名和使用可信任 HTTPS 证书时才可用。" #: src/views/setting/PasskeyModal.vue:171 @@ -8791,8 +8623,7 @@ msgstr "稳定版" msgid "Beta" msgstr "测试版" -#: src/views/setting/SettingBase.vue:128 -#: src/views/setting/SettingBase.vue:129 +#: src/views/setting/SettingBase.vue:128 src/views/setting/SettingBase.vue:129 msgid "Panel Name" msgstr "面板名称" @@ -8885,7 +8716,9 @@ msgid "Login Timeout" msgstr "登录超时" #: src/views/setting/SettingSafe.vue:31 -msgid "Set the maximum lifetime (in minutes) of the login state, after which you need to log in again" +msgid "" +"Set the maximum lifetime (in minutes) of the login state, after which you " +"need to log in again" msgstr "设置登录状态的最长生命周期(单位:分钟),超过该时间后需要重新登录" #: src/views/setting/SettingSafe.vue:39 @@ -8897,19 +8730,26 @@ msgid "Access Entrance" msgstr "访问入口" #: src/views/setting/SettingSafe.vue:59 -msgid "Set the access entrance of the panel (e.g. /mypanel) to prevent some malicious access. Leave blank to disable (not recommended)" -msgstr "设置面板的访问入口(例如 /mypanel)以防止恶意访问。留空以禁用(不推荐)" +msgid "" +"Set the access entrance of the panel (e.g. /mypanel) to prevent some " +"malicious access. Leave blank to disable (not recommended)" +msgstr "" +"设置面板的访问入口(例如 /mypanel)以防止恶意访问。留空以禁用(不推荐)" #: src/views/setting/SettingSafe.vue:72 msgid "Entrance Error Page" msgstr "入口错误页" #: src/views/setting/SettingSafe.vue:77 -msgid "Set the error page to display when accessing with wrong entrance. 418 shows teapot page, Nginx 404 shows nginx style 404 page, Close Connection will close the connection immediately" -msgstr "设置当通过错误入口访问时显示的错误页面。418 显示茶壶页面,Nginx 404 显示 Nginx 风格的 404 页面,关闭连接将立即关闭连接" +msgid "" +"Set the error page to display when accessing with wrong entrance. 418 shows " +"teapot page, Nginx 404 shows nginx style 404 page, Close Connection will " +"close the connection immediately" +msgstr "" +"设置当通过错误入口访问时显示的错误页面。418 显示茶壶页面,Nginx 404 显示 " +"Nginx 风格的 404 页面,关闭连接将立即关闭连接" -#: src/views/setting/SettingSafe.vue:86 -#: src/views/setting/SettingSafe.vue:90 +#: src/views/setting/SettingSafe.vue:86 src/views/setting/SettingSafe.vue:90 msgid "418 I'm a teapot" msgstr "418 I'm a teapot" @@ -8926,7 +8766,9 @@ msgid "Login Captcha" msgstr "登录验证码" #: src/views/setting/SettingSafe.vue:103 -msgid "When enabled, a captcha will be required after 3 failed login attempts to prevent brute force attacks" +msgid "" +"When enabled, a captcha will be required after 3 failed login attempts to " +"prevent brute force attacks" msgstr "启用后,在 3 次登录失败后将要求输入验证码,以防止暴力破解攻击" #: src/views/setting/SettingSafe.vue:116 @@ -8934,8 +8776,12 @@ msgid "Request IP Header" msgstr "请求 IP 头" #: src/views/setting/SettingSafe.vue:121 -msgid "Set the header that carries the real IP of the client, useful when using CDN or reverse proxy. Leave blank to use the client IP directly" -msgstr "设置承载客户端真实 IP 的请求头,在使用 CDN 或反向代理时非常有用。留空以直接使用客户端 IP" +msgid "" +"Set the header that carries the real IP of the client, useful when using CDN " +"or reverse proxy. Leave blank to use the client IP directly" +msgstr "" +"设置承载客户端真实 IP 的请求头,在使用 CDN 或反向代理时非常有用。留空以直接使" +"用客户端 IP" #: src/views/setting/SettingSafe.vue:127 msgid "X-Real-IP" @@ -8946,7 +8792,9 @@ msgid "Bind Domain" msgstr "绑定域名" #: src/views/setting/SettingSafe.vue:139 -msgid "Restrict panel access to the specified domain names. Leave blank to allow access from any domain" +msgid "" +"Restrict panel access to the specified domain names. Leave blank to allow " +"access from any domain" msgstr "限制面板访问为指定的域名。留空以允许来自任何域名的访问" #: src/views/setting/SettingSafe.vue:156 @@ -8954,7 +8802,9 @@ msgid "Bind IP" msgstr "绑定 IP" #: src/views/setting/SettingSafe.vue:161 -msgid "Restrict panel access to the specified IP addresses. Leave blank to allow access from any IP" +msgid "" +"Restrict panel access to the specified IP addresses. Leave blank to allow " +"access from any IP" msgstr "限制面板访问为指定的 IP 地址。留空以允许来自任何 IP 的访问" #: src/views/setting/SettingSafe.vue:174 @@ -8962,7 +8812,9 @@ msgid "Bind UA" msgstr "绑定 UA" #: src/views/setting/SettingSafe.vue:179 -msgid "Restrict panel access to the specified User-Agent strings. Leave blank to allow access from any User-Agent" +msgid "" +"Restrict panel access to the specified User-Agent strings. Leave blank to " +"allow access from any User-Agent" msgstr "限制面板访问为指定的用户代理字符串。留空以允许任何用户代理的访问" #: src/views/setting/SettingSafe.vue:196 @@ -8970,24 +8822,38 @@ msgid "Offline Mode" msgstr "离线模式" #: src/views/setting/SettingSafe.vue:201 -msgid "When enabled, the panel will not attempt to connect to external services for updates or other features. This may limit some functionalities" -msgstr "启用后,面板将不会尝试连接外部服务以获取更新或其他功能。这可能会限制某些功能" +msgid "" +"When enabled, the panel will not attempt to connect to external services for " +"updates or other features. This may limit some functionalities" +msgstr "" +"启用后,面板将不会尝试连接外部服务以获取更新或其他功能。这可能会限制某些功能" #: src/views/setting/SettingSafe.vue:214 msgid "Auto Update" msgstr "自动更新" #: src/views/setting/SettingSafe.vue:219 -msgid "When enabled, the panel will automatically check for and install updates when they are available. It is recommended to keep this enabled to ensure you have the latest features and security patches" -msgstr "启用后,面板将自动检查并安装可用的更新。建议保持此功能启用,以确保您拥有最新的功能和安全补丁" +msgid "" +"When enabled, the panel will automatically check for and install updates " +"when they are available. It is recommended to keep this enabled to ensure " +"you have the latest features and security patches" +msgstr "" +"启用后,面板将自动检查并安装可用的更新。建议保持此功能启用,以确保您拥有最新" +"的功能和安全补丁" #: src/views/setting/SettingSafe.vue:232 msgid "Panel HTTPS" msgstr "面板 HTTPS" #: src/views/setting/SettingSafe.vue:237 -msgid "Enable HTTPS for the panel. ACME will automatically obtain and renew the certificate daily (requires panel accessible via public IP). Self-Signed generates a certificate automatically (browsers will show a warning). Custom allows you to provide your own certificate" -msgstr "为面板启用 HTTPS。ACME 将每天自动获取并更新证书(需支持通过公网 IP 访问面板)。自签名会自动生成证书(浏览器会显示警告)。自定义允许您提供自己的证书" +msgid "" +"Enable HTTPS for the panel. ACME will automatically obtain and renew the " +"certificate daily (requires panel accessible via public IP). Self-Signed " +"generates a certificate automatically (browsers will show a warning). Custom " +"allows you to provide your own certificate" +msgstr "" +"为面板启用 HTTPS。ACME 将每天自动获取并更新证书(需支持通过公网 IP 访问面" +"板)。自签名会自动生成证书(浏览器会显示警告)。自定义允许您提供自己的证书" #: src/views/setting/SettingSafe.vue:247 msgid "ACME (Auto)" @@ -9001,14 +8867,16 @@ msgstr "自签名" msgid "Custom Certificate" msgstr "自定义证书" -#: src/views/setting/SettingSafe.vue:257 -#: src/views/setting/SettingSafe.vue:262 +#: src/views/setting/SettingSafe.vue:257 src/views/setting/SettingSafe.vue:262 msgid "Panel Public IP" msgstr "面板公网 IP" #: src/views/setting/SettingSafe.vue:267 -msgid "Panel public IP is used to issue HTTPS certificates using ACME. Ensure that the entered IP address is accessible from the public network." -msgstr "面板公网 IP 用于使用 ACME 颁发 HTTPS 证书。确保输入的 IP 地址可以从公网访问。" +msgid "" +"Panel public IP is used to issue HTTPS certificates using ACME. Ensure that " +"the entered IP address is accessible from the public network." +msgstr "" +"面板公网 IP 用于使用 ACME 颁发 HTTPS 证书。确保输入的 IP 地址可以从公网访问。" #: src/views/setting/SettingUser.vue:56 msgid "2FA" @@ -9018,8 +8886,7 @@ msgstr "两步验证" msgid "Disabled successfully" msgstr "禁用成功" -#: src/views/setting/SettingUser.vue:104 -#: src/views/setting/TokenModal.vue:202 +#: src/views/setting/SettingUser.vue:104 src/views/setting/TokenModal.vue:202 msgid "Access Tokens" msgstr "访问令牌" @@ -9047,23 +8914,19 @@ msgstr "复制并关闭" msgid "Copy failed" msgstr "复制失败" -#: src/views/setting/TokenModal.vue:212 -#: src/views/setting/TokenModal.vue:239 +#: src/views/setting/TokenModal.vue:212 src/views/setting/TokenModal.vue:239 msgid "Create Access Token" msgstr "创建访问令牌" -#: src/views/setting/TokenModal.vue:248 -#: src/views/setting/TokenModal.vue:286 +#: src/views/setting/TokenModal.vue:248 src/views/setting/TokenModal.vue:286 msgid "IP White List" msgstr "IP 白名单" -#: src/views/setting/TokenModal.vue:251 -#: src/views/setting/TokenModal.vue:289 +#: src/views/setting/TokenModal.vue:251 src/views/setting/TokenModal.vue:289 msgid "127.0.0.1" msgstr "127.0.0.1" -#: src/views/setting/TokenModal.vue:259 -#: src/views/setting/TokenModal.vue:297 +#: src/views/setting/TokenModal.vue:259 src/views/setting/TokenModal.vue:297 msgid "Please select the expiration time" msgstr "请选择到期时间" @@ -9084,7 +8947,8 @@ msgid "Scan the QR code with your 2FA app and enter the code below" msgstr "用您的两步验证应用扫描二维码并在下方输入代码" #: src/views/setting/TwoFaModal.vue:73 -msgid "If you cannot scan the QR code, please enter the URL below in your 2FA app" +msgid "" +"If you cannot scan the QR code, please enter the URL below in your 2FA app" msgstr "如果您不能扫描二维码,请在您的两步验证应用中输入下面的 URL" #: src/views/setting/TwoFaModal.vue:86 @@ -9095,76 +8959,343 @@ msgstr "代码" msgid "Enter the code" msgstr "输入代码" -#: src/views/ssh/CreateModal.vue:53 -#: src/views/ssh/IndexView.vue:533 +#: src/views/ssh/CreateModal.vue:53 src/views/ssh/IndexView.vue:575 msgid "Create Host" msgstr "创建主机" -#: src/views/ssh/CreateModal.vue:76 -#: src/views/ssh/UpdateModal.vue:82 +#: src/views/ssh/CreateModal.vue:76 src/views/ssh/UpdateModal.vue:82 msgid "Authentication Method" msgstr "认证方式" -#: src/views/ssh/CreateModal.vue:95 -#: src/views/ssh/UpdateModal.vue:101 +#: src/views/ssh/CreateModal.vue:95 src/views/ssh/UpdateModal.vue:101 msgid "Passphrase" msgstr "密码短语" -#: src/views/ssh/CreateModal.vue:100 -#: src/views/ssh/UpdateModal.vue:106 +#: src/views/ssh/CreateModal.vue:100 src/views/ssh/UpdateModal.vue:106 msgid "Leave empty if key has no passphrase" msgstr "如果密钥没有密码短语,请留空" -#: src/views/ssh/CreateModal.vue:103 -#: src/views/ssh/UpdateModal.vue:109 +#: src/views/ssh/CreateModal.vue:103 src/views/ssh/UpdateModal.vue:109 msgid "Remarks" msgstr "备注" -#: src/views/ssh/IndexView.vue:65 -msgid "Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" +#: src/views/ssh/IndexView.vue:67 +msgid "" +"Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" msgstr "剪贴板在非 HTTPS 环境下不可用,请使用 Ctrl+V 粘贴" -#: src/views/ssh/IndexView.vue:121 +#: src/views/ssh/IndexView.vue:97 src/views/ssh/IndexView.vue:178 +#, fuzzy +msgid "File Transfer" +msgstr "文件名" + +#: src/views/ssh/IndexView.vue:128 msgid "Are you sure you want to delete this host?" msgstr "您确定要删除这个主机吗?" -#: src/views/ssh/IndexView.vue:284 +#: src/views/ssh/IndexView.vue:316 msgid "Connection closed. Please refresh." msgstr "连接已关闭。请刷新。" -#: src/views/ssh/IndexView.vue:289 +#: src/views/ssh/IndexView.vue:321 msgid "Connection error. Please refresh." msgstr "连接错误。请刷新。" -#: src/views/ssh/IndexView.vue:473 +#: src/views/ssh/IndexView.vue:511 msgid "New Session" msgstr "新建会话" -#: src/views/ssh/IndexView.vue:500 +#: src/views/ssh/IndexView.vue:538 msgid "Manage Hosts" msgstr "管理主机" -#: src/views/ssh/IndexView.vue:505 +#: src/views/ssh/IndexView.vue:543 msgid "Exit Fullscreen" msgstr "退出全屏" -#: src/views/ssh/IndexView.vue:505 +#: src/views/ssh/IndexView.vue:543 msgid "Fullscreen" msgstr "全屏" -#: src/views/ssh/IndexView.vue:527 -#: src/views/toolbox/SystemView.vue:237 +#: src/views/ssh/IndexView.vue:569 src/views/toolbox/SystemView.vue:237 msgid "Hosts" msgstr "Hosts" -#: src/views/ssh/IndexView.vue:552 +#: src/views/ssh/IndexView.vue:594 msgid "Bash session on this server" msgstr "此服务器上的 Bash 会话" +#: src/views/ssh/SftpBrowser.vue:133 +#, fuzzy +msgid "Parent Directory" +msgstr "项目目录" + +#: src/views/ssh/SftpBrowser.vue:145 +#, fuzzy +msgid "Create Directory" +msgstr "网站目录" + +#: src/views/ssh/SftpBrowser.vue:155 +#, fuzzy +msgid "Directory name" +msgstr "目录" + +#: src/views/ssh/SftpBrowser.vue:195 +#, fuzzy +msgid "Empty directory" +msgstr "根目录" + +#: src/views/ssh/SftpPanel.vue:60 +#, fuzzy +msgid "Please select files to transfer" +msgstr "请选择要删除的规则" + +#: src/views/ssh/SftpPanel.vue:64 +msgid "Source and destination are the same directory" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:134 +#, fuzzy +msgid "Connection closed" +msgstr "连接已关闭。" + +#: src/views/ssh/SftpPanel.vue:165 +#, fuzzy +msgid "Cancelled" +msgstr "已取消" + +#: src/views/ssh/SftpPanel.vue:206 +#, fuzzy +msgid "Transfer to right" +msgstr "进行传输" + +#: src/views/ssh/SftpPanel.vue:216 +#, fuzzy +msgid "Transfer to left" +msgstr "进行传输" + +#: src/views/ssh/SftpPanel.vue:234 +msgid "Transfer Queue" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:236 +msgid "Clear Finished" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:272 src/views/task/TaskView.vue:42 +#: src/views/toolbox/ProcessView.vue:53 src/views/toolbox/ProcessView.vue:89 +msgid "Waiting" +msgstr "等待中" + #: src/views/ssh/UpdateModal.vue:59 msgid "Update Host" msgstr "更新主机" +#: src/views/tamper/IndexView.vue:47 +msgid "eBPF mode is not available, please activate it first" +msgstr "" + +#: src/views/tamper/IndexView.vue:64 +msgid "Activate eBPF LSM" +msgstr "" + +#: src/views/tamper/IndexView.vue:65 +msgid "" +"The panel will modify the kernel boot parameters (append bpf to the LSM " +"list) and reboot the server immediately. All services will be interrupted " +"during the reboot. Continue?" +msgstr "" + +#: src/views/tamper/IndexView.vue:74 +msgid "The server is rebooting, please reconnect later" +msgstr "" + +#: src/views/tamper/IndexView.vue:116 src/views/tamper/RuleModal.vue:102 +#, fuzzy +msgid "Protected Directory" +msgstr "项目目录" + +#: src/views/tamper/IndexView.vue:118 +msgid "Extensions" +msgstr "" + +#: src/views/tamper/IndexView.vue:122 +#, fuzzy +msgid "All files" +msgstr "所有站点" + +#: src/views/tamper/IndexView.vue:132 src/views/tamper/RuleModal.vue:111 +#: src/views/task/CronView.vue:76 src/views/toolbox/WebHookView.vue:91 +#: src/views/toolbox/WebHookView.vue:386 +msgid "Enabled" +msgstr "已启用" + +#: src/views/tamper/IndexView.vue:149 +#, fuzzy +msgid "Are you sure to delete this rule?" +msgstr "您确定要删除该用户吗?" + +#: src/views/tamper/IndexView.vue:188 +#, fuzzy +msgid "Operation" +msgstr "操作员" + +#: src/views/tamper/IndexView.vue:202 src/views/tamper/IndexView.vue:370 +#: src/views/website/EditModal.vue:2116 +msgid "Clear Logs" +msgstr "清除日志" + +#: src/views/tamper/IndexView.vue:203 +#, fuzzy +msgid "Are you sure to clear all interception logs?" +msgstr "您确定要清理所有会话文件吗?" + +#: src/views/tamper/IndexView.vue:218 +#, fuzzy +msgid "Protection Rules" +msgstr "保护模式" + +#: src/views/tamper/IndexView.vue:219 +#, fuzzy +msgid "Interception Logs" +msgstr "操作日志" + +#: src/views/tamper/IndexView.vue:226 +msgid "Tamper protection is only supported on Linux." +msgstr "" + +#: src/views/tamper/IndexView.vue:233 +#, fuzzy +msgid "Protecting" +msgstr "保护模式" + +#: src/views/tamper/IndexView.vue:236 +#, fuzzy +msgid "Protected Files" +msgstr "保护 /home" + +#: src/views/tamper/IndexView.vue:239 +#, fuzzy +msgid "Protected Directories" +msgstr "项目目录" + +#: src/views/tamper/IndexView.vue:247 +#, fuzzy +msgid "Enable Protection" +msgstr "启用速率限制" + +#: src/views/tamper/IndexView.vue:252 +#, fuzzy +msgid "File Lock (chattr)" +msgstr "文件(截断)" + +#: src/views/tamper/IndexView.vue:256 +#, fuzzy +msgid "Mode Description" +msgstr "描述" + +#: src/views/tamper/IndexView.vue:259 +msgid "" +"Locks files with the immutable attribute, enforced by the kernel at the VFS " +"layer. Works on all distributions with no kernel dependency. Blocks " +"tampering by web processes, but not root." +msgstr "" + +#: src/views/tamper/IndexView.vue:266 +msgid "" +"Intercepts write/delete/rename via eBPF-LSM with per-process tracing. More " +"precise and auditable, but requires the bpf LSM to be active in the kernel." +msgstr "" + +#: src/views/tamper/IndexView.vue:272 +#, fuzzy +msgid "Block New Files" +msgstr "新文件" + +#: src/views/tamper/IndexView.vue:277 +msgid "" +"Delete newly created files of protected types in protected directories. When " +"off, new files are frozen and logged instead." +msgstr "" + +#: src/views/tamper/IndexView.vue:284 +#, fuzzy +msgid "Log Retention (days)" +msgstr "保存天数" + +#: src/views/tamper/IndexView.vue:294 src/views/website/SettingView.vue:108 +#: src/views/website/SettingView.vue:123 src/views/website/SettingView.vue:138 +#: src/views/website/SettingView.vue:162 src/views/website/SettingView.vue:202 +#: src/views/website/SettingView.vue:265 +msgid "Save Changes" +msgstr "保存更改" + +#: src/views/tamper/IndexView.vue:301 +#, fuzzy +msgid "eBPF Environment" +msgstr "环境" + +#: src/views/tamper/IndexView.vue:304 +#, fuzzy +msgid "Kernel Version" +msgstr "系统内核版本" + +#: src/views/tamper/IndexView.vue:307 +#, fuzzy +msgid "Active LSM" +msgstr "活跃" + +#: src/views/tamper/IndexView.vue:310 +#, fuzzy +msgid "eBPF Available" +msgstr "可用" + +#: src/views/tamper/IndexView.vue:312 src/views/toolbox/DiskView.vue:250 +msgid "Available" +msgstr "可用" + +#: src/views/tamper/IndexView.vue:312 +#, fuzzy +msgid "Unavailable" +msgstr "可用" + +#: src/views/tamper/IndexView.vue:326 +msgid "Activate eBPF and Reboot" +msgstr "" + +#: src/views/tamper/RuleModal.vue:83 +#, fuzzy +msgid "Edit Rule" +msgstr "添加规则" + +#: src/views/tamper/RuleModal.vue:90 +#, fuzzy +msgid "Quick Select Website" +msgstr "选择网站" + +#: src/views/tamper/RuleModal.vue:95 +msgid "Pick a website to fill name and path" +msgstr "" + +#: src/views/tamper/RuleModal.vue:100 +msgid "Rule identifier, usually the website name" +msgstr "" + +#: src/views/tamper/RuleModal.vue:105 +msgid "Protected Extensions" +msgstr "" + +#: src/views/tamper/RuleModal.vue:108 +#, fuzzy +msgid "Exclude Paths" +msgstr "可执行路径" + +#: src/views/tamper/RuleModal.vue:117 +msgid "" +"Leave extensions empty to protect all files (directories become append-" +"only). Excludes accept a path segment name (e.g. cache) or an absolute path." +msgstr "" + #: src/views/task/CreateModal.vue:36 msgid "# Enter your script content here" msgstr "# 在此处输入您的脚本内容" @@ -9205,20 +9336,17 @@ msgstr "日志轮转 - 网站" msgid "Log Rotation - Container" msgstr "日志轮转 - 容器" -#: src/views/task/CreateModal.vue:152 -#: src/views/task/CreateModal.vue:338 +#: src/views/task/CreateModal.vue:152 src/views/task/CreateModal.vue:338 #: src/views/task/CronView.vue:71 msgid "Log Rotation" msgstr "日志轮转" -#: src/views/task/CreateModal.vue:157 -#: src/views/task/CreateModal.vue:339 +#: src/views/task/CreateModal.vue:157 src/views/task/CreateModal.vue:339 #: src/views/task/CronView.vue:68 msgid "Access URL" msgstr "访问 URL" -#: src/views/task/CreateModal.vue:159 -#: src/views/task/CreateModal.vue:340 +#: src/views/task/CreateModal.vue:159 src/views/task/CreateModal.vue:340 #: src/views/task/CronView.vue:69 msgid "Sync Time" msgstr "同步时间" @@ -9231,32 +9359,25 @@ msgstr "创建计划任务" msgid "Edit Scheduled Task" msgstr "编辑计划任务" -#: src/views/task/CreateModal.vue:332 -#: src/views/task/CronView.vue:57 +#: src/views/task/CreateModal.vue:332 src/views/task/CronView.vue:57 msgid "Task Type" msgstr "任务类型" -#: src/views/task/CreateModal.vue:336 -#: src/views/task/CronView.vue:66 +#: src/views/task/CreateModal.vue:336 src/views/task/CronView.vue:66 msgid "Run Script" msgstr "运行脚本" -#: src/views/task/CreateModal.vue:337 -#: src/views/task/CronView.vue:67 +#: src/views/task/CreateModal.vue:337 src/views/task/CronView.vue:67 msgid "Backup Data" msgstr "备份数据" -#: src/views/task/CreateModal.vue:344 -#: src/views/task/CreateModal.vue:345 -#: src/views/task/CronView.vue:50 -#: src/views/task/CronView.vue:318 -#: src/views/task/CronView.vue:319 -#: src/views/task/TaskView.vue:27 +#: src/views/task/CreateModal.vue:344 src/views/task/CreateModal.vue:345 +#: src/views/task/CronView.vue:50 src/views/task/CronView.vue:318 +#: src/views/task/CronView.vue:319 src/views/task/TaskView.vue:27 msgid "Task Name" msgstr "任务名称" -#: src/views/task/CreateModal.vue:352 -#: src/views/task/CronView.vue:90 +#: src/views/task/CreateModal.vue:352 src/views/task/CronView.vue:90 #: src/views/task/CronView.vue:321 msgid "Task Schedule" msgstr "任务周期" @@ -9265,14 +9386,14 @@ msgstr "任务周期" msgid "Retention Count" msgstr "保留数量" -#: src/views/task/CreateModal.vue:362 -#: src/views/task/CronView.vue:324 +#: src/views/task/CreateModal.vue:362 src/views/task/CronView.vue:324 msgid "Process Lock" msgstr "进程锁" -#: src/views/task/CreateModal.vue:366 -#: src/views/task/CronView.vue:328 -msgid "Prevent duplicate execution: skip this run if the previous one is still running" +#: src/views/task/CreateModal.vue:366 src/views/task/CronView.vue:328 +msgid "" +"Prevent duplicate execution: skip this run if the previous one is still " +"running" msgstr "防止重复执行:如果上次运行未结束,则跳过本次运行" #: src/views/task/CreateModal.vue:373 @@ -9295,8 +9416,7 @@ msgstr "头部名称" msgid "Header Value" msgstr "头部值" -#: src/views/task/CreateModal.vue:418 -#: src/views/task/CreateModal.vue:423 +#: src/views/task/CreateModal.vue:418 src/views/task/CreateModal.vue:423 msgid "Request Body" msgstr "请求体" @@ -9340,8 +9460,7 @@ msgstr "Valkey" msgid "Rotation Type" msgstr "轮转类型" -#: src/views/task/CreateModal.vue:497 -#: src/views/task/CreateModal.vue:503 +#: src/views/task/CreateModal.vue:497 src/views/task/CreateModal.vue:503 #: src/views/website/CreateModal.vue:252 msgid "Select Database" msgstr "选择数据库" @@ -9350,8 +9469,7 @@ msgstr "选择数据库" msgid "Enter directory path" msgstr "输入目录路径" -#: src/views/task/CreateModal.vue:529 -#: src/views/task/CreateModal.vue:535 +#: src/views/task/CreateModal.vue:529 src/views/task/CreateModal.vue:535 msgid "Select Container" msgstr "选择容器" @@ -9359,12 +9477,6 @@ msgstr "选择容器" msgid "Select storage" msgstr "选择存储" -#: src/views/task/CronView.vue:76 -#: src/views/toolbox/WebHookView.vue:91 -#: src/views/toolbox/WebHookView.vue:386 -msgid "Enabled" -msgstr "已启用" - #: src/views/task/CronView.vue:110 msgid "Last Update Time" msgstr "最后更新时间" @@ -9397,12 +9509,6 @@ msgstr "您确定要删除所选任务吗?" msgid "Completed" msgstr "已完成" -#: src/views/task/TaskView.vue:42 -#: src/views/toolbox/ProcessView.vue:53 -#: src/views/toolbox/ProcessView.vue:89 -msgid "Waiting" -msgstr "等待中" - #: src/views/task/TaskView.vue:58 msgid "Completion Time" msgstr "完成时间" @@ -9431,8 +9537,11 @@ msgid "Pending benchmark" msgstr "待跑分" #: src/views/toolbox/BenchmarkView.vue:90 -msgid "Benchmark results are for reference only and may differ from actual performance due to system resource scheduling, caching, and other factors!" -msgstr "跑分结果仅供参考,由于系统资源调度、缓存和其他因素,可能与实际性能有所不同!" +msgid "" +"Benchmark results are for reference only and may differ from actual " +"performance due to system resource scheduling, caching, and other factors!" +msgstr "" +"跑分结果仅供参考,由于系统资源调度、缓存和其他因素,可能与实际性能有所不同!" #: src/views/toolbox/BenchmarkView.vue:97 msgid "Benchmarking in progress, it may take some time..." @@ -9510,8 +9619,7 @@ msgstr "跑分中……" msgid "Start Benchmark" msgstr "开始跑分" -#: src/views/toolbox/disk/RaidView.vue:93 -#: src/views/toolbox/DiskView.vue:603 +#: src/views/toolbox/disk/RaidView.vue:93 src/views/toolbox/DiskView.vue:603 #: src/views/toolbox/DiskView.vue:912 msgid "Device" msgstr "设备" @@ -9691,11 +9799,6 @@ msgstr "选择一个磁盘" msgid "No SMART-capable disks found" msgstr "未找到支持 SMART 的磁盘" -#: src/views/toolbox/disk/SmartView.vue:280 -#: src/views/toolbox/PanelView.vue:98 -msgid "Basic Info" -msgstr "基本信息" - #: src/views/toolbox/disk/SmartView.vue:301 msgid "Health Status" msgstr "健康状态" @@ -9720,8 +9823,7 @@ msgstr "无可用 SMART 属性" msgid "Failed to parse disk data, please refresh and try again" msgstr "无法解析磁盘数据,请刷新并重试" -#: src/views/toolbox/DiskView.vue:231 -#: src/views/toolbox/DiskView.vue:687 +#: src/views/toolbox/DiskView.vue:231 src/views/toolbox/DiskView.vue:687 #: src/views/toolbox/DiskView.vue:726 msgid "Partition" msgstr "分区" @@ -9730,29 +9832,25 @@ msgstr "分区" msgid "Used" msgstr "已用" -#: src/views/toolbox/DiskView.vue:250 -msgid "Available" -msgstr "可用" - #: src/views/toolbox/DiskView.vue:267 msgid "Not Mounted" msgstr "未挂载" -#: src/views/toolbox/DiskView.vue:290 -#: src/views/toolbox/DiskView.vue:605 +#: src/views/toolbox/DiskView.vue:290 src/views/toolbox/DiskView.vue:605 msgid "FS" msgstr "文件系统" -#: src/views/toolbox/DiskView.vue:340 -#: src/views/toolbox/DiskView.vue:476 -#: src/views/toolbox/DiskView.vue:517 -#: src/views/toolbox/DiskView.vue:560 +#: src/views/toolbox/DiskView.vue:340 src/views/toolbox/DiskView.vue:476 +#: src/views/toolbox/DiskView.vue:517 src/views/toolbox/DiskView.vue:560 msgid "Please fill in all fields" msgstr "请填写所有字段" #: src/views/toolbox/DiskView.vue:344 -msgid "Are you sure you want to mount %{ device } to %{ path } and write to fstab for auto-mount on boot?" -msgstr "您确定要将 %{ device } 挂载到 %{ path } 并写入 fstab 以在启动时自动挂载吗?" +msgid "" +"Are you sure you want to mount %{ device } to %{ path } and write to fstab " +"for auto-mount on boot?" +msgstr "" +"您确定要将 %{ device } 挂载到 %{ path } 并写入 fstab 以在启动时自动挂载吗?" #: src/views/toolbox/DiskView.vue:348 msgid "Are you sure you want to mount %{ device } to %{ path }?" @@ -9770,22 +9868,20 @@ msgstr "您确定要卸载这个分区吗?" msgid "Unmounted successfully" msgstr "卸载成功" -#: src/views/toolbox/DiskView.vue:390 -#: src/views/toolbox/DiskView.vue:437 +#: src/views/toolbox/DiskView.vue:390 src/views/toolbox/DiskView.vue:437 msgid "Please select a device" msgstr "请选择一个设备" -#: src/views/toolbox/DiskView.vue:394 -#: src/views/toolbox/DiskView.vue:417 -#: src/views/toolbox/DiskView.vue:459 -#: src/views/toolbox/DiskView.vue:499 -#: src/views/toolbox/DiskView.vue:542 -#: src/views/toolbox/DiskView.vue:586 +#: src/views/toolbox/DiskView.vue:394 src/views/toolbox/DiskView.vue:417 +#: src/views/toolbox/DiskView.vue:459 src/views/toolbox/DiskView.vue:499 +#: src/views/toolbox/DiskView.vue:542 src/views/toolbox/DiskView.vue:586 msgid "Dangerous Operation" msgstr "危险操作" #: src/views/toolbox/DiskView.vue:395 -msgid "Formatting will erase all data on the partition. This operation is irreversible. Are you sure?" +msgid "" +"Formatting will erase all data on the partition. This operation is " +"irreversible. Are you sure?" msgstr "格式化将删除分区上的所有数据。此操作是不可逆的。您确定吗?" #: src/views/toolbox/DiskView.vue:398 @@ -9801,8 +9897,12 @@ msgid "Please enter disk name" msgstr "请输入磁盘名称" #: src/views/toolbox/DiskView.vue:418 -msgid "This will delete all partitions on %{ device } and create a single partition. All data will be permanently lost. Are you absolutely sure?" -msgstr "这将删除 %{ device } 上的所有分区并创建一个单一的分区。所有数据将永久丢失。您确定吗?" +msgid "" +"This will delete all partitions on %{ device } and create a single " +"partition. All data will be permanently lost. Are you absolutely sure?" +msgstr "" +"这将删除 %{ device } 上的所有分区并创建一个单一的分区。所有数据将永久丢失。您" +"确定吗?" #: src/views/toolbox/DiskView.vue:422 msgid "Confirm Initialize" @@ -9837,7 +9937,9 @@ msgid "Volume group created successfully" msgstr "卷组创建成功" #: src/views/toolbox/DiskView.vue:500 -msgid "Are you sure you want to remove the volume group %{ name }? All logical volumes in this group will be deleted!" +msgid "" +"Are you sure you want to remove the volume group %{ name }? All logical " +"volumes in this group will be deleted!" msgstr "您确定要删除卷组 %{ name } 吗?此组中的所有逻辑卷将被删除!" #: src/views/toolbox/DiskView.vue:508 @@ -9845,7 +9947,8 @@ msgid "Volume group removed successfully" msgstr "卷组删除成功" #: src/views/toolbox/DiskView.vue:522 -msgid "Are you sure you want to create logical volume %{ name } with %{ size }GB?" +msgid "" +"Are you sure you want to create logical volume %{ name } with %{ size }GB?" msgstr "您确定要创建逻辑卷 %{ name },大小为 %{ size }GB 吗?" #: src/views/toolbox/DiskView.vue:530 @@ -9853,7 +9956,9 @@ msgid "Logical volume created successfully" msgstr "逻辑卷创建成功" #: src/views/toolbox/DiskView.vue:543 -msgid "Are you sure you want to remove the logical volume %{ path }? All data on this volume will be lost!" +msgid "" +"Are you sure you want to remove the logical volume %{ path }? All data on " +"this volume will be lost!" msgstr "您确定要删除逻辑卷 %{ path } 吗?该卷上的所有数据将丢失!" #: src/views/toolbox/DiskView.vue:551 @@ -9869,8 +9974,11 @@ msgid "Logical volume extended successfully" msgstr "逻辑卷扩展成功" #: src/views/toolbox/DiskView.vue:587 -msgid "Are you sure you want to remove the fstab entry for %{ mountPoint }? This will prevent auto-mount on boot." -msgstr "您确定要删除 %{ mountPoint } 的 fstab 条目吗?这将阻止在启动时自动挂载。" +msgid "" +"Are you sure you want to remove the fstab entry for %{ mountPoint }? This " +"will prevent auto-mount on boot." +msgstr "" +"您确定要删除 %{ mountPoint } 的 fstab 条目吗?这将阻止在启动时自动挂载。" #: src/views/toolbox/DiskView.vue:595 msgid "Fstab entry removed successfully" @@ -9892,13 +10000,11 @@ msgstr "%{ count } 个分区" msgid "No disks found" msgstr "未找到磁盘" -#: src/views/toolbox/DiskView.vue:683 -#: src/views/toolbox/DiskView.vue:713 +#: src/views/toolbox/DiskView.vue:683 src/views/toolbox/DiskView.vue:713 msgid "Mount" msgstr "挂载" -#: src/views/toolbox/DiskView.vue:691 -#: src/views/toolbox/DiskView.vue:730 +#: src/views/toolbox/DiskView.vue:691 src/views/toolbox/DiskView.vue:730 msgid "Select partition" msgstr "选择分区" @@ -9918,8 +10024,7 @@ msgstr "例如 defaults,noatime" msgid "Auto-mount on boot" msgstr "启动时自动挂载" -#: src/views/toolbox/DiskView.vue:719 -#: src/views/toolbox/DiskView.vue:741 +#: src/views/toolbox/DiskView.vue:719 src/views/toolbox/DiskView.vue:741 msgctxt "disk action" msgid "Format" msgstr "格式化" @@ -9928,18 +10033,18 @@ msgstr "格式化" msgid "Warning: Formatting will erase all data!" msgstr "警告:格式化将清除所有数据!" -#: src/views/toolbox/DiskView.vue:735 -#: src/views/toolbox/DiskView.vue:767 +#: src/views/toolbox/DiskView.vue:735 src/views/toolbox/DiskView.vue:767 msgid "Filesystem Type" msgstr "文件系统类型" -#: src/views/toolbox/DiskView.vue:747 -#: src/views/toolbox/DiskView.vue:773 +#: src/views/toolbox/DiskView.vue:747 src/views/toolbox/DiskView.vue:773 msgid "Initialize" msgstr "初始化" #: src/views/toolbox/DiskView.vue:751 -msgid "Warning: This will delete all partitions and create a single partition. All data will be lost!" +msgid "" +"Warning: This will delete all partitions and create a single partition. All " +"data will be lost!" msgstr "警告:这将删除所有分区并创建一个单分区。所有数据将丢失!" #: src/views/toolbox/DiskView.vue:762 @@ -9958,8 +10063,7 @@ msgstr "无 fstab 条目" msgid "LVM Management" msgstr "LVM 管理" -#: src/views/toolbox/DiskView.vue:803 -#: src/views/toolbox/DiskView.vue:935 +#: src/views/toolbox/DiskView.vue:803 src/views/toolbox/DiskView.vue:935 msgid "Physical Volumes" msgstr "物理卷" @@ -9983,8 +10087,7 @@ msgstr "逻辑卷" msgid "No logical volumes" msgstr "无逻辑卷" -#: src/views/toolbox/DiskView.vue:909 -#: src/views/toolbox/DiskView.vue:922 +#: src/views/toolbox/DiskView.vue:909 src/views/toolbox/DiskView.vue:922 msgid "Create PV" msgstr "创建物理卷" @@ -9992,8 +10095,7 @@ msgstr "创建物理卷" msgid "Select device" msgstr "选择设备" -#: src/views/toolbox/DiskView.vue:928 -#: src/views/toolbox/DiskView.vue:946 +#: src/views/toolbox/DiskView.vue:928 src/views/toolbox/DiskView.vue:946 msgid "Create VG" msgstr "创建卷组" @@ -10009,8 +10111,7 @@ msgstr "输入卷组名" msgid "Select PVs" msgstr "选择物理卷" -#: src/views/toolbox/DiskView.vue:952 -#: src/views/toolbox/DiskView.vue:975 +#: src/views/toolbox/DiskView.vue:952 src/views/toolbox/DiskView.vue:975 msgid "Create LV" msgstr "创建逻辑卷" @@ -10034,8 +10135,7 @@ msgstr "选择卷组" msgid "Size (GB)" msgstr "大小(GB)" -#: src/views/toolbox/DiskView.vue:981 -#: src/views/toolbox/DiskView.vue:1004 +#: src/views/toolbox/DiskView.vue:981 src/views/toolbox/DiskView.vue:1004 msgid "Extend LV" msgstr "扩展逻辑卷" @@ -10124,7 +10224,9 @@ msgid "Log Cleaner" msgstr "日志清理" #: src/views/toolbox/LogView.vue:142 -msgid "Scan and clean redundant logs to free up disk space. Cleaning is irreversible." +msgid "" +"Scan and clean redundant logs to free up disk space. Cleaning is " +"irreversible." msgstr "扫描并清理冗余日志以释放磁盘空间。清理操作不可逆。" #: src/views/toolbox/LogView.vue:158 @@ -10159,244 +10261,275 @@ msgstr "扫描" msgid "Clean" msgstr "清理" -#: src/views/toolbox/MigrationView.vue:88 -#: src/views/toolbox/MigrationView.vue:112 +#: src/views/toolbox/MigrationView.vue:89 +#: src/views/toolbox/MigrationView.vue:113 msgid "Please fill in all connection fields" msgstr "请填写所有连接字段" -#: src/views/toolbox/MigrationView.vue:124 +#: src/views/toolbox/MigrationView.vue:125 msgid "Environment check refreshed" msgstr "环境检查已刷新" -#: src/views/toolbox/MigrationView.vue:142 -msgid "Web server mismatch: local is %{local}, remote is %{remote}. Migration cannot proceed." +#: src/views/toolbox/MigrationView.vue:144 +msgid "" +"Web server mismatch: local is %{local}, remote is %{remote}. Migration " +"cannot proceed." msgstr "Web 服务器不匹配:本地为 %{local},远程为 %{remote}。无法继续迁移。" -#: src/views/toolbox/MigrationView.vue:145 -#: src/views/toolbox/MigrationView.vue:146 +#: src/views/toolbox/MigrationView.vue:147 +#: src/views/toolbox/MigrationView.vue:148 msgid "none" msgstr "none" -#: src/views/toolbox/MigrationView.vue:160 -msgid "%{type} is installed locally but not on the remote server. Related projects may need reconfiguration." -msgstr "%{type} 已在本地安装,但未在远程服务器上安装。相关项目可能需要重新配置。" +#: src/views/toolbox/MigrationView.vue:162 +msgid "" +"%{type} is installed locally but not on the remote server. Related projects " +"may need reconfiguration." +msgstr "" +"%{type} 已在本地安装,但未在远程服务器上安装。相关项目可能需要重新配置。" -#: src/views/toolbox/MigrationView.vue:180 -msgid "%{type} is installed locally but not on the remote server. Database migration for this type will be skipped." -msgstr "%{type} 已在本地安装,但未在远程服务器上安装。此类型的数据库迁移将被跳过。" +#: src/views/toolbox/MigrationView.vue:182 +msgid "" +"%{type} is installed locally but not on the remote server. Database " +"migration for this type will be skipped." +msgstr "" +"%{type} 已在本地安装,但未在远程服务器上安装。此类型的数据库迁移将被跳过。" -#: src/views/toolbox/MigrationView.vue:248 +#: src/views/toolbox/MigrationView.vue:203 +#, fuzzy +msgid "Ignore Environment Check" +msgstr "环境预检查" + +#: src/views/toolbox/MigrationView.vue:204 +msgid "" +"Due to environment inconsistency, migrated items may not work properly after " +"migration. Do you still want to continue?" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:269 msgid "Please select at least one item to migrate" msgstr "请至少选择一个要迁移的项目" -#: src/views/toolbox/MigrationView.vue:253 +#: src/views/toolbox/MigrationView.vue:274 msgid "Confirm Migration" msgstr "确认迁移" -#: src/views/toolbox/MigrationView.vue:254 -msgid "Are you sure you want to start migration? This will transfer the selected items to the remote server." +#: src/views/toolbox/MigrationView.vue:275 +msgid "" +"Are you sure you want to start migration? This will transfer the selected " +"items to the remote server." msgstr "您确定要开始迁移吗?这将把选定的项目传输到远程服务器。" -#: src/views/toolbox/MigrationView.vue:345 +#: src/views/toolbox/MigrationView.vue:366 msgid "Reset Migration" msgstr "重置迁移" -#: src/views/toolbox/MigrationView.vue:346 +#: src/views/toolbox/MigrationView.vue:367 msgid "Are you sure you want to reset the migration state?" msgstr "您确定要重置迁移状态吗?" -#: src/views/toolbox/MigrationView.vue:369 +#: src/views/toolbox/MigrationView.vue:391 msgid "Migration state has been reset" msgstr "迁移状态已重置" -#: src/views/toolbox/MigrationView.vue:407 +#: src/views/toolbox/MigrationView.vue:429 msgid "Enter remote server info" msgstr "输入远程服务器信息" -#: src/views/toolbox/MigrationView.vue:409 +#: src/views/toolbox/MigrationView.vue:431 msgid "Pre-check" msgstr "预检查" -#: src/views/toolbox/MigrationView.vue:409 +#: src/views/toolbox/MigrationView.vue:431 msgid "Verify environment" msgstr "校验环境" -#: src/views/toolbox/MigrationView.vue:411 +#: src/views/toolbox/MigrationView.vue:433 msgid "Select Items" msgstr "选择项目" -#: src/views/toolbox/MigrationView.vue:412 +#: src/views/toolbox/MigrationView.vue:434 msgid "Choose what to migrate" msgstr "选择要迁移的内容" -#: src/views/toolbox/MigrationView.vue:414 +#: src/views/toolbox/MigrationView.vue:436 msgid "Migrating" msgstr "迁移中" -#: src/views/toolbox/MigrationView.vue:414 +#: src/views/toolbox/MigrationView.vue:436 msgid "Transfer in progress" msgstr "进行传输" -#: src/views/toolbox/MigrationView.vue:415 +#: src/views/toolbox/MigrationView.vue:437 msgid "Complete" msgstr "完成" -#: src/views/toolbox/MigrationView.vue:415 +#: src/views/toolbox/MigrationView.vue:437 msgid "View results" msgstr "查看结果" -#: src/views/toolbox/MigrationView.vue:420 +#: src/views/toolbox/MigrationView.vue:442 msgid "Remote Server Connection" msgstr "连接远程服务器" -#: src/views/toolbox/MigrationView.vue:422 +#: src/views/toolbox/MigrationView.vue:444 msgid "Panel URL" msgstr "面板 URL" -#: src/views/toolbox/MigrationView.vue:425 +#: src/views/toolbox/MigrationView.vue:447 msgid "e.g. https://remote-server:8888" msgstr "例如 https://remote-server:8888" -#: src/views/toolbox/MigrationView.vue:428 +#: src/views/toolbox/MigrationView.vue:450 msgid "Token ID" msgstr "令牌 ID" -#: src/views/toolbox/MigrationView.vue:431 +#: src/views/toolbox/MigrationView.vue:453 msgid "API Token ID" msgstr "API 令牌 ID" -#: src/views/toolbox/MigrationView.vue:436 +#: src/views/toolbox/MigrationView.vue:458 msgid "Access Token" msgstr "访问令牌" -#: src/views/toolbox/MigrationView.vue:441 +#: src/views/toolbox/MigrationView.vue:463 msgid "API Access Token" msgstr "API 访问令牌" -#: src/views/toolbox/MigrationView.vue:453 +#: src/views/toolbox/MigrationView.vue:475 msgid "Environment Pre-check" msgstr "环境预检查" -#: src/views/toolbox/MigrationView.vue:472 +#: src/views/toolbox/MigrationView.vue:494 msgid "Remote" msgstr "远程" -#: src/views/toolbox/MigrationView.vue:478 +#: src/views/toolbox/MigrationView.vue:500 msgid "Web Server" msgstr "Web 服务器" -#: src/views/toolbox/MigrationView.vue:488 -#: src/views/toolbox/MigrationView.vue:539 +#: src/views/toolbox/MigrationView.vue:510 +#: src/views/toolbox/MigrationView.vue:561 msgid "Match" msgstr "匹配" -#: src/views/toolbox/MigrationView.vue:489 +#: src/views/toolbox/MigrationView.vue:511 msgid "Mismatch" msgstr "不匹配" -#: src/views/toolbox/MigrationView.vue:508 -#: src/views/toolbox/MigrationView.vue:523 +#: src/views/toolbox/MigrationView.vue:530 +#: src/views/toolbox/MigrationView.vue:545 msgid "Not installed" msgstr "未安装" -#: src/views/toolbox/MigrationView.vue:540 +#: src/views/toolbox/MigrationView.vue:562 msgid "Different" msgstr "不同" -#: src/views/toolbox/MigrationView.vue:603 +#: src/views/toolbox/MigrationView.vue:619 +#, fuzzy +msgid "Ignore environment check" +msgstr "环境预检查" + +#: src/views/toolbox/MigrationView.vue:634 msgid "Select Migration Items" msgstr "选择迁移项目" -#: src/views/toolbox/MigrationView.vue:605 +#: src/views/toolbox/MigrationView.vue:636 msgid "Websites" msgstr "网站" -#: src/views/toolbox/MigrationView.vue:616 +#: src/views/toolbox/MigrationView.vue:647 msgid "No websites found" msgstr "未找到网站" -#: src/views/toolbox/MigrationView.vue:620 +#: src/views/toolbox/MigrationView.vue:651 msgid "Databases" msgstr "数据库" -#: src/views/toolbox/MigrationView.vue:632 +#: src/views/toolbox/MigrationView.vue:663 msgid "No databases found" msgstr "未找到数据库" -#: src/views/toolbox/MigrationView.vue:636 +#: src/views/toolbox/MigrationView.vue:667 msgid "Database Users" msgstr "数据库用户" -#: src/views/toolbox/MigrationView.vue:649 +#: src/views/toolbox/MigrationView.vue:680 msgid "No database users found" msgstr "未找到数据库用户" -#: src/views/toolbox/MigrationView.vue:653 +#: src/views/toolbox/MigrationView.vue:684 msgid "Projects" msgstr "项目" -#: src/views/toolbox/MigrationView.vue:665 +#: src/views/toolbox/MigrationView.vue:696 msgid "No projects found" msgstr "未找到项目" -#: src/views/toolbox/MigrationView.vue:671 +#: src/views/toolbox/MigrationView.vue:702 msgid "Stop services during migration to ensure data consistency (recommended)" msgstr "迁移期间停止服务以确保数据一致性(推荐)" -#: src/views/toolbox/MigrationView.vue:683 +#: src/views/toolbox/MigrationView.vue:714 msgid "Start Migration" msgstr "开始迁移" -#: src/views/toolbox/MigrationView.vue:689 +#: src/views/toolbox/MigrationView.vue:720 msgid "Migration Progress" msgstr "迁移进度" -#: src/views/toolbox/MigrationView.vue:717 +#: src/views/toolbox/MigrationView.vue:748 msgid "Migration Logs" msgstr "迁移日志" -#: src/views/toolbox/MigrationView.vue:726 -#: src/views/toolbox/MigrationView.vue:831 +#: src/views/toolbox/MigrationView.vue:757 +#: src/views/toolbox/MigrationView.vue:862 msgid "Download Log" msgstr "下载日志" -#: src/views/toolbox/MigrationView.vue:750 +#: src/views/toolbox/MigrationView.vue:781 msgid "Migration in progress..." msgstr "迁移进行中……" -#: src/views/toolbox/MigrationView.vue:757 +#: src/views/toolbox/MigrationView.vue:788 msgid "Migration Complete" msgstr "迁移完成" -#: src/views/toolbox/MigrationView.vue:762 +#: src/views/toolbox/MigrationView.vue:793 msgid "All items migrated successfully" msgstr "所有项目迁移成功" -#: src/views/toolbox/MigrationView.vue:763 +#: src/views/toolbox/MigrationView.vue:794 msgid "Migration completed with some issues" msgstr "迁移部分完成" -#: src/views/toolbox/MigrationView.vue:769 +#: src/views/toolbox/MigrationView.vue:800 msgid "Started" msgstr "开始" -#: src/views/toolbox/MigrationView.vue:771 +#: src/views/toolbox/MigrationView.vue:802 msgid "Ended" msgstr "结束" -#: src/views/toolbox/MigrationView.vue:803 +#: src/views/toolbox/MigrationView.vue:834 msgid "Migration succeeded" msgstr "迁移成功" -#: src/views/toolbox/MigrationView.vue:819 +#: src/views/toolbox/MigrationView.vue:850 msgid "Reminder" msgstr "提醒" -#: src/views/toolbox/MigrationView.vue:823 -msgid "Some environments differ between local and remote servers. You may need to adjust settings on the remote server otherwise related items may not work properly after migration." -msgstr "本地和远程服务器之间存在一些环境差异。您可能需要在远程服务器上调整设置,否则相关项目在迁移后可能无法正常工作。" +#: src/views/toolbox/MigrationView.vue:854 +msgid "" +"Some environments differ between local and remote servers. You may need to " +"adjust settings on the remote server otherwise related items may not work " +"properly after migration." +msgstr "" +"本地和远程服务器之间存在一些环境差异。您可能需要在远程服务器上调整设置,否则" +"相关项目在迁移后可能无法正常工作。" -#: src/views/toolbox/MigrationView.vue:834 +#: src/views/toolbox/MigrationView.vue:865 msgid "Start New Migration" msgstr "开始新迁移" @@ -10436,8 +10569,7 @@ msgstr "Goroutines" msgid "Cgo Calls" msgstr "Cgo 调用" -#: src/views/toolbox/PanelView.vue:123 -#: src/views/toolbox/PanelView.vue:145 +#: src/views/toolbox/PanelView.vue:123 src/views/toolbox/PanelView.vue:145 msgid "Allocated" msgstr "已分配" @@ -10457,8 +10589,7 @@ msgstr "分配次数" msgid "Frees" msgstr "释放次数" -#: src/views/toolbox/PanelView.vue:151 -#: src/views/toolbox/ProcessView.vue:51 +#: src/views/toolbox/PanelView.vue:151 src/views/toolbox/ProcessView.vue:51 #: src/views/toolbox/ProcessView.vue:85 msgid "Idle" msgstr "空闲" @@ -10539,18 +10670,15 @@ msgstr "总计:%{ count }" msgid "All Status" msgstr "所有状态" -#: src/views/toolbox/ProcessView.vue:49 -#: src/views/toolbox/ProcessView.vue:81 +#: src/views/toolbox/ProcessView.vue:49 src/views/toolbox/ProcessView.vue:81 msgid "Sleeping" msgstr "睡眠" -#: src/views/toolbox/ProcessView.vue:52 -#: src/views/toolbox/ProcessView.vue:87 +#: src/views/toolbox/ProcessView.vue:52 src/views/toolbox/ProcessView.vue:87 msgid "Zombie" msgstr "僵尸进程" -#: src/views/toolbox/ProcessView.vue:54 -#: src/views/toolbox/ProcessView.vue:91 +#: src/views/toolbox/ProcessView.vue:54 src/views/toolbox/ProcessView.vue:91 msgid "Locked" msgstr "已锁定" @@ -10594,18 +10722,15 @@ msgstr "用户信号 2(SIGUSR2)" msgid "Blocked" msgstr "阻塞" -#: src/views/toolbox/ProcessView.vue:114 -#: src/views/toolbox/ProcessView.vue:390 +#: src/views/toolbox/ProcessView.vue:114 src/views/toolbox/ProcessView.vue:390 msgid "Parent PID" msgstr "父进程 PID" -#: src/views/toolbox/ProcessView.vue:121 -#: src/views/toolbox/ProcessView.vue:402 +#: src/views/toolbox/ProcessView.vue:121 src/views/toolbox/ProcessView.vue:402 msgid "Threads" msgstr "线程" -#: src/views/toolbox/ProcessView.vue:162 -#: src/views/toolbox/ProcessView.vue:423 +#: src/views/toolbox/ProcessView.vue:162 src/views/toolbox/ProcessView.vue:423 msgid "Start Time" msgstr "启动时间" @@ -10653,10 +10778,6 @@ msgstr "可执行路径" msgid "Command Line" msgstr "命令行" -#: src/views/toolbox/ProcessView.vue:453 -msgid "No environment variables" -msgstr "无环境变量" - #: src/views/toolbox/ProcessView.vue:461 msgid "Open Files" msgstr "已打开文件" @@ -10713,8 +10834,7 @@ msgstr "请输入密码" msgid "Root password updated" msgstr "Root 密码已更新" -#: src/views/toolbox/SshView.vue:135 -#: src/views/toolbox/SshView.vue:148 +#: src/views/toolbox/SshView.vue:135 src/views/toolbox/SshView.vue:148 msgid "SSH key generated" msgstr "SSH 密钥已生成" @@ -10782,10 +10902,6 @@ msgstr "输入新密码" msgid "Generate Random" msgstr "生成随机密码" -#: src/views/toolbox/SshView.vue:314 -msgid "Reset" -msgstr "重置" - #: src/views/toolbox/SshView.vue:324 msgid "Root SSH Key" msgstr "Root SSH 密钥" @@ -10799,7 +10915,9 @@ msgid "Root Private Key" msgstr "Root 私钥" #: src/views/toolbox/SshView.vue:365 -msgid "This is the private key of the root user. Keep it safe and use it to login to this server." +msgid "" +"This is the private key of the root user. Keep it safe and use it to login " +"to this server." msgstr "这是 root 用户的私钥。请妥善保管,并用它登录到此服务器。" #: src/views/toolbox/SshView.vue:375 @@ -10847,7 +10965,9 @@ msgid "Enter hostname, e.g. myserver" msgstr "输入主机名,例如 myserver" #: src/views/toolbox/SystemView.vue:254 -msgid "After manually changing the time, it may still be overwritten by system automatic time synchronization." +msgid "" +"After manually changing the time, it may still be overwritten by system " +"automatic time synchronization." msgstr "手动更改时间后,系统自动时间同步可能仍会覆盖设置。" #: src/views/toolbox/SystemView.vue:260 @@ -10883,11 +11003,15 @@ msgid "System NTP Server Configuration" msgstr "系统 NTP 服务器配置" #: src/views/toolbox/SystemView.vue:318 -msgid "Unable to detect NTP service. Please ensure chrony or systemd-timesyncd is installed." +msgid "" +"Unable to detect NTP service. Please ensure chrony or systemd-timesyncd is " +"installed." msgstr "无法检测到 NTP 服务。请确保已安装 chrony 或 systemd-timesyncd。" #: src/views/toolbox/SystemView.vue:325 -msgid "Current NTP service: %{ service }. Changes will be applied to system configuration." +msgid "" +"Current NTP service: %{ service }. Changes will be applied to system " +"configuration." msgstr "当前 NTP 服务:%{ service }。更改将应用于系统配置。" #: src/views/toolbox/SystemView.vue:338 @@ -10898,12 +11022,6 @@ msgstr "输入 NTP 服务器地址" msgid "Reset to Default" msgstr "重置为默认值" -#: src/views/toolbox/WebHookView.vue:73 -#: src/views/toolbox/WebHookView.vue:339 -#: src/views/toolbox/WebHookView.vue:380 -msgid "Raw Output" -msgstr "原始输出" - #: src/views/toolbox/WebHookView.vue:105 msgid "Call Count" msgstr "调用次数" @@ -10924,38 +11042,31 @@ msgstr "您确定要删除此 Web 钩子吗?" msgid "URL copied to clipboard" msgstr "URL 已复制到剪贴板" -#: src/views/toolbox/WebHookView.vue:232 -#: src/views/toolbox/WebHookView.vue:259 +#: src/views/toolbox/WebHookView.vue:232 src/views/toolbox/WebHookView.vue:259 msgid "Please enter a name" msgstr "请输入名称" -#: src/views/toolbox/WebHookView.vue:236 -#: src/views/toolbox/WebHookView.vue:263 +#: src/views/toolbox/WebHookView.vue:236 src/views/toolbox/WebHookView.vue:263 msgid "Please enter a script" msgstr "请输入脚本" -#: src/views/toolbox/WebHookView.vue:295 -#: src/views/toolbox/WebHookView.vue:323 +#: src/views/toolbox/WebHookView.vue:295 src/views/toolbox/WebHookView.vue:323 msgid "Create WebHook" msgstr "创建 Web 钩子" -#: src/views/toolbox/WebHookView.vue:331 -#: src/views/toolbox/WebHookView.vue:372 +#: src/views/toolbox/WebHookView.vue:331 src/views/toolbox/WebHookView.vue:372 msgid "Enter WebHook name" msgstr "输入 Web 钩子名称" -#: src/views/toolbox/WebHookView.vue:336 -#: src/views/toolbox/WebHookView.vue:377 +#: src/views/toolbox/WebHookView.vue:336 src/views/toolbox/WebHookView.vue:377 msgid "User to run the script (default: root)" msgstr "运行脚本用户(默认:root)" -#: src/views/toolbox/WebHookView.vue:342 -#: src/views/toolbox/WebHookView.vue:383 +#: src/views/toolbox/WebHookView.vue:342 src/views/toolbox/WebHookView.vue:383 msgid "Return script output as raw text instead of JSON" msgstr "将脚本输出作为原始文本而非 JSON 返回" -#: src/views/toolbox/WebHookView.vue:345 -#: src/views/toolbox/WebHookView.vue:389 +#: src/views/toolbox/WebHookView.vue:345 src/views/toolbox/WebHookView.vue:389 msgid "Script" msgstr "脚本" @@ -10964,14 +11075,12 @@ msgid "Edit WebHook" msgstr "编辑 Web 钩子" #: src/views/website/BulkCreateModal.vue:32 -#: src/views/website/CreateModal.vue:57 -#: src/views/website/EditModal.vue:83 +#: src/views/website/CreateModal.vue:57 src/views/website/EditModal.vue:83 msgid "Not used" msgstr "未使用" #: src/views/website/BulkCreateModal.vue:61 -#: src/views/website/CreateModal.vue:30 -#: src/views/website/IndexView.vue:28 +#: src/views/website/CreateModal.vue:30 src/views/website/IndexView.vue:28 #: src/views/website/ListView.vue:128 msgid "Pure Static" msgstr "纯静态" @@ -10988,8 +11097,7 @@ msgstr "批量创建 PHP 网站" msgid "Bulk Create Pure Static Website" msgstr "批量创建纯静态网站" -#: src/views/website/BulkCreateModal.vue:74 -#: src/views/website/ListView.vue:409 +#: src/views/website/BulkCreateModal.vue:74 src/views/website/ListView.vue:409 msgid "Bulk Create Website" msgstr "批量创建网站" @@ -11006,7 +11114,9 @@ msgid "name|domain|port|path|remark" msgstr "名称|域名|端口|路径|备注" #: src/views/website/BulkCreateModal.vue:92 -msgid "Proxy Target: The target address for reverse proxy (e.g., http://127.0.0.1:3000)." +msgid "" +"Proxy Target: The target address for reverse proxy (e.g., " +"http://127.0.0.1:3000)." msgstr "代理目标地址(如:http://127.0.0.1:3000)" #: src/views/website/BulkCreateModal.vue:96 @@ -11027,8 +11137,7 @@ msgid "Website %{ name } created successfully" msgstr "网站 %{ name } 创建成功" #: src/views/website/BulkCreateModal.vue:189 -#: src/views/website/CreateModal.vue:180 -#: src/views/website/ListView.vue:120 +#: src/views/website/CreateModal.vue:180 src/views/website/ListView.vue:120 msgid "Website Type" msgstr "网站类型" @@ -11038,19 +11147,27 @@ msgid "Select Website Type" msgstr "选择网站类型" #: src/views/website/BulkCreateModal.vue:198 -msgid "Please enter the website name, domain, port, path, and remark in the text area below, one per line." +msgid "" +"Please enter the website name, domain, port, path, and remark in the text " +"area below, one per line." msgstr "请在下面的文本区域输入网站名称、域名、端口、路径和注释,每行一个。" #: src/views/website/BulkCreateModal.vue:211 -msgid "Name: The name of the website, which will be displayed in the website list, must be unique." +msgid "" +"Name: The name of the website, which will be displayed in the website list, " +"must be unique." msgstr "名称:网站的名称,将显示在网站列表中,必须是唯一的。" #: src/views/website/BulkCreateModal.vue:218 -msgid "Domain: The domain name of the website, multiple domains can be separated by commas." +msgid "" +"Domain: The domain name of the website, multiple domains can be separated by " +"commas." msgstr "域名:网站的域名,多个域名可以用英文逗号分隔。" #: src/views/website/BulkCreateModal.vue:225 -msgid "Port: The port number of the website, multiple ports can be separated by commas." +msgid "" +"Port: The port number of the website, multiple ports can be separated by " +"commas." msgstr "端口:网站的端口号,多个端口可以用英文逗号分隔。" #: src/views/website/BulkCreateModal.vue:237 @@ -11069,27 +11186,28 @@ msgstr "创建 PHP 网站" msgid "Create Pure Static Website" msgstr "创建纯静态网站" -#: src/views/website/CreateModal.vue:80 -#: src/views/website/ListView.vue:406 +#: src/views/website/CreateModal.vue:80 src/views/website/ListView.vue:406 msgid "Create Website" msgstr "创建网站" #: src/views/website/CreateModal.vue:193 -msgid "Must be unique, used for directory naming, database naming, etc., and only supports letters, numbers, hyphens, and underscores" +msgid "" +"Must be unique, used for directory naming, database naming, etc., and only " +"supports letters, numbers, hyphens, and underscores" msgstr "必须唯一,用于目录命名、数据库命名等。只支持字母、数字、连字符和下划线" -#: src/views/website/CreateModal.vue:280 -#: src/views/website/CreateModal.vue:285 +#: src/views/website/CreateModal.vue:280 src/views/website/CreateModal.vue:285 msgid "Database User" msgstr "数据库用户" -#: src/views/website/CreateModal.vue:294 -#: src/views/website/CreateModal.vue:300 +#: src/views/website/CreateModal.vue:294 src/views/website/CreateModal.vue:300 msgid "Database Password" msgstr "数据库密码" #: src/views/website/CreateModal.vue:312 -msgid "Website root directory (if left empty, defaults to website directory/website name/public)" +msgid "" +"Website root directory (if left empty, defaults to website directory/website " +"name/public)" msgstr "网站根目录(如果留空,默认为网站目录/网站名称/public)" #: src/views/website/CreateModal.vue:324 @@ -11100,8 +11218,7 @@ msgstr "代理目标" msgid "Proxy target address (e.g., http://127.0.0.1:3000)" msgstr "代理目标地址(如:http://127.0.0.1:3000)" -#: src/views/website/CreateModal.vue:332 -#: src/views/website/CreateModal.vue:337 +#: src/views/website/CreateModal.vue:332 src/views/website/CreateModal.vue:337 #: src/views/website/ListView.vue:229 msgid "Remark" msgstr "备注" @@ -11114,675 +11231,674 @@ msgstr "编辑网站 - %{ name }" msgid "Edit Website" msgstr "编辑网站" -#: src/views/website/EditModal.vue:171 +#: src/views/website/EditModal.vue:181 msgid "Reset successfully" msgstr "重置成功" -#: src/views/website/EditModal.vue:199 -msgid "Your website contains wildcard domains, which require DNS verification. Please add a DNS provider in Certificate Management first." -msgstr "您的网站包含通配符域名,这需要进行 DNS 验证。请先在证书管理中添加一个 DNS 提供商。" +#: src/views/website/EditModal.vue:209 +msgid "" +"Your website contains wildcard domains, which require DNS verification. " +"Please add a DNS provider in Certificate Management first." +msgstr "" +"您的网站包含通配符域名,这需要进行 DNS 验证。请先在证书管理中添加一个 DNS 提" +"供商。" -#: src/views/website/EditModal.vue:216 +#: src/views/website/EditModal.vue:226 msgid "Please select a DNS provider" msgstr "请选择一个 DNS 提供商" -#: src/views/website/EditModal.vue:231 +#: src/views/website/EditModal.vue:241 msgid "Issued successfully" msgstr "签发成功" -#: src/views/website/EditModal.vue:245 +#: src/views/website/EditModal.vue:255 msgid "The selected certificate is invalid" msgstr "所选证书无效" -#: src/views/website/EditModal.vue:374 +#: src/views/website/EditModal.vue:384 msgid "Exact Match (=)" msgstr "精确匹配 (=)" -#: src/views/website/EditModal.vue:375 +#: src/views/website/EditModal.vue:385 msgid "Priority Prefix Match (^~)" msgstr "优先前缀匹配 (^~)" -#: src/views/website/EditModal.vue:376 +#: src/views/website/EditModal.vue:386 msgid "Prefix Match" msgstr "前缀匹配" -#: src/views/website/EditModal.vue:377 +#: src/views/website/EditModal.vue:387 msgid "Case-sensitive Regex (~)" msgstr "区分大小写的正则匹配 (~)" -#: src/views/website/EditModal.vue:378 +#: src/views/website/EditModal.vue:388 msgid "Case-insensitive Regex (~*)" msgstr "不区分大小写的正则匹配 (~*)" -#: src/views/website/EditModal.vue:730 +#: src/views/website/EditModal.vue:740 msgid "URL Redirect" msgstr "URL 重定向" -#: src/views/website/EditModal.vue:731 +#: src/views/website/EditModal.vue:741 msgid "Host Redirect" msgstr "Host 重定向" -#: src/views/website/EditModal.vue:732 +#: src/views/website/EditModal.vue:742 msgid "404 Redirect" msgstr "404 重定向" -#: src/views/website/EditModal.vue:737 +#: src/views/website/EditModal.vue:747 msgid "Moved Permanently" msgstr "永久移动" -#: src/views/website/EditModal.vue:738 +#: src/views/website/EditModal.vue:748 msgid "Found" msgstr "已找到" -#: src/views/website/EditModal.vue:739 +#: src/views/website/EditModal.vue:749 msgid "Temporary Redirect" msgstr "临时重定向" -#: src/views/website/EditModal.vue:740 +#: src/views/website/EditModal.vue:750 msgid "Permanent Redirect" msgstr "永久重定向" -#: src/views/website/EditModal.vue:779 -#: src/views/website/EditModal.vue:783 +#: src/views/website/EditModal.vue:789 src/views/website/EditModal.vue:793 msgid "Default Path" msgstr "默认路径" -#: src/views/website/EditModal.vue:864 +#: src/views/website/EditModal.vue:874 msgid "Domain & Listening" msgstr "域名和监听" -#: src/views/website/EditModal.vue:874 +#: src/views/website/EditModal.vue:884 msgid "Listening Address" msgstr "监听地址" -#: src/views/website/EditModal.vue:909 +#: src/views/website/EditModal.vue:919 msgid "Website Directory" msgstr "网站目录" -#: src/views/website/EditModal.vue:912 +#: src/views/website/EditModal.vue:922 msgid "Enter website directory (absolute path)" msgstr "输入网站目录(绝对路径)" -#: src/views/website/EditModal.vue:915 +#: src/views/website/EditModal.vue:925 msgid "Running Directory" msgstr "运行目录" -#: src/views/website/EditModal.vue:919 +#: src/views/website/EditModal.vue:929 msgid "Enter running directory (needed for Laravel etc.) (absolute path)" msgstr "输入运行目录(Laravel等需要)(绝对路径)" -#: src/views/website/EditModal.vue:923 +#: src/views/website/EditModal.vue:933 msgid "Default Document" msgstr "默认文档" -#: src/views/website/EditModal.vue:936 +#: src/views/website/EditModal.vue:946 msgid "Anti-cross-site Attack" msgstr "防跨站攻击" -#: src/views/website/EditModal.vue:942 +#: src/views/website/EditModal.vue:952 msgid "Upstreams" msgstr "上游" -#: src/views/website/EditModal.vue:963 +#: src/views/website/EditModal.vue:973 msgid "Upstream name" msgstr "上游名称" -#: src/views/website/EditModal.vue:977 -#: src/views/website/EditModal.vue:984 +#: src/views/website/EditModal.vue:987 src/views/website/EditModal.vue:994 msgid "Round Robin (default)" msgstr "轮询(默认)" -#: src/views/website/EditModal.vue:985 +#: src/views/website/EditModal.vue:995 msgid "Least Busy" msgstr "最少繁忙" -#: src/views/website/EditModal.vue:986 +#: src/views/website/EditModal.vue:996 msgid "By Traffic" msgstr "按流量" -#: src/views/website/EditModal.vue:991 +#: src/views/website/EditModal.vue:1001 msgid "Keepalive Connections" msgstr "保持活动连接" -#: src/views/website/EditModal.vue:1036 +#: src/views/website/EditModal.vue:1046 msgid "Backend Servers" msgstr "后端服务器" -#: src/views/website/EditModal.vue:1039 +#: src/views/website/EditModal.vue:1049 msgid "Server address, e.g., 127.0.0.1:8080" msgstr "服务器地址,例如 127.0.0.1:8080" -#: src/views/website/EditModal.vue:1040 +#: src/views/website/EditModal.vue:1050 msgid "Options, e.g., weight=5 backup" msgstr "选项,例如 weight=5 backup" -#: src/views/website/EditModal.vue:1052 +#: src/views/website/EditModal.vue:1062 msgid "No upstreams configured" msgstr "未配置上游" -#: src/views/website/EditModal.vue:1061 +#: src/views/website/EditModal.vue:1071 msgid "Proxies" msgstr "代理" -#: src/views/website/EditModal.vue:1079 -#: src/views/website/EditModal.vue:1759 +#: src/views/website/EditModal.vue:1089 src/views/website/EditModal.vue:1769 msgid "Rule" msgstr "规则" -#: src/views/website/EditModal.vue:1087 +#: src/views/website/EditModal.vue:1097 msgid "Match Type" msgstr "匹配类型" -#: src/views/website/EditModal.vue:1096 +#: src/views/website/EditModal.vue:1106 msgid "Match Expression" msgstr "匹配表达式" -#: src/views/website/EditModal.vue:1100 +#: src/views/website/EditModal.vue:1110 msgid "e.g., /, /api, ^/api/v[0-9]+/" msgstr "例如 /, /api, ^/api/v[0-9]+/" -#: src/views/website/EditModal.vue:1108 +#: src/views/website/EditModal.vue:1118 msgid "Backend address, e.g., http://127.0.0.1:8080 or http://upstream_name" msgstr "后端地址,例如 http://127.0.0.1:8080 或 http://upstream_name" -#: src/views/website/EditModal.vue:1115 +#: src/views/website/EditModal.vue:1125 msgid "Proxy Host" msgstr "代理主机名" -#: src/views/website/EditModal.vue:1119 +#: src/views/website/EditModal.vue:1129 msgid "Default: $proxy_host, or extracted from Proxy Pass" msgstr "默认:$proxy_host 或从代理目标中提取" -#: src/views/website/EditModal.vue:1123 +#: src/views/website/EditModal.vue:1133 msgid "Proxy SNI" msgstr "代理 SNI" -#: src/views/website/EditModal.vue:1126 +#: src/views/website/EditModal.vue:1136 msgid "Optional, for HTTPS backends" msgstr "可选,用于 HTTPS 后端" -#: src/views/website/EditModal.vue:1129 +#: src/views/website/EditModal.vue:1139 msgid "Enable Cache" msgstr "启用缓存" -#: src/views/website/EditModal.vue:1135 +#: src/views/website/EditModal.vue:1145 msgid "Enable Buffering" msgstr "启用缓冲区" -#: src/views/website/EditModal.vue:1176 +#: src/views/website/EditModal.vue:1186 msgid "Cache Settings" msgstr "缓存设置" -#: src/views/website/EditModal.vue:1181 +#: src/views/website/EditModal.vue:1191 msgid "Cache Valid" msgstr "缓存规则" -#: src/views/website/EditModal.vue:1184 +#: src/views/website/EditModal.vue:1194 msgid "Status codes, e.g., 200 302 or any" msgstr "状态码,例如 200 302 或其他" -#: src/views/website/EditModal.vue:1185 +#: src/views/website/EditModal.vue:1195 msgid "Duration, e.g., 10m, 1h, 1d" msgstr "持续时间,例如 10m,1h,1d" -#: src/views/website/EditModal.vue:1186 +#: src/views/website/EditModal.vue:1196 msgid "Add Cache Valid Rule" msgstr "添加缓存规则" -#: src/views/website/EditModal.vue:1192 +#: src/views/website/EditModal.vue:1202 msgid "No Cache Conditions" msgstr "不缓存条件" -#: src/views/website/EditModal.vue:1205 +#: src/views/website/EditModal.vue:1215 msgid "Select or enter conditions" msgstr "选择或输入条件" -#: src/views/website/EditModal.vue:1209 +#: src/views/website/EditModal.vue:1219 msgid "Use Stale" msgstr "使用过期" -#: src/views/website/EditModal.vue:1222 +#: src/views/website/EditModal.vue:1232 msgid "When to use stale cache" msgstr "何时使用过期缓存" -#: src/views/website/EditModal.vue:1226 +#: src/views/website/EditModal.vue:1236 msgid "Background Update" msgstr "后台更新" -#: src/views/website/EditModal.vue:1230 +#: src/views/website/EditModal.vue:1240 msgid "Cache Lock" msgstr "缓存锁" -#: src/views/website/EditModal.vue:1234 +#: src/views/website/EditModal.vue:1244 msgid "Min Uses" msgstr "最小使用次数" -#: src/views/website/EditModal.vue:1245 +#: src/views/website/EditModal.vue:1255 msgid "Cache Methods" msgstr "缓存方法" -#: src/views/website/EditModal.vue:1254 +#: src/views/website/EditModal.vue:1264 msgid "Default: GET HEAD" msgstr "默认:GET HEAD" -#: src/views/website/EditModal.vue:1258 +#: src/views/website/EditModal.vue:1268 msgid "Cache Key" msgstr "缓存键" -#: src/views/website/EditModal.vue:1262 +#: src/views/website/EditModal.vue:1272 msgid "Custom cache key, e.g., $scheme$host$request_uri" msgstr "自定义缓存键,例如 $scheme$host$request_uri" -#: src/views/website/EditModal.vue:1270 +#: src/views/website/EditModal.vue:1280 msgid "Custom Request Headers" msgstr "自定义请求头" -#: src/views/website/EditModal.vue:1273 -#: src/views/website/EditModal.vue:1572 +#: src/views/website/EditModal.vue:1283 src/views/website/EditModal.vue:1582 msgid "Header name" msgstr "请求头" -#: src/views/website/EditModal.vue:1275 +#: src/views/website/EditModal.vue:1285 msgid "Value or variable like $host, $remote_addr" msgstr "类似于 $host、$remote_addr 的值或变量" -#: src/views/website/EditModal.vue:1277 +#: src/views/website/EditModal.vue:1287 msgid "Add Request Header" msgstr "添加请求头" -#: src/views/website/EditModal.vue:1284 +#: src/views/website/EditModal.vue:1294 msgid "Response Content Replacement" msgstr "响应内容替换" -#: src/views/website/EditModal.vue:1289 +#: src/views/website/EditModal.vue:1299 msgid "Original content" msgstr "原始内容" -#: src/views/website/EditModal.vue:1290 +#: src/views/website/EditModal.vue:1300 msgid "Replacement content" msgstr "替换内容" -#: src/views/website/EditModal.vue:1291 +#: src/views/website/EditModal.vue:1301 msgid "Add Replacement Rule" msgstr "添加替换规则" -#: src/views/website/EditModal.vue:1301 -#: src/views/website/EditModal.vue:1831 +#: src/views/website/EditModal.vue:1311 src/views/website/EditModal.vue:1841 msgid "Advanced Settings" msgstr "高级设置" -#: src/views/website/EditModal.vue:1306 +#: src/views/website/EditModal.vue:1316 msgid "HTTP Version" msgstr "HTTP 版本" -#: src/views/website/EditModal.vue:1314 +#: src/views/website/EditModal.vue:1324 msgid "Select HTTP version" msgstr "选择 HTTP 版本" -#: src/views/website/EditModal.vue:1319 +#: src/views/website/EditModal.vue:1329 msgid "Max Body Size" msgstr "最大主体大小" -#: src/views/website/EditModal.vue:1325 +#: src/views/website/EditModal.vue:1335 msgid "Use global" msgstr "使用全局" -#: src/views/website/EditModal.vue:1344 +#: src/views/website/EditModal.vue:1354 msgid "Timeout Settings" msgstr "超时设置" -#: src/views/website/EditModal.vue:1355 +#: src/views/website/EditModal.vue:1365 msgid "Connect Timeout" msgstr "连接超时" -#: src/views/website/EditModal.vue:1381 +#: src/views/website/EditModal.vue:1391 msgid "Read Timeout" msgstr "读取超时" -#: src/views/website/EditModal.vue:1407 +#: src/views/website/EditModal.vue:1417 msgid "Send Timeout" msgstr "发送超时" -#: src/views/website/EditModal.vue:1438 +#: src/views/website/EditModal.vue:1448 msgid "Retry Settings" msgstr "重试设置" -#: src/views/website/EditModal.vue:1449 +#: src/views/website/EditModal.vue:1459 msgid "SSL Backend Verify" msgstr "SSL 后端验证" -#: src/views/website/EditModal.vue:1458 +#: src/views/website/EditModal.vue:1468 msgid "Response Headers" msgstr "响应头" -#: src/views/website/EditModal.vue:1469 +#: src/views/website/EditModal.vue:1479 msgid "Retry Conditions" msgstr "重试条件" -#: src/views/website/EditModal.vue:1485 +#: src/views/website/EditModal.vue:1495 msgid "Select retry conditions" msgstr "选择重试条件" -#: src/views/website/EditModal.vue:1488 +#: src/views/website/EditModal.vue:1498 msgid "Max Tries" msgstr "最大重试次数" -#: src/views/website/EditModal.vue:1492 -#: src/views/website/EditModal.vue:1507 -#: src/views/website/EditModal.vue:1883 -#: src/views/website/EditModal.vue:1896 -#: src/views/website/EditModal.vue:1909 +#: src/views/website/EditModal.vue:1502 src/views/website/EditModal.vue:1517 +#: src/views/website/EditModal.vue:1893 src/views/website/EditModal.vue:1906 +#: src/views/website/EditModal.vue:1919 msgid "Unlimited" msgstr "无限制" -#: src/views/website/EditModal.vue:1496 +#: src/views/website/EditModal.vue:1506 msgid "Retry Timeout" msgstr "重试超时时间" -#: src/views/website/EditModal.vue:1526 +#: src/views/website/EditModal.vue:1536 msgid "Enable Verify" msgstr "启用验证" -#: src/views/website/EditModal.vue:1529 +#: src/views/website/EditModal.vue:1539 msgid "Verify Depth" msgstr "验证深度" -#: src/views/website/EditModal.vue:1536 +#: src/views/website/EditModal.vue:1546 msgid "Trusted Certificate" msgstr "受信任的证书" -#: src/views/website/EditModal.vue:1540 +#: src/views/website/EditModal.vue:1550 msgid "CA certificate path, e.g. /etc/ssl/certs/ca-certificates.crt" msgstr "CA证书路径,例如 /etc/ssl/certs/ca-certificates.crt" -#: src/views/website/EditModal.vue:1552 +#: src/views/website/EditModal.vue:1562 msgid "Hide Headers" msgstr "隐藏响应头" -#: src/views/website/EditModal.vue:1566 +#: src/views/website/EditModal.vue:1576 msgid "Select or input headers to hide" msgstr "选择或输入要隐藏的响应头" -#: src/views/website/EditModal.vue:1569 +#: src/views/website/EditModal.vue:1579 msgid "Add Headers" msgstr "添加响应头" -#: src/views/website/EditModal.vue:1573 +#: src/views/website/EditModal.vue:1583 msgid "Header value" msgstr "头部值" -#: src/views/website/EditModal.vue:1574 +#: src/views/website/EditModal.vue:1584 msgid "Add Response Header" msgstr "添加响应头" -#: src/views/website/EditModal.vue:1583 +#: src/views/website/EditModal.vue:1593 msgid "IP Access Control" msgstr "IP 访问控制" -#: src/views/website/EditModal.vue:1594 +#: src/views/website/EditModal.vue:1604 msgid "Allow IPs" msgstr "允许 IP" -#: src/views/website/EditModal.vue:1597 +#: src/views/website/EditModal.vue:1607 msgid "IP or CIDR, e.g. 192.168.1.0/24" msgstr "IP 或 CIDR,例如 192.168.1.0/24" -#: src/views/website/EditModal.vue:1600 +#: src/views/website/EditModal.vue:1610 msgid "Deny IPs" msgstr "阻止 IP" -#: src/views/website/EditModal.vue:1603 +#: src/views/website/EditModal.vue:1613 msgid "IP or CIDR, e.g. all" msgstr "IP 或 CIDR,例如 all" -#: src/views/website/EditModal.vue:1617 +#: src/views/website/EditModal.vue:1627 msgid "No proxy rules configured" msgstr "未配置代理规则" -#: src/views/website/EditModal.vue:1622 +#: src/views/website/EditModal.vue:1632 msgid "Add Proxy Rule" msgstr "添加代理规则" -#: src/views/website/EditModal.vue:1631 +#: src/views/website/EditModal.vue:1641 msgid "Certificate Validity" msgstr "证书有效期" -#: src/views/website/EditModal.vue:1645 +#: src/views/website/EditModal.vue:1655 msgid "Domains" msgstr "域名" -#: src/views/website/EditModal.vue:1654 +#: src/views/website/EditModal.vue:1664 msgid "Main Switch" msgstr "主开关" -#: src/views/website/EditModal.vue:1660 +#: src/views/website/EditModal.vue:1670 msgid "Use Existing Certificate" msgstr "使用现有证书" -#: src/views/website/EditModal.vue:1677 +#: src/views/website/EditModal.vue:1687 msgid "HTTP Redirect" msgstr "HTTP 重定向" -#: src/views/website/EditModal.vue:1680 +#: src/views/website/EditModal.vue:1690 msgid "OCSP Stapling" msgstr "OCSP 装订" -#: src/views/website/EditModal.vue:1685 +#: src/views/website/EditModal.vue:1695 msgid "TLS Version" msgstr "TLS 版本" -#: src/views/website/EditModal.vue:1726 +#: src/views/website/EditModal.vue:1736 msgid "Rewrite" msgstr "伪静态" -#: src/views/website/EditModal.vue:1741 +#: src/views/website/EditModal.vue:1751 msgid "Redirects" msgstr "重定向" -#: src/views/website/EditModal.vue:1772 +#: src/views/website/EditModal.vue:1782 msgid "Redirect Type" msgstr "重定向类型" -#: src/views/website/EditModal.vue:1775 +#: src/views/website/EditModal.vue:1785 #: src/views/website/stats/ErrorsTab.vue:115 msgid "Status Code" msgstr "状态码" -#: src/views/website/EditModal.vue:1790 +#: src/views/website/EditModal.vue:1800 msgid "Source path, e.g., /old" msgstr "源路径,例如 /old" -#: src/views/website/EditModal.vue:1791 +#: src/views/website/EditModal.vue:1801 msgid "Source host, e.g., example.com" msgstr "源主机,例如 example.com" -#: src/views/website/EditModal.vue:1803 +#: src/views/website/EditModal.vue:1813 msgid "Target path, e.g., /new" msgstr "目标路径,例如 /new" -#: src/views/website/EditModal.vue:1804 +#: src/views/website/EditModal.vue:1814 msgid "Target URL, e.g., https://example.com" msgstr "目标 URL,例如 https://example.com" -#: src/views/website/EditModal.vue:1808 +#: src/views/website/EditModal.vue:1818 msgid "Keep URI" msgstr "保持 URI" -#: src/views/website/EditModal.vue:1811 +#: src/views/website/EditModal.vue:1821 msgid "Keep the original request path and query parameters" msgstr "保持原始请求路径和查询参数" -#: src/views/website/EditModal.vue:1822 +#: src/views/website/EditModal.vue:1832 msgid "No redirect rules configured" msgstr "未配置重定向规则" -#: src/views/website/EditModal.vue:1827 +#: src/views/website/EditModal.vue:1837 msgid "Add Redirect Rule" msgstr "添加重定向规则" -#: src/views/website/EditModal.vue:1836 +#: src/views/website/EditModal.vue:1846 msgid "Access Statistics" msgstr "访问统计" -#: src/views/website/EditModal.vue:1840 +#: src/views/website/EditModal.vue:1850 msgid "Enable Statistics" msgstr "启用统计" -#: src/views/website/EditModal.vue:1847 +#: src/views/website/EditModal.vue:1857 msgid "Log Settings" msgstr "日志设置" -#: src/views/website/EditModal.vue:1849 -#: src/views/website/EditModal.vue:2066 +#: src/views/website/EditModal.vue:1859 src/views/website/EditModal.vue:2076 msgid "Access Log" msgstr "访问日志" -#: src/views/website/EditModal.vue:1858 -#: src/views/website/EditModal.vue:2082 +#: src/views/website/EditModal.vue:1868 src/views/website/EditModal.vue:2092 msgid "Error Log" msgstr "错误日志" -#: src/views/website/EditModal.vue:1871 +#: src/views/website/EditModal.vue:1881 msgid "Rate Limiting" msgstr "速率限制" -#: src/views/website/EditModal.vue:1873 +#: src/views/website/EditModal.vue:1883 msgid "Enable Rate Limiting" msgstr "启用速率限制" -#: src/views/website/EditModal.vue:1877 +#: src/views/website/EditModal.vue:1887 msgid "Concurrent Limit" msgstr "并发限制" -#: src/views/website/EditModal.vue:1887 +#: src/views/website/EditModal.vue:1897 msgid "Limit the maximum concurrent connections for this site" msgstr "限制此站点的最大并发连接数" -#: src/views/website/EditModal.vue:1890 +#: src/views/website/EditModal.vue:1900 msgid "Per IP Limit" msgstr "单 IP 限制" -#: src/views/website/EditModal.vue:1900 +#: src/views/website/EditModal.vue:1910 msgid "Limit the maximum concurrent connections per IP" msgstr "限制单个 IP 的最大并发连接数" -#: src/views/website/EditModal.vue:1903 +#: src/views/website/EditModal.vue:1913 msgid "Rate Limit" msgstr "速率限制" -#: src/views/website/EditModal.vue:1913 +#: src/views/website/EditModal.vue:1923 msgid "Limit the rate of each request (unit: KB)" msgstr "限制每个请求的速率(单位:KB)" -#: src/views/website/EditModal.vue:1921 +#: src/views/website/EditModal.vue:1931 msgid "Real IP" msgstr "真实 IP" -#: src/views/website/EditModal.vue:1924 -msgid "Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." +#: src/views/website/EditModal.vue:1934 +msgid "" +"Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." msgstr "配置可信的代理 IP(例如 CDN 或 Frp)以识别真实的访客 IP。" -#: src/views/website/EditModal.vue:1931 -msgid "If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) or ::/0 (ipv6) [insecure]." -msgstr "如果使用 Frp,请填写 Frp IP 地址(例如 127.0.0.1)。如果使用 CDN,请填写 CDN IP 范围。如果不确定,可以填写 0.0.0.0/0(ipv4)或 ::/0(ipv6)[不安全]。" +#: src/views/website/EditModal.vue:1941 +msgid "" +"If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, " +"fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) " +"or ::/0 (ipv6) [insecure]." +msgstr "" +"如果使用 Frp,请填写 Frp IP 地址(例如 127.0.0.1)。如果使用 CDN,请填写 CDN " +"IP 范围。如果不确定,可以填写 0.0.0.0/0(ipv4)或 ::/0(ipv6)[不安全]。" -#: src/views/website/EditModal.vue:1937 +#: src/views/website/EditModal.vue:1947 msgid "Enable" msgstr "启用" -#: src/views/website/EditModal.vue:1941 +#: src/views/website/EditModal.vue:1951 msgid "IP Sources" msgstr "IP 来源" -#: src/views/website/EditModal.vue:1945 +#: src/views/website/EditModal.vue:1955 msgid "One per line, e.g., 127.0.0.1 or 10.0.0.0/8" msgstr "每行一个,例如 127.0.0.1 或 10.0.0.0/8" -#: src/views/website/EditModal.vue:1949 +#: src/views/website/EditModal.vue:1959 msgid "IP Header" msgstr "IP 头部" -#: src/views/website/EditModal.vue:1964 +#: src/views/website/EditModal.vue:1974 msgid "Recursive" msgstr "递归" -#: src/views/website/EditModal.vue:1967 +#: src/views/website/EditModal.vue:1977 msgid "Recursively search for real IP in X-Forwarded-For header" msgstr "递归地搜索 X-Forwarded-For 头中的真实 IP" -#: src/views/website/EditModal.vue:1975 +#: src/views/website/EditModal.vue:1985 msgid "Basic Authentication" msgstr "基本身份验证" -#: src/views/website/EditModal.vue:1977 +#: src/views/website/EditModal.vue:1987 msgid "User Credentials" msgstr "用户凭据" -#: src/views/website/EditModal.vue:1991 -msgid "Visitors will need to enter a username and password to access this website." +#: src/views/website/EditModal.vue:2001 +msgid "" +"Visitors will need to enter a username and password to access this website." msgstr "访客需要输入用户名和密码才能访问此网站。" -#: src/views/website/EditModal.vue:1999 +#: src/views/website/EditModal.vue:2009 msgid "Custom Configs" msgstr "自定义配置" -#: src/views/website/EditModal.vue:2026 +#: src/views/website/EditModal.vue:2036 msgid "Config name (letters, numbers, underscore, hyphen)" msgstr "配置名(字母、数字、下划线、破折号)" -#: src/views/website/EditModal.vue:2034 +#: src/views/website/EditModal.vue:2044 msgid "This Website" msgstr "此网站" -#: src/views/website/EditModal.vue:2035 +#: src/views/website/EditModal.vue:2045 msgid "Global" msgstr "全局" -#: src/views/website/EditModal.vue:2040 +#: src/views/website/EditModal.vue:2050 msgid "Content" msgstr "内容" -#: src/views/website/EditModal.vue:2054 +#: src/views/website/EditModal.vue:2064 msgid "No custom configs" msgstr "没有自定义配置" -#: src/views/website/EditModal.vue:2059 +#: src/views/website/EditModal.vue:2069 msgid "Add Custom Config" msgstr "添加自定义配置" -#: src/views/website/EditModal.vue:2071 -#: src/views/website/EditModal.vue:2087 +#: src/views/website/EditModal.vue:2081 src/views/website/EditModal.vue:2097 msgid "All logs can be viewed by downloading the file" msgstr "所有日志可通过下载文件查看" -#: src/views/website/EditModal.vue:2073 -#: src/views/website/EditModal.vue:2089 +#: src/views/website/EditModal.vue:2083 src/views/website/EditModal.vue:2099 msgid "view" msgstr "查看" -#: src/views/website/EditModal.vue:2106 -msgid "Clear Logs" -msgstr "清除日志" - -#: src/views/website/EditModal.vue:2117 +#: src/views/website/EditModal.vue:2127 msgid "One-click Certificate Issuance" msgstr "一键签发证书" -#: src/views/website/EditModal.vue:2121 +#: src/views/website/EditModal.vue:2131 msgid "Are you sure you want to reset the configuration?" msgstr "您确定要重置配置吗?" -#: src/views/website/EditModal.vue:2126 +#: src/views/website/EditModal.vue:2136 msgid "Reset Configuration" msgstr "重置配置" -#: src/views/website/EditModal.vue:2148 +#: src/views/website/EditModal.vue:2158 msgid "Select DNS Provider" msgstr "选择 DNS 提供商" -#: src/views/website/EditModal.vue:2156 -msgid "Your website contains wildcard domains (e.g. *.example.com), which require DNS verification to issue certificates." -msgstr "您网站包含通配符域名(例如 *.example.com),这需要 DNS 验证才能签发证书。" +#: src/views/website/EditModal.vue:2166 +msgid "" +"Your website contains wildcard domains (e.g. *.example.com), which require " +"DNS verification to issue certificates." +msgstr "" +"您网站包含通配符域名(例如 *.example.com),这需要 DNS 验证才能签发证书。" #: src/views/website/IndexView.vue:29 msgid "Stats" @@ -11829,78 +11945,90 @@ msgid "Delete local database with the same name" msgstr "删除同名的本地数据库" #: src/views/website/ListView.vue:415 -msgid "This will delete the website directory but not the database with the same name. Are you sure you want to delete the selected websites?" +msgid "" +"This will delete the website directory but not the database with the same " +"name. Are you sure you want to delete the selected websites?" msgstr "这将删除网站目录,但不会删除同名的数据库。您确定要删除所选网站吗?" -#: src/views/website/SettingView.vue:67 +#: src/views/website/SettingView.vue:80 +#, fuzzy +msgid "Built-in default page" +msgstr "默认页面" + +#: src/views/website/SettingView.vue:98 msgid "Default Page" msgstr "默认页面" -#: src/views/website/SettingView.vue:77 -#: src/views/website/SettingView.vue:92 -#: src/views/website/SettingView.vue:107 -#: src/views/website/SettingView.vue:150 -#: src/views/website/SettingView.vue:213 -msgid "Save Changes" -msgstr "保存更改" - -#: src/views/website/SettingView.vue:82 +#: src/views/website/SettingView.vue:113 msgid "Stop Page" msgstr "停止页面" -#: src/views/website/SettingView.vue:97 +#: src/views/website/SettingView.vue:128 msgid "404 Page" msgstr "404 页面" -#: src/views/website/SettingView.vue:112 +#: src/views/website/SettingView.vue:143 src/views/website/SettingView.vue:153 msgid "Default Site" msgstr "默认网站" -#: src/views/website/SettingView.vue:115 +#: src/views/website/SettingView.vue:147 +msgid "" +"The default site handles requests that do not match any website domain, such " +"as direct access via IP address. By default, the panel built-in page is " +"displayed." +msgstr "" + +#: src/views/website/SettingView.vue:167 msgid "Default Settings" msgstr "默认设置" -#: src/views/website/SettingView.vue:119 -msgid "Modifying the default TLS version will affect all newly created websites. Existing websites will not be affected." +#: src/views/website/SettingView.vue:171 +msgid "" +"Modifying the default TLS version will affect all newly created websites. " +"Existing websites will not be affected." msgstr "修改默认 TLS 版本将影响所有新创建的网站。现有网站不受影响。" -#: src/views/website/SettingView.vue:126 -msgid "Please adjust the settings carefully, improper configuration may lead to website inaccessible." +#: src/views/website/SettingView.vue:178 +msgid "" +"Please adjust the settings carefully, improper configuration may lead to " +"website inaccessible." msgstr "请小心调整设置,配置不当可能导致网站无法访问。" -#: src/views/website/SettingView.vue:132 +#: src/views/website/SettingView.vue:184 msgid "Default TLS Version" msgstr "默认 TLS 版本" -#: src/views/website/SettingView.vue:155 +#: src/views/website/SettingView.vue:207 msgid "Statistics" msgstr "统计" -#: src/views/website/SettingView.vue:159 -msgid "Modifications to the limits below will take effect after restarting the panel." +#: src/views/website/SettingView.vue:211 +msgid "" +"Modifications to the limits below will take effect after restarting the " +"panel." msgstr "下面的限制修改将在重启面板后生效。" -#: src/views/website/SettingView.vue:165 +#: src/views/website/SettingView.vue:217 msgid "Data Retention Days" msgstr "数据保留天数" -#: src/views/website/SettingView.vue:168 +#: src/views/website/SettingView.vue:220 msgid "Error Buffer Max Size" msgstr "错误缓冲区最大大小" -#: src/views/website/SettingView.vue:177 +#: src/views/website/SettingView.vue:229 msgid "UV Max Keys" msgstr "UV 键最大值" -#: src/views/website/SettingView.vue:186 +#: src/views/website/SettingView.vue:238 msgid "IP Max Keys" msgstr "IP 键最大值" -#: src/views/website/SettingView.vue:195 +#: src/views/website/SettingView.vue:247 msgid "Detail Max Keys" msgstr "详情键最大值" -#: src/views/website/SettingView.vue:204 +#: src/views/website/SettingView.vue:256 msgid "Record Request Body" msgstr "记录请求体" @@ -11916,8 +12044,7 @@ msgstr "操作系统" #: src/views/website/stats/ClientsTab.vue:95 #: src/views/website/stats/GeoTab.vue:108 #: src/views/website/stats/GeoTab.vue:165 -#: src/views/website/stats/GeoTab.vue:218 -#: src/views/website/stats/IPsTab.vue:91 +#: src/views/website/stats/GeoTab.vue:218 src/views/website/stats/IPsTab.vue:91 #: src/views/website/stats/IPsTab.vue:134 #: src/views/website/stats/OverviewTab.vue:141 #: src/views/website/stats/SitesTab.vue:53 @@ -11941,15 +12068,13 @@ msgstr "没有请求体" msgid "Site" msgstr "站点" -#: src/views/website/stats/GeoTab.vue:92 -#: src/views/website/stats/GeoTab.vue:247 +#: src/views/website/stats/GeoTab.vue:92 src/views/website/stats/GeoTab.vue:247 msgid "Country" msgstr "国家" #: src/views/website/stats/GeoTab.vue:113 #: src/views/website/stats/GeoTab.vue:165 -#: src/views/website/stats/GeoTab.vue:218 -#: src/views/website/stats/IPsTab.vue:91 +#: src/views/website/stats/GeoTab.vue:218 src/views/website/stats/IPsTab.vue:91 #: src/views/website/stats/IPsTab.vue:139 #: src/views/website/stats/OverviewTab.vue:140 #: src/views/website/stats/SlowURIsTab.vue:76 @@ -11972,14 +12097,12 @@ msgstr "ISP 分布" #: src/views/website/stats/OverviewTab.vue:142 #: src/views/website/stats/SitesTab.vue:57 #: src/views/website/stats/SlowURIsTab.vue:81 -#: src/views/website/stats/URIsTab.vue:59 -#: src/views/website/StatsView.vue:221 +#: src/views/website/stats/URIsTab.vue:59 src/views/website/StatsView.vue:221 msgid "Errors" msgstr "错误" #: src/views/website/stats/OverviewTab.vue:143 -#: src/views/website/stats/SitesTab.vue:59 -#: src/views/website/StatsView.vue:200 +#: src/views/website/stats/SitesTab.vue:59 src/views/website/StatsView.vue:200 msgid "Spiders" msgstr "蜘蛛" @@ -12056,3 +12179,11 @@ msgstr "URIs" msgid "Slow Requests" msgstr "慢请求" +#~ msgid "Failed to save file" +#~ msgstr "保存文件失败" + +#~ msgid "Failed to load file" +#~ msgstr "加载文件失败" + +#~ msgid "N/A" +#~ msgstr "未知" diff --git a/web/src/locales/zh_TW.po b/web/src/locales/zh_TW.po index 9470ded9..903cbf30 100644 --- a/web/src/locales/zh_TW.po +++ b/web/src/locales/zh_TW.po @@ -1,5 +1,9 @@ msgid "" msgstr "" +"Project-Id-Version: acepanel\n" +"PO-Revision-Date: 2026-07-02 20:36\n" +"Language-Team: Chinese Traditional\n" +"Language: zh_TW\n" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: acepanel\n" @@ -7,13 +11,8 @@ msgstr "" "X-Crowdin-Language: zh-TW\n" "X-Crowdin-File: frontend.pot\n" "X-Crowdin-File-ID: 1168\n" -"Project-Id-Version: acepanel\n" -"Language-Team: Chinese Traditional\n" -"Language: zh_TW\n" -"PO-Revision-Date: 2026-07-02 20:36\n" -#: src/components/common/AppFooter.vue:18 -#: src/views/home/IndexView.vue:548 +#: src/components/common/AppFooter.vue:18 src/views/home/IndexView.vue:548 msgid "AcePanel" msgstr "AcePanel" @@ -25,18 +24,12 @@ msgstr "版權所有" msgid "QQ Group" msgstr "QQ 群" -#: src/components/common/AppFooter.vue:38 -#: src/locales/menu.ts:23 -#: src/views/apps/fail2ban/IndexView.vue:313 -#: src/views/backup/IndexView.vue:53 -#: src/views/backup/ListView.vue:269 -#: src/views/backup/ListView.vue:317 -#: src/views/cert/CertView.vue:467 -#: src/views/cert/CertView.vue:583 -#: src/views/cert/CreateCertModal.vue:118 -#: src/views/home/IndexView.vue:530 -#: src/views/task/CreateModal.vue:448 -#: src/views/task/CreateModal.vue:470 +#: src/components/common/AppFooter.vue:38 src/locales/menu.ts:23 +#: src/views/apps/fail2ban/IndexView.vue:313 src/views/backup/IndexView.vue:53 +#: src/views/backup/ListView.vue:269 src/views/backup/ListView.vue:317 +#: src/views/cert/CertView.vue:467 src/views/cert/CertView.vue:583 +#: src/views/cert/CreateCertModal.vue:118 src/views/home/IndexView.vue:530 +#: src/views/task/CreateModal.vue:448 src/views/task/CreateModal.vue:470 msgid "Website" msgstr "網站" @@ -188,16 +181,11 @@ msgid "After Reboot" msgstr "重啟後" #: src/components/common/CronSelector.vue:192 -#: src/views/monitor/IndexView.vue:789 -#: src/views/monitor/IndexView.vue:843 -#: src/views/monitor/IndexView.vue:895 -#: src/views/monitor/IndexView.vue:951 -#: src/views/monitor/IndexView.vue:1018 -#: src/views/project/CreateModal.vue:22 -#: src/views/project/CreateModal.vue:33 -#: src/views/project/CreateModal.vue:46 -#: src/views/project/CreateModal.vue:58 -#: src/views/project/CreateModal.vue:70 +#: src/views/monitor/IndexView.vue:789 src/views/monitor/IndexView.vue:843 +#: src/views/monitor/IndexView.vue:895 src/views/monitor/IndexView.vue:951 +#: src/views/monitor/IndexView.vue:1018 src/views/project/CreateModal.vue:22 +#: src/views/project/CreateModal.vue:33 src/views/project/CreateModal.vue:46 +#: src/views/project/CreateModal.vue:58 src/views/project/CreateModal.vue:70 #: src/views/website/StatsView.vue:160 msgid "Custom" msgstr "自訂" @@ -207,20 +195,17 @@ msgid "Month %{month}" msgstr "%{month} 月" #: src/components/common/CronSelector.vue:347 -#: src/views/apps/nginx/NginxIndex.vue:799 -#: src/views/website/EditModal.vue:676 +#: src/views/apps/nginx/NginxIndex.vue:799 src/views/website/EditModal.vue:686 msgid "Seconds" msgstr "秒" #: src/components/common/CronSelector.vue:358 -#: src/views/apps/nginx/NginxIndex.vue:800 -#: src/views/website/EditModal.vue:677 +#: src/views/apps/nginx/NginxIndex.vue:800 src/views/website/EditModal.vue:687 msgid "Minutes" msgstr "分" #: src/components/common/CronSelector.vue:369 -#: src/views/apps/nginx/NginxIndex.vue:801 -#: src/views/website/EditModal.vue:678 +#: src/views/apps/nginx/NginxIndex.vue:801 src/views/website/EditModal.vue:688 msgid "Hours" msgstr "時" @@ -258,10 +243,9 @@ msgid "Maximize" msgstr "最大化" #: src/components/common/DraggableWindow.vue:289 -#: src/components/file-editor/EditorPane.vue:254 +#: src/components/file-editor/EditorPane.vue:282 #: src/layouts/tab/components/ContextMenu.vue:29 -#: src/views/cert/ObtainModal.vue:183 -#: src/views/ssh/IndexView.vue:468 +#: src/views/cert/ObtainModal.vue:183 src/views/ssh/IndexView.vue:506 msgid "Close" msgstr "關閉" @@ -274,9 +258,9 @@ msgid "Cannot save in current state" msgstr "當前狀態無法保存" #: src/components/common/FileEditor.vue:94 -#: src/components/file-editor/EditorPane.vue:160 -#: src/components/file-editor/EditorToolbar.vue:40 -#: src/views/apps/apache/IndexView.vue:46 +#: src/components/file-editor/EditorPane.vue:190 +#: src/components/file-editor/EditorToolbar.vue:38 +#: src/views/app/CustomModal.vue:44 src/views/apps/apache/IndexView.vue:46 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:58 #: src/views/apps/clickhouse/IndexView.vue:57 #: src/views/apps/codeserver/IndexView.vue:26 @@ -285,8 +269,7 @@ msgstr "當前狀態無法保存" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:58 #: src/views/apps/elasticsearch/IndexView.vue:51 #: src/views/apps/fail2ban/IndexView.vue:146 -#: src/views/apps/frp/IndexView.vue:38 -#: src/views/apps/frp/IndexView.vue:49 +#: src/views/apps/frp/IndexView.vue:38 src/views/apps/frp/IndexView.vue:49 #: src/views/apps/gitea/IndexView.vue:24 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:139 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:174 @@ -306,6 +289,7 @@ msgstr "當前狀態無法保存" #: src/views/apps/nginx/NginxIndex.vue:478 #: src/views/apps/opensearch/IndexView.vue:51 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:58 +#: src/views/apps/pgadmin/IndexView.vue:36 #: src/views/apps/phpmyadmin/IndexView.vue:40 #: src/views/apps/phpmyadmin/IndexView.vue:52 #: src/views/apps/podman/IndexView.vue:29 @@ -330,21 +314,16 @@ msgstr "當前狀態無法保存" #: src/views/apps/valkey/IndexView.vue:51 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:103 #: src/views/database/ElasticsearchDocModal.vue:61 -#: src/views/database/RedisKeyModal.vue:77 -#: src/views/environment/GoView.vue:52 +#: src/views/database/RedisKeyModal.vue:77 src/views/environment/GoView.vue:52 #: src/views/environment/NodejsView.vue:55 #: src/views/environment/PhpConfigTuneView.vue:183 -#: src/views/environment/PHPView.vue:149 -#: src/views/environment/PHPView.vue:155 -#: src/views/environment/PythonView.vue:59 -#: src/views/project/EditModal.vue:159 -#: src/views/setting/IndexView.vue:84 -#: src/views/toolbox/SystemView.vue:72 -#: src/views/toolbox/SystemView.vue:83 -#: src/views/toolbox/SystemView.vue:97 -#: src/views/toolbox/SystemView.vue:111 -#: src/views/toolbox/SystemView.vue:158 -#: src/views/website/EditModal.vue:158 +#: src/views/environment/PHPView.vue:149 src/views/environment/PHPView.vue:155 +#: src/views/environment/PythonView.vue:59 src/views/project/EditModal.vue:159 +#: src/views/setting/IndexView.vue:84 src/views/tamper/IndexView.vue:53 +#: src/views/tamper/RuleModal.vue:70 src/views/toolbox/SystemView.vue:72 +#: src/views/toolbox/SystemView.vue:83 src/views/toolbox/SystemView.vue:97 +#: src/views/toolbox/SystemView.vue:111 src/views/toolbox/SystemView.vue:158 +#: src/views/website/EditModal.vue:168 msgid "Saved successfully" msgstr "儲存成功" @@ -353,8 +332,7 @@ msgstr "儲存成功" msgid "Remove" msgstr "移除" -#: src/components/common/PathSelector.vue:28 -#: src/views/task/CreateModal.vue:509 +#: src/components/common/PathSelector.vue:28 src/views/task/CreateModal.vue:509 msgid "Select Directory" msgstr "選擇目錄" @@ -364,8 +342,7 @@ msgstr "選擇文件" #: src/components/common/PathSelector.vue:51 #: src/components/common/PathSelector.vue:395 -#: src/views/app/EnvironmentView.vue:31 -#: src/views/app/InstalledView.vue:161 +#: src/views/app/EnvironmentView.vue:36 src/views/app/InstalledView.vue:184 #: src/views/apps/fail2ban/IndexView.vue:41 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:72 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:206 @@ -374,38 +351,26 @@ msgstr "選擇文件" #: src/views/apps/nginx/NginxIndex.vue:619 #: src/views/apps/nginx/NginxIndex.vue:705 #: src/views/apps/prometheus/PrometheusExportersView.vue:26 -#: src/views/apps/rsync/IndexView.vue:43 -#: src/views/apps/rsync/IndexView.vue:263 +#: src/views/apps/rsync/IndexView.vue:43 src/views/apps/rsync/IndexView.vue:263 #: src/views/apps/supervisor/IndexView.vue:56 #: src/views/apps/supervisor/IndexView.vue:392 -#: src/views/backup/StorageView.vue:66 -#: src/views/backup/StorageView.vue:230 -#: src/views/backup/StorageView.vue:392 -#: src/views/container/ComposeView.vue:59 -#: src/views/container/NetworkView.vue:48 -#: src/views/container/VolumeView.vue:29 +#: src/views/backup/StorageView.vue:66 src/views/backup/StorageView.vue:230 +#: src/views/backup/StorageView.vue:392 src/views/container/ComposeView.vue:59 +#: src/views/container/NetworkView.vue:48 src/views/container/VolumeView.vue:29 #: src/views/database/CreateServerModal.vue:108 #: src/views/database/ServerList.vue:66 -#: src/views/database/UpdateServerModal.vue:65 -#: src/views/file/ListView.vue:1340 -#: src/views/file/PropertyModal.vue:27 -#: src/views/file/ToolBar.vue:150 -#: src/views/home/IndexView.vue:659 -#: src/views/home/IndexView.vue:760 -#: src/views/project/ListView.vue:37 -#: src/views/setting/PasskeyModal.vue:26 -#: src/views/ssh/CreateModal.vue:60 -#: src/views/ssh/UpdateModal.vue:66 -#: src/views/toolbox/LogView.vue:219 -#: src/views/toolbox/MigrationView.vue:695 -#: src/views/toolbox/MigrationView.vue:782 -#: src/views/toolbox/ProcessView.vue:106 -#: src/views/toolbox/ProcessView.vue:393 -#: src/views/toolbox/WebHookView.vue:37 -#: src/views/toolbox/WebHookView.vue:330 -#: src/views/toolbox/WebHookView.vue:371 -#: src/views/website/CreateModal.vue:187 -#: src/views/website/EditModal.vue:2022 +#: src/views/database/UpdateServerModal.vue:66 src/views/file/ListView.vue:1392 +#: src/views/file/PropertyModal.vue:27 src/views/file/ToolBar.vue:123 +#: src/views/home/IndexView.vue:659 src/views/home/IndexView.vue:760 +#: src/views/project/ListView.vue:37 src/views/setting/PasskeyModal.vue:26 +#: src/views/ssh/CreateModal.vue:60 src/views/ssh/UpdateModal.vue:66 +#: src/views/tamper/IndexView.vue:115 src/views/tamper/RuleModal.vue:99 +#: src/views/toolbox/LogView.vue:219 src/views/toolbox/MigrationView.vue:726 +#: src/views/toolbox/MigrationView.vue:813 +#: src/views/toolbox/ProcessView.vue:106 src/views/toolbox/ProcessView.vue:393 +#: src/views/toolbox/WebHookView.vue:37 src/views/toolbox/WebHookView.vue:330 +#: src/views/toolbox/WebHookView.vue:371 src/views/website/CreateModal.vue:187 +#: src/views/website/EditModal.vue:2032 msgid "Name" msgstr "名稱" @@ -413,101 +378,82 @@ msgstr "名稱" msgid "Permissions" msgstr "權限" -#: src/components/common/PathSelector.vue:102 -#: src/views/file/ListView.vue:1351 +#: src/components/common/PathSelector.vue:102 src/views/file/ListView.vue:1403 msgid "Owner / Group" msgstr "所有者 / 群組" -#: src/components/common/PathSelector.vue:114 -#: src/views/backup/ListView.vue:51 +#: src/components/common/PathSelector.vue:114 src/views/backup/ListView.vue:51 #: src/views/container/ImageView.vue:70 #: src/views/database/ElasticsearchDataView.vue:112 -#: src/views/database/RedisDataView.vue:116 -#: src/views/file/ListView.vue:1347 -#: src/views/file/PropertyModal.vue:39 -#: src/views/file/ToolBar.vue:151 +#: src/views/database/RedisDataView.vue:116 src/views/file/ListView.vue:1399 +#: src/views/file/PropertyModal.vue:39 src/views/file/ToolBar.vue:124 #: src/views/toolbox/disk/RaidView.vue:95 -#: src/views/toolbox/disk/RaidView.vue:177 -#: src/views/toolbox/DiskView.vue:233 +#: src/views/toolbox/disk/RaidView.vue:177 src/views/toolbox/DiskView.vue:233 #: src/views/toolbox/LogView.vue:220 msgid "Size" msgstr "大小" -#: src/components/common/PathSelector.vue:149 -#: src/views/file/ListView.vue:1490 +#: src/components/common/PathSelector.vue:149 src/views/file/ListView.vue:1554 msgid "Calculate" msgstr "計算" -#: src/components/common/PathSelector.vue:154 -#: src/views/file/ListView.vue:1356 -#: src/views/file/PropertyModal.vue:51 -#: src/views/file/ToolBar.vue:152 +#: src/components/common/PathSelector.vue:154 src/views/file/ListView.vue:1408 +#: src/views/file/PropertyModal.vue:51 src/views/file/ToolBar.vue:125 msgid "Modification Time" msgstr "修改時間" -#: src/components/common/PathSelector.vue:188 -#: src/views/file/ListView.vue:1210 +#: src/components/common/PathSelector.vue:188 src/views/file/ListView.vue:1243 #: src/views/file/PathInput.vue:43 msgid "Invalid path" msgstr "無效路徑" -#: src/components/common/PathSelector.vue:248 -#: src/views/file/ListView.vue:142 -#: src/views/file/ListView.vue:756 -#: src/views/file/ToolBar.vue:44 +#: src/components/common/PathSelector.vue:248 src/views/file/ListView.vue:144 +#: src/views/file/ListView.vue:795 src/views/file/ToolBar.vue:46 msgid "Invalid name" msgstr "無效的名稱" #: src/components/common/PathSelector.vue:258 -#: src/components/file-editor/FileTree.vue:286 +#: src/components/file-editor/FileTree.vue:266 #: src/views/app/TemplateDeployModal.vue:237 #: src/views/backup/StorageView.vue:150 #: src/views/cert/CreateAccountModal.vue:55 -#: src/views/cert/CreateCertModal.vue:75 -#: src/views/cert/CreateDnsModal.vue:44 +#: src/views/cert/CreateCertModal.vue:75 src/views/cert/CreateDnsModal.vue:44 #: src/views/cert/UploadCertModal.vue:26 #: src/views/container/ComposeView.vue:231 -#: src/views/container/ContainerCreate.vue:109 +#: src/views/container/ContainerCreate.vue:118 #: src/views/container/NetworkView.vue:184 #: src/views/container/VolumeView.vue:132 #: src/views/database/CreateDatabaseModal.vue:48 #: src/views/database/CreateUserModal.vue:56 #: src/views/database/ElasticsearchDataView.vue:263 -#: src/views/file/ListView.vue:151 -#: src/views/firewall/CreateForwardModal.vue:44 -#: src/views/setting/CreateModal.vue:22 -#: src/views/setting/TokenModal.vue:117 -#: src/views/ssh/CreateModal.vue:41 -#: src/views/task/CreateModal.vue:120 +#: src/views/file/ListView.vue:153 src/views/firewall/CreateForwardModal.vue:44 +#: src/views/setting/CreateModal.vue:22 src/views/setting/TokenModal.vue:117 +#: src/views/ssh/CreateModal.vue:41 src/views/task/CreateModal.vue:120 #: src/views/toolbox/WebHookView.vue:249 msgid "Created successfully" msgstr "創建成功" #: src/components/common/PathSelector.vue:319 -#: src/views/file/PropertyModal.vue:34 -#: src/views/file/ToolBar.vue:174 +#: src/views/file/PropertyModal.vue:34 src/views/file/ToolBar.vue:147 msgid "File" msgstr "文件" -#: src/components/common/PathSelector.vue:320 -#: src/views/file/ToolBar.vue:175 +#: src/components/common/PathSelector.vue:320 src/views/file/ToolBar.vue:148 msgid "Folder" msgstr "文件夾" #: src/components/common/PathSelector.vue:324 #: src/components/common/PathSelector.vue:387 #: src/views/app/TemplateDeployModal.vue:652 -#: src/views/container/ContainerCreate.vue:537 -#: src/views/project/CreateModal.vue:693 -#: src/views/setting/TokenModal.vue:270 -#: src/views/toolbox/WebHookView.vue:356 +#: src/views/container/ContainerCreate.vue:638 +#: src/views/project/CreateModal.vue:693 src/views/setting/TokenModal.vue:270 +#: src/views/ssh/SftpBrowser.vue:160 src/views/toolbox/WebHookView.vue:356 #: src/views/website/BulkCreateModal.vue:240 #: src/views/website/CreateModal.vue:342 msgid "Create" msgstr "創建" -#: src/components/common/PathSelector.vue:333 -#: src/views/file/PathInput.vue:155 +#: src/components/common/PathSelector.vue:333 src/views/file/PathInput.vue:155 msgid "Root Directory" msgstr "根目錄" @@ -519,25 +465,18 @@ msgstr "根目錄" #: src/views/apps/nginx/NginxIndex.vue:816 #: src/views/apps/pureftpd/IndexView.vue:266 #: src/views/apps/pureftpd/IndexView.vue:296 -#: src/views/apps/rsync/IndexView.vue:319 -#: src/views/apps/s3fs/IndexView.vue:185 +#: src/views/apps/rsync/IndexView.vue:319 src/views/apps/s3fs/IndexView.vue:185 #: src/views/apps/supervisor/IndexView.vue:435 -#: src/views/backup/ListView.vue:303 -#: src/views/backup/ListView.vue:344 -#: src/views/backup/StorageView.vue:376 -#: src/views/backup/StorageView.vue:529 -#: src/views/cert/AccountView.vue:258 -#: src/views/cert/CertView.vue:568 -#: src/views/cert/CertView.vue:596 -#: src/views/cert/CreateAccountModal.vue:136 -#: src/views/cert/CreateCertModal.vue:163 -#: src/views/cert/CreateDnsModal.vue:199 -#: src/views/cert/DnsView.vue:330 -#: src/views/cert/ObtainModal.vue:180 +#: src/views/backup/ListView.vue:303 src/views/backup/ListView.vue:344 +#: src/views/backup/StorageView.vue:376 src/views/backup/StorageView.vue:529 +#: src/views/cert/AccountView.vue:258 src/views/cert/CertView.vue:568 +#: src/views/cert/CertView.vue:596 src/views/cert/CreateAccountModal.vue:136 +#: src/views/cert/CreateCertModal.vue:163 src/views/cert/CreateDnsModal.vue:199 +#: src/views/cert/DnsView.vue:330 src/views/cert/ObtainModal.vue:180 #: src/views/cert/UploadCertModal.vue:64 #: src/views/container/ComposeView.vue:341 #: src/views/container/ComposeView.vue:367 -#: src/views/container/ContainerView.vue:636 +#: src/views/container/ContainerView.vue:663 #: src/views/container/ImageView.vue:401 #: src/views/container/NetworkView.vue:339 #: src/views/container/VolumeView.vue:233 @@ -549,28 +488,24 @@ msgstr "根目錄" #: src/views/database/RedisDataView.vue:358 #: src/views/database/RedisDataView.vue:378 #: src/views/database/RedisKeyModal.vue:130 -#: src/views/database/UpdateServerModal.vue:123 -#: src/views/database/UpdateUserModal.vue:88 -#: src/views/file/ToolBar.vue:257 +#: src/views/database/UpdateServerModal.vue:124 +#: src/views/database/UpdateUserModal.vue:88 src/views/file/ToolBar.vue:230 #: src/views/firewall/CreateForwardModal.vue:94 #: src/views/firewall/CreateIpModal.vue:125 -#: src/views/firewall/CreateModal.vue:159 -#: src/views/setting/CreateModal.vue:71 -#: src/views/setting/PasswordModal.vue:53 -#: src/views/setting/TwoFaModal.vue:95 -#: src/views/ssh/CreateModal.vue:110 -#: src/views/ssh/UpdateModal.vue:116 +#: src/views/firewall/CreateModal.vue:159 src/views/setting/CreateModal.vue:71 +#: src/views/setting/PasswordModal.vue:53 src/views/setting/TwoFaModal.vue:95 +#: src/views/ssh/CreateModal.vue:110 src/views/ssh/UpdateModal.vue:116 #: src/views/task/CreateModal.vue:551 msgid "Submit" msgstr "提交" #: src/components/common/PtyTerminalModal.vue:125 -#: src/views/container/ContainerView.vue:472 +#: src/views/container/ContainerView.vue:499 msgid "Connection closed." msgstr "連接已關閉。" #: src/components/common/PtyTerminalModal.vue:134 -#: src/views/container/ContainerView.vue:479 +#: src/views/container/ContainerView.vue:506 msgid "Connection error." msgstr "連接錯誤。" @@ -582,7 +517,7 @@ msgstr "連接錯誤" #: src/components/common/PtyTerminalModal.vue:143 #: src/views/container/ImagePullModal.vue:93 -#: src/views/container/ImageView.vue:227 +#: src/views/container/ImageView.vue:227 src/views/ssh/SftpPanel.vue:140 msgid "Failed to connect" msgstr "連接失敗" @@ -595,40 +530,30 @@ msgstr "連接失敗" #: src/views/apps/supervisor/IndexView.vue:133 #: src/views/apps/supervisor/IndexView.vue:151 #: src/views/container/ComposeView.vue:171 -#: src/views/file/composables/usePaste.ts:65 -#: src/views/file/UploadModal.vue:791 -#: src/views/home/IndexView.vue:1029 -#: src/views/home/UpdateView.vue:109 -#: src/views/monitor/IndexView.vue:736 -#: src/views/toolbox/DiskView.vue:353 -#: src/views/toolbox/DiskView.vue:355 -#: src/views/toolbox/DiskView.vue:375 -#: src/views/toolbox/DiskView.vue:377 -#: src/views/toolbox/DiskView.vue:441 -#: src/views/toolbox/DiskView.vue:445 -#: src/views/toolbox/DiskView.vue:463 -#: src/views/toolbox/DiskView.vue:480 -#: src/views/toolbox/DiskView.vue:484 -#: src/views/toolbox/DiskView.vue:504 -#: src/views/toolbox/DiskView.vue:521 -#: src/views/toolbox/DiskView.vue:526 -#: src/views/toolbox/DiskView.vue:547 -#: src/views/toolbox/DiskView.vue:564 -#: src/views/toolbox/DiskView.vue:569 -#: src/views/toolbox/DiskView.vue:591 -#: src/views/toolbox/MigrationView.vue:347 -#: src/views/toolbox/ProcessView.vue:242 -#: src/views/toolbox/ProcessView.vue:247 +#: src/views/file/composables/usePaste.ts:72 src/views/file/UploadModal.vue:791 +#: src/views/home/IndexView.vue:1029 src/views/home/UpdateView.vue:109 +#: src/views/monitor/IndexView.vue:736 src/views/toolbox/DiskView.vue:353 +#: src/views/toolbox/DiskView.vue:355 src/views/toolbox/DiskView.vue:375 +#: src/views/toolbox/DiskView.vue:377 src/views/toolbox/DiskView.vue:441 +#: src/views/toolbox/DiskView.vue:445 src/views/toolbox/DiskView.vue:463 +#: src/views/toolbox/DiskView.vue:480 src/views/toolbox/DiskView.vue:484 +#: src/views/toolbox/DiskView.vue:504 src/views/toolbox/DiskView.vue:521 +#: src/views/toolbox/DiskView.vue:526 src/views/toolbox/DiskView.vue:547 +#: src/views/toolbox/DiskView.vue:564 src/views/toolbox/DiskView.vue:569 +#: src/views/toolbox/DiskView.vue:591 src/views/toolbox/MigrationView.vue:368 +#: src/views/toolbox/ProcessView.vue:242 src/views/toolbox/ProcessView.vue:247 msgid "Confirm" msgstr "確認" #: src/components/common/PtyTerminalModal.vue:203 -msgid "Command may still running. Closing the window will terminate the command. Are you sure?" +msgid "" +"Command may still running. Closing the window will terminate the command. " +"Are you sure?" msgstr "命令可能仍在運行。關閉窗口將終止命令。您確定嗎?" #: src/components/common/PtyTerminalModal.vue:207 -#: src/components/file-editor/EditorToolbar.vue:102 -#: src/components/file-editor/FileTree.vue:605 +#: src/components/file-editor/EditorToolbar.vue:77 +#: src/components/file-editor/FileTree.vue:590 #: src/components/system/composables/useConfirm.ts:37 #: src/components/system/composables/useConfirm.ts:83 #: src/components/system/ConfirmDialog.vue:58 @@ -637,49 +562,36 @@ msgstr "命令可能仍在運行。關閉窗口將終止命令。您確定嗎? #: src/layouts/header/components/UserAvatar.vue:31 #: src/views/app/TemplateDeployModal.vue:637 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:239 -#: src/views/container/ContainerCreate.vue:534 +#: src/views/container/ContainerCreate.vue:147 +#: src/views/container/ContainerCreate.vue:635 #: src/views/container/ImagePullModal.vue:185 #: src/views/container/ImagePullModal.vue:199 -#: src/views/container/ImageView.vue:347 -#: src/views/container/ImageView.vue:362 -#: src/views/file/composables/usePaste.ts:66 -#: src/views/file/composables/usePaste.ts:146 -#: src/views/file/ListView.vue:245 -#: src/views/file/ListView.vue:769 -#: src/views/file/ToolBar.vue:208 -#: src/views/file/UploadModal.vue:507 -#: src/views/file/UploadModal.vue:642 -#: src/views/file/UploadModal.vue:790 -#: src/views/home/IndexView.vue:1030 -#: src/views/home/UpdateView.vue:110 -#: src/views/project/EditModal.vue:579 -#: src/views/toolbox/DiskView.vue:356 -#: src/views/toolbox/DiskView.vue:378 -#: src/views/toolbox/DiskView.vue:399 -#: src/views/toolbox/DiskView.vue:423 -#: src/views/toolbox/DiskView.vue:446 -#: src/views/toolbox/DiskView.vue:464 -#: src/views/toolbox/DiskView.vue:485 -#: src/views/toolbox/DiskView.vue:505 -#: src/views/toolbox/DiskView.vue:527 -#: src/views/toolbox/DiskView.vue:548 -#: src/views/toolbox/DiskView.vue:570 -#: src/views/toolbox/DiskView.vue:592 -#: src/views/toolbox/MigrationView.vue:258 -#: src/views/toolbox/MigrationView.vue:348 -#: src/views/toolbox/ProcessView.vue:248 -#: src/views/website/EditModal.vue:2131 +#: src/views/container/ImageView.vue:347 src/views/container/ImageView.vue:362 +#: src/views/file/composables/usePaste.ts:73 +#: src/views/file/composables/usePaste.ts:153 src/views/file/ListView.vue:287 +#: src/views/file/ListView.vue:821 src/views/file/ToolBar.vue:181 +#: src/views/file/UploadModal.vue:507 src/views/file/UploadModal.vue:642 +#: src/views/file/UploadModal.vue:790 src/views/home/IndexView.vue:1030 +#: src/views/home/UpdateView.vue:110 src/views/project/EditModal.vue:579 +#: src/views/ssh/SftpPanel.vue:277 src/views/tamper/RuleModal.vue:124 +#: src/views/toolbox/DiskView.vue:356 src/views/toolbox/DiskView.vue:378 +#: src/views/toolbox/DiskView.vue:399 src/views/toolbox/DiskView.vue:423 +#: src/views/toolbox/DiskView.vue:446 src/views/toolbox/DiskView.vue:464 +#: src/views/toolbox/DiskView.vue:485 src/views/toolbox/DiskView.vue:505 +#: src/views/toolbox/DiskView.vue:527 src/views/toolbox/DiskView.vue:548 +#: src/views/toolbox/DiskView.vue:570 src/views/toolbox/DiskView.vue:592 +#: src/views/toolbox/MigrationView.vue:208 +#: src/views/toolbox/MigrationView.vue:279 +#: src/views/toolbox/MigrationView.vue:369 +#: src/views/toolbox/ProcessView.vue:248 src/views/website/EditModal.vue:2141 msgid "Cancel" msgstr "取消" -#: src/components/common/PtyTerminalModal.vue:259 -#: src/locales/menu.ts:19 -#: src/views/container/ContainerView.vue:123 -#: src/views/container/ContainerView.vue:642 -#: src/views/database/ServerList.vue:174 -#: src/views/file/ListView.vue:350 -#: src/views/file/ListView.vue:965 -#: src/views/file/ToolBar.vue:183 +#: src/components/common/PtyTerminalModal.vue:259 src/locales/menu.ts:19 +#: src/views/container/ContainerView.vue:142 +#: src/views/container/ContainerView.vue:669 +#: src/views/database/ServerList.vue:174 src/views/file/ListView.vue:392 +#: src/views/file/ListView.vue:986 src/views/file/ToolBar.vue:156 msgid "Terminal" msgstr "終端機" @@ -704,12 +616,10 @@ msgid "Jump to Bottom" msgstr "跳至底部" #: src/components/common/RealtimeLog.vue:306 -#: src/components/file-editor/EditorToolbar.vue:222 -#: src/components/file-editor/FileTree.vue:719 -#: src/components/system/SearchToolbar.vue:58 -#: src/views/app/AppView.vue:237 -#: src/views/app/EnvironmentView.vue:226 -#: src/views/app/TemplateView.vue:102 +#: src/components/file-editor/EditorToolbar.vue:190 +#: src/components/file-editor/FileTree.vue:702 +#: src/components/system/SearchToolbar.vue:58 src/views/app/AppView.vue:258 +#: src/views/app/EnvironmentView.vue:248 src/views/app/TemplateView.vue:102 #: src/views/database/ElasticsearchDataView.vue:314 #: src/views/database/RedisDataView.vue:289 msgid "Search" @@ -731,13 +641,10 @@ msgstr "放大字體" msgid "No logs available" msgstr "暫無日誌數據" -#: src/components/common/RealtimeLogModal.vue:37 -#: src/locales/menu.ts:15 +#: src/components/common/RealtimeLogModal.vue:37 src/locales/menu.ts:15 #: src/views/apps/supervisor/IndexView.vue:98 -#: src/views/container/ContainerView.vue:135 -#: src/views/project/ListView.vue:168 -#: src/views/project/ListView.vue:334 -#: src/views/task/CronView.vue:146 +#: src/views/container/ContainerView.vue:154 src/views/project/ListView.vue:168 +#: src/views/project/ListView.vue:334 src/views/task/CronView.vue:146 #: src/views/task/TaskView.vue:86 msgid "Logs" msgstr "日誌" @@ -758,33 +665,27 @@ msgstr "您確定要清除日誌嗎?" msgid "Clear Log" msgstr "清除日誌" -#: src/components/common/ServiceStatus.vue:29 -#: src/views/home/IndexView.vue:891 -#: src/views/home/IndexView.vue:899 -#: src/views/home/IndexView.vue:906 -#: src/views/home/IndexView.vue:912 -#: src/views/home/IndexView.vue:923 +#: src/components/common/ServiceStatus.vue:29 src/views/home/IndexView.vue:891 +#: src/views/home/IndexView.vue:899 src/views/home/IndexView.vue:906 +#: src/views/home/IndexView.vue:912 src/views/home/IndexView.vue:923 #: src/views/home/IndexView.vue:935 msgid "Loading..." msgstr "載入中……" #: src/components/common/ServiceStatus.vue:30 -#: src/views/app/InstalledView.vue:19 +#: src/views/app/InstalledView.vue:30 #: src/views/apps/prometheus/PrometheusExportersView.vue:50 -#: src/views/project/ListView.vue:70 -#: src/views/task/TaskView.vue:45 -#: src/views/toolbox/ProcessView.vue:48 -#: src/views/toolbox/ProcessView.vue:77 +#: src/views/project/ListView.vue:70 src/views/task/TaskView.vue:45 +#: src/views/toolbox/ProcessView.vue:48 src/views/toolbox/ProcessView.vue:77 #: src/views/website/ListView.vue:135 msgid "Running" msgstr "運行中" #: src/components/common/ServiceStatus.vue:30 -#: src/views/app/InstalledView.vue:20 +#: src/views/app/InstalledView.vue:31 #: src/views/apps/prometheus/PrometheusExportersView.vue:51 -#: src/views/project/ListView.vue:72 -#: src/views/toolbox/ProcessView.vue:50 -#: src/views/toolbox/ProcessView.vue:83 +#: src/views/project/ListView.vue:72 src/views/tamper/IndexView.vue:233 +#: src/views/toolbox/ProcessView.vue:50 src/views/toolbox/ProcessView.vue:83 msgid "Stopped" msgstr "已停止" @@ -795,8 +696,7 @@ msgstr "正在啟動……" #: src/components/common/ServiceStatus.vue:52 #: src/views/apps/prometheus/PrometheusExportersView.vue:160 #: src/views/apps/supervisor/IndexView.vue:236 -#: src/views/project/ListView.vue:222 -#: src/views/website/ListView.vue:335 +#: src/views/project/ListView.vue:222 src/views/website/ListView.vue:335 msgid "Started successfully" msgstr "啟動成功" @@ -808,8 +708,7 @@ msgstr "停止中..." #: src/components/common/ServiceStatus.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:167 #: src/views/apps/supervisor/IndexView.vue:243 -#: src/views/project/ListView.vue:217 -#: src/views/website/ListView.vue:337 +#: src/views/project/ListView.vue:217 src/views/website/ListView.vue:337 msgid "Stopped successfully" msgstr "停止成功" @@ -870,8 +769,8 @@ msgstr "自啟動已成功禁用" #: src/views/apps/rsync/IndexView.vue:194 #: src/views/apps/supervisor/IndexView.vue:308 #: src/views/apps/valkey/IndexView.vue:62 -#: src/views/container/ContainerView.vue:101 -#: src/views/environment/PHPView.vue:189 +#: src/views/container/ContainerView.vue:106 +#: src/views/environment/PHPView.vue:189 src/views/tamper/IndexView.vue:229 msgid "Running Status" msgstr "運行狀態" @@ -887,10 +786,9 @@ msgstr "自動啟動關閉" #: src/views/apps/prometheus/PrometheusExportersView.vue:88 #: src/views/apps/supervisor/IndexView.vue:120 #: src/views/container/ComposeView.vue:160 -#: src/views/container/ContainerView.vue:158 -#: src/views/container/ContainerView.vue:566 -#: src/views/project/ListView.vue:130 -#: src/views/toolbox/MigrationView.vue:257 +#: src/views/container/ContainerView.vue:181 +#: src/views/container/ContainerView.vue:593 src/views/project/ListView.vue:130 +#: src/views/toolbox/MigrationView.vue:278 msgid "Start" msgstr "開始" @@ -902,18 +800,16 @@ msgstr "您確定要停止 %{ service } 嗎?" #: src/views/apps/prometheus/PrometheusExportersView.vue:96 #: src/views/apps/supervisor/IndexView.vue:141 #: src/views/container/ComposeView.vue:189 -#: src/views/container/ContainerView.vue:163 -#: src/views/container/ContainerView.vue:569 -#: src/views/project/ListView.vue:130 +#: src/views/container/ContainerView.vue:186 +#: src/views/container/ContainerView.vue:596 src/views/project/ListView.vue:130 msgid "Stop" msgstr "停止" #: src/components/common/ServiceStatus.vue:181 #: src/views/apps/prometheus/PrometheusExportersView.vue:103 #: src/views/apps/supervisor/IndexView.vue:159 -#: src/views/container/ContainerView.vue:168 -#: src/views/container/ContainerView.vue:572 -#: src/views/home/IndexView.vue:555 +#: src/views/container/ContainerView.vue:191 +#: src/views/container/ContainerView.vue:599 src/views/home/IndexView.vue:555 #: src/views/project/ListView.vue:145 msgid "Restart" msgstr "重啟" @@ -924,33 +820,29 @@ msgstr "重啟" msgid "Reload" msgstr "重載" -#: src/components/file-editor/EditorPane.vue:126 -#: src/components/file-editor/EditorToolbar.vue:99 +#: src/components/file-editor/EditorPane.vue:158 +#: src/components/file-editor/EditorToolbar.vue:74 #: src/views/file/EditModal.vue:41 msgid "Unsaved Changes" msgstr "未保存的更改" -#: src/components/file-editor/EditorPane.vue:127 +#: src/components/file-editor/EditorPane.vue:159 msgid "This file has unsaved changes. Are you sure you want to close it?" msgstr "此文件有未保存的更改。您確定要關閉它嗎?" -#: src/components/file-editor/EditorPane.vue:139 +#: src/components/file-editor/EditorPane.vue:171 #: src/views/file/EditModal.vue:55 msgid "Go Back" msgstr "返回" -#: src/components/file-editor/EditorPane.vue:150 +#: src/components/file-editor/EditorPane.vue:182 #: src/views/file/EditModal.vue:66 msgid "Discard" msgstr "放棄" -#: src/components/file-editor/EditorPane.vue:165 -msgid "Failed to save file" -msgstr "儲存檔案失敗" - -#: src/components/file-editor/EditorPane.vue:170 -#: src/components/file-editor/EditorToolbar.vue:185 -#: src/views/apps/apache/IndexView.vue:92 +#: src/components/file-editor/EditorPane.vue:198 +#: src/components/file-editor/EditorToolbar.vue:153 +#: src/views/app/CustomModal.vue:104 src/views/apps/apache/IndexView.vue:92 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:91 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:116 #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:138 @@ -963,10 +855,8 @@ msgstr "儲存檔案失敗" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:97 #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:132 #: src/views/apps/elasticsearch/IndexView.vue:82 -#: src/views/apps/frp/IndexView.vue:76 -#: src/views/apps/frp/IndexView.vue:91 -#: src/views/apps/frp/IndexView.vue:109 -#: src/views/apps/frp/IndexView.vue:124 +#: src/views/apps/frp/IndexView.vue:76 src/views/apps/frp/IndexView.vue:91 +#: src/views/apps/frp/IndexView.vue:109 src/views/apps/frp/IndexView.vue:124 #: src/views/apps/gitea/IndexView.vue:55 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:184 #: src/views/apps/grafana/GrafanaConfigTuneView.vue:218 @@ -1001,6 +891,7 @@ msgstr "儲存檔案失敗" #: src/views/apps/opensearch/IndexView.vue:82 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:97 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:132 +#: src/views/apps/pgadmin/IndexView.vue:96 #: src/views/apps/phpmyadmin/IndexView.vue:83 #: src/views/apps/phpmyadmin/IndexView.vue:107 #: src/views/apps/podman/IndexView.vue:80 @@ -1036,48 +927,40 @@ msgstr "儲存檔案失敗" #: src/views/apps/valkey/ValkeyConfigTuneView.vue:171 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:205 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:230 -#: src/views/environment/GoView.vue:90 -#: src/views/environment/NodejsView.vue:93 +#: src/views/container/ContainerCreate.vue:638 +#: src/views/environment/GoView.vue:90 src/views/environment/NodejsView.vue:93 #: src/views/environment/PhpConfigTuneView.vue:274 #: src/views/environment/PhpConfigTuneView.vue:305 #: src/views/environment/PhpConfigTuneView.vue:376 #: src/views/environment/PhpConfigTuneView.vue:421 #: src/views/environment/PhpConfigTuneView.vue:486 #: src/views/environment/PhpConfigTuneView.vue:561 -#: src/views/environment/PHPView.vue:236 -#: src/views/environment/PHPView.vue:254 -#: src/views/environment/PythonView.vue:97 -#: src/views/file/EditModal.vue:111 -#: src/views/firewall/SettingView.vue:136 -#: src/views/project/EditModal.vue:582 -#: src/views/setting/IndexView.vue:169 -#: src/views/task/CreateModal.vue:551 -#: src/views/task/CronView.vue:344 -#: src/views/toolbox/SshView.vue:220 -#: src/views/toolbox/SystemView.vue:195 -#: src/views/toolbox/SystemView.vue:224 -#: src/views/toolbox/SystemView.vue:247 -#: src/views/toolbox/SystemView.vue:290 -#: src/views/toolbox/SystemView.vue:372 -#: src/views/toolbox/WebHookView.vue:400 -#: src/views/website/EditModal.vue:2140 +#: src/views/environment/PHPView.vue:236 src/views/environment/PHPView.vue:254 +#: src/views/environment/PythonView.vue:97 src/views/file/EditModal.vue:89 +#: src/views/firewall/SettingView.vue:136 src/views/project/EditModal.vue:582 +#: src/views/setting/IndexView.vue:169 src/views/tamper/RuleModal.vue:126 +#: src/views/task/CreateModal.vue:551 src/views/task/CronView.vue:344 +#: src/views/toolbox/SshView.vue:220 src/views/toolbox/SystemView.vue:195 +#: src/views/toolbox/SystemView.vue:224 src/views/toolbox/SystemView.vue:247 +#: src/views/toolbox/SystemView.vue:290 src/views/toolbox/SystemView.vue:372 +#: src/views/toolbox/WebHookView.vue:400 src/views/website/EditModal.vue:2150 msgid "Save" msgstr "儲存" -#: src/components/file-editor/EditorPane.vue:258 +#: src/components/file-editor/EditorPane.vue:286 #: src/layouts/tab/components/ContextMenu.vue:53 msgid "Close Others" msgstr "關閉其他" -#: src/components/file-editor/EditorPane.vue:262 +#: src/components/file-editor/EditorPane.vue:290 msgid "Close All" msgstr "關閉所有" -#: src/components/file-editor/EditorPane.vue:266 +#: src/components/file-editor/EditorPane.vue:294 msgid "Close Saved" msgstr "關閉已保存" -#: src/components/file-editor/EditorPane.vue:470 +#: src/components/file-editor/EditorPane.vue:518 msgid "Select a file to edit" msgstr "選擇要編輯的文件" @@ -1115,336 +998,310 @@ msgid "No file to save" msgstr "沒有文件可保存" #: src/components/file-editor/EditorToolbar.vue:32 -#: src/components/file-editor/EditorToolbar.vue:51 +#: src/components/file-editor/EditorToolbar.vue:47 msgid "No changes to save" msgstr "沒有要保存的更改" -#: src/components/file-editor/EditorToolbar.vue:81 -#: src/views/file/EditModal.vue:100 +#: src/components/file-editor/EditorToolbar.vue:56 +#: src/views/file/EditModal.vue:78 msgid "All files saved successfully" msgstr "所有文件已成功保存" -#: src/components/file-editor/EditorToolbar.vue:84 +#: src/components/file-editor/EditorToolbar.vue:59 msgid "Saved %{ success } files, %{ fail } failed" msgstr "保存了 %{ success } 個文件,%{ fail } 個失敗" -#: src/components/file-editor/EditorToolbar.vue:100 +#: src/components/file-editor/EditorToolbar.vue:75 msgid "This file has unsaved changes. Refreshing will discard them. Continue?" msgstr "此文件有未保存的更改。刷新將丟棄它們。是否繼續?" -#: src/components/file-editor/EditorToolbar.vue:101 -#: src/components/file-editor/EditorToolbar.vue:201 -#: src/components/file-editor/EditorToolbar.vue:206 -#: src/components/file-editor/FileTree.vue:697 +#: src/components/file-editor/EditorToolbar.vue:76 +#: src/components/file-editor/EditorToolbar.vue:169 +#: src/components/file-editor/EditorToolbar.vue:174 +#: src/components/file-editor/FileTree.vue:680 #: src/components/system/RefreshButton.vue:31 -#: src/components/system/RefreshButton.vue:37 -#: src/views/file/PathInput.vue:133 -#: src/views/home/UpdateView.vue:166 -#: src/views/log/DatabaseLog.vue:132 -#: src/views/log/HttpLog.vue:161 -#: src/views/log/OperationLog.vue:184 -#: src/views/log/SSHLog.vue:115 -#: src/views/toolbox/MigrationView.vue:588 -#: src/views/toolbox/NetworkView.vue:188 -#: src/views/toolbox/PanelView.vue:100 -#: src/views/toolbox/PanelView.vue:233 -#: src/views/toolbox/ProcessView.vue:335 +#: src/components/system/RefreshButton.vue:37 src/views/file/PathInput.vue:133 +#: src/views/home/UpdateView.vue:166 src/views/log/DatabaseLog.vue:132 +#: src/views/log/HttpLog.vue:161 src/views/log/OperationLog.vue:184 +#: src/views/log/SSHLog.vue:115 src/views/ssh/SftpBrowser.vue:138 +#: src/views/tamper/IndexView.vue:376 src/views/toolbox/MigrationView.vue:610 +#: src/views/toolbox/NetworkView.vue:188 src/views/toolbox/PanelView.vue:100 +#: src/views/toolbox/PanelView.vue:233 src/views/toolbox/ProcessView.vue:335 #: src/views/website/StatsView.vue:176 msgid "Refresh" msgstr "重新整理" -#: src/components/file-editor/EditorToolbar.vue:118 +#: src/components/file-editor/EditorToolbar.vue:89 msgid "Refreshed successfully" msgstr "刷新成功" -#: src/components/file-editor/EditorToolbar.vue:180 +#: src/components/file-editor/EditorToolbar.vue:148 msgid "Save (Ctrl+S)" msgstr "保存(Ctrl+S)" -#: src/components/file-editor/EditorToolbar.vue:191 +#: src/components/file-editor/EditorToolbar.vue:159 msgid "Save All (Ctrl+Shift+S)" msgstr "保存所有(Ctrl+Shift+S)" -#: src/components/file-editor/EditorToolbar.vue:196 +#: src/components/file-editor/EditorToolbar.vue:164 msgid "Save All" msgstr "保存所有" -#: src/components/file-editor/EditorToolbar.vue:217 +#: src/components/file-editor/EditorToolbar.vue:185 msgid "Search (Ctrl+F)" msgstr "搜索(Ctrl+F)" -#: src/components/file-editor/EditorToolbar.vue:227 +#: src/components/file-editor/EditorToolbar.vue:195 msgid "Replace (Ctrl+H)" msgstr "替換(Ctrl+H)" -#: src/components/file-editor/EditorToolbar.vue:232 +#: src/components/file-editor/EditorToolbar.vue:200 msgid "Replace" msgstr "替換" -#: src/components/file-editor/EditorToolbar.vue:237 +#: src/components/file-editor/EditorToolbar.vue:205 msgid "Go to Line (Ctrl+G)" msgstr "轉到行(Ctrl+G)" -#: src/components/file-editor/EditorToolbar.vue:242 +#: src/components/file-editor/EditorToolbar.vue:210 msgid "Go to" msgstr "轉到" -#: src/components/file-editor/EditorToolbar.vue:271 +#: src/components/file-editor/EditorToolbar.vue:239 msgid "Toggle Word Wrap" msgstr "切換自動換行" -#: src/components/file-editor/EditorToolbar.vue:282 +#: src/components/file-editor/EditorToolbar.vue:250 msgid "Toggle Minimap" msgstr "切換小地圖" -#: src/components/file-editor/EditorToolbar.vue:292 -#: src/views/firewall/IndexView.vue:26 -#: src/views/ssh/IndexView.vue:483 -#: src/views/website/IndexView.vue:30 +#: src/components/file-editor/EditorToolbar.vue:260 +#: src/views/firewall/IndexView.vue:26 src/views/ssh/IndexView.vue:521 +#: src/views/tamper/IndexView.vue:217 src/views/website/IndexView.vue:30 msgid "Settings" msgstr "設置" -#: src/components/file-editor/FileEditorView.vue:146 +#: src/components/file-editor/FileEditorView.vue:149 msgid "Editor Settings" msgstr "編輯器設置" -#: src/components/file-editor/FileEditorView.vue:152 +#: src/components/file-editor/FileEditorView.vue:155 #: src/views/setting/IndexView.vue:147 msgid "Basic" msgstr "基本" -#: src/components/file-editor/FileEditorView.vue:154 +#: src/components/file-editor/FileEditorView.vue:157 msgid "Tab Size" msgstr "Tab 大小" -#: src/components/file-editor/FileEditorView.vue:162 +#: src/components/file-editor/FileEditorView.vue:165 msgid "Use Spaces" msgstr "使用空格" -#: src/components/file-editor/FileEditorView.vue:168 -#: src/views/ssh/IndexView.vue:489 +#: src/components/file-editor/FileEditorView.vue:171 +#: src/views/ssh/IndexView.vue:527 msgid "Font Size" msgstr "字體大小" -#: src/components/file-editor/FileEditorView.vue:178 +#: src/components/file-editor/FileEditorView.vue:181 msgid "Word Wrap" msgstr "自動換行" -#: src/components/file-editor/FileEditorView.vue:182 -#: src/components/file-editor/FileEditorView.vue:208 +#: src/components/file-editor/FileEditorView.vue:185 +#: src/components/file-editor/FileEditorView.vue:211 #: src/views/apps/mysql/MysqlConfigTuneView.vue:102 msgid "Off" msgstr "關閉" -#: src/components/file-editor/FileEditorView.vue:183 -#: src/components/file-editor/FileEditorView.vue:207 +#: src/components/file-editor/FileEditorView.vue:186 +#: src/components/file-editor/FileEditorView.vue:210 #: src/views/apps/mysql/MysqlConfigTuneView.vue:101 msgid "On" msgstr "開啟" -#: src/components/file-editor/FileEditorView.vue:184 +#: src/components/file-editor/FileEditorView.vue:187 msgid "Word Wrap Column" msgstr "換行列" -#: src/components/file-editor/FileEditorView.vue:185 +#: src/components/file-editor/FileEditorView.vue:188 msgid "Bounded" msgstr "邊界" -#: src/components/file-editor/FileEditorView.vue:193 +#: src/components/file-editor/FileEditorView.vue:196 msgid "Show Minimap" msgstr "顯示小地圖" -#: src/components/file-editor/FileEditorView.vue:201 +#: src/components/file-editor/FileEditorView.vue:204 msgid "Display" msgstr "顯示" -#: src/components/file-editor/FileEditorView.vue:203 +#: src/components/file-editor/FileEditorView.vue:206 msgid "Line Numbers" msgstr "行號" -#: src/components/file-editor/FileEditorView.vue:209 +#: src/components/file-editor/FileEditorView.vue:212 msgid "Relative" msgstr "相對" -#: src/components/file-editor/FileEditorView.vue:210 +#: src/components/file-editor/FileEditorView.vue:213 msgid "Interval" msgstr "間隔" -#: src/components/file-editor/FileEditorView.vue:218 +#: src/components/file-editor/FileEditorView.vue:221 msgid "Render Whitespace" msgstr "渲染空格" -#: src/components/file-editor/FileEditorView.vue:222 -#: src/views/apps/docker/IndexView.vue:83 -#: src/views/cert/CertView.vue:88 -#: src/views/cert/CertView.vue:142 -#: src/views/cert/CertView.vue:153 -#: src/views/cert/CertView.vue:171 -#: src/views/container/ContainerCreate.vue:53 -#: src/views/database/ServerList.vue:78 -#: src/views/database/ServerList.vue:93 -#: src/views/database/UserList.vue:28 -#: src/views/database/UserList.vue:68 -#: src/views/firewall/ForwardView.vue:27 -#: src/views/firewall/IpRuleView.vue:27 -#: src/views/firewall/IpRuleView.vue:44 -#: src/views/firewall/RuleView.vue:44 -#: src/views/firewall/RuleView.vue:61 -#: src/views/toolbox/MigrationView.vue:479 -#: src/views/toolbox/MigrationView.vue:480 -#: src/views/toolbox/MigrationView.vue:559 -#: src/views/toolbox/MigrationView.vue:574 +#: src/components/file-editor/FileEditorView.vue:225 +#: src/views/apps/docker/IndexView.vue:83 src/views/cert/CertView.vue:88 +#: src/views/cert/CertView.vue:142 src/views/cert/CertView.vue:153 +#: src/views/cert/CertView.vue:171 src/views/container/ContainerCreate.vue:57 +#: src/views/database/ServerList.vue:78 src/views/database/ServerList.vue:93 +#: src/views/database/UserList.vue:28 src/views/database/UserList.vue:68 +#: src/views/firewall/ForwardView.vue:27 src/views/firewall/IpRuleView.vue:27 +#: src/views/firewall/IpRuleView.vue:44 src/views/firewall/RuleView.vue:44 +#: src/views/firewall/RuleView.vue:61 src/views/toolbox/MigrationView.vue:501 +#: src/views/toolbox/MigrationView.vue:502 +#: src/views/toolbox/MigrationView.vue:581 +#: src/views/toolbox/MigrationView.vue:596 msgid "None" msgstr "無" -#: src/components/file-editor/FileEditorView.vue:223 +#: src/components/file-editor/FileEditorView.vue:226 msgid "Boundary" msgstr "邊界" -#: src/components/file-editor/FileEditorView.vue:224 +#: src/components/file-editor/FileEditorView.vue:227 msgid "Selection" msgstr "選擇" -#: src/components/file-editor/FileEditorView.vue:225 +#: src/components/file-editor/FileEditorView.vue:228 msgid "Trailing" msgstr "尾部" -#: src/components/file-editor/FileEditorView.vue:226 -#: src/views/app/AppView.vue:222 -#: src/views/app/EnvironmentView.vue:211 -#: src/views/app/TemplateView.vue:87 -#: src/views/firewall/RuleView.vue:223 -#: src/views/project/IndexView.vue:21 -#: src/views/website/IndexView.vue:25 +#: src/components/file-editor/FileEditorView.vue:229 +#: src/views/app/AppView.vue:243 src/views/app/EnvironmentView.vue:233 +#: src/views/app/TemplateView.vue:87 src/views/firewall/RuleView.vue:223 +#: src/views/project/IndexView.vue:21 src/views/website/IndexView.vue:25 #: src/views/website/stats/ErrorsTab.vue:18 msgid "All" msgstr "全部" -#: src/components/file-editor/FileEditorView.vue:234 +#: src/components/file-editor/FileEditorView.vue:237 msgid "Bracket Colorization" msgstr "括號著色" -#: src/components/file-editor/FileEditorView.vue:242 +#: src/components/file-editor/FileEditorView.vue:245 msgid "Indent Guides" msgstr "縮進指示" -#: src/components/file-editor/FileEditorView.vue:248 +#: src/components/file-editor/FileEditorView.vue:251 msgid "Code Folding" msgstr "代碼折疊" -#: src/components/file-editor/FileEditorView.vue:256 +#: src/components/file-editor/FileEditorView.vue:259 msgid "Cursor" msgstr "光標" -#: src/components/file-editor/FileEditorView.vue:258 +#: src/components/file-editor/FileEditorView.vue:261 msgid "Cursor Style" msgstr "光標樣式" -#: src/components/file-editor/FileEditorView.vue:262 +#: src/components/file-editor/FileEditorView.vue:265 msgid "Line" msgstr "線" -#: src/components/file-editor/FileEditorView.vue:263 +#: src/components/file-editor/FileEditorView.vue:266 msgid "Block" msgstr "塊" -#: src/components/file-editor/FileEditorView.vue:264 +#: src/components/file-editor/FileEditorView.vue:267 msgid "Underline" msgstr "下劃線" -#: src/components/file-editor/FileEditorView.vue:265 +#: src/components/file-editor/FileEditorView.vue:268 msgid "Line Thin" msgstr "細線" -#: src/components/file-editor/FileEditorView.vue:266 +#: src/components/file-editor/FileEditorView.vue:269 msgid "Block Outline" msgstr "塊輪廓" -#: src/components/file-editor/FileEditorView.vue:267 +#: src/components/file-editor/FileEditorView.vue:270 msgid "Underline Thin" msgstr "細下劃線" -#: src/components/file-editor/FileEditorView.vue:282 +#: src/components/file-editor/FileEditorView.vue:285 msgid "Cursor Blinking" msgstr "光標閃爍" -#: src/components/file-editor/FileEditorView.vue:286 +#: src/components/file-editor/FileEditorView.vue:289 msgid "Blink" msgstr "閃爍" -#: src/components/file-editor/FileEditorView.vue:287 +#: src/components/file-editor/FileEditorView.vue:290 msgid "Smooth" msgstr "平滑" -#: src/components/file-editor/FileEditorView.vue:288 +#: src/components/file-editor/FileEditorView.vue:291 msgid "Phase" msgstr "階段" -#: src/components/file-editor/FileEditorView.vue:289 +#: src/components/file-editor/FileEditorView.vue:292 msgid "Expand" msgstr "展開" -#: src/components/file-editor/FileEditorView.vue:290 +#: src/components/file-editor/FileEditorView.vue:293 msgid "Solid" msgstr "實體" -#: src/components/file-editor/FileEditorView.vue:298 +#: src/components/file-editor/FileEditorView.vue:301 msgid "Smooth Scrolling" msgstr "平滑滾動" -#: src/components/file-editor/FileEditorView.vue:306 +#: src/components/file-editor/FileEditorView.vue:309 msgid "Behavior" msgstr "行為" -#: src/components/file-editor/FileEditorView.vue:308 +#: src/components/file-editor/FileEditorView.vue:311 msgid "Mouse Wheel Zoom" msgstr "鼠標滾輪縮放" -#: src/components/file-editor/FileEditorView.vue:314 +#: src/components/file-editor/FileEditorView.vue:317 msgid "Format On Paste" msgstr "粘貼時格式化" -#: src/components/file-editor/FileEditorView.vue:320 +#: src/components/file-editor/FileEditorView.vue:323 msgid "Format On Type" msgstr "輸入時格式化" -#: src/components/file-editor/FileTree.vue:155 -#: src/views/file/EditModal.vue:138 -msgid "Failed to load file" -msgstr "加載文件失敗" - -#: src/components/file-editor/FileTree.vue:311 +#: src/components/file-editor/FileTree.vue:291 msgid "Failed to create" msgstr "創建失敗" -#: src/components/file-editor/FileTree.vue:380 -#: src/views/file/ListView.vue:1377 -#: src/views/file/ListView.vue:1398 +#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1429 +#: src/views/file/ListView.vue:1450 msgid "Folder name" msgstr "文件夾名" -#: src/components/file-editor/FileTree.vue:380 -#: src/views/file/ListView.vue:1377 -#: src/views/file/ListView.vue:1398 +#: src/components/file-editor/FileTree.vue:360 src/views/file/ListView.vue:1429 +#: src/views/file/ListView.vue:1450 msgid "File name" msgstr "文件名" -#: src/components/file-editor/FileTree.vue:479 -#: src/views/container/ContainerView.vue:150 -#: src/views/container/ContainerView.vue:613 +#: src/components/file-editor/FileTree.vue:459 +#: src/views/container/ContainerView.vue:169 +#: src/views/container/ContainerView.vue:640 #: src/views/database/RedisDataView.vue:168 -#: src/views/file/composables/usePaste.ts:41 -#: src/views/file/composables/usePaste.ts:157 -#: src/views/file/ListView.vue:348 -#: src/views/file/ListView.vue:1546 -#: src/views/file/UploadModal.vue:749 +#: src/views/file/composables/usePaste.ts:48 +#: src/views/file/composables/usePaste.ts:164 src/views/file/ListView.vue:390 +#: src/views/file/ListView.vue:1610 src/views/file/UploadModal.vue:749 #: src/views/file/UploadModal.vue:783 msgid "Rename" msgstr "重新命名" -#: src/components/file-editor/FileTree.vue:480 -#: src/components/file-editor/FileTree.vue:602 -#: src/components/file-editor/FileTree.vue:604 +#: src/components/file-editor/FileTree.vue:460 +#: src/components/file-editor/FileTree.vue:587 +#: src/components/file-editor/FileTree.vue:589 #: src/components/system/composables/useConfirm.ts:32 #: src/components/system/ConfirmDialog.vue:54 #: src/views/apps/fail2ban/IndexView.vue:96 @@ -1455,90 +1312,73 @@ msgstr "重新命名" #: src/views/apps/prometheus/PrometheusExportersView.vue:134 #: src/views/apps/pureftpd/IndexView.vue:87 #: src/views/apps/rsync/IndexView.vue:101 -#: src/views/apps/supervisor/IndexView.vue:178 -#: src/views/backup/ListView.vue:97 -#: src/views/backup/StorageView.vue:126 -#: src/views/cert/AccountView.vue:113 -#: src/views/cert/CertView.vue:308 -#: src/views/cert/DnsView.vue:109 +#: src/views/apps/supervisor/IndexView.vue:178 src/views/backup/ListView.vue:97 +#: src/views/backup/StorageView.vue:126 src/views/cert/AccountView.vue:113 +#: src/views/cert/CertView.vue:308 src/views/cert/DnsView.vue:109 #: src/views/container/ComposeView.vue:209 #: src/views/container/ComposeView.vue:289 -#: src/views/container/ContainerView.vue:188 -#: src/views/container/ContainerView.vue:584 -#: src/views/container/ImageView.vue:103 -#: src/views/container/ImageView.vue:273 +#: src/views/container/ContainerView.vue:211 +#: src/views/container/ContainerView.vue:611 +#: src/views/container/ImageView.vue:103 src/views/container/ImageView.vue:273 #: src/views/container/NetworkView.vue:130 #: src/views/container/NetworkView.vue:219 -#: src/views/container/VolumeView.vue:83 -#: src/views/container/VolumeView.vue:167 +#: src/views/container/VolumeView.vue:83 src/views/container/VolumeView.vue:167 #: src/views/database/DatabaseList.vue:86 #: src/views/database/ElasticsearchDataView.vue:146 #: src/views/database/ElasticsearchDataView.vue:200 #: src/views/database/RedisDataView.vue:182 -#: src/views/database/ServerList.vue:247 -#: src/views/database/UserList.vue:165 -#: src/views/environment/PHPView.vue:107 -#: src/views/file/ListView.vue:311 -#: src/views/file/ListView.vue:355 -#: src/views/file/ListView.vue:1557 -#: src/views/file/ToolBar.vue:225 -#: src/views/firewall/ForwardView.vue:98 -#: src/views/firewall/ForwardView.vue:162 -#: src/views/firewall/IpRuleView.vue:140 -#: src/views/firewall/IpRuleView.vue:204 -#: src/views/firewall/RuleView.vue:248 -#: src/views/firewall/RuleView.vue:312 -#: src/views/project/ListView.vue:194 -#: src/views/project/ListView.vue:305 -#: src/views/setting/PasskeyModal.vue:68 -#: src/views/setting/SettingUser.vue:142 -#: src/views/setting/TokenModal.vue:87 -#: src/views/ssh/IndexView.vue:572 -#: src/views/task/CronView.vue:169 -#: src/views/task/IndexView.vue:41 -#: src/views/task/TaskView.vue:104 -#: src/views/toolbox/WebHookView.vue:172 -#: src/views/website/ListView.vue:305 -#: src/views/website/ListView.vue:423 +#: src/views/database/ServerList.vue:247 src/views/database/UserList.vue:165 +#: src/views/environment/PHPView.vue:107 src/views/file/ListView.vue:353 +#: src/views/file/ListView.vue:404 src/views/file/ListView.vue:1621 +#: src/views/file/ToolBar.vue:198 src/views/firewall/ForwardView.vue:98 +#: src/views/firewall/ForwardView.vue:162 src/views/firewall/IpRuleView.vue:140 +#: src/views/firewall/IpRuleView.vue:204 src/views/firewall/RuleView.vue:248 +#: src/views/firewall/RuleView.vue:333 src/views/project/ListView.vue:194 +#: src/views/project/ListView.vue:305 src/views/setting/PasskeyModal.vue:68 +#: src/views/setting/SettingUser.vue:142 src/views/setting/TokenModal.vue:87 +#: src/views/ssh/IndexView.vue:614 src/views/tamper/IndexView.vue:148 +#: src/views/task/CronView.vue:169 src/views/task/IndexView.vue:41 +#: src/views/task/TaskView.vue:104 src/views/toolbox/WebHookView.vue:172 +#: src/views/website/ListView.vue:305 src/views/website/ListView.vue:423 msgid "Delete" msgstr "刪除" -#: src/components/file-editor/FileTree.vue:483 -#: src/views/file/ListView.vue:345 -#: src/views/file/ListView.vue:1541 -#: src/views/monitor/IndexView.vue:602 +#: src/components/file-editor/FileTree.vue:463 src/views/file/ListView.vue:387 +#: src/views/file/ListView.vue:1605 src/views/monitor/IndexView.vue:602 #: src/views/toolbox/SshView.vue:345 msgid "Download" msgstr "下載" -#: src/components/file-editor/FileTree.vue:567 +#: src/components/file-editor/FileTree.vue:549 +#, fuzzy +msgid "Target name already exists" +msgstr "檔案已存在" + +#: src/components/file-editor/FileTree.vue:555 #: src/views/database/RedisDataView.vue:238 msgid "Renamed successfully" msgstr "重命名成功" -#: src/components/file-editor/FileTree.vue:592 +#: src/components/file-editor/FileTree.vue:573 msgid "Failed to rename" msgstr "重命名失敗" -#: src/components/file-editor/FileTree.vue:603 +#: src/components/file-editor/FileTree.vue:588 #: src/views/apps/nginx/NginxIndex.vue:211 -#: src/views/apps/nginx/NginxIndex.vue:275 -#: src/views/file/ListView.vue:847 -#: src/views/file/ListView.vue:1551 +#: src/views/apps/nginx/NginxIndex.vue:275 src/views/file/ListView.vue:864 +#: src/views/file/ListView.vue:1615 msgid "Are you sure you want to delete %{ name }?" msgstr "您確定要刪除 %{ name } 嗎?" -#: src/components/file-editor/FileTree.vue:609 +#: src/components/file-editor/FileTree.vue:594 #: src/views/apps/fail2ban/IndexView.vue:190 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:185 #: src/views/apps/nginx/NginxIndex.vue:405 #: src/views/apps/nginx/NginxIndex.vue:489 #: src/views/apps/pureftpd/IndexView.vue:155 -#: src/views/apps/rsync/IndexView.vue:160 -#: src/views/apps/s3fs/IndexView.vue:87 +#: src/views/apps/rsync/IndexView.vue:160 src/views/apps/s3fs/IndexView.vue:87 #: src/views/apps/supervisor/IndexView.vue:257 -#: src/views/backup/ListView.vue:149 -#: src/views/backup/StorageView.vue:183 +#: src/views/backup/ListView.vue:149 src/views/backup/StorageView.vue:183 #: src/views/container/ImageView.vue:144 #: src/views/container/NetworkView.vue:176 #: src/views/container/VolumeView.vue:124 @@ -1546,63 +1386,50 @@ msgstr "您確定要刪除 %{ name } 嗎?" #: src/views/database/ElasticsearchDataView.vue:241 #: src/views/database/ElasticsearchDataView.vue:250 #: src/views/database/RedisDataView.vue:211 -#: src/views/database/ServerList.vue:268 -#: src/views/database/UserList.vue:185 -#: src/views/file/ListView.vue:824 -#: src/views/file/ListView.vue:831 -#: src/views/file/ToolBar.vue:115 +#: src/views/database/ServerList.vue:269 src/views/database/UserList.vue:185 +#: src/views/file/composables/useFileOps.ts:31 #: src/views/firewall/ForwardView.vue:119 -#: src/views/firewall/ForwardView.vue:137 -#: src/views/firewall/IpRuleView.vue:161 -#: src/views/firewall/IpRuleView.vue:179 -#: src/views/firewall/RuleView.vue:269 -#: src/views/firewall/RuleView.vue:287 -#: src/views/project/ListView.vue:268 -#: src/views/project/ListView.vue:278 -#: src/views/setting/PasskeyModal.vue:96 -#: src/views/setting/SettingUser.vue:173 -#: src/views/setting/TokenModal.vue:106 -#: src/views/task/CronView.vue:231 -#: src/views/task/CronView.vue:241 -#: src/views/task/TaskView.vue:126 -#: src/views/toolbox/WebHookView.vue:225 -#: src/views/website/ListView.vue:379 +#: src/views/firewall/ForwardView.vue:137 src/views/firewall/IpRuleView.vue:161 +#: src/views/firewall/IpRuleView.vue:179 src/views/firewall/RuleView.vue:290 +#: src/views/firewall/RuleView.vue:308 src/views/project/ListView.vue:268 +#: src/views/project/ListView.vue:278 src/views/setting/PasskeyModal.vue:96 +#: src/views/setting/SettingUser.vue:173 src/views/setting/TokenModal.vue:106 +#: src/views/tamper/IndexView.vue:109 src/views/task/CronView.vue:231 +#: src/views/task/CronView.vue:241 src/views/task/TaskView.vue:126 +#: src/views/toolbox/WebHookView.vue:225 src/views/website/ListView.vue:379 #: src/views/website/ListView.vue:389 msgid "Deleted successfully" msgstr "刪除成功" -#: src/components/file-editor/FileTree.vue:628 +#: src/components/file-editor/FileTree.vue:611 msgid "Failed to delete" msgstr "刪除失敗" -#: src/components/file-editor/FileTree.vue:692 +#: src/components/file-editor/FileTree.vue:675 msgid "Go Up" msgstr "上一級" -#: src/components/file-editor/FileTree.vue:704 -#: src/views/file/ListView.vue:292 +#: src/components/file-editor/FileTree.vue:687 src/views/file/ListView.vue:334 msgid "New File" msgstr "新文件" -#: src/components/file-editor/FileTree.vue:705 -#: src/views/file/ListView.vue:293 +#: src/components/file-editor/FileTree.vue:688 src/views/file/ListView.vue:335 msgid "New Folder" msgstr "新文件夾" -#: src/components/file-editor/FileTree.vue:709 -#: src/views/file/ToolBar.vue:179 +#: src/components/file-editor/FileTree.vue:692 src/views/file/ToolBar.vue:152 msgid "New" msgstr "新建" -#: src/components/file-editor/FileTree.vue:742 +#: src/components/file-editor/FileTree.vue:725 msgid "Enter path" msgstr "輸入路徑" -#: src/components/file-editor/FileTree.vue:772 +#: src/components/file-editor/FileTree.vue:755 msgid "No results found" msgstr "未找到結果" -#: src/components/file-editor/FileTree.vue:797 +#: src/components/file-editor/FileTree.vue:780 #: src/components/system/EmptyState.vue:34 #: src/views/website/stats/GeoTab.vue:163 msgid "No data" @@ -1612,8 +1439,7 @@ msgstr "無數據" msgid "selected" msgstr "已選擇" -#: src/components/system/BatchActions.vue:70 -#: src/views/file/ListView.vue:1591 +#: src/components/system/BatchActions.vue:70 src/views/file/ListView.vue:1655 msgid "Clear" msgstr "清除" @@ -1621,8 +1447,7 @@ msgstr "清除" msgid "Confirm Deletion" msgstr "確認刪除" -#: src/components/system/CopyButton.vue:26 -#: src/views/website/ListView.vue:100 +#: src/components/system/CopyButton.vue:26 src/views/website/ListView.vue:100 msgid "Copied" msgstr "已複製" @@ -1633,12 +1458,9 @@ msgstr "已複製" #: src/views/apps/mongodb/IndexView.vue:101 #: src/views/apps/mysql/MysqlIndex.vue:134 #: src/views/apps/postgresql/IndexView.vue:172 -#: src/views/database/ServerList.vue:106 -#: src/views/database/UserList.vue:56 -#: src/views/file/ListView.vue:307 -#: src/views/file/ListView.vue:341 -#: src/views/file/ListView.vue:950 -#: src/views/file/ToolBar.vue:214 +#: src/views/database/ServerList.vue:106 src/views/database/UserList.vue:56 +#: src/views/file/ListView.vue:349 src/views/file/ListView.vue:383 +#: src/views/file/ListView.vue:971 src/views/file/ToolBar.vue:187 msgid "Copy" msgstr "複製" @@ -1669,7 +1491,9 @@ msgid "Panel encountered a fault: %{key}" msgstr "面板遇到故障:%{key}" #: src/components/system/HealthBanner.vue:37 -msgid "Try running \"acepanel fix\" on the server to detect and rebuild the broken database file." +msgid "" +"Try running \"acepanel fix\" on the server to detect and rebuild the broken " +"database file." msgstr "嘗試在伺服器上運行 \"acepanel fix\" 來檢測和重建損壞的資料庫文件。" #: src/components/system/TableLayout.vue:86 @@ -1716,8 +1540,7 @@ msgstr "切換主題" #: src/layouts/header/components/UserAvatar.vue:14 #: src/views/apps/pureftpd/IndexView.vue:71 #: src/views/apps/pureftpd/IndexView.vue:274 -#: src/views/setting/PasswordModal.vue:34 -#: src/views/setting/SettingUser.vue:128 +#: src/views/setting/PasswordModal.vue:34 src/views/setting/SettingUser.vue:128 msgid "Change Password" msgstr "更改密碼" @@ -1738,16 +1561,12 @@ msgid "Logged out successfully!" msgstr "成功登出!" #: src/layouts/header/components/UserAvatar.vue:49 -#: src/views/cert/DnsView.vue:61 -#: src/views/firewall/IpRuleView.vue:78 -#: src/views/firewall/IpRuleView.vue:103 -#: src/views/firewall/RuleView.vue:183 -#: src/views/firewall/RuleView.vue:208 -#: src/views/toolbox/DiskView.vue:159 +#: src/views/cert/DnsView.vue:61 src/views/firewall/IpRuleView.vue:78 +#: src/views/firewall/IpRuleView.vue:103 src/views/firewall/RuleView.vue:183 +#: src/views/firewall/RuleView.vue:208 src/views/toolbox/DiskView.vue:159 #: src/views/website/stats/GeoTab.vue:102 #: src/views/website/stats/GeoTab.vue:104 -#: src/views/website/stats/GeoTab.vue:225 -#: src/views/website/stats/IPsTab.vue:98 +#: src/views/website/stats/GeoTab.vue:225 src/views/website/stats/IPsTab.vue:98 msgid "Unknown" msgstr "未知" @@ -1771,33 +1590,26 @@ msgstr "關閉右側" msgid "Apps" msgstr "應用程式" -#: src/locales/menu.ts:8 -#: src/views/task/CreateModal.vue:145 +#: src/locales/menu.ts:8 src/views/task/CreateModal.vue:145 msgid "Backup" msgstr "備份" -#: src/locales/menu.ts:9 -#: src/views/cert/CertView.vue:523 -#: src/views/cert/CertView.vue:611 -#: src/views/cert/IndexView.vue:96 -#: src/views/cert/UploadCertModal.vue:46 -#: src/views/setting/SettingSafe.vue:275 -#: src/views/website/EditModal.vue:1702 +#: src/locales/menu.ts:9 src/views/cert/CertView.vue:523 +#: src/views/cert/CertView.vue:611 src/views/cert/IndexView.vue:96 +#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingSafe.vue:275 +#: src/views/website/EditModal.vue:1712 msgid "Certificate" msgstr "證書" -#: src/locales/menu.ts:10 -#: src/views/home/IndexView.vue:525 +#: src/locales/menu.ts:10 src/views/home/IndexView.vue:525 #: src/views/task/CreateModal.vue:472 msgid "Container" msgstr "容器" -#: src/locales/menu.ts:11 -#: src/views/apps/grafana/GrafanaConfigTuneView.vue:189 +#: src/locales/menu.ts:11 src/views/apps/grafana/GrafanaConfigTuneView.vue:189 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:222 -#: src/views/backup/ListView.vue:327 -#: src/views/home/IndexView.vue:534 -#: src/views/toolbox/MigrationView.vue:546 +#: src/views/backup/ListView.vue:327 src/views/home/IndexView.vue:534 +#: src/views/toolbox/MigrationView.vue:568 #: src/views/website/CreateModal.vue:248 msgid "Database" msgstr "數據庫" @@ -1818,8 +1630,7 @@ msgstr "首頁" msgid "Monitoring" msgstr "監控" -#: src/locales/menu.ts:17 -#: src/views/home/IndexView.vue:539 +#: src/locales/menu.ts:17 src/views/home/IndexView.vue:539 msgid "Project" msgstr "項目" @@ -1835,13 +1646,10 @@ msgstr "任務" msgid "Toolbox" msgstr "工具箱" -#: src/locales/menu.ts:22 -#: src/views/app/AppView.vue:97 -#: src/views/app/EnvironmentView.vue:81 -#: src/views/app/InstalledView.vue:106 -#: src/views/app/InstalledView.vue:205 -#: src/views/app/TemplateDeployModal.vue:652 -#: src/views/home/IndexView.vue:563 +#: src/locales/menu.ts:22 src/views/app/AppView.vue:102 +#: src/views/app/EnvironmentView.vue:86 src/views/app/InstalledView.vue:117 +#: src/views/app/InstalledView.vue:228 +#: src/views/app/TemplateDeployModal.vue:652 src/views/home/IndexView.vue:563 #: src/views/setting/TokenModal.vue:308 msgid "Update" msgstr "更新" @@ -1870,52 +1678,40 @@ msgstr "Rsync 管理器" msgid "Frp Manager" msgstr "Frp 管理器" -#: src/router/routes/index.ts:18 -#: src/views/login/IndexView.vue:309 +#: src/router/routes/index.ts:18 src/views/login/IndexView.vue:309 msgid "Login" msgstr "登錄" -#: src/views/app/AppView.vue:19 -#: src/views/app/AppView.vue:143 -#: src/views/app/AppView.vue:147 -#: src/views/app/EnvironmentView.vue:134 +#: src/views/app/AppView.vue:20 src/views/app/AppView.vue:148 +#: src/views/app/AppView.vue:152 src/views/app/EnvironmentView.vue:139 #: src/views/apps/prometheus/PrometheusExportersView.vue:79 #: src/views/environment/PHPView.vue:107 msgid "Install" msgstr "安裝" -#: src/views/app/AppView.vue:37 -#: src/views/app/InstalledView.vue:37 +#: src/views/app/AppView.vue:42 src/views/app/InstalledView.vue:47 msgid "App Name" msgstr "應用名稱" -#: src/views/app/AppView.vue:43 -#: src/views/app/EnvironmentView.vue:37 -#: src/views/app/InstalledView.vue:43 -#: src/views/app/InstalledView.vue:167 +#: src/views/app/AppView.vue:48 src/views/app/EnvironmentView.vue:42 +#: src/views/app/InstalledView.vue:53 src/views/app/InstalledView.vue:190 #: src/views/apps/prometheus/PrometheusExportersView.vue:32 -#: src/views/environment/PHPView.vue:64 -#: src/views/project/EditModal.vue:193 +#: src/views/environment/PHPView.vue:64 src/views/project/EditModal.vue:193 #: src/views/project/ListView.vue:44 msgid "Description" msgstr "描述" -#: src/views/app/AppView.vue:49 -#: src/views/app/EnvironmentView.vue:49 -#: src/views/app/InstalledView.vue:49 -#: src/views/app/InstalledView.vue:173 +#: src/views/app/AppView.vue:54 src/views/app/EnvironmentView.vue:54 +#: src/views/app/InstalledView.vue:59 src/views/app/InstalledView.vue:196 msgid "Installed Version" msgstr "已安裝版本" -#: src/views/app/AppView.vue:55 -#: src/views/app/InstalledView.vue:64 +#: src/views/app/AppView.vue:60 src/views/app/InstalledView.vue:75 msgid "Show in Home" msgstr "在主頁顯示" -#: src/views/app/AppView.vue:68 -#: src/views/app/EnvironmentView.vue:55 -#: src/views/app/InstalledView.vue:77 -#: src/views/app/InstalledView.vue:179 +#: src/views/app/AppView.vue:73 src/views/app/EnvironmentView.vue:60 +#: src/views/app/InstalledView.vue:88 src/views/app/InstalledView.vue:202 #: src/views/apps/fail2ban/IndexView.vue:63 #: src/views/apps/fail2ban/IndexView.vue:112 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:99 @@ -1924,133 +1720,140 @@ msgstr "在主頁顯示" #: src/views/apps/nginx/NginxIndex.vue:751 #: src/views/apps/prometheus/PrometheusExportersView.vue:55 #: src/views/apps/pureftpd/IndexView.vue:53 -#: src/views/apps/rsync/IndexView.vue:72 -#: src/views/apps/s3fs/IndexView.vue:35 -#: src/views/apps/supervisor/IndexView.vue:84 -#: src/views/backup/ListView.vue:66 -#: src/views/backup/StorageView.vue:95 -#: src/views/cert/AccountView.vue:74 -#: src/views/cert/CertView.vue:189 -#: src/views/cert/DnsView.vue:69 +#: src/views/apps/rsync/IndexView.vue:72 src/views/apps/s3fs/IndexView.vue:35 +#: src/views/apps/supervisor/IndexView.vue:84 src/views/backup/ListView.vue:66 +#: src/views/backup/StorageView.vue:95 src/views/cert/AccountView.vue:74 +#: src/views/cert/CertView.vue:189 src/views/cert/DnsView.vue:69 #: src/views/container/ComposeView.vue:102 -#: src/views/container/ContainerView.vue:108 -#: src/views/container/ImageView.vue:86 -#: src/views/container/NetworkView.vue:112 -#: src/views/container/VolumeView.vue:66 -#: src/views/database/DatabaseList.vue:68 +#: src/views/container/ContainerView.vue:113 +#: src/views/container/ImageView.vue:86 src/views/container/NetworkView.vue:112 +#: src/views/container/VolumeView.vue:66 src/views/database/DatabaseList.vue:68 #: src/views/database/ElasticsearchDataView.vue:117 #: src/views/database/ElasticsearchDataView.vue:169 #: src/views/database/RedisDataView.vue:124 -#: src/views/database/ServerList.vue:161 -#: src/views/database/UserList.vue:134 -#: src/views/environment/PHPView.vue:71 -#: src/views/file/ListView.vue:1359 -#: src/views/firewall/ForwardView.vue:81 -#: src/views/firewall/IpRuleView.vue:123 -#: src/views/firewall/RuleView.vue:231 -#: src/views/firewall/ScanView.vue:256 -#: src/views/project/ListView.vue:117 -#: src/views/setting/PasskeyModal.vue:51 -#: src/views/setting/SettingUser.vue:88 -#: src/views/setting/TokenModal.vue:57 -#: src/views/task/CronView.vue:119 -#: src/views/task/TaskView.vue:67 -#: src/views/toolbox/DiskView.vue:298 -#: src/views/toolbox/DiskView.vue:608 -#: src/views/toolbox/WebHookView.vue:135 +#: src/views/database/ServerList.vue:161 src/views/database/UserList.vue:134 +#: src/views/environment/PHPView.vue:71 src/views/file/ListView.vue:1411 +#: src/views/firewall/ForwardView.vue:81 src/views/firewall/IpRuleView.vue:123 +#: src/views/firewall/RuleView.vue:231 src/views/firewall/ScanView.vue:256 +#: src/views/project/ListView.vue:117 src/views/setting/PasskeyModal.vue:51 +#: src/views/setting/SettingUser.vue:88 src/views/setting/TokenModal.vue:57 +#: src/views/tamper/IndexView.vue:137 src/views/task/CronView.vue:119 +#: src/views/task/TaskView.vue:67 src/views/toolbox/DiskView.vue:298 +#: src/views/toolbox/DiskView.vue:608 src/views/toolbox/WebHookView.vue:135 #: src/views/website/ListView.vue:246 msgid "Actions" msgstr "操作" -#: src/views/app/AppView.vue:88 -#: src/views/app/EnvironmentView.vue:73 -#: src/views/app/InstalledView.vue:97 -#: src/views/app/InstalledView.vue:197 +#: src/views/app/AppView.vue:93 src/views/app/EnvironmentView.vue:78 +#: src/views/app/InstalledView.vue:108 src/views/app/InstalledView.vue:220 +#: src/views/container/ContainerCreate.vue:142 msgid "Confirm Update" msgstr "確認更新" -#: src/views/app/AppView.vue:89 -#: src/views/app/InstalledView.vue:98 -msgid "Updating app %{ app } to %{ version } may reset related configurations to default state, are you sure to continue?" -msgstr "更新應用程式 %{ app } 到 %{ version } 可能會將相關配置重置為默認狀態,您確定要繼續嗎?" +#: src/views/app/AppView.vue:94 src/views/app/InstalledView.vue:109 +msgid "" +"Updating app %{ app } to %{ version } may reset related configurations to " +"default state, are you sure to continue?" +msgstr "" +"更新應用程式 %{ app } 到 %{ version } 可能會將相關配置重置為默認狀態,您確定" +"要繼續嗎?" -#: src/views/app/AppView.vue:110 -#: src/views/app/EnvironmentView.vue:94 -#: src/views/app/InstalledView.vue:118 -#: src/views/app/InstalledView.vue:217 +#: src/views/app/AppView.vue:115 src/views/app/EnvironmentView.vue:99 +#: src/views/app/InstalledView.vue:129 src/views/app/InstalledView.vue:240 msgid "Manage" msgstr "管理" -#: src/views/app/AppView.vue:119 -#: src/views/app/EnvironmentView.vue:103 -#: src/views/app/InstalledView.vue:127 -#: src/views/app/InstalledView.vue:226 +#: src/views/app/AppView.vue:124 src/views/app/EnvironmentView.vue:108 +#: src/views/app/InstalledView.vue:138 src/views/app/InstalledView.vue:249 #: src/views/apps/prometheus/PrometheusExportersView.vue:124 #: src/views/environment/PHPView.vue:85 msgid "Confirm Uninstall" msgstr "確認卸載" -#: src/views/app/AppView.vue:121 -#: src/views/app/InstalledView.vue:129 -msgid "Reinstalling/Switching to a different web server will reset the configuration of all websites, are you sure to continue?" +#: src/views/app/AppView.vue:126 src/views/app/InstalledView.vue:140 +msgid "" +"Reinstalling/Switching to a different web server will reset the " +"configuration of all websites, are you sure to continue?" msgstr "重新安裝/切換到不同的 Web 伺服器將重置所有網站的配置,您確定要繼續嗎?" -#: src/views/app/AppView.vue:124 -#: src/views/app/InstalledView.vue:132 +#: src/views/app/AppView.vue:129 src/views/app/InstalledView.vue:143 msgid "Are you sure to uninstall app %{ app }?" msgstr "您確定要卸載應用程式 %{ app } 嗎?" -#: src/views/app/AppView.vue:125 -#: src/views/app/AppView.vue:131 -#: src/views/app/EnvironmentView.vue:107 -#: src/views/app/EnvironmentView.vue:113 -#: src/views/app/InstalledView.vue:133 -#: src/views/app/InstalledView.vue:139 -#: src/views/app/InstalledView.vue:230 -#: src/views/app/InstalledView.vue:236 +#: src/views/app/AppView.vue:130 src/views/app/AppView.vue:136 +#: src/views/app/EnvironmentView.vue:112 src/views/app/EnvironmentView.vue:118 +#: src/views/app/InstalledView.vue:144 src/views/app/InstalledView.vue:150 +#: src/views/app/InstalledView.vue:253 src/views/app/InstalledView.vue:259 #: src/views/apps/prometheus/PrometheusExportersView.vue:128 msgid "Uninstall" msgstr "卸載" -#: src/views/app/AppView.vue:183 -#: src/views/app/InstalledView.vue:275 +#: src/views/app/AppView.vue:168 src/views/app/CustomModal.vue:83 +#: src/views/app/EnvironmentView.vue:156 src/views/app/InstalledView.vue:161 +#: src/views/app/InstalledView.vue:271 +#, fuzzy +msgid "Compile Params" +msgstr "編排名稱" + +#: src/views/app/AppView.vue:204 src/views/app/InstalledView.vue:311 msgid "Setup successfully" msgstr "設置成功" -#: src/views/app/AppView.vue:190 -#: src/views/app/AppView.vue:198 -#: src/views/app/EnvironmentView.vue:171 -#: src/views/app/EnvironmentView.vue:179 -#: src/views/app/EnvironmentView.vue:187 -#: src/views/app/InstalledView.vue:282 -#: src/views/app/InstalledView.vue:290 -#: src/views/app/InstalledView.vue:303 -#: src/views/app/InstalledView.vue:311 -#: src/views/app/VersionModal.vue:42 +#: src/views/app/AppView.vue:211 src/views/app/AppView.vue:219 +#: src/views/app/EnvironmentView.vue:193 src/views/app/EnvironmentView.vue:201 +#: src/views/app/EnvironmentView.vue:209 src/views/app/InstalledView.vue:318 +#: src/views/app/InstalledView.vue:326 src/views/app/InstalledView.vue:339 +#: src/views/app/InstalledView.vue:347 src/views/app/VersionModal.vue:42 msgid "Task submitted, please check the progress in background tasks" msgstr "任務已提交,請在後台任務中查看進度" -#: src/views/app/EnvironmentView.vue:43 +#: src/views/app/CustomModal.vue:56 +#, fuzzy +msgid "Custom Compile Params" +msgstr "自定義配置" + +#: src/views/app/CustomModal.vue:65 +msgid "" +"Settings are saved persistently and applied automatically on every install " +"and update (recompile), no need to re-enter after reinstalling." +msgstr "" + +#: src/views/app/CustomModal.vue:71 +#, fuzzy +msgid "Pre-script" +msgstr "描述" + +#: src/views/app/CustomModal.vue:75 +msgid "" +"Runs before configure, can be used to download and prepare third-party " +"module sources." +msgstr "" + +#: src/views/app/CustomModal.vue:87 +msgid "" +"One param per line, appended to the end of configure. Lines starting with # " +"are ignored." +msgstr "" + +#: src/views/app/EnvironmentView.vue:48 msgid "Latest Version" msgstr "最新版本" -#: src/views/app/EnvironmentView.vue:74 -#: src/views/app/InstalledView.vue:198 +#: src/views/app/EnvironmentView.vue:79 src/views/app/InstalledView.vue:221 msgid "Are you sure to update environment %{ environment }?" msgstr "您確定要更新環境 %{ environment } 嗎?" -#: src/views/app/EnvironmentView.vue:104 -#: src/views/app/InstalledView.vue:227 +#: src/views/app/EnvironmentView.vue:109 src/views/app/InstalledView.vue:250 msgid "Are you sure to uninstall environment %{ environment }?" msgstr "您確定要卸載環境 %{ environment } 嗎?" -#: src/views/app/EnvironmentView.vue:126 +#: src/views/app/EnvironmentView.vue:131 #: src/views/apps/prometheus/PrometheusExportersView.vue:71 #: src/views/environment/PHPView.vue:99 msgid "Confirm Install" msgstr "確認安裝" -#: src/views/app/EnvironmentView.vue:127 +#: src/views/app/EnvironmentView.vue:132 msgid "Are you sure to install environment %{ environment }?" msgstr "您確定要安裝環境 %{ environment } 嗎?" @@ -2062,13 +1865,11 @@ msgstr "快取更新成功" msgid "Installed" msgstr "已安裝" -#: src/views/app/IndexView.vue:41 -#: src/views/app/InstalledView.vue:330 +#: src/views/app/IndexView.vue:41 src/views/app/InstalledView.vue:366 msgid "Native App" msgstr "原生應用" -#: src/views/app/IndexView.vue:42 -#: src/views/app/InstalledView.vue:354 +#: src/views/app/IndexView.vue:42 src/views/app/InstalledView.vue:390 msgid "Operating Environment" msgstr "運行環境" @@ -2080,36 +1881,27 @@ msgstr "容器模板" msgid "Update Cache" msgstr "更新快取" -#: src/views/app/InstalledView.vue:21 +#: src/views/app/InstalledView.vue:32 msgid "Partial" msgstr "部分" -#: src/views/app/InstalledView.vue:22 -msgid "N/A" -msgstr "不適用" - -#: src/views/app/InstalledView.vue:55 -#: src/views/apps/fail2ban/IndexView.vue:47 +#: src/views/app/InstalledView.vue:65 src/views/apps/fail2ban/IndexView.vue:47 #: src/views/apps/phpmyadmin/IndexView.vue:67 #: src/views/apps/prometheus/PrometheusExportersView.vue:38 #: src/views/apps/supervisor/IndexView.vue:63 #: src/views/container/ComposeView.vue:86 -#: src/views/container/ContainerView.vue:53 -#: src/views/database/ServerList.vue:140 -#: src/views/database/UserList.vue:113 -#: src/views/firewall/RuleView.vue:80 -#: src/views/log/HttpLog.vue:95 -#: src/views/log/SSHLog.vue:63 -#: src/views/project/ListView.vue:59 -#: src/views/task/TaskView.vue:34 -#: src/views/toolbox/disk/RaidView.vue:97 +#: src/views/container/ContainerInfoModal.vue:108 +#: src/views/container/ContainerView.vue:58 +#: src/views/database/ServerList.vue:140 src/views/database/UserList.vue:113 +#: src/views/firewall/RuleView.vue:80 src/views/log/HttpLog.vue:95 +#: src/views/log/SSHLog.vue:63 src/views/project/ListView.vue:59 +#: src/views/tamper/IndexView.vue:127 src/views/tamper/IndexView.vue:231 +#: src/views/task/TaskView.vue:34 src/views/toolbox/disk/RaidView.vue:97 #: src/views/toolbox/disk/SmartView.vue:217 -#: src/views/toolbox/MigrationView.vue:473 -#: src/views/toolbox/MigrationView.vue:696 -#: src/views/toolbox/MigrationView.vue:783 -#: src/views/toolbox/NetworkView.vue:96 -#: src/views/toolbox/ProcessView.vue:134 -#: src/views/toolbox/ProcessView.vue:399 +#: src/views/toolbox/MigrationView.vue:495 +#: src/views/toolbox/MigrationView.vue:727 +#: src/views/toolbox/MigrationView.vue:814 src/views/toolbox/NetworkView.vue:96 +#: src/views/toolbox/ProcessView.vue:134 src/views/toolbox/ProcessView.vue:399 #: src/views/website/stats/ErrorsTab.vue:95 msgid "Status" msgstr "狀態" @@ -2134,12 +1926,9 @@ msgstr "請輸入編排名稱" msgid "Please select a compose" msgstr "請選擇一個編排" -#: src/views/app/TemplateDeployModal.vue:258 -#: src/views/cert/AccountView.vue:145 -#: src/views/cert/CertView.vue:343 -#: src/views/cert/CertView.vue:364 -#: src/views/cert/DnsView.vue:137 -#: src/views/container/ComposeView.vue:249 +#: src/views/app/TemplateDeployModal.vue:258 src/views/cert/AccountView.vue:145 +#: src/views/cert/CertView.vue:343 src/views/cert/CertView.vue:364 +#: src/views/cert/DnsView.vue:137 src/views/container/ComposeView.vue:249 msgid "Update successful" msgstr "更新成功" @@ -2152,7 +1941,7 @@ msgstr "部署模板" msgid "Deploy Mode" msgstr "部署模式" -#: src/views/app/TemplateDeployModal.vue:340 +#: src/views/app/TemplateDeployModal.vue:340 src/views/tamper/IndexView.vue:245 msgid "Configuration" msgstr "配置" @@ -2213,9 +2002,9 @@ msgstr "自動放行在 compose 中定義的端口" #: src/views/apps/minio/IndexView.vue:38 #: src/views/container/ComposeView.vue:331 #: src/views/container/ComposeView.vue:357 -#: src/views/container/ContainerCreate.vue:452 -#: src/views/project/EditModal.vue:380 -#: src/views/toolbox/ProcessView.vue:445 +#: src/views/container/ContainerCreate.vue:553 +#: src/views/container/ContainerInfoModal.vue:178 +#: src/views/project/EditModal.vue:380 src/views/toolbox/ProcessView.vue:445 msgid "Environment Variables" msgstr "環境變數" @@ -2237,7 +2026,9 @@ msgid "Compose File" msgstr "編排檔案" #: src/views/app/TemplateDeployModal.vue:567 -msgid "Left side shows the original compose, right side shows the new compose. You can edit the right side." +msgid "" +"Left side shows the original compose, right side shows the new compose. You " +"can edit the right side." msgstr "左側顯示舊編排,右側顯示新編排。您可以編輯右側。" #: src/views/app/TemplateDeployModal.vue:586 @@ -2264,9 +2055,9 @@ msgstr "更新現有" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:94 #: src/views/apps/nginx/NginxIndex.vue:186 -#: src/views/file/ListView.vue:852 -#: src/views/file/PropertyModal.vue:55 -#: src/views/file/PropertyModal.vue:59 +#: src/views/container/ContainerInfoModal.vue:123 +#: src/views/file/ListView.vue:266 src/views/file/ListView.vue:869 +#: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 msgid "Yes" msgstr "是" @@ -2275,9 +2066,9 @@ msgstr "是" #: src/views/app/TemplateDeployModal.vue:611 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:95 #: src/views/apps/nginx/NginxIndex.vue:186 -#: src/views/file/ListView.vue:853 -#: src/views/file/PropertyModal.vue:55 -#: src/views/file/PropertyModal.vue:59 +#: src/views/container/ContainerInfoModal.vue:123 +#: src/views/file/ListView.vue:267 src/views/file/ListView.vue:870 +#: src/views/file/PropertyModal.vue:55 src/views/file/PropertyModal.vue:59 #: src/views/toolbox/WebHookView.vue:85 msgid "No" msgstr "否" @@ -2291,15 +2082,15 @@ msgid "Compose Content" msgstr "編排內容" #: src/views/app/TemplateDeployModal.vue:631 -#: src/views/toolbox/MigrationView.vue:586 -#: src/views/toolbox/MigrationView.vue:676 +#: src/views/toolbox/MigrationView.vue:608 +#: src/views/toolbox/MigrationView.vue:707 msgid "Previous" msgstr "返回" #: src/views/app/TemplateDeployModal.vue:640 #: src/views/app/TemplateDeployModal.vue:643 -#: src/views/toolbox/MigrationView.vue:447 -#: src/views/toolbox/MigrationView.vue:597 +#: src/views/toolbox/MigrationView.vue:469 +#: src/views/toolbox/MigrationView.vue:627 msgid "Next" msgstr "下一步" @@ -2308,16 +2099,13 @@ msgstr "下一步" msgid "Starting Compose" msgstr "正在啟動編排" -#: src/views/app/TemplateView.vue:142 -#: src/views/backup/StorageView.vue:78 -#: src/views/ssh/IndexView.vue:80 -#: src/views/ssh/IndexView.vue:86 -#: src/views/toolbox/MigrationView.vue:471 +#: src/views/app/TemplateView.vue:142 src/views/backup/StorageView.vue:78 +#: src/views/ssh/IndexView.vue:82 src/views/ssh/IndexView.vue:88 +#: src/views/toolbox/MigrationView.vue:493 msgid "Local" msgstr "本地" -#: src/views/app/TemplateView.vue:152 -#: src/views/cert/CertView.vue:227 +#: src/views/app/TemplateView.vue:152 src/views/cert/CertView.vue:227 msgid "Deploy" msgstr "部署" @@ -2351,8 +2139,7 @@ msgstr "發行日誌" #: src/views/apps/prometheus/IndexView.vue:44 #: src/views/apps/redis/IndexView.vue:33 #: src/views/apps/rocketmq/IndexView.vue:33 -#: src/views/apps/valkey/IndexView.vue:33 -#: src/views/environment/PHPView.vue:115 +#: src/views/apps/valkey/IndexView.vue:33 src/views/environment/PHPView.vue:115 msgid "Property" msgstr "屬性" @@ -2370,8 +2157,7 @@ msgstr "屬性" #: src/views/apps/prometheus/IndexView.vue:51 #: src/views/apps/redis/IndexView.vue:40 #: src/views/apps/rocketmq/IndexView.vue:40 -#: src/views/apps/valkey/IndexView.vue:40 -#: src/views/environment/PHPView.vue:122 +#: src/views/apps/valkey/IndexView.vue:40 src/views/environment/PHPView.vue:122 msgid "Current Value" msgstr "當前值" @@ -2385,20 +2171,16 @@ msgstr "當前值" #: src/views/apps/supervisor/IndexView.vue:213 #: src/views/apps/supervisor/IndexView.vue:269 #: src/views/database/RedisDataView.vue:252 -#: src/views/environment/PHPView.vue:162 -#: src/views/environment/PHPView.vue:169 -#: src/views/firewall/ScanView.vue:336 -#: src/views/task/CronView.vue:23 -#: src/views/task/TaskView.vue:21 -#: src/views/website/EditModal.vue:261 -#: src/views/website/StatsView.vue:93 +#: src/views/environment/PHPView.vue:162 src/views/environment/PHPView.vue:169 +#: src/views/firewall/ScanView.vue:336 src/views/tamper/IndexView.vue:207 +#: src/views/task/CronView.vue:23 src/views/task/TaskView.vue:21 +#: src/views/website/EditModal.vue:271 src/views/website/StatsView.vue:93 msgid "Cleared successfully" msgstr "清除成功" #: src/views/apps/apache/IndexView.vue:74 #: src/views/apps/codeserver/IndexView.vue:40 -#: src/views/apps/frp/IndexView.vue:88 -#: src/views/apps/frp/IndexView.vue:121 +#: src/views/apps/frp/IndexView.vue:88 src/views/apps/frp/IndexView.vue:121 #: src/views/apps/gitea/IndexView.vue:38 #: src/views/apps/mysql/MysqlIndex.vue:150 #: src/views/apps/nginx/NginxIndex.vue:501 @@ -2408,8 +2190,11 @@ msgstr "修改配置" #: src/views/apps/apache/IndexView.vue:78 #: src/views/apps/nginx/NginxIndex.vue:505 -msgid "This modifies the %{name} main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 %{name} 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the %{name} main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 %{name} 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/apache/IndexView.vue:97 #: src/views/apps/clickhouse/IndexView.vue:146 @@ -2425,8 +2210,7 @@ msgstr "這將修改 %{name} 主配置文件。如果您不了解每個參數的 #: src/views/apps/prometheus/IndexView.vue:147 #: src/views/apps/redis/IndexView.vue:90 #: src/views/apps/rocketmq/IndexView.vue:93 -#: src/views/apps/valkey/IndexView.vue:90 -#: src/views/environment/PHPView.vue:259 +#: src/views/apps/valkey/IndexView.vue:90 src/views/environment/PHPView.vue:259 #: src/views/home/IndexView.vue:575 msgid "Load Status" msgstr "負載狀態" @@ -2466,11 +2250,10 @@ msgstr "錯誤日誌" #: src/views/apps/clickhouse/ClickHouseConfigTuneView.vue:68 #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:88 -#: src/views/container/ContainerCreate.vue:213 -#: src/views/home/IndexView.vue:188 -#: src/views/home/IndexView.vue:955 -#: src/views/monitor/IndexView.vue:990 -#: src/views/toolbox/IndexView.vue:28 +#: src/views/container/ContainerCreate.vue:314 +#: src/views/container/ContainerInfoModal.vue:125 +#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:955 +#: src/views/monitor/IndexView.vue:990 src/views/toolbox/IndexView.vue:28 msgid "Network" msgstr "網絡" @@ -2537,22 +2320,16 @@ msgstr "日誌級別(logger.level)" #: src/views/apps/pureftpd/IndexView.vue:145 #: src/views/database/DatabaseList.vue:113 #: src/views/database/RedisDataView.vue:222 -#: src/views/database/ServerList.vue:274 +#: src/views/database/ServerList.vue:275 #: src/views/database/UpdateServerModal.vue:27 #: src/views/database/UpdateUserModal.vue:23 -#: src/views/database/UserList.vue:191 -#: src/views/file/PermissionModal.vue:57 -#: src/views/setting/SettingUser.vue:161 -#: src/views/setting/SettingUser.vue:167 -#: src/views/task/CreateModal.vue:121 -#: src/views/task/CronView.vue:189 -#: src/views/task/CronView.vue:259 -#: src/views/toolbox/WebHookView.vue:200 -#: src/views/toolbox/WebHookView.vue:278 -#: src/views/website/ListView.vue:360 -#: src/views/website/ListView.vue:366 -#: src/views/website/SettingView.vue:46 -#: src/views/website/SettingView.vue:57 +#: src/views/database/UserList.vue:191 src/views/file/PermissionModal.vue:57 +#: src/views/setting/SettingUser.vue:161 src/views/setting/SettingUser.vue:167 +#: src/views/task/CreateModal.vue:121 src/views/task/CronView.vue:189 +#: src/views/task/CronView.vue:259 src/views/toolbox/WebHookView.vue:200 +#: src/views/toolbox/WebHookView.vue:278 src/views/website/ListView.vue:360 +#: src/views/website/ListView.vue:366 src/views/website/SettingView.vue:46 +#: src/views/website/SettingView.vue:57 src/views/website/SettingView.vue:88 msgid "Modified successfully" msgstr "修改成功" @@ -2560,9 +2337,8 @@ msgstr "修改成功" #: src/views/apps/mongodb/IndexView.vue:77 #: src/views/apps/mysql/MysqlIndex.vue:110 #: src/views/apps/postgresql/IndexView.vue:144 -#: src/views/database/ServerList.vue:102 -#: src/views/database/UserList.vue:52 -#: src/views/file/composables/usePaste.ts:28 +#: src/views/database/ServerList.vue:102 src/views/database/UserList.vue:52 +#: src/views/file/composables/usePaste.ts:29 #: src/views/setting/TokenModal.vue:155 msgid "Copied successfully" msgstr "複製成功" @@ -2572,7 +2348,9 @@ msgid "Default User Password" msgstr "預設用戶密碼" #: src/views/apps/clickhouse/IndexView.vue:92 -msgid "The ClickHouse default user password is used to access the database. Keep it safe!" +msgid "" +"The ClickHouse default user password is used to access the database. Keep it " +"safe!" msgstr "ClickHouse 預設用戶密碼用於存取資料庫。請妥善保管!" #: src/views/apps/clickhouse/IndexView.vue:121 @@ -2587,14 +2365,16 @@ msgstr "ClickHouse 預設用戶密碼用於存取資料庫。請妥善保管!" #: src/views/apps/rocketmq/IndexView.vue:68 #: src/views/apps/rsync/IndexView.vue:225 #: src/views/apps/supervisor/IndexView.vue:339 -#: src/views/apps/valkey/IndexView.vue:65 -#: src/views/environment/PHPView.vue:223 +#: src/views/apps/valkey/IndexView.vue:65 src/views/environment/PHPView.vue:223 msgid "Main Configuration" msgstr "主配置" #: src/views/apps/clickhouse/IndexView.vue:125 -msgid "This modifies the ClickHouse configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 ClickHouse 配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the ClickHouse configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 ClickHouse 配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/clickhouse/IndexView.vue:143 #: src/views/apps/elasticsearch/IndexView.vue:87 @@ -2610,20 +2390,22 @@ msgstr "這將修改 ClickHouse 配置文件。如果您不理解每個參數的 #: src/views/apps/pureftpd/IndexView.vue:215 #: src/views/apps/redis/IndexView.vue:87 #: src/views/apps/rocketmq/IndexView.vue:90 -#: src/views/apps/valkey/IndexView.vue:87 -#: src/views/environment/PHPView.vue:220 +#: src/views/apps/valkey/IndexView.vue:87 src/views/environment/PHPView.vue:220 msgid "Parameter Tuning" msgstr "參數調優" #: src/views/apps/codeserver/IndexView.vue:44 -msgid "This modifies the Code Server configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 Code Server 的配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the Code Server configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 Code Server 的配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/docker/IndexView.vue:63 #: src/views/apps/docker/IndexView.vue:70 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:89 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:218 -#: src/views/website/EditModal.vue:1240 +#: src/views/website/EditModal.vue:1250 msgid "Default" msgstr "預設" @@ -2640,9 +2422,8 @@ msgid "China - Tencent (Internal only)" msgstr "中國 - 騰訊(僅內網)" #: src/views/apps/docker/IndexView.vue:194 -#: src/views/container/ContainerCreate.vue:193 -#: src/views/project/EditModal.vue:182 -#: src/views/website/EditModal.vue:907 +#: src/views/container/ContainerCreate.vue:294 +#: src/views/project/EditModal.vue:182 src/views/website/EditModal.vue:917 msgid "Basic Settings" msgstr "基本設置" @@ -2650,13 +2431,14 @@ msgstr "基本設置" msgid "Registry Mirrors" msgstr "註冊表鏡像" -#: src/views/apps/docker/IndexView.vue:203 -#: src/views/website/EditModal.vue:1729 +#: src/views/apps/docker/IndexView.vue:203 src/views/website/EditModal.vue:1739 msgid "Presets" msgstr "預設" #: src/views/apps/docker/IndexView.vue:226 -msgid "Configure registry mirrors to speed up image downloads. Domestic users can configure domestic mirrors." +msgid "" +"Configure registry mirrors to speed up image downloads. Domestic users can " +"configure domestic mirrors." msgstr "配置註冊表鏡像以加快鏡像下載。國內用戶可以配置國內鏡像。" #: src/views/apps/docker/IndexView.vue:235 @@ -2667,8 +2449,7 @@ msgstr "輸入鏡像地址,例如 https://registry.example.com" #: src/views/apps/docker/IndexView.vue:392 #: src/views/apps/docker/IndexView.vue:420 #: src/views/apps/docker/IndexView.vue:445 -#: src/views/apps/nginx/NginxIndex.vue:743 -#: src/views/toolbox/SystemView.vue:360 +#: src/views/apps/nginx/NginxIndex.vue:743 src/views/toolbox/SystemView.vue:360 msgid "Add" msgstr "添加" @@ -2677,8 +2458,12 @@ msgid "Log Configuration" msgstr "日誌配置" #: src/views/apps/docker/IndexView.vue:253 -msgid "Configure log driver and rotation settings. Setting max-size and max-file can prevent log files from growing indefinitely." -msgstr "配置日誌驅動程式和輪轉設定。設定 max-size 和 max-file 可以防止日誌檔案無限增長。" +msgid "" +"Configure log driver and rotation settings. Setting max-size and max-file " +"can prevent log files from growing indefinitely." +msgstr "" +"配置日誌驅動程式和輪轉設定。設定 max-size 和 max-file 可以防止日誌檔案無限增" +"長。" #: src/views/apps/docker/IndexView.vue:259 msgid "Log Driver" @@ -2749,7 +2534,9 @@ msgid "Firewall Configuration" msgstr "防火牆配置" #: src/views/apps/docker/IndexView.vue:347 -msgid "Configure Docker firewall backend. nftables is experimental and does not support Swarm mode." +msgid "" +"Configure Docker firewall backend. nftables is experimental and does not " +"support Swarm mode." msgstr "配置 Docker 防火牆後端。nftables 是實驗性的,不支援 Swarm 模式。" #: src/views/apps/docker/IndexView.vue:353 @@ -2813,8 +2600,12 @@ msgid "Insecure Registries" msgstr "不安全的註冊表" #: src/views/apps/docker/IndexView.vue:433 -msgid "Insecure registries allow Docker to communicate with registries using HTTP or self-signed certificates. Use with caution." -msgstr "不安全的註冊表允許 Docker 使用 HTTP 或自簽名憑證與註冊表進行通訊。請謹慎使用。" +msgid "" +"Insecure registries allow Docker to communicate with registries using HTTP " +"or self-signed certificates. Use with caution." +msgstr "" +"不安全的註冊表允許 Docker 使用 HTTP 或自簽名憑證與註冊表進行通訊。請謹慎使" +"用。" #: src/views/apps/docker/IndexView.vue:441 msgid "e.g., 192.168.1.100:5000" @@ -2869,7 +2660,9 @@ msgstr "路徑和 JVM" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:106 #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:106 -msgid "Data paths and JVM heap memory settings. Heap size is recommended to be 50% of system RAM, max 31g." +msgid "" +"Data paths and JVM heap memory settings. Heap size is recommended to be 50% " +"of system RAM, max 31g." msgstr "資料路徑和 JVM 堆記憶體設置。建議堆大小為系統 RAM 的 50%,最大 31g。" #: src/views/apps/elasticsearch/ElasticSearchConfigTuneView.vue:112 @@ -2899,8 +2692,12 @@ msgid "Max Heap Size (-Xmx)" msgstr "最大堆大小(-Xmx)" #: src/views/apps/elasticsearch/IndexView.vue:69 -msgid "This modifies the ElasticSearch main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 ElasticSearch 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the ElasticSearch main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 ElasticSearch 主配置文件。如果您不理解每個參數的含義,請不要隨意修" +"改!" #: src/views/apps/fail2ban/IndexView.vue:59 #: src/views/apps/fail2ban/IndexView.vue:356 @@ -2917,8 +2714,7 @@ msgstr "封禁時間" msgid "Find Time" msgstr "查找時間" -#: src/views/apps/fail2ban/IndexView.vue:80 -#: src/views/cert/CertView.vue:261 +#: src/views/apps/fail2ban/IndexView.vue:80 src/views/cert/CertView.vue:261 #: src/views/database/ElasticsearchDataView.vue:186 #: src/views/database/RedisDataView.vue:141 msgid "View" @@ -2939,8 +2735,7 @@ msgstr "解封" #: src/views/apps/fail2ban/IndexView.vue:179 #: src/views/apps/pureftpd/IndexView.vue:130 -#: src/views/apps/rsync/IndexView.vue:149 -#: src/views/apps/s3fs/IndexView.vue:77 +#: src/views/apps/rsync/IndexView.vue:149 src/views/apps/s3fs/IndexView.vue:77 #: src/views/apps/supervisor/IndexView.vue:226 #: src/views/database/CreateServerModal.vue:79 msgid "Added successfully" @@ -2973,35 +2768,40 @@ msgstr "規則列表" #: src/views/apps/fail2ban/IndexView.vue:275 #: src/views/apps/fail2ban/IndexView.vue:285 -#: src/views/apps/fail2ban/IndexView.vue:289 +#: src/views/apps/fail2ban/IndexView.vue:289 src/views/tamper/IndexView.vue:340 +#: src/views/tamper/RuleModal.vue:83 msgid "Add Rule" msgstr "新增規則" #: src/views/apps/fail2ban/IndexView.vue:295 -msgid "If an IP exceeds the maximum retries within the find time (seconds), it will be banned for the ban time (seconds)" -msgstr "如果一個 IP 在查找時間(秒)內超過最大重試次數,它將被禁止訪問指定的禁止時間(秒)" +msgid "" +"If an IP exceeds the maximum retries within the find time (seconds), it will " +"be banned for the ban time (seconds)" +msgstr "" +"如果一個 IP 在查找時間(秒)內超過最大重試次數,它將被禁止訪問指定的禁止時間" +"(秒)" #: src/views/apps/fail2ban/IndexView.vue:302 -msgid "Protected ports are automatically obtained. If you modify the port corresponding to a rule, please delete and re-add the rule, otherwise protection may not be effective" -msgstr "受保護的連接埠會自動獲取。如果您修改了某個規則對應的連接埠,請刪除並重新添加該規則,否則保護可能無效" +msgid "" +"Protected ports are automatically obtained. If you modify the port " +"corresponding to a rule, please delete and re-add the rule, otherwise " +"protection may not be effective" +msgstr "" +"受保護的連接埠會自動獲取。如果您修改了某個規則對應的連接埠,請刪除並重新添加" +"該規則,否則保護可能無效" #: src/views/apps/fail2ban/IndexView.vue:309 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:78 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:209 -#: src/views/backup/StorageView.vue:73 -#: src/views/backup/StorageView.vue:233 -#: src/views/backup/StorageView.vue:395 -#: src/views/cert/CertView.vue:105 -#: src/views/cert/DnsView.vue:43 +#: src/views/backup/StorageView.vue:73 src/views/backup/StorageView.vue:233 +#: src/views/backup/StorageView.vue:395 src/views/cert/CertView.vue:105 +#: src/views/cert/DnsView.vue:43 src/views/container/ContainerInfoModal.vue:149 #: src/views/database/CreateServerModal.vue:100 #: src/views/database/RedisDataView.vue:94 -#: src/views/database/RedisKeyModal.vue:99 -#: src/views/file/PropertyModal.vue:33 -#: src/views/log/OperationLog.vue:74 -#: src/views/project/ListView.vue:51 -#: src/views/toolbox/MigrationView.vue:694 -#: src/views/toolbox/MigrationView.vue:781 -#: src/views/toolbox/NetworkView.vue:61 +#: src/views/database/RedisKeyModal.vue:99 src/views/file/PropertyModal.vue:33 +#: src/views/log/OperationLog.vue:74 src/views/project/ListView.vue:51 +#: src/views/toolbox/MigrationView.vue:725 +#: src/views/toolbox/MigrationView.vue:812 src/views/toolbox/NetworkView.vue:61 msgid "Type" msgstr "類型" @@ -3011,25 +2811,21 @@ msgid "Service" msgstr "服務" #: src/views/apps/fail2ban/IndexView.vue:319 -#: src/views/apps/fail2ban/IndexView.vue:323 -#: src/views/task/CreateModal.vue:482 +#: src/views/apps/fail2ban/IndexView.vue:323 src/views/task/CreateModal.vue:482 #: src/views/task/CreateModal.vue:488 msgid "Select Website" msgstr "選擇網站" -#: src/views/apps/fail2ban/IndexView.vue:326 +#: src/views/apps/fail2ban/IndexView.vue:326 src/views/tamper/IndexView.vue:250 msgid "Protection Mode" msgstr "保護模式" #: src/views/apps/fail2ban/IndexView.vue:331 #: src/views/apps/pureftpd/IndexView.vue:46 -#: src/views/backup/StorageView.vue:277 -#: src/views/backup/StorageView.vue:331 -#: src/views/backup/StorageView.vue:361 -#: src/views/backup/StorageView.vue:433 -#: src/views/backup/StorageView.vue:487 -#: src/views/backup/StorageView.vue:514 -#: src/views/log/HttpLog.vue:85 +#: src/views/backup/StorageView.vue:277 src/views/backup/StorageView.vue:331 +#: src/views/backup/StorageView.vue:361 src/views/backup/StorageView.vue:433 +#: src/views/backup/StorageView.vue:487 src/views/backup/StorageView.vue:514 +#: src/views/log/HttpLog.vue:85 src/views/tamper/IndexView.vue:195 msgid "Path" msgstr "路徑" @@ -3059,55 +2855,42 @@ msgstr "總封禁次數" msgid "Ban List" msgstr "封禁列表" -#: src/views/apps/frp/IndexView.vue:68 -#: src/views/apps/frp/IndexView.vue:101 -#: src/views/project/CreateModal.vue:622 -#: src/views/project/EditModal.vue:237 +#: src/views/apps/frp/IndexView.vue:68 src/views/apps/frp/IndexView.vue:101 +#: src/views/project/CreateModal.vue:622 src/views/project/EditModal.vue:237 msgid "Run User" msgstr "運行用戶" -#: src/views/apps/frp/IndexView.vue:80 -#: src/views/apps/frp/IndexView.vue:81 -#: src/views/apps/frp/IndexView.vue:113 -#: src/views/apps/frp/IndexView.vue:114 +#: src/views/apps/frp/IndexView.vue:80 src/views/apps/frp/IndexView.vue:81 +#: src/views/apps/frp/IndexView.vue:113 src/views/apps/frp/IndexView.vue:114 #: src/views/apps/grafana/GrafanaDataSourcesView.vue:225 -#: src/views/apps/rsync/IndexView.vue:57 -#: src/views/apps/rsync/IndexView.vue:279 -#: src/views/apps/rsync/IndexView.vue:340 -#: src/views/database/IndexView.vue:37 -#: src/views/home/IndexView.vue:661 -#: src/views/home/IndexView.vue:762 -#: src/views/log/SSHLog.vue:73 -#: src/views/monitor/IndexView.vue:335 -#: src/views/monitor/IndexView.vue:347 -#: src/views/setting/IndexView.vue:149 -#: src/views/toolbox/ProcessView.vue:128 -#: src/views/toolbox/ProcessView.vue:396 -#: src/views/toolbox/WebHookView.vue:333 -#: src/views/toolbox/WebHookView.vue:374 +#: src/views/apps/rsync/IndexView.vue:57 src/views/apps/rsync/IndexView.vue:279 +#: src/views/apps/rsync/IndexView.vue:340 src/views/database/IndexView.vue:135 +#: src/views/home/IndexView.vue:661 src/views/home/IndexView.vue:762 +#: src/views/log/SSHLog.vue:73 src/views/monitor/IndexView.vue:335 +#: src/views/monitor/IndexView.vue:347 src/views/setting/IndexView.vue:149 +#: src/views/toolbox/ProcessView.vue:128 src/views/toolbox/ProcessView.vue:396 +#: src/views/toolbox/WebHookView.vue:333 src/views/toolbox/WebHookView.vue:374 msgid "User" msgstr "用戶" -#: src/views/apps/frp/IndexView.vue:83 -#: src/views/apps/frp/IndexView.vue:84 -#: src/views/apps/frp/IndexView.vue:116 -#: src/views/apps/frp/IndexView.vue:117 +#: src/views/apps/frp/IndexView.vue:83 src/views/apps/frp/IndexView.vue:84 +#: src/views/apps/frp/IndexView.vue:116 src/views/apps/frp/IndexView.vue:117 #: src/views/file/PermissionModal.vue:128 -#: src/views/file/PermissionModal.vue:152 -#: src/views/file/PropertyModal.vue:48 +#: src/views/file/PermissionModal.vue:152 src/views/file/PropertyModal.vue:48 msgid "Group" msgstr "群組" #: src/views/apps/gitea/IndexView.vue:42 -msgid "This modifies the Gitea configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" +msgid "" +"This modifies the Gitea configuration file. If you do not understand the " +"meaning of each parameter, please do not modify it randomly!" msgstr "這將修改 Gitea 配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/grafana/GrafanaConfigTuneView.vue:149 #: src/views/apps/nginx/NginxIndex.vue:529 #: src/views/database/CreateDatabaseModal.vue:86 #: src/views/database/CreateUserModal.vue:104 -#: src/views/database/DatabaseList.vue:28 -#: src/views/database/IndexView.vue:38 +#: src/views/database/DatabaseList.vue:28 src/views/database/IndexView.vue:136 #: src/views/database/UserList.vue:73 msgid "Server" msgstr "伺服器" @@ -3261,15 +3044,12 @@ msgstr "瀏覽器(直連)" #: src/views/apps/grafana/GrafanaDataSourcesView.vue:111 #: src/views/apps/nginx/NginxIndex.vue:202 -#: src/views/apps/nginx/NginxIndex.vue:266 -#: src/views/backup/StorageView.vue:111 +#: src/views/apps/nginx/NginxIndex.vue:266 src/views/backup/StorageView.vue:111 #: src/views/container/ComposeView.vue:123 -#: src/views/file/ListView.vue:332 -#: src/views/file/ListView.vue:1538 -#: src/views/project/ListView.vue:177 -#: src/views/ssh/IndexView.vue:560 -#: src/views/task/CronView.vue:155 -#: src/views/toolbox/WebHookView.vue:158 +#: src/views/container/ContainerView.vue:177 src/views/file/ListView.vue:374 +#: src/views/file/ListView.vue:1602 src/views/project/ListView.vue:177 +#: src/views/ssh/IndexView.vue:602 src/views/tamper/IndexView.vue:143 +#: src/views/task/CronView.vue:155 src/views/toolbox/WebHookView.vue:158 #: src/views/website/ListView.vue:259 msgid "Edit" msgstr "編輯" @@ -3299,28 +3079,20 @@ msgstr "存取" #: src/views/apps/pureftpd/IndexView.vue:239 #: src/views/apps/pureftpd/IndexView.vue:278 #: src/views/apps/rsync/IndexView.vue:287 -#: src/views/apps/rsync/IndexView.vue:348 -#: src/views/backup/StorageView.vue:35 -#: src/views/backup/StorageView.vue:309 -#: src/views/backup/StorageView.vue:353 -#: src/views/backup/StorageView.vue:465 -#: src/views/backup/StorageView.vue:506 +#: src/views/apps/rsync/IndexView.vue:348 src/views/backup/StorageView.vue:35 +#: src/views/backup/StorageView.vue:309 src/views/backup/StorageView.vue:353 +#: src/views/backup/StorageView.vue:465 src/views/backup/StorageView.vue:506 #: src/views/container/ImageView.vue:390 #: src/views/database/CreateDatabaseModal.vue:125 #: src/views/database/CreateServerModal.vue:179 #: src/views/database/CreateUserModal.vue:120 #: src/views/database/ServerList.vue:82 -#: src/views/database/UpdateServerModal.vue:104 -#: src/views/database/UpdateUserModal.vue:63 -#: src/views/database/UserList.vue:32 -#: src/views/login/IndexView.vue:261 -#: src/views/setting/CreateModal.vue:53 -#: src/views/setting/PasswordModal.vue:42 -#: src/views/ssh/CreateModal.vue:80 -#: src/views/ssh/CreateModal.vue:89 -#: src/views/ssh/UpdateModal.vue:86 -#: src/views/ssh/UpdateModal.vue:95 -#: src/views/website/EditModal.vue:1981 +#: src/views/database/UpdateServerModal.vue:105 +#: src/views/database/UpdateUserModal.vue:63 src/views/database/UserList.vue:32 +#: src/views/login/IndexView.vue:261 src/views/setting/CreateModal.vue:53 +#: src/views/setting/PasswordModal.vue:42 src/views/ssh/CreateModal.vue:80 +#: src/views/ssh/CreateModal.vue:89 src/views/ssh/UpdateModal.vue:86 +#: src/views/ssh/UpdateModal.vue:95 src/views/website/EditModal.vue:1991 msgid "Password" msgstr "密碼" @@ -3337,20 +3109,30 @@ msgid "Import dashboards in Grafana via Dashboard ID:" msgstr "透過 Dashboard ID 在 Grafana 中匯入儀表盤:" #: src/views/apps/grafana/IndexView.vue:83 -msgid "Go to Grafana → Dashboards → New → Import, enter the ID above and select the Prometheus data source." -msgstr "前往 Grafana → Dashboards → New → Import,輸入上方 ID 並選擇 Prometheus 資料源。" +msgid "" +"Go to Grafana → Dashboards → New → Import, enter the ID above and select the " +"Prometheus data source." +msgstr "" +"前往 Grafana → Dashboards → New → Import,輸入上方 ID 並選擇 Prometheus 資料" +"源。" #: src/views/apps/grafana/IndexView.vue:96 -msgid "This modifies the Grafana main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 Grafana 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the Grafana main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 Grafana 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/grafana/IndexView.vue:117 msgid "Data Sources" msgstr "資料源" #: src/views/apps/kafka/IndexView.vue:69 -msgid "This modifies the Kafka main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 Kafka 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the Kafka main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 Kafka 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/kafka/KafkaConfigTuneView.vue:60 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:83 @@ -3457,25 +3239,33 @@ msgid "e.g. 4" msgstr "例如 4" #: src/views/apps/minio/IndexView.vue:42 -msgid "This is modifying the MinIO environment variable file /etc/default/minio. If you do not understand the meaning of each parameter, please do not modify it arbitrarily!" -msgstr "這將修改 MinIO 環境變量文件 /etc/default/minio。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This is modifying the MinIO environment variable file /etc/default/minio. If " +"you do not understand the meaning of each parameter, please do not modify it " +"arbitrarily!" +msgstr "" +"這將修改 MinIO 環境變量文件 /etc/default/minio。如果您不了解每個參數的含義," +"請不要隨意修改!" #: src/views/apps/mongodb/IndexView.vue:88 msgid "Admin Password" msgstr "管理員密碼" #: src/views/apps/mongodb/IndexView.vue:92 -msgid "The MongoDB admin password is used to manage the database. Keep it safe!" +msgid "" +"The MongoDB admin password is used to manage the database. Keep it safe!" msgstr "MongoDB 管理員密碼用於管理資料庫。請妥善保管!" #: src/views/apps/mongodb/IndexView.vue:121 -msgid "This modifies the MongoDB configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 MongoDB 配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the MongoDB configuration file. If you do not understand the " +"meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 MongoDB 配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/mongodb/MongoDBConfigTuneView.vue:59 #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:117 -#: src/views/backup/IndexView.vue:59 -#: src/views/task/CreateModal.vue:541 +#: src/views/backup/IndexView.vue:59 src/views/task/CreateModal.vue:541 msgid "Storage" msgstr "儲存" @@ -3516,8 +3306,7 @@ msgstr "系統日誌路徑(systemLog.path)" #: src/views/apps/redis/RedisConfigTuneView.vue:119 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:113 #: src/views/environment/PhpConfigTuneView.vue:248 -#: src/views/project/IndexView.vue:22 -#: src/views/project/ListView.vue:25 +#: src/views/project/IndexView.vue:22 src/views/project/ListView.vue:25 msgid "General" msgstr "通用" @@ -3728,12 +3517,17 @@ msgid "Root Password" msgstr "Root 密碼" #: src/views/apps/mysql/MysqlIndex.vue:125 -msgid "The \"root\" user password is used to manage the database system. Keep it safe!" +msgid "" +"The \"root\" user password is used to manage the database system. Keep it " +"safe!" msgstr "\"root\" 用戶密碼用於管理數據庫系統。請妥善保管!" #: src/views/apps/mysql/MysqlIndex.vue:154 -msgid "This modifies the %{ name } main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 %{ name } 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the %{ name } main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 %{ name } 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/mysql/MysqlIndex.vue:201 msgid "Slow Query Log" @@ -3809,7 +3603,9 @@ msgid "Server Tokens (server_tokens)" msgstr "服務器標識(server_tokens)" #: src/views/apps/nginx/NginxConfigTuneView.vue:281 -msgid "Gzip compression settings. Gzip is the most widely supported compression method." +msgid "" +"Gzip compression settings. Gzip is the most widely supported compression " +"method." msgstr "Gzip 壓縮設置。Gzip 是支持最廣泛的壓縮方法。" #: src/views/apps/nginx/NginxConfigTuneView.vue:287 @@ -3847,7 +3643,9 @@ msgid "e.g. any" msgstr "例如 any" #: src/views/apps/nginx/NginxConfigTuneView.vue:331 -msgid "Brotli compression settings. Brotli provides better compression ratio than Gzip." +msgid "" +"Brotli compression settings. Brotli provides better compression ratio than " +"Gzip." msgstr "Brotli 壓縮設置。Brotli 提供比 Gzip 更好的壓縮率。" #: src/views/apps/nginx/NginxConfigTuneView.vue:337 @@ -3871,7 +3669,8 @@ msgid "Static (brotli_static)" msgstr "靜態(brotli_static)" #: src/views/apps/nginx/NginxConfigTuneView.vue:382 -msgid "Zstd compression settings. Zstd provides fast compression with high ratio." +msgid "" +"Zstd compression settings. Zstd provides fast compression with high ratio." msgstr "Zstd 壓縮設置。Zstd 提供快速壓縮和高壓縮率。" #: src/views/apps/nginx/NginxConfigTuneView.vue:386 @@ -3898,15 +3697,13 @@ msgstr "靜態(zstd_static)" msgid "Listen" msgstr "監聽" -#: src/views/apps/nginx/NginxIndex.vue:167 -#: src/views/firewall/ScanView.vue:301 +#: src/views/apps/nginx/NginxIndex.vue:167 src/views/firewall/ScanView.vue:301 #: src/views/firewall/ScanView.vue:317 msgid "Protocol" msgstr "協議" #: src/views/apps/nginx/NginxIndex.vue:175 -#: src/views/apps/nginx/NginxIndex.vue:635 -#: src/views/website/EditModal.vue:1104 +#: src/views/apps/nginx/NginxIndex.vue:635 src/views/website/EditModal.vue:1114 msgid "Proxy Pass" msgstr "代理目標" @@ -3957,18 +3754,15 @@ msgstr "Stream" #: src/views/apps/nginx/NginxIndex.vue:533 #: src/views/database/CreateServerModal.vue:92 -#: src/views/database/IndexView.vue:58 -#: src/views/website/EditModal.vue:1041 +#: src/views/database/IndexView.vue:184 src/views/website/EditModal.vue:1051 msgid "Add Server" msgstr "添加伺服器" -#: src/views/apps/nginx/NginxIndex.vue:546 -#: src/views/website/EditModal.vue:960 +#: src/views/apps/nginx/NginxIndex.vue:546 src/views/website/EditModal.vue:970 msgid "Upstream" msgstr "上游" -#: src/views/apps/nginx/NginxIndex.vue:550 -#: src/views/website/EditModal.vue:1057 +#: src/views/apps/nginx/NginxIndex.vue:550 src/views/website/EditModal.vue:1067 msgid "Add Upstream" msgstr "添加上游" @@ -4025,8 +3819,7 @@ msgstr "SSL 私鑰路徑" msgid "e.g. /path/to/key.pem" msgstr "例如 /path/to/key.pem" -#: src/views/apps/nginx/NginxIndex.vue:713 -#: src/views/website/EditModal.vue:971 +#: src/views/apps/nginx/NginxIndex.vue:713 src/views/website/EditModal.vue:981 msgid "Load Balancing Algorithm" msgstr "負載均衡算法" @@ -4048,8 +3841,7 @@ msgstr "地址" #: src/views/apps/nginx/NginxIndex.vue:750 #: src/views/container/NetworkView.vue:329 -#: src/views/container/VolumeView.vue:223 -#: src/views/toolbox/DiskView.vue:606 +#: src/views/container/VolumeView.vue:223 src/views/toolbox/DiskView.vue:606 msgid "Options" msgstr "選項" @@ -4057,62 +3849,118 @@ msgstr "選項" msgid "No servers added yet" msgstr "尚未添加服務器" -#: src/views/apps/nginx/NginxIndex.vue:777 -#: src/views/website/EditModal.vue:1001 -#: src/views/website/EditModal.vue:1138 +#: src/views/apps/nginx/NginxIndex.vue:777 src/views/website/EditModal.vue:1011 +#: src/views/website/EditModal.vue:1148 msgid "DNS Resolver" msgstr "DNS 解析器" -#: src/views/apps/nginx/NginxIndex.vue:780 -#: src/views/website/EditModal.vue:1004 -#: src/views/website/EditModal.vue:1141 +#: src/views/apps/nginx/NginxIndex.vue:780 src/views/website/EditModal.vue:1014 +#: src/views/website/EditModal.vue:1151 msgid "e.g., 8.8.8.8" msgstr "例如 8.8.8.8" -#: src/views/apps/nginx/NginxIndex.vue:786 -#: src/views/website/EditModal.vue:1010 -#: src/views/website/EditModal.vue:1147 +#: src/views/apps/nginx/NginxIndex.vue:786 src/views/website/EditModal.vue:1020 +#: src/views/website/EditModal.vue:1157 msgid "Resolver Timeout" msgstr "解析超時" #: src/views/apps/opensearch/IndexView.vue:69 -msgid "This modifies the OpenSearch main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 OpenSearch 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the OpenSearch main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 OpenSearch 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/opensearch/OpenSearchConfigTuneView.vue:71 msgid "OpenSearch cluster and network settings." msgstr "OpenSearch 叢集和網路設置。" +#: src/views/apps/pgadmin/IndexView.vue:48 +#, fuzzy +msgid "Password reset successfully" +msgstr "通行金鑰註冊成功" + +#: src/views/apps/pgadmin/IndexView.vue:65 #: src/views/apps/phpmyadmin/IndexView.vue:69 msgid "Access Information" msgstr "訪問信息" +#: src/views/apps/pgadmin/IndexView.vue:68 #: src/views/apps/phpmyadmin/IndexView.vue:71 msgid "Access URL:" msgstr "訪問 URL:" +#: src/views/apps/pgadmin/IndexView.vue:71 +#, fuzzy +msgid "Login Email" +msgstr "登錄" + +#: src/views/apps/pgadmin/IndexView.vue:74 +#, fuzzy +msgid "Login Password" +msgstr "管理員密碼" + +#: src/views/apps/pgadmin/IndexView.vue:80 +msgid "" +"If the password has been changed in pgAdmin, the actual password shall " +"prevail." +msgstr "" + +#: src/views/apps/pgadmin/IndexView.vue:87 #: src/views/apps/phpmyadmin/IndexView.vue:74 msgid "Modify Port" msgstr "修改連接埠" +#: src/views/apps/pgadmin/IndexView.vue:99 +#, fuzzy +msgid "Modify pgAdmin access port" +msgstr "修改 phpMyAdmin 訪問連接埠" + +#: src/views/apps/pgadmin/IndexView.vue:101 +#, fuzzy +msgid "Reset Password" +msgstr "Redis 密碼" + +#: src/views/apps/pgadmin/IndexView.vue:108 +#, fuzzy +msgid "New password" +msgstr "輸入密碼" + +#: src/views/apps/pgadmin/IndexView.vue:116 src/views/toolbox/SshView.vue:314 +msgid "Reset" +msgstr "重置" + +#: src/views/apps/pgadmin/IndexView.vue:119 +msgid "Reset the login password of the pgAdmin administrator account" +msgstr "" + #: src/views/apps/phpmyadmin/IndexView.vue:86 msgid "Modify phpMyAdmin access port" msgstr "修改 phpMyAdmin 訪問連接埠" #: src/views/apps/phpmyadmin/IndexView.vue:94 -msgid "This modifies the OpenResty configuration file for phpMyAdmin. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 phpMyAdmin 的 OpenResty 配置文件。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the OpenResty configuration file for phpMyAdmin. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 phpMyAdmin 的 OpenResty 配置文件。如果您不了解每個參數的含義,請不要" +"隨意修改!" #: src/views/apps/podman/IndexView.vue:55 -msgid "Podman is a daemonless container management tool. Being in a stopped state is normal and does not affect usage!" -msgstr "Podman 是一個無守護進程的容器管理工具。處於停止狀態是正常的,不影響使用!" +msgid "" +"Podman is a daemonless container management tool. Being in a stopped state " +"is normal and does not affect usage!" +msgstr "" +"Podman 是一個無守護進程的容器管理工具。處於停止狀態是正常的,不影響使用!" #: src/views/apps/podman/IndexView.vue:63 msgid "Registry Configuration" msgstr "註冊表配置" #: src/views/apps/podman/IndexView.vue:67 -msgid "This modifies the Podman registry configuration file (/etc/containers/registries.conf)" +msgid "" +"This modifies the Podman registry configuration file (/etc/containers/" +"registries.conf)" msgstr "這會修改 Podman 註冊表配置文件 (/etc/containers/registries.conf)" #: src/views/apps/podman/IndexView.vue:85 @@ -4120,7 +3968,9 @@ msgid "Storage Configuration" msgstr "儲存配置" #: src/views/apps/podman/IndexView.vue:89 -msgid "This modifies the Podman storage configuration file (/etc/containers/storage.conf)" +msgid "" +"This modifies the Podman storage configuration file (/etc/containers/storage." +"conf)" msgstr "這會修改 Podman 儲存配置文件 (/etc/containers/storage.conf)" #: src/views/apps/postgresql/IndexView.vue:155 @@ -4128,27 +3978,36 @@ msgid "Super Password" msgstr "超級密碼" #: src/views/apps/postgresql/IndexView.vue:159 -msgid "The \"postgres\" superuser password is used to manage the database system. Keep it safe!" +msgid "" +"The \"postgres\" superuser password is used to manage the database system. " +"Keep it safe!" msgstr "\"postgres\" 超級用戶密碼用於管理數據庫系統。請妥善保管!" #: src/views/apps/postgresql/IndexView.vue:192 -msgid "This modifies the PostgreSQL main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 PostgreSQL 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the PostgreSQL main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 PostgreSQL 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/postgresql/IndexView.vue:213 msgid "User Configuration" msgstr "用戶配置" #: src/views/apps/postgresql/IndexView.vue:217 -msgid "This modifies the PostgreSQL user configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 PostgreSQL 用戶配置文件。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the PostgreSQL user configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 PostgreSQL 用戶配置文件。如果您不了解每個參數的含義,請不要隨意修" +"改!" #: src/views/apps/postgresql/IndexView.vue:260 msgid "Application Logs" msgstr "應用程式日誌" #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:174 -#: src/views/toolbox/MigrationView.vue:406 +#: src/views/toolbox/MigrationView.vue:428 msgid "Connection" msgstr "連接" @@ -4180,16 +4039,11 @@ msgstr "例如 3" #: src/views/apps/postgresql/PostgresqlConfigTuneView.vue:226 #: src/views/apps/redis/RedisConfigTuneView.vue:182 #: src/views/apps/valkey/ValkeyConfigTuneView.vue:176 -#: src/views/container/ContainerCreate.vue:426 -#: src/views/home/IndexView.vue:688 -#: src/views/home/IndexView.vue:761 -#: src/views/monitor/IndexView.vue:532 -#: src/views/monitor/IndexView.vue:539 -#: src/views/monitor/IndexView.vue:555 -#: src/views/monitor/IndexView.vue:867 -#: src/views/toolbox/BenchmarkView.vue:178 -#: src/views/toolbox/PanelView.vue:122 -#: src/views/toolbox/ProcessView.vue:152 +#: src/views/container/ContainerCreate.vue:527 src/views/home/IndexView.vue:688 +#: src/views/home/IndexView.vue:761 src/views/monitor/IndexView.vue:532 +#: src/views/monitor/IndexView.vue:539 src/views/monitor/IndexView.vue:555 +#: src/views/monitor/IndexView.vue:867 src/views/toolbox/BenchmarkView.vue:178 +#: src/views/toolbox/PanelView.vue:122 src/views/toolbox/ProcessView.vue:152 msgid "Memory" msgstr "記憶體" @@ -4319,20 +4173,33 @@ msgid "IO Method (io_method)" msgstr "IO 方法(io_method)" #: src/views/apps/prometheus/IndexView.vue:89 -msgid "By default, the firewall does not allow access to the Prometheus port (9090). If you need external access, please manually open the port in the firewall settings." -msgstr "預設情況下,防火牆不允許存取 Prometheus 連接埠(9090)。如果您需要外部存取,請在防火牆設置中手動開放該連接埠。" +msgid "" +"By default, the firewall does not allow access to the Prometheus port " +"(9090). If you need external access, please manually open the port in the " +"firewall settings." +msgstr "" +"預設情況下,防火牆不允許存取 Prometheus 連接埠(9090)。如果您需要外部存取," +"請在防火牆設置中手動開放該連接埠。" #: src/views/apps/prometheus/IndexView.vue:100 -msgid "This modifies the Prometheus main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 Prometheus 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the Prometheus main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 Prometheus 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/prometheus/IndexView.vue:121 msgid "Alertmanager" msgstr "Alertmanager" #: src/views/apps/prometheus/IndexView.vue:126 -msgid "Configure Alertmanager notification channels (email, webhook, Slack, etc). To enable alert rules, uncomment the rule_files section in the main configuration and create rule files in the rules directory." -msgstr "配置 Alertmanager 通知渠道(郵件、webhook、Slack 等)。要啟用告警規則,請在主配置中取消註釋 rule_files 部分,並在 rules 目錄中建立規則文件。" +msgid "" +"Configure Alertmanager notification channels (email, webhook, Slack, etc). " +"To enable alert rules, uncomment the rule_files section in the main " +"configuration and create rule files in the rules directory." +msgstr "" +"配置 Alertmanager 通知渠道(郵件、webhook、Slack 等)。要啟用告警規則,請在主" +"配置中取消註釋 rule_files 部分,並在 rules 目錄中建立規則文件。" #: src/views/apps/prometheus/IndexView.vue:144 msgid "Exporters" @@ -4373,7 +4240,7 @@ msgid "Are you sure you want to install %{ name }?" msgstr "您確定要安裝 %{ name } 嗎?" #: src/views/apps/prometheus/PrometheusExportersView.vue:112 -#: src/views/website/EditModal.vue:2017 +#: src/views/website/EditModal.vue:2027 msgid "Config" msgstr "配置" @@ -4384,13 +4251,13 @@ msgstr "您確定要卸載 %{ name } 嗎?" #: src/views/apps/prometheus/PrometheusExportersView.vue:146 #: src/views/apps/prometheus/PrometheusExportersView.vue:153 -#: src/views/environment/PHPView.vue:175 -#: src/views/environment/PHPView.vue:181 +#: src/views/environment/PHPView.vue:175 src/views/environment/PHPView.vue:181 msgid "Task submitted, please check progress in background tasks" msgstr "任務已提交,請在後台任務中查看進度" #: src/views/apps/prometheus/PrometheusExportersView.vue:204 -msgid "Manage Prometheus exporters. Exporters collect metrics from various services." +msgid "" +"Manage Prometheus exporters. Exporters collect metrics from various services." msgstr "管理 Prometheus exporters。Exporters 從各種服務中收集指標。" #: src/views/apps/prometheus/PrometheusExportersView.vue:211 @@ -4403,23 +4270,18 @@ msgstr "修改 exporter 配置將重啟 exporter 服務。" #: src/views/apps/pureftpd/IndexView.vue:39 #: src/views/apps/pureftpd/IndexView.vue:231 -#: src/views/backup/StorageView.vue:298 -#: src/views/backup/StorageView.vue:347 -#: src/views/backup/StorageView.vue:454 -#: src/views/backup/StorageView.vue:500 +#: src/views/backup/StorageView.vue:298 src/views/backup/StorageView.vue:347 +#: src/views/backup/StorageView.vue:454 src/views/backup/StorageView.vue:500 #: src/views/container/ImageView.vue:382 #: src/views/database/CreateDatabaseModal.vue:117 #: src/views/database/CreateServerModal.vue:167 #: src/views/database/CreateUserModal.vue:112 #: src/views/database/ServerList.vue:73 -#: src/views/database/UpdateServerModal.vue:96 -#: src/views/database/UserList.vue:22 -#: src/views/login/IndexView.vue:252 -#: src/views/setting/CreateModal.vue:46 -#: src/views/setting/SettingUser.vue:24 -#: src/views/ssh/CreateModal.vue:86 -#: src/views/ssh/UpdateModal.vue:92 -#: src/views/website/EditModal.vue:1980 +#: src/views/database/UpdateServerModal.vue:97 +#: src/views/database/UserList.vue:22 src/views/login/IndexView.vue:252 +#: src/views/setting/CreateModal.vue:46 src/views/setting/SettingUser.vue:24 +#: src/views/ssh/CreateModal.vue:86 src/views/ssh/UpdateModal.vue:92 +#: src/views/website/EditModal.vue:1990 msgid "Username" msgstr "使用者名稱" @@ -4440,7 +4302,7 @@ msgid "User Management" msgstr "用戶管理" #: src/views/apps/pureftpd/IndexView.vue:191 -#: src/views/website/EditModal.vue:1982 +#: src/views/website/EditModal.vue:1992 msgid "Add User" msgstr "添加用戶" @@ -4452,17 +4314,14 @@ msgstr "運行日誌" #: src/views/apps/pureftpd/IndexView.vue:227 #: src/views/database/CreateDatabaseModal.vue:102 #: src/views/database/CreateUserModal.vue:90 -#: src/views/database/IndexView.vue:51 -#: src/views/setting/CreateModal.vue:38 +#: src/views/database/IndexView.vue:177 src/views/setting/CreateModal.vue:38 #: src/views/setting/IndexView.vue:155 msgid "Create User" msgstr "建立使用者" #: src/views/apps/pureftpd/IndexView.vue:236 -#: src/views/backup/StorageView.vue:301 -#: src/views/backup/StorageView.vue:350 -#: src/views/backup/StorageView.vue:457 -#: src/views/backup/StorageView.vue:503 +#: src/views/backup/StorageView.vue:301 src/views/backup/StorageView.vue:350 +#: src/views/backup/StorageView.vue:457 src/views/backup/StorageView.vue:503 #: src/views/container/ImageView.vue:387 #: src/views/database/CreateDatabaseModal.vue:122 #: src/views/database/CreateUserModal.vue:117 @@ -4475,15 +4334,11 @@ msgid "It is recommended to use the generator to generate a random password" msgstr "建議使用生成器生成隨機密碼" #: src/views/apps/pureftpd/IndexView.vue:250 -#: src/views/apps/rsync/IndexView.vue:50 -#: src/views/apps/rsync/IndexView.vue:271 +#: src/views/apps/rsync/IndexView.vue:50 src/views/apps/rsync/IndexView.vue:271 #: src/views/apps/rsync/IndexView.vue:332 -#: src/views/container/ComposeView.vue:66 -#: src/views/file/PropertyModal.vue:34 -#: src/views/project/ListView.vue:97 -#: src/views/task/CreateModal.vue:464 -#: src/views/website/CreateModal.vue:305 -#: src/views/website/ListView.vue:148 +#: src/views/container/ComposeView.vue:66 src/views/file/PropertyModal.vue:34 +#: src/views/project/ListView.vue:97 src/views/task/CreateModal.vue:464 +#: src/views/website/CreateModal.vue:305 src/views/website/ListView.vue:148 msgid "Directory" msgstr "目錄" @@ -4540,8 +4395,11 @@ msgid "e.g. 99" msgstr "例如 99" #: src/views/apps/redis/IndexView.vue:69 -msgid "This modifies the Redis main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 Redis 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the Redis main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 Redis 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/redis/RedisConfigTuneView.vue:122 msgid "Common Redis general settings." @@ -4626,8 +4484,12 @@ msgid "Append Fsync (appendfsync)" msgstr "追加同步(appendfsync)" #: src/views/apps/rocketmq/IndexView.vue:72 -msgid "This modifies the RocketMQ broker configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 RocketMQ broker 配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the RocketMQ broker configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 RocketMQ broker 配置文件。如果您不理解每個參數的含義,請不要隨意修" +"改!" #: src/views/apps/rocketmq/RocketMQConfigTuneView.vue:86 msgid "RocketMQ broker basic settings." @@ -4677,33 +4539,26 @@ msgstr "JVM" msgid "JVM heap memory settings for NameServer and Broker." msgstr "NameServer 和 Broker 的 JVM 堆記憶體設置。" -#: src/views/apps/rsync/IndexView.vue:64 -#: src/views/apps/rsync/IndexView.vue:295 -#: src/views/apps/rsync/IndexView.vue:357 -#: src/views/backup/StorageView.vue:287 +#: src/views/apps/rsync/IndexView.vue:64 src/views/apps/rsync/IndexView.vue:295 +#: src/views/apps/rsync/IndexView.vue:357 src/views/backup/StorageView.vue:287 #: src/views/backup/StorageView.vue:443 #: src/views/database/CreateDatabaseModal.vue:142 #: src/views/database/CreateServerModal.vue:143 #: src/views/database/CreateUserModal.vue:134 #: src/views/database/ServerList.vue:113 -#: src/views/database/UpdateServerModal.vue:75 -#: src/views/database/UserList.vue:63 -#: src/views/ssh/CreateModal.vue:65 -#: src/views/ssh/UpdateModal.vue:71 -#: src/views/toolbox/SystemView.vue:229 +#: src/views/database/UpdateServerModal.vue:76 +#: src/views/database/UserList.vue:63 src/views/ssh/CreateModal.vue:65 +#: src/views/ssh/UpdateModal.vue:71 src/views/toolbox/SystemView.vue:229 msgid "Host" msgstr "主機" -#: src/views/apps/rsync/IndexView.vue:70 -#: src/views/apps/rsync/IndexView.vue:303 +#: src/views/apps/rsync/IndexView.vue:70 src/views/apps/rsync/IndexView.vue:303 #: src/views/apps/rsync/IndexView.vue:365 #: src/views/database/CreateServerModal.vue:190 #: src/views/database/CreateUserModal.vue:160 -#: src/views/database/DatabaseList.vue:49 -#: src/views/database/ServerList.vue:123 -#: src/views/database/UpdateServerModal.vue:113 -#: src/views/database/UpdateUserModal.vue:78 -#: src/views/database/UserList.vue:96 +#: src/views/database/DatabaseList.vue:49 src/views/database/ServerList.vue:123 +#: src/views/database/UpdateServerModal.vue:114 +#: src/views/database/UpdateUserModal.vue:78 src/views/database/UserList.vue:96 msgid "Comment" msgstr "註釋" @@ -4716,8 +4571,7 @@ msgstr "配置" msgid "Are you sure you want to delete module %{ name }?" msgstr "您確定要刪除模組 %{ name } 嗎?" -#: src/views/apps/rsync/IndexView.vue:197 -#: src/views/environment/PHPView.vue:207 +#: src/views/apps/rsync/IndexView.vue:197 src/views/environment/PHPView.vue:207 msgid "Module Management" msgstr "模組管理" @@ -4727,8 +4581,11 @@ msgid "Add Module" msgstr "添加模組" #: src/views/apps/rsync/IndexView.vue:229 -msgid "This modifies the Rsync main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 Rsync 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the Rsync main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 Rsync 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/rsync/IndexView.vue:268 #: src/views/apps/supervisor/IndexView.vue:397 @@ -4764,8 +4621,7 @@ msgstr "輸入註釋" msgid "Module Configuration" msgstr "模組配置" -#: src/views/apps/s3fs/IndexView.vue:27 -#: src/views/toolbox/DiskView.vue:696 +#: src/views/apps/s3fs/IndexView.vue:27 src/views/toolbox/DiskView.vue:696 msgid "Mount Path" msgstr "掛載路徑" @@ -4773,14 +4629,12 @@ msgstr "掛載路徑" msgid "Are you sure you want to delete mount %{ path }?" msgstr "您確定要刪除掛載 %{ path } 嗎?" -#: src/views/apps/s3fs/IndexView.vue:50 -#: src/views/apps/s3fs/IndexView.vue:55 +#: src/views/apps/s3fs/IndexView.vue:50 src/views/apps/s3fs/IndexView.vue:55 #: src/views/toolbox/DiskView.vue:312 msgid "Unmount" msgstr "卸載" -#: src/views/apps/s3fs/IndexView.vue:101 -#: src/views/apps/s3fs/IndexView.vue:125 +#: src/views/apps/s3fs/IndexView.vue:101 src/views/apps/s3fs/IndexView.vue:125 #: src/views/apps/s3fs/IndexView.vue:129 msgid "Add Mount" msgstr "添加掛載" @@ -4802,7 +4656,9 @@ msgid "Region Endpoint" msgstr "區域端點" #: src/views/apps/s3fs/IndexView.vue:163 -msgid "Enter complete URL of region endpoint (e.g., https://oss-cn-beijing.aliyuncs.com)" +msgid "" +"Enter complete URL of region endpoint (e.g., https://oss-cn-beijing.aliyuncs." +"com)" msgstr "輸入完整的區域端點 URL(例如:https://oss-cn-beijing.aliyuncs.com)" #: src/views/apps/s3fs/IndexView.vue:169 @@ -4840,16 +4696,18 @@ msgid "Add Process" msgstr "添加進程" #: src/views/apps/supervisor/IndexView.vue:343 -msgid "This modifies the Supervisor main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 Supervisor 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the Supervisor main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 Supervisor 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" #: src/views/apps/supervisor/IndexView.vue:364 msgid "Daemon Logs" msgstr "守護進程日誌" #: src/views/apps/supervisor/IndexView.vue:400 -#: src/views/project/CreateModal.vue:641 -#: src/views/project/EditModal.vue:257 +#: src/views/project/CreateModal.vue:641 src/views/project/EditModal.vue:257 msgid "Start Command" msgstr "啟動命令" @@ -4858,8 +4716,7 @@ msgid "Please enter absolute path for files in start command" msgstr "請在啟動命令中輸入文件的絕對路徑" #: src/views/apps/supervisor/IndexView.vue:408 -#: src/views/project/EditModal.vue:219 -#: src/views/toolbox/ProcessView.vue:431 +#: src/views/project/EditModal.vue:219 src/views/toolbox/ProcessView.vue:431 msgid "Working Directory" msgstr "工作目錄" @@ -4885,8 +4742,11 @@ msgid "Process Configuration" msgstr "進程配置" #: src/views/apps/valkey/IndexView.vue:69 -msgid "This modifies the Valkey main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 Valkey 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the Valkey main configuration file. If you do not understand " +"the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 Valkey 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!" #: src/views/apps/valkey/ValkeyConfigTuneView.vue:116 msgid "Common Valkey general settings." @@ -4904,8 +4764,7 @@ msgstr "Valkey AOF 持久化設置。" msgid "Filename" msgstr "檔案名稱" -#: src/views/backup/ListView.vue:57 -#: src/views/database/ServerList.vue:152 +#: src/views/backup/ListView.vue:57 src/views/database/ServerList.vue:152 #: src/views/database/UserList.vue:125 msgid "Update Date" msgstr "更新日期" @@ -4927,34 +4786,31 @@ msgid "Restored successfully" msgstr "恢復成功" #: src/views/backup/ListView.vue:225 -msgid "Only local backups are displayed here. Remote backups are stored in the corresponding backup storage." +msgid "" +"Only local backups are displayed here. Remote backups are stored in the " +"corresponding backup storage." msgstr "此處僅顯示本地備份。遠端備份儲存在相應的備份儲存中。" -#: src/views/backup/ListView.vue:232 -#: src/views/backup/ListView.vue:261 +#: src/views/backup/ListView.vue:232 src/views/backup/ListView.vue:261 msgid "Create Backup" msgstr "創建備份" -#: src/views/backup/ListView.vue:235 -#: src/views/backup/UploadModal.vue:38 +#: src/views/backup/ListView.vue:235 src/views/backup/UploadModal.vue:38 msgid "Upload Backup" msgstr "上傳備份" -#: src/views/backup/ListView.vue:273 -#: src/views/backup/ListView.vue:321 +#: src/views/backup/ListView.vue:273 src/views/backup/ListView.vue:321 msgid "Select website" msgstr "選擇網站" #: src/views/backup/ListView.vue:279 #: src/views/database/CreateDatabaseModal.vue:94 -#: src/views/database/DatabaseList.vue:21 -#: src/views/website/CreateModal.vue:269 +#: src/views/database/DatabaseList.vue:21 src/views/website/CreateModal.vue:269 #: src/views/website/CreateModal.vue:274 msgid "Database Name" msgstr "數據庫名稱" -#: src/views/backup/ListView.vue:285 -#: src/views/backup/ListView.vue:333 +#: src/views/backup/ListView.vue:285 src/views/backup/ListView.vue:333 msgid "Select database" msgstr "選取資料庫" @@ -4970,22 +4826,17 @@ msgstr "選擇備份儲存" msgid "Restore Backup" msgstr "恢復備份" -#: src/views/backup/StorageView.vue:36 -#: src/views/backup/StorageView.vue:321 -#: src/views/backup/StorageView.vue:477 -#: src/views/cert/CertView.vue:535 -#: src/views/cert/CertView.vue:614 -#: src/views/cert/UploadCertModal.vue:54 -#: src/views/setting/SettingSafe.vue:282 -#: src/views/ssh/CreateModal.vue:81 -#: src/views/ssh/CreateModal.vue:92 -#: src/views/ssh/UpdateModal.vue:87 -#: src/views/ssh/UpdateModal.vue:98 -#: src/views/website/EditModal.vue:1712 +#: src/views/backup/StorageView.vue:36 src/views/backup/StorageView.vue:321 +#: src/views/backup/StorageView.vue:477 src/views/cert/CertView.vue:535 +#: src/views/cert/CertView.vue:614 src/views/cert/UploadCertModal.vue:54 +#: src/views/setting/SettingSafe.vue:282 src/views/ssh/CreateModal.vue:81 +#: src/views/ssh/CreateModal.vue:92 src/views/ssh/UpdateModal.vue:87 +#: src/views/ssh/UpdateModal.vue:98 src/views/website/EditModal.vue:1722 msgid "Private Key" msgstr "私鑰" #: src/views/backup/StorageView.vue:87 +#: src/views/container/ContainerInfoModal.vue:113 msgid "Created At" msgstr "創建於" @@ -4994,50 +4845,41 @@ msgid "Are you sure you want to delete this storage?" msgstr "您確定要刪除此儲存嗎?" #: src/views/backup/StorageView.vue:173 -#: src/views/setting/PasswordModal.vue:21 -#: src/views/setting/TokenModal.vue:178 -#: src/views/setting/TwoFaModal.vue:28 -#: src/views/ssh/UpdateModal.vue:32 +#: src/views/container/ContainerCreate.vue:118 +#: src/views/setting/PasswordModal.vue:21 src/views/setting/TokenModal.vue:178 +#: src/views/setting/TwoFaModal.vue:28 src/views/ssh/UpdateModal.vue:32 msgid "Updated successfully" msgstr "更新成功" -#: src/views/backup/StorageView.vue:195 -#: src/views/backup/StorageView.vue:222 +#: src/views/backup/StorageView.vue:195 src/views/backup/StorageView.vue:222 msgid "Add Storage" msgstr "新增儲存" -#: src/views/backup/StorageView.vue:231 -#: src/views/backup/StorageView.vue:393 +#: src/views/backup/StorageView.vue:231 src/views/backup/StorageView.vue:393 msgid "Enter storage name" msgstr "輸入儲存名稱" -#: src/views/backup/StorageView.vue:239 -#: src/views/backup/StorageView.vue:401 +#: src/views/backup/StorageView.vue:239 src/views/backup/StorageView.vue:401 msgid "Access Key" msgstr "Access Key" -#: src/views/backup/StorageView.vue:242 -#: src/views/backup/StorageView.vue:404 +#: src/views/backup/StorageView.vue:242 src/views/backup/StorageView.vue:404 msgid "Enter access key" msgstr "輸入 Access Key" -#: src/views/backup/StorageView.vue:245 -#: src/views/backup/StorageView.vue:407 +#: src/views/backup/StorageView.vue:245 src/views/backup/StorageView.vue:407 msgid "Secret Key" msgstr "Secret Key" -#: src/views/backup/StorageView.vue:250 -#: src/views/backup/StorageView.vue:412 +#: src/views/backup/StorageView.vue:250 src/views/backup/StorageView.vue:412 msgid "Enter secret key" msgstr "輸入 Secret Key" -#: src/views/backup/StorageView.vue:253 -#: src/views/backup/StorageView.vue:415 +#: src/views/backup/StorageView.vue:253 src/views/backup/StorageView.vue:415 msgid "Style" msgstr "風格" -#: src/views/backup/StorageView.vue:256 -#: src/views/website/stats/GeoTab.vue:91 +#: src/views/backup/StorageView.vue:256 src/views/website/stats/GeoTab.vue:91 #: src/views/website/stats/GeoTab.vue:248 msgid "Region" msgstr "區域" @@ -5046,74 +4888,56 @@ msgstr "區域" msgid "Enter region (e.g., us-east-1)" msgstr "輸入區域(例如 us-east-1)" -#: src/views/backup/StorageView.vue:262 -#: src/views/backup/StorageView.vue:418 +#: src/views/backup/StorageView.vue:262 src/views/backup/StorageView.vue:418 msgid "Endpoint" msgstr "端點" -#: src/views/backup/StorageView.vue:265 -#: src/views/backup/StorageView.vue:421 +#: src/views/backup/StorageView.vue:265 src/views/backup/StorageView.vue:421 msgid "Enter endpoint URL" msgstr "輸入端點 URL" -#: src/views/backup/StorageView.vue:268 -#: src/views/backup/StorageView.vue:424 +#: src/views/backup/StorageView.vue:268 src/views/backup/StorageView.vue:424 msgid "Scheme" msgstr "協定" -#: src/views/backup/StorageView.vue:271 -#: src/views/backup/StorageView.vue:427 +#: src/views/backup/StorageView.vue:271 src/views/backup/StorageView.vue:427 msgid "Bucket" msgstr "儲存桶" -#: src/views/backup/StorageView.vue:274 -#: src/views/backup/StorageView.vue:430 +#: src/views/backup/StorageView.vue:274 src/views/backup/StorageView.vue:430 msgid "Enter bucket name" msgstr "輸入儲存桶名稱" -#: src/views/backup/StorageView.vue:280 -#: src/views/backup/StorageView.vue:364 -#: src/views/backup/StorageView.vue:436 -#: src/views/backup/StorageView.vue:517 +#: src/views/backup/StorageView.vue:280 src/views/backup/StorageView.vue:364 +#: src/views/backup/StorageView.vue:436 src/views/backup/StorageView.vue:517 msgid "Enter path (optional)" msgstr "輸入路徑(可選)" -#: src/views/backup/StorageView.vue:288 -#: src/views/backup/StorageView.vue:444 +#: src/views/backup/StorageView.vue:288 src/views/backup/StorageView.vue:444 msgid "Enter host" msgstr "輸入主機" -#: src/views/backup/StorageView.vue:290 -#: src/views/backup/StorageView.vue:446 +#: src/views/backup/StorageView.vue:290 src/views/backup/StorageView.vue:446 #: src/views/database/CreateServerModal.vue:154 -#: src/views/database/UpdateServerModal.vue:86 -#: src/views/firewall/ForwardView.vue:33 -#: src/views/firewall/RuleView.vue:67 -#: src/views/firewall/ScanView.vue:300 -#: src/views/firewall/ScanView.vue:316 -#: src/views/firewall/ScanView.vue:380 -#: src/views/log/SSHLog.vue:83 -#: src/views/setting/SettingBase.vue:137 -#: src/views/ssh/CreateModal.vue:71 -#: src/views/ssh/UpdateModal.vue:77 -#: src/views/website/CreateModal.vue:224 +#: src/views/database/UpdateServerModal.vue:87 +#: src/views/firewall/ForwardView.vue:33 src/views/firewall/RuleView.vue:67 +#: src/views/firewall/ScanView.vue:300 src/views/firewall/ScanView.vue:316 +#: src/views/firewall/ScanView.vue:380 src/views/log/SSHLog.vue:83 +#: src/views/setting/SettingBase.vue:137 src/views/ssh/CreateModal.vue:71 +#: src/views/ssh/UpdateModal.vue:77 src/views/website/CreateModal.vue:224 msgid "Port" msgstr "端口" -#: src/views/backup/StorageView.vue:295 -#: src/views/backup/StorageView.vue:451 +#: src/views/backup/StorageView.vue:295 src/views/backup/StorageView.vue:451 msgid "Enter port" msgstr "輸入連接埠" -#: src/views/backup/StorageView.vue:304 -#: src/views/backup/StorageView.vue:460 +#: src/views/backup/StorageView.vue:304 src/views/backup/StorageView.vue:460 msgid "Auth Type" msgstr "認證類型" -#: src/views/backup/StorageView.vue:316 -#: src/views/backup/StorageView.vue:358 -#: src/views/backup/StorageView.vue:472 -#: src/views/backup/StorageView.vue:511 +#: src/views/backup/StorageView.vue:316 src/views/backup/StorageView.vue:358 +#: src/views/backup/StorageView.vue:472 src/views/backup/StorageView.vue:511 #: src/views/container/ImageView.vue:396 #: src/views/database/CreateDatabaseModal.vue:132 #: src/views/database/CreateUserModal.vue:127 @@ -5121,23 +4945,19 @@ msgstr "認證類型" msgid "Enter password" msgstr "輸入密碼" -#: src/views/backup/StorageView.vue:328 -#: src/views/backup/StorageView.vue:484 +#: src/views/backup/StorageView.vue:328 src/views/backup/StorageView.vue:484 msgid "Enter private key" msgstr "輸入私鑰" -#: src/views/backup/StorageView.vue:334 -#: src/views/backup/StorageView.vue:490 +#: src/views/backup/StorageView.vue:334 src/views/backup/StorageView.vue:490 msgid "Enter remote path" msgstr "輸入遠端路徑" -#: src/views/backup/StorageView.vue:341 -#: src/views/backup/StorageView.vue:497 +#: src/views/backup/StorageView.vue:341 src/views/backup/StorageView.vue:497 msgid "URL" msgstr "URL" -#: src/views/backup/StorageView.vue:344 -#: src/views/backup/StorageView.vue:498 +#: src/views/backup/StorageView.vue:344 src/views/backup/StorageView.vue:498 msgid "Enter WebDAV URL" msgstr "輸入 WebDAV URL" @@ -5149,37 +4969,30 @@ msgstr "編輯儲存" msgid "Upload %{ filename } successfully" msgstr "上傳 %{ filename } 成功" -#: src/views/backup/UploadModal.vue:50 -#: src/views/file/UploadModal.vue:712 +#: src/views/backup/UploadModal.vue:50 src/views/file/UploadModal.vue:712 msgid "Click or drag files to this area to upload" msgstr "點擊或將文件拖到此區域上傳" #: src/views/backup/UploadModal.vue:52 -msgid "For large files, it is recommended to use SFTP or other methods to upload" +msgid "" +"For large files, it is recommended to use SFTP or other methods to upload" msgstr "對於大文件,建議使用 SFTP 或其他方法上傳" -#: src/views/cert/AccountView.vue:39 -#: src/views/cert/AccountView.vue:226 +#: src/views/cert/AccountView.vue:39 src/views/cert/AccountView.vue:226 #: src/views/cert/CreateAccountModal.vue:104 -#: src/views/setting/CreateModal.vue:62 -#: src/views/setting/SettingUser.vue:40 +#: src/views/setting/CreateModal.vue:62 src/views/setting/SettingUser.vue:40 msgid "Email" msgstr "電子郵件" -#: src/views/cert/AccountView.vue:67 -#: src/views/cert/AccountView.vue:218 -#: src/views/cert/CertView.vue:459 -#: src/views/cert/CreateAccountModal.vue:96 +#: src/views/cert/AccountView.vue:67 src/views/cert/AccountView.vue:218 +#: src/views/cert/CertView.vue:459 src/views/cert/CreateAccountModal.vue:96 #: src/views/cert/CreateCertModal.vue:110 msgid "Key Type" msgstr "密鑰類型" -#: src/views/cert/AccountView.vue:95 -#: src/views/cert/CertView.vue:290 -#: src/views/cert/DnsView.vue:91 -#: src/views/database/ServerList.vue:214 -#: src/views/database/UserList.vue:150 -#: src/views/file/PermissionModal.vue:156 +#: src/views/cert/AccountView.vue:95 src/views/cert/CertView.vue:290 +#: src/views/cert/DnsView.vue:91 src/views/database/ServerList.vue:214 +#: src/views/database/UserList.vue:150 src/views/file/PermissionModal.vue:156 #: src/views/setting/TokenModal.vue:73 msgid "Modify" msgstr "修改" @@ -5188,14 +5001,12 @@ msgstr "修改" msgid "Are you sure you want to delete the account?" msgstr "您確定要刪除該賬戶嗎?" -#: src/views/cert/AccountView.vue:108 -#: src/views/cert/CertView.vue:304 +#: src/views/cert/AccountView.vue:108 src/views/cert/CertView.vue:304 #: src/views/cert/DnsView.vue:105 msgid "Deletion successful" msgstr "刪除成功" -#: src/views/cert/AccountView.vue:133 -#: src/views/cert/CreateAccountModal.vue:42 +#: src/views/cert/AccountView.vue:133 src/views/cert/CreateAccountModal.vue:42 msgid "Registering account with CA, please wait patiently" msgstr "正在向 CA 註冊賬戶,請耐心等待" @@ -5203,61 +5014,55 @@ msgstr "正在向 CA 註冊賬戶,請耐心等待" msgid "Modify Account" msgstr "修改帳戶" -#: src/views/cert/AccountView.vue:198 -#: src/views/cert/CreateAccountModal.vue:76 -msgid "LiteSSL, Google and SSL.com require obtaining EAB (KID and HMAC) from their official websites first" -msgstr "LiteSSL、Google 和 SSL.com 需要先從他們的官方網站獲取 EAB (KID 和 HMAC)" +#: src/views/cert/AccountView.vue:198 src/views/cert/CreateAccountModal.vue:76 +msgid "" +"LiteSSL, Google and SSL.com require obtaining EAB (KID and HMAC) from their " +"official websites first" +msgstr "" +"LiteSSL、Google 和 SSL.com 需要先從他們的官方網站獲取 EAB (KID 和 HMAC)" -#: src/views/cert/AccountView.vue:204 -#: src/views/cert/CreateAccountModal.vue:82 -msgid "Google is not accessible in mainland China, other CAs depend on network conditions, recommend using Let's Encrypt or LiteSSL" -msgstr "Google 在中國大陸無法訪問,其他 CA 取決於網絡條件,建議使用 Let's Encrypt 或 LiteSSL" +#: src/views/cert/AccountView.vue:204 src/views/cert/CreateAccountModal.vue:82 +msgid "" +"Google is not accessible in mainland China, other CAs depend on network " +"conditions, recommend using Let's Encrypt or LiteSSL" +msgstr "" +"Google 在中國大陸無法訪問,其他 CA 取決於網絡條件,建議使用 Let's Encrypt 或 " +"LiteSSL" -#: src/views/cert/AccountView.vue:210 -#: src/views/cert/CreateAccountModal.vue:88 +#: src/views/cert/AccountView.vue:210 src/views/cert/CreateAccountModal.vue:88 msgid "CA" msgstr "CA" -#: src/views/cert/AccountView.vue:213 -#: src/views/cert/CreateAccountModal.vue:91 +#: src/views/cert/AccountView.vue:213 src/views/cert/CreateAccountModal.vue:91 msgid "Select CA" msgstr "選擇 CA" -#: src/views/cert/AccountView.vue:221 -#: src/views/cert/CertView.vue:462 +#: src/views/cert/AccountView.vue:221 src/views/cert/CertView.vue:462 #: src/views/cert/CreateAccountModal.vue:99 #: src/views/cert/CreateCertModal.vue:113 msgid "Select key type" msgstr "選擇密鑰類型" -#: src/views/cert/AccountView.vue:231 -#: src/views/cert/CreateAccountModal.vue:109 +#: src/views/cert/AccountView.vue:231 src/views/cert/CreateAccountModal.vue:109 msgid "Enter email address" msgstr "輸入電子郵件地址" -#: src/views/cert/AccountView.vue:239 -#: src/views/cert/CreateAccountModal.vue:117 +#: src/views/cert/AccountView.vue:239 src/views/cert/CreateAccountModal.vue:117 msgid "Enter KID" msgstr "輸入 KID" -#: src/views/cert/AccountView.vue:247 -#: src/views/cert/CreateAccountModal.vue:125 +#: src/views/cert/AccountView.vue:247 src/views/cert/CreateAccountModal.vue:125 msgid "Enter HMAC" msgstr "輸入 HMAC" -#: src/views/cert/CertView.vue:82 -#: src/views/cert/CertView.vue:451 -#: src/views/cert/CreateCertModal.vue:102 -#: src/views/project/CreateModal.vue:661 -#: src/views/website/CreateModal.vue:201 -#: src/views/website/EditModal.vue:866 +#: src/views/cert/CertView.vue:82 src/views/cert/CertView.vue:451 +#: src/views/cert/CreateCertModal.vue:102 src/views/project/CreateModal.vue:661 +#: src/views/website/CreateModal.vue:201 src/views/website/EditModal.vue:876 msgid "Domain" msgstr "域名" -#: src/views/cert/CertView.vue:127 -#: src/views/file/ToolBar.vue:181 -#: src/views/file/UploadModal.vue:676 -#: src/views/monitor/IndexView.vue:596 +#: src/views/cert/CertView.vue:127 src/views/file/ToolBar.vue:154 +#: src/views/file/UploadModal.vue:676 src/views/monitor/IndexView.vue:596 msgid "Upload" msgstr "上傳" @@ -5265,15 +5070,12 @@ msgstr "上傳" msgid "Associated Account" msgstr "關聯帳戶" -#: src/views/cert/CertView.vue:148 -#: src/views/website/EditModal.vue:1639 +#: src/views/cert/CertView.vue:148 src/views/website/EditModal.vue:1649 msgid "Issuer" msgstr "頒發者" -#: src/views/cert/CertView.vue:157 -#: src/views/setting/TokenModal.vue:48 -#: src/views/setting/TokenModal.vue:255 -#: src/views/setting/TokenModal.vue:293 +#: src/views/cert/CertView.vue:157 src/views/setting/TokenModal.vue:48 +#: src/views/setting/TokenModal.vue:255 src/views/setting/TokenModal.vue:293 msgid "Expiration Time" msgstr "過期時間" @@ -5285,8 +5087,7 @@ msgstr "下次續簽時間" msgid "Auto Renewal" msgstr "自動續簽" -#: src/views/cert/CertView.vue:208 -#: src/views/website/EditModal.vue:2171 +#: src/views/cert/CertView.vue:208 src/views/website/EditModal.vue:2181 msgid "Issue" msgstr "簽發" @@ -5307,64 +5108,58 @@ msgid "Modify Certificate" msgstr "修改證書" #: src/views/cert/CertView.vue:445 -msgid "You can automatically issue and deploy certificates by selecting any website/DNS, or manually enter domain names and set DNS resolution to issue certificates, or fill in deployment scripts to automatically deploy certificates." -msgstr "您可以通過選擇任何網站 / DNS 自動頒發和部署證書,或手動輸入域名並設置 DNS 解析以頒發證書,或填寫部署腳本以自動部署證書。" +msgid "" +"You can automatically issue and deploy certificates by selecting any website/" +"DNS, or manually enter domain names and set DNS resolution to issue " +"certificates, or fill in deployment scripts to automatically deploy " +"certificates." +msgstr "" +"您可以通過選擇任何網站 / DNS 自動頒發和部署證書,或手動輸入域名並設置 DNS 解" +"析以頒發證書,或填寫部署腳本以自動部署證書。" -#: src/views/cert/CertView.vue:470 -#: src/views/cert/CreateCertModal.vue:121 +#: src/views/cert/CertView.vue:470 src/views/cert/CreateCertModal.vue:121 msgid "Select website for certificate deployment" msgstr "選擇要部署憑證的網站" -#: src/views/cert/CertView.vue:478 -#: src/views/cert/CreateCertModal.vue:126 +#: src/views/cert/CertView.vue:478 src/views/cert/CreateCertModal.vue:126 #: src/views/cert/IndexView.vue:97 msgid "Account" msgstr "帳戶" -#: src/views/cert/CertView.vue:482 -#: src/views/cert/CreateCertModal.vue:129 +#: src/views/cert/CertView.vue:482 src/views/cert/CreateCertModal.vue:129 msgid "Select account for certificate issuance" msgstr "選擇用於憑證頒發的帳戶" -#: src/views/cert/CertView.vue:487 -#: src/views/cert/CreateCertModal.vue:134 -#: src/views/cert/CreateDnsModal.vue:71 -#: src/views/cert/DnsView.vue:196 -#: src/views/cert/IndexView.vue:98 -#: src/views/website/EditModal.vue:2162 +#: src/views/cert/CertView.vue:487 src/views/cert/CreateCertModal.vue:134 +#: src/views/cert/CreateDnsModal.vue:71 src/views/cert/DnsView.vue:196 +#: src/views/cert/IndexView.vue:98 src/views/website/EditModal.vue:2172 msgid "DNS" msgstr "DNS" -#: src/views/cert/CertView.vue:490 -#: src/views/cert/CreateCertModal.vue:137 -#: src/views/website/EditModal.vue:2165 +#: src/views/cert/CertView.vue:490 src/views/cert/CreateCertModal.vue:137 +#: src/views/website/EditModal.vue:2175 msgid "Select DNS for certificate issuance" msgstr "選擇用於證書頒發的 DNS" -#: src/views/cert/CertView.vue:497 -#: src/views/cert/CreateCertModal.vue:142 +#: src/views/cert/CertView.vue:497 src/views/cert/CreateCertModal.vue:142 msgid "DNS Alias" msgstr "DNS 別名" -#: src/views/cert/CertView.vue:507 -#: src/views/cert/CreateCertModal.vue:148 +#: src/views/cert/CertView.vue:507 src/views/cert/CreateCertModal.vue:148 msgid "Original domain, e.g. example.com" msgstr "原始域名,例如 example.com" -#: src/views/cert/CertView.vue:513 -#: src/views/cert/CreateCertModal.vue:154 +#: src/views/cert/CertView.vue:513 src/views/cert/CreateCertModal.vue:154 msgid "Alias record, e.g. _acme-challenge.delegated.com" msgstr "別名記錄,例如 _acme-challenge.delegated.com" -#: src/views/cert/CertView.vue:528 -#: src/views/cert/UploadCertModal.vue:50 -#: src/views/website/EditModal.vue:1706 +#: src/views/cert/CertView.vue:528 src/views/cert/UploadCertModal.vue:50 +#: src/views/website/EditModal.vue:1716 msgid "Enter the content of the PEM certificate file" msgstr "輸入 PEM 證書文件的內容" -#: src/views/cert/CertView.vue:540 -#: src/views/cert/UploadCertModal.vue:58 -#: src/views/website/EditModal.vue:1716 +#: src/views/cert/CertView.vue:540 src/views/cert/UploadCertModal.vue:58 +#: src/views/website/EditModal.vue:1726 msgid "Enter the content of the KEY private key file" msgstr "輸入 KEY 私鑰文件的內容" @@ -5373,7 +5168,9 @@ msgid "Deployment Script" msgstr "部署腳本" #: src/views/cert/CertView.vue:553 -msgid "The {cert} and {key} in the script will be replaced with the certificate and private key content" +msgid "" +"The {cert} and {key} in the script will be replaced with the certificate and " +"private key content" msgstr "腳本中的 {cert} 和 {key} 將被替換為證書和私鑰內容" #: src/views/cert/CertView.vue:575 @@ -5392,22 +5189,24 @@ msgstr "啟用 HTTPS" msgid "View Certificate" msgstr "查看證書" -#: src/views/cert/CreateAccountModal.vue:68 -#: src/views/cert/IndexView.vue:110 +#: src/views/cert/CreateAccountModal.vue:68 src/views/cert/IndexView.vue:110 msgid "Create Account" msgstr "創建賬戶" -#: src/views/cert/CreateCertModal.vue:87 -#: src/views/cert/IndexView.vue:107 +#: src/views/cert/CreateCertModal.vue:87 src/views/cert/IndexView.vue:107 msgid "Create Certificate" msgstr "建立憑證" #: src/views/cert/CreateCertModal.vue:96 -msgid "You can automatically issue and deploy certificates by selecting either Website or DNS, or you can manually enter domain names and set up DNS resolution to issue certificates" -msgstr "您可以通過選擇網站或 DNS 來自動頒發和部署憑證,或者手動輸入域名並設置 DNS 解析以頒發憑證" +msgid "" +"You can automatically issue and deploy certificates by selecting either " +"Website or DNS, or you can manually enter domain names and set up DNS " +"resolution to issue certificates" +msgstr "" +"您可以通過選擇網站或 DNS 來自動頒發和部署憑證,或者手動輸入域名並設置 DNS 解" +"析以頒發憑證" -#: src/views/cert/CreateDnsModal.vue:56 -#: src/views/cert/IndexView.vue:113 +#: src/views/cert/CreateDnsModal.vue:56 src/views/cert/IndexView.vue:113 msgid "Create DNS" msgstr "創建 DNS" @@ -5419,108 +5218,87 @@ msgstr "備註名稱" msgid "Enter comment name" msgstr "輸入備註名稱" -#: src/views/cert/CreateDnsModal.vue:74 -#: src/views/cert/DnsView.vue:199 +#: src/views/cert/CreateDnsModal.vue:74 src/views/cert/DnsView.vue:199 msgid "Select DNS" msgstr "選擇 DNS" -#: src/views/cert/CreateDnsModal.vue:83 -#: src/views/cert/DnsView.vue:208 +#: src/views/cert/CreateDnsModal.vue:83 src/views/cert/DnsView.vue:208 msgid "Enter Aliyun Access Key" msgstr "輸入阿里雲 Access Key" -#: src/views/cert/CreateDnsModal.vue:90 -#: src/views/cert/DnsView.vue:215 +#: src/views/cert/CreateDnsModal.vue:90 src/views/cert/DnsView.vue:215 msgid "Enter Aliyun Secret Key" msgstr "輸入阿里雲 Secret Key" -#: src/views/cert/CreateDnsModal.vue:97 -#: src/views/cert/DnsView.vue:222 +#: src/views/cert/CreateDnsModal.vue:97 src/views/cert/DnsView.vue:222 msgid "Enter Tencent Cloud SecretId" msgstr "輸入騰訊雲 SecretId" -#: src/views/cert/CreateDnsModal.vue:104 -#: src/views/cert/DnsView.vue:229 +#: src/views/cert/CreateDnsModal.vue:104 src/views/cert/DnsView.vue:229 msgid "Enter Tencent Cloud SecretKey" msgstr "輸入騰訊雲 SecretKey" -#: src/views/cert/CreateDnsModal.vue:111 -#: src/views/cert/DnsView.vue:236 +#: src/views/cert/CreateDnsModal.vue:111 src/views/cert/DnsView.vue:236 msgid "Enter Huawei Cloud AccessKeyId" msgstr "輸入華為雲 AccessKeyId" -#: src/views/cert/CreateDnsModal.vue:118 -#: src/views/cert/DnsView.vue:243 +#: src/views/cert/CreateDnsModal.vue:118 src/views/cert/DnsView.vue:243 msgid "Enter Huawei Cloud SecretAccessKey" msgstr "輸入華為雲 SecretAccessKey" -#: src/views/cert/CreateDnsModal.vue:125 -#: src/views/cert/DnsView.vue:250 +#: src/views/cert/CreateDnsModal.vue:125 src/views/cert/DnsView.vue:250 msgid "Enter West.cn Username" msgstr "輸入西部數碼用戶名" -#: src/views/cert/CreateDnsModal.vue:132 -#: src/views/cert/DnsView.vue:257 +#: src/views/cert/CreateDnsModal.vue:132 src/views/cert/DnsView.vue:257 msgid "Enter West.cn API Password" msgstr "輸入西部數碼 API 密碼" -#: src/views/cert/CreateDnsModal.vue:139 -#: src/views/cert/DnsView.vue:264 +#: src/views/cert/CreateDnsModal.vue:139 src/views/cert/DnsView.vue:264 msgid "Enter Cloudflare API Key" msgstr "輸入 Cloudflare API 金鑰" -#: src/views/cert/CreateDnsModal.vue:146 -#: src/views/cert/DnsView.vue:271 +#: src/views/cert/CreateDnsModal.vue:146 src/views/cert/DnsView.vue:271 msgid "Enter G-Core API Key" msgstr "輸入 G-Core API 金鑰" -#: src/views/cert/CreateDnsModal.vue:153 -#: src/views/cert/DnsView.vue:278 +#: src/views/cert/CreateDnsModal.vue:153 src/views/cert/DnsView.vue:278 msgid "Enter Porkbun API Key" msgstr "輸入 Porkbun API 金鑰" -#: src/views/cert/CreateDnsModal.vue:160 -#: src/views/cert/DnsView.vue:285 +#: src/views/cert/CreateDnsModal.vue:160 src/views/cert/DnsView.vue:285 msgid "Enter Porkbun Secret Key" msgstr "輸入 Porkbun 密鑰" -#: src/views/cert/CreateDnsModal.vue:167 -#: src/views/cert/DnsView.vue:292 +#: src/views/cert/CreateDnsModal.vue:167 src/views/cert/DnsView.vue:292 msgid "Enter NameSilo API Token" msgstr "輸入 NameSilo API 令牌" -#: src/views/cert/CreateDnsModal.vue:174 -#: src/views/cert/DnsView.vue:299 +#: src/views/cert/CreateDnsModal.vue:174 src/views/cert/DnsView.vue:299 msgid "Enter ClouDNS Auth ID (use Sub Auth ID by adding sub-prefix)" msgstr "輸入 ClouDNS 認證 ID(使用子認證 ID 時添加 sub- 前綴)" -#: src/views/cert/CreateDnsModal.vue:181 -#: src/views/cert/DnsView.vue:306 +#: src/views/cert/CreateDnsModal.vue:181 src/views/cert/DnsView.vue:306 msgid "Enter ClouDNS Auth Password" msgstr "輸入 ClouDNS 認證密碼" -#: src/views/cert/CreateDnsModal.vue:184 -#: src/views/cert/DnsView.vue:309 +#: src/views/cert/CreateDnsModal.vue:184 src/views/cert/DnsView.vue:309 msgid "DNS Server" msgstr "DNS 伺服器" -#: src/views/cert/CreateDnsModal.vue:188 -#: src/views/cert/DnsView.vue:313 +#: src/views/cert/CreateDnsModal.vue:188 src/views/cert/DnsView.vue:313 msgid "DNS server for propagation check, e.g. 8.8.8.8" msgstr "用於生效檢查的 DNS 伺服器,例如 8.8.8.8" -#: src/views/cert/CreateDnsModal.vue:191 -#: src/views/cert/DnsView.vue:316 +#: src/views/cert/CreateDnsModal.vue:191 src/views/cert/DnsView.vue:316 msgid "Skip DNS Verification" msgstr "跳過 DNS 驗證" -#: src/views/cert/CreateDnsModal.vue:194 -#: src/views/cert/DnsView.vue:319 +#: src/views/cert/CreateDnsModal.vue:194 src/views/cert/DnsView.vue:319 msgid "For intranet environments, will wait 60s instead of polling DNS" msgstr "在內網環境中,將等待 60 秒而不是輪詢 DNS" -#: src/views/cert/DnsView.vue:36 -#: src/views/cert/DnsView.vue:189 +#: src/views/cert/DnsView.vue:36 src/views/cert/DnsView.vue:189 msgid "Note Name" msgstr "備註名稱" @@ -5536,8 +5314,7 @@ msgstr "修改 DNS" msgid "Enter note name" msgstr "輸入備註名稱" -#: src/views/cert/IndexView.vue:104 -#: src/views/cert/UploadCertModal.vue:38 +#: src/views/cert/IndexView.vue:104 src/views/cert/UploadCertModal.vue:38 msgid "Upload Certificate" msgstr "上傳證書" @@ -5549,21 +5326,17 @@ msgstr "自動" msgid "Self-signed" msgstr "自簽名" -#: src/views/cert/ObtainModal.vue:67 -#: src/views/cert/ObtainModal.vue:167 +#: src/views/cert/ObtainModal.vue:67 src/views/cert/ObtainModal.vue:167 msgid "Renewal successful" msgstr "續期成功" -#: src/views/cert/ObtainModal.vue:68 -#: src/views/cert/ObtainModal.vue:110 +#: src/views/cert/ObtainModal.vue:68 src/views/cert/ObtainModal.vue:110 #: src/views/cert/ObtainModal.vue:167 msgid "Issuance successful" msgstr "簽發成功" -#: src/views/cert/ObtainModal.vue:84 -#: src/views/cert/ObtainModal.vue:90 -#: src/views/home/UpdateView.vue:96 -#: src/views/home/UpdateView.vue:101 +#: src/views/cert/ObtainModal.vue:84 src/views/cert/ObtainModal.vue:90 +#: src/views/home/UpdateView.vue:96 src/views/home/UpdateView.vue:101 msgid "WebSocket connection failed" msgstr "WebSocket 連線失敗" @@ -5579,15 +5352,11 @@ msgstr "簽發證書" msgid "Issuance Mode" msgstr "簽發模式" -#: src/views/container/ComposeView.vue:93 -#: src/views/container/ImageView.vue:77 +#: src/views/container/ComposeView.vue:93 src/views/container/ImageView.vue:77 #: src/views/container/NetworkView.vue:103 -#: src/views/container/VolumeView.vue:57 -#: src/views/setting/PasskeyModal.vue:33 -#: src/views/setting/SettingUser.vue:79 -#: src/views/setting/TokenModal.vue:39 -#: src/views/task/CronView.vue:100 -#: src/views/task/TaskView.vue:49 +#: src/views/container/VolumeView.vue:57 src/views/setting/PasskeyModal.vue:33 +#: src/views/setting/SettingUser.vue:79 src/views/setting/TokenModal.vue:39 +#: src/views/task/CronView.vue:100 src/views/task/TaskView.vue:49 #: src/views/toolbox/WebHookView.vue:125 msgid "Creation Time" msgstr "創建時間" @@ -5605,8 +5374,8 @@ msgid "Are you sure you want to stop compose %{ name }?" msgstr "您確定要停止編排 %{ name } 嗎?" #: src/views/container/ComposeView.vue:184 -#: src/views/container/ContainerView.vue:276 -#: src/views/container/ContainerView.vue:342 +#: src/views/container/ContainerView.vue:303 +#: src/views/container/ContainerView.vue:369 msgid "Stop successful" msgstr "停止成功" @@ -5616,8 +5385,8 @@ msgstr "您確定要刪除編排 %{ name } 嗎?" #: src/views/container/ComposeView.vue:205 #: src/views/container/ComposeView.vue:268 -#: src/views/container/ContainerView.vue:311 -#: src/views/container/ContainerView.vue:369 +#: src/views/container/ContainerView.vue:338 +#: src/views/container/ContainerView.vue:396 #: src/views/container/ImageView.vue:122 #: src/views/container/NetworkView.vue:149 #: src/views/container/VolumeView.vue:102 @@ -5634,8 +5403,7 @@ msgid "Are you sure you want to delete the selected composes?" msgstr "您確定要刪除所選的編排嗎?" #: src/views/container/ComposeView.vue:328 -#: src/views/container/ComposeView.vue:354 -#: src/views/container/IndexView.vue:23 +#: src/views/container/ComposeView.vue:354 src/views/container/IndexView.vue:23 msgid "Compose" msgstr "編排" @@ -5643,337 +5411,431 @@ msgstr "編排" msgid "Edit Compose" msgstr "編輯編排" -#: src/views/container/ContainerCreate.vue:54 +#: src/views/container/ContainerCreate.vue:58 msgid "Always" msgstr "總是" -#: src/views/container/ContainerCreate.vue:55 +#: src/views/container/ContainerCreate.vue:59 msgid "On failure (default 5 retries)" msgstr "失敗時(預設重試 5 次)" -#: src/views/container/ContainerCreate.vue:56 +#: src/views/container/ContainerCreate.vue:60 msgid "Unless stopped" msgstr "除非停止" -#: src/views/container/ContainerCreate.vue:65 +#: src/views/container/ContainerCreate.vue:69 +#: src/views/container/ContainerInfoModal.vue:168 msgid "Read-Write" msgstr "讀寫" -#: src/views/container/ContainerCreate.vue:66 +#: src/views/container/ContainerCreate.vue:70 +#: src/views/container/ContainerInfoModal.vue:168 msgid "Read-Only" msgstr "唯讀" -#: src/views/container/ContainerCreate.vue:125 +#: src/views/container/ContainerCreate.vue:135 #: src/views/container/ImageView.vue:167 msgid "Please enter image name" msgstr "請輸入鏡像名" -#: src/views/container/ContainerCreate.vue:182 -#: src/views/container/ContainerView.vue:553 +#: src/views/container/ContainerCreate.vue:143 +msgid "" +"Updating will remove the current container and recreate it with the new " +"configuration. Data not stored in mounted volumes will be lost. Continue?" +msgstr "" + +#: src/views/container/ContainerCreate.vue:146 src/views/file/ListView.vue:286 +#: src/views/file/UploadModal.vue:506 src/views/file/UploadModal.vue:641 +#: src/views/toolbox/MigrationView.vue:207 +msgid "Continue" +msgstr "繼續" + +#: src/views/container/ContainerCreate.vue:283 +#, fuzzy +msgid "Edit Container" +msgstr "容器" + +#: src/views/container/ContainerCreate.vue:283 +#: src/views/container/ContainerView.vue:580 msgid "Create Container" msgstr "創建容器" -#: src/views/container/ContainerCreate.vue:195 -#: src/views/container/ContainerView.vue:46 +#: src/views/container/ContainerCreate.vue:296 +#: src/views/container/ContainerInfoModal.vue:99 +#: src/views/container/ContainerView.vue:51 msgid "Container Name" msgstr "容器名稱" -#: src/views/container/ContainerCreate.vue:200 +#: src/views/container/ContainerCreate.vue:301 msgid "Optional, auto-generated if empty" msgstr "可選,如果為空則自動生成" -#: src/views/container/ContainerCreate.vue:204 -#: src/views/container/ContainerView.vue:73 +#: src/views/container/ContainerCreate.vue:305 +#: src/views/container/ContainerInfoModal.vue:105 +#: src/views/container/ContainerView.vue:78 #: src/views/container/ImageView.vue:60 msgid "Image" msgstr "鏡像" -#: src/views/container/ContainerCreate.vue:209 +#: src/views/container/ContainerCreate.vue:310 msgid "e.g., nginx, mysql:8.4, your_username/your_image:tag" msgstr "例如 nginx,mysql:8.4,your_username/your_image:tag" -#: src/views/container/ContainerCreate.vue:217 +#: src/views/container/ContainerCreate.vue:318 msgid "Select network" msgstr "選擇網絡" -#: src/views/container/ContainerCreate.vue:221 +#: src/views/container/ContainerCreate.vue:322 +#: src/views/container/ContainerInfoModal.vue:119 #: src/views/project/EditModal.vue:298 msgid "Restart Policy" msgstr "重啟策略" -#: src/views/container/ContainerCreate.vue:225 +#: src/views/container/ContainerCreate.vue:326 msgid "Select restart policy" msgstr "選擇重啟策略" -#: src/views/container/ContainerCreate.vue:229 +#: src/views/container/ContainerCreate.vue:330 msgid "Container Options" msgstr "容器選項" -#: src/views/container/ContainerCreate.vue:233 +#: src/views/container/ContainerCreate.vue:334 msgid "TTY (-t)" msgstr "TTY (-t)" -#: src/views/container/ContainerCreate.vue:238 +#: src/views/container/ContainerCreate.vue:339 msgid "STDIN (-i)" msgstr "STDIN (-i)" -#: src/views/container/ContainerCreate.vue:243 +#: src/views/container/ContainerCreate.vue:344 msgid "Auto Remove" msgstr "自動移除" -#: src/views/container/ContainerCreate.vue:248 +#: src/views/container/ContainerCreate.vue:349 +#: src/views/container/ContainerInfoModal.vue:122 msgid "Privileged" msgstr "特權模式" -#: src/views/container/ContainerCreate.vue:257 -#: src/views/container/ContainerCreate.vue:268 +#: src/views/container/ContainerCreate.vue:358 +#: src/views/container/ContainerCreate.vue:369 msgid "Port Mapping" msgstr "端口映射" -#: src/views/container/ContainerCreate.vue:259 +#: src/views/container/ContainerCreate.vue:360 msgid "Port Mode" msgstr "端口模式" -#: src/views/container/ContainerCreate.vue:261 +#: src/views/container/ContainerCreate.vue:362 msgid "Map Ports" msgstr "映射端口" -#: src/views/container/ContainerCreate.vue:262 +#: src/views/container/ContainerCreate.vue:363 msgid "Expose All" msgstr "全部暴露" -#: src/views/container/ContainerCreate.vue:280 +#: src/views/container/ContainerCreate.vue:381 msgid "IP (optional)" msgstr "IP(可選)" -#: src/views/container/ContainerCreate.vue:289 +#: src/views/container/ContainerCreate.vue:390 msgid "Host Start" msgstr "主機起始" -#: src/views/container/ContainerCreate.vue:298 +#: src/views/container/ContainerCreate.vue:399 msgid "Host End" msgstr "主機結束" -#: src/views/container/ContainerCreate.vue:307 +#: src/views/container/ContainerCreate.vue:408 msgid "Container Start" msgstr "容器起始" -#: src/views/container/ContainerCreate.vue:316 +#: src/views/container/ContainerCreate.vue:417 msgid "Container End" msgstr "容器結束" -#: src/views/container/ContainerCreate.vue:331 -msgid "All exposed ports in the image will be automatically mapped to random host ports." +#: src/views/container/ContainerCreate.vue:432 +msgid "" +"All exposed ports in the image will be automatically mapped to random host " +"ports." msgstr "鏡像中的所有暴露端口將自動映射到隨機主機端口。" -#: src/views/container/ContainerCreate.vue:340 +#: src/views/container/ContainerCreate.vue:441 #: src/views/container/IndexView.vue:26 msgid "Volumes" msgstr "卷" -#: src/views/container/ContainerCreate.vue:342 +#: src/views/container/ContainerCreate.vue:443 msgid "Volume Mounts" msgstr "卷掛載" -#: src/views/container/ContainerCreate.vue:352 +#: src/views/container/ContainerCreate.vue:453 msgid "Host path" msgstr "主機路徑" -#: src/views/container/ContainerCreate.vue:358 +#: src/views/container/ContainerCreate.vue:459 msgid "Container path" msgstr "容器路徑" -#: src/views/container/ContainerCreate.vue:369 -msgid "Mount host directories or volumes into the container. Use absolute paths for host directories." +#: src/views/container/ContainerCreate.vue:470 +msgid "" +"Mount host directories or volumes into the container. Use absolute paths for " +"host directories." msgstr "將主機目錄或卷掛載到容器中。主機目錄需使用絕對路徑。" -#: src/views/container/ContainerCreate.vue:378 +#: src/views/container/ContainerCreate.vue:479 #: src/views/project/EditModal.vue:458 msgid "Resource Limits" msgstr "資源限制" -#: src/views/container/ContainerCreate.vue:382 -msgid "Set resource limits to prevent the container from consuming too many system resources. Set to 0 for no limit." +#: src/views/container/ContainerCreate.vue:483 +msgid "" +"Set resource limits to prevent the container from consuming too many system " +"resources. Set to 0 for no limit." msgstr "設置資源限制以防止容器消耗過多系統資源。設置為 0 表示無限制。" -#: src/views/container/ContainerCreate.vue:390 +#: src/views/container/ContainerCreate.vue:491 msgid "Memory (MB)" msgstr "內存(MB)" -#: src/views/container/ContainerCreate.vue:395 -#: src/views/container/ContainerCreate.vue:407 +#: src/views/container/ContainerCreate.vue:496 +#: src/views/container/ContainerCreate.vue:508 msgid "0 = no limit" msgstr "0 = 無限制" -#: src/views/container/ContainerCreate.vue:400 -#: src/views/container/ContainerCreate.vue:429 +#: src/views/container/ContainerCreate.vue:501 +#: src/views/container/ContainerCreate.vue:530 #: src/views/toolbox/PanelView.vue:113 msgid "CPU Cores" msgstr "CPU 核心數" -#: src/views/container/ContainerCreate.vue:412 -#: src/views/container/ContainerCreate.vue:436 +#: src/views/container/ContainerCreate.vue:513 +#: src/views/container/ContainerCreate.vue:537 msgid "CPU Shares" msgstr "CPU 份額" -#: src/views/container/ContainerCreate.vue:424 +#: src/views/container/ContainerCreate.vue:525 msgid "Resource Limit Description" msgstr "資源限制描述" -#: src/views/container/ContainerCreate.vue:427 +#: src/views/container/ContainerCreate.vue:528 msgid "Maximum memory the container can use, in MB. 0 means no limit." msgstr "容器可以使用的最大內存,單位為 MB。0 表示無限制。" -#: src/views/container/ContainerCreate.vue:431 -msgid "Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 cores." +#: src/views/container/ContainerCreate.vue:532 +msgid "" +"Number of CPU cores the container can use. 0.5 means half a core, 2 means 2 " +"cores." msgstr "容器可以使用的 CPU 核心數。0.5 意味著半個核心,2 意味著 2 個核心。" -#: src/views/container/ContainerCreate.vue:438 -msgid "Relative CPU weight. Default is 1024. Higher values get more CPU time when competing." -msgstr "相對 CPU 權重。默認值為 1024。當競爭時,更高的值會獲得更多的 CPU 時間。" +#: src/views/container/ContainerCreate.vue:539 +msgid "" +"Relative CPU weight. Default is 1024. Higher values get more CPU time when " +"competing." +msgstr "" +"相對 CPU 權重。默認值為 1024。當競爭時,更高的值會獲得更多的 CPU 時間。" -#: src/views/container/ContainerCreate.vue:450 -#: src/views/toolbox/MigrationView.vue:470 +#: src/views/container/ContainerCreate.vue:551 +#: src/views/toolbox/MigrationView.vue:492 msgid "Environment" msgstr "環境" -#: src/views/container/ContainerCreate.vue:462 +#: src/views/container/ContainerCreate.vue:563 #: src/views/project/EditModal.vue:390 msgid "Variable name" msgstr "變量名稱" -#: src/views/container/ContainerCreate.vue:468 +#: src/views/container/ContainerCreate.vue:569 #: src/views/project/EditModal.vue:396 msgid "Variable value" msgstr "變量值" -#: src/views/container/ContainerCreate.vue:476 +#: src/views/container/ContainerCreate.vue:577 msgid "Startup Commands" msgstr "啟動命令" -#: src/views/container/ContainerCreate.vue:478 -#: src/views/home/IndexView.vue:662 -#: src/views/home/IndexView.vue:763 -#: src/views/monitor/IndexView.vue:335 -#: src/views/monitor/IndexView.vue:347 +#: src/views/container/ContainerCreate.vue:579 +#: src/views/container/ContainerInfoModal.vue:139 +#: src/views/home/IndexView.vue:662 src/views/home/IndexView.vue:763 +#: src/views/monitor/IndexView.vue:335 src/views/monitor/IndexView.vue:347 msgid "Command" msgstr "命令" -#: src/views/container/ContainerCreate.vue:481 +#: src/views/container/ContainerCreate.vue:582 msgid "Command argument" msgstr "命令參數" -#: src/views/container/ContainerCreate.vue:485 +#: src/views/container/ContainerCreate.vue:586 msgid "Override the default CMD of the image" msgstr "覆蓋鏡像的默認 CMD" -#: src/views/container/ContainerCreate.vue:490 +#: src/views/container/ContainerCreate.vue:591 msgid "Entrypoint" msgstr "進入點" -#: src/views/container/ContainerCreate.vue:493 +#: src/views/container/ContainerCreate.vue:594 msgid "Entrypoint argument" msgstr "進入點參數" -#: src/views/container/ContainerCreate.vue:497 +#: src/views/container/ContainerCreate.vue:598 msgid "Override the default ENTRYPOINT of the image" msgstr "覆蓋鏡像的默認 ENTRYPOINT" -#: src/views/container/ContainerCreate.vue:502 +#: src/views/container/ContainerCreate.vue:603 +#: src/views/container/ContainerInfoModal.vue:192 #: src/views/container/NetworkView.vue:321 #: src/views/container/VolumeView.vue:215 msgid "Labels" msgstr "標籤" -#: src/views/container/ContainerCreate.vue:504 +#: src/views/container/ContainerCreate.vue:605 msgid "Container Labels" msgstr "容器標籤" -#: src/views/container/ContainerCreate.vue:514 +#: src/views/container/ContainerCreate.vue:615 msgid "Label name" msgstr "標籤名稱" -#: src/views/container/ContainerCreate.vue:520 +#: src/views/container/ContainerCreate.vue:621 msgid "Label value" msgstr "標籤值" -#: src/views/container/ContainerView.vue:80 +#: src/views/container/ContainerInfoModal.vue:86 +#, fuzzy +msgid "Container Info" +msgstr "容器結束" + +#: src/views/container/ContainerInfoModal.vue:96 +#: src/views/toolbox/disk/SmartView.vue:280 src/views/toolbox/PanelView.vue:98 +msgid "Basic Info" +msgstr "基本信息" + +#: src/views/container/ContainerInfoModal.vue:102 +#, fuzzy +msgid "Container ID" +msgstr "容器" + +#: src/views/container/ContainerInfoModal.vue:116 +#, fuzzy +msgid "Started At" +msgstr "開始" + +#: src/views/container/ContainerInfoModal.vue:133 +#: src/views/container/ContainerView.vue:85 msgid "Ports (Host->Container)" msgstr "端口(主機->容器)" -#: src/views/container/ContainerView.vue:173 -#: src/views/container/ContainerView.vue:575 +#: src/views/container/ContainerInfoModal.vue:145 +#, fuzzy +msgid "Mounts" +msgstr "掛載" + +#: src/views/container/ContainerInfoModal.vue:150 +msgid "Host Path / Volume" +msgstr "" + +#: src/views/container/ContainerInfoModal.vue:151 +#, fuzzy +msgid "Container Path" +msgstr "容器路徑" + +#: src/views/container/ContainerInfoModal.vue:152 +#, fuzzy +msgid "Mode" +msgstr "型號" + +#: src/views/container/ContainerInfoModal.vue:174 +#, fuzzy +msgid "No mounts" +msgstr "未掛載" + +#: src/views/container/ContainerInfoModal.vue:188 +#: src/views/toolbox/ProcessView.vue:453 +msgid "No environment variables" +msgstr "無環境變數" + +#: src/views/container/ContainerInfoModal.vue:207 +#: src/views/toolbox/WebHookView.vue:73 src/views/toolbox/WebHookView.vue:339 +#: src/views/toolbox/WebHookView.vue:380 +msgid "Raw Output" +msgstr "原始輸出" + +#: src/views/container/ContainerView.vue:130 +#, fuzzy +msgid "Info" +msgstr "PHPInfo" + +#: src/views/container/ContainerView.vue:196 +#: src/views/container/ContainerView.vue:602 msgid "Force Stop" msgstr "強制停止" -#: src/views/container/ContainerView.vue:178 -#: src/views/container/ContainerView.vue:578 +#: src/views/container/ContainerView.vue:201 +#: src/views/container/ContainerView.vue:605 msgid "Pause" msgstr "暫停" -#: src/views/container/ContainerView.vue:183 -#: src/views/container/ContainerView.vue:581 +#: src/views/container/ContainerView.vue:206 +#: src/views/container/ContainerView.vue:608 msgid "Resume" msgstr "恢復" -#: src/views/container/ContainerView.vue:227 -#: src/views/file/ListView.vue:1567 +#: src/views/container/ContainerView.vue:254 src/views/file/ListView.vue:1631 msgid "More" msgstr "更多" -#: src/views/container/ContainerView.vue:259 +#: src/views/container/ContainerView.vue:286 msgid "Rename successful" msgstr "重命名成功" -#: src/views/container/ContainerView.vue:269 -#: src/views/container/ContainerView.vue:333 +#: src/views/container/ContainerView.vue:296 +#: src/views/container/ContainerView.vue:360 msgid "Start successful" msgstr "啟動成功" -#: src/views/container/ContainerView.vue:283 -#: src/views/container/ContainerView.vue:351 +#: src/views/container/ContainerView.vue:310 +#: src/views/container/ContainerView.vue:378 msgid "Restart successful" msgstr "重啟成功" -#: src/views/container/ContainerView.vue:290 -#: src/views/container/ContainerView.vue:360 +#: src/views/container/ContainerView.vue:317 +#: src/views/container/ContainerView.vue:387 msgid "Force stop successful" msgstr "強制停止成功" -#: src/views/container/ContainerView.vue:297 -#: src/views/container/ContainerView.vue:378 +#: src/views/container/ContainerView.vue:324 +#: src/views/container/ContainerView.vue:405 msgid "Pause successful" msgstr "暫停成功" -#: src/views/container/ContainerView.vue:304 -#: src/views/container/ContainerView.vue:387 +#: src/views/container/ContainerView.vue:331 +#: src/views/container/ContainerView.vue:414 msgid "Resume successful" msgstr "恢復成功" -#: src/views/container/ContainerView.vue:320 +#: src/views/container/ContainerView.vue:347 #: src/views/container/ImageView.vue:131 #: src/views/container/NetworkView.vue:158 #: src/views/container/VolumeView.vue:111 msgid "Cleanup successful" msgstr "清理成功" -#: src/views/container/ContainerView.vue:403 +#: src/views/container/ContainerView.vue:430 msgid "Terminal container not found" msgstr "未找到終端容器" -#: src/views/container/ContainerView.vue:486 +#: src/views/container/ContainerView.vue:513 msgid "Failed to connect to container terminal" msgstr "無法連接到容器終端" -#: src/views/container/ContainerView.vue:562 +#: src/views/container/ContainerView.vue:589 msgid "Cleanup Containers" msgstr "清理容器" -#: src/views/container/ContainerView.vue:620 +#: src/views/container/ContainerView.vue:647 msgid "New Name" msgstr "新名稱" -#: src/views/container/ContainerView.vue:625 +#: src/views/container/ContainerView.vue:652 msgid "Enter new name" msgstr "輸入新名稱" @@ -6005,12 +5867,9 @@ msgstr "拉取失敗" msgid "Container Count" msgstr "容器數量" -#: src/views/container/ImageView.vue:98 -#: src/views/container/NetworkView.vue:125 -#: src/views/container/VolumeView.vue:78 -#: src/views/firewall/ForwardView.vue:93 -#: src/views/firewall/IpRuleView.vue:135 -#: src/views/firewall/RuleView.vue:243 +#: src/views/container/ImageView.vue:98 src/views/container/NetworkView.vue:125 +#: src/views/container/VolumeView.vue:78 src/views/firewall/ForwardView.vue:93 +#: src/views/firewall/IpRuleView.vue:135 src/views/firewall/RuleView.vue:243 #: src/views/task/TaskView.vue:99 msgid "Are you sure you want to delete?" msgstr "您確定要刪除嗎?" @@ -6019,8 +5878,7 @@ msgstr "您確定要刪除嗎?" msgid "Pull successful" msgstr "拉取成功" -#: src/views/container/ImageView.vue:256 -#: src/views/container/ImageView.vue:302 +#: src/views/container/ImageView.vue:256 src/views/container/ImageView.vue:302 msgid "Pull Image" msgstr "拉取鏡像" @@ -6058,14 +5916,12 @@ msgstr "網絡" #: src/views/container/NetworkView.vue:55 #: src/views/container/NetworkView.vue:258 -#: src/views/container/VolumeView.vue:36 -#: src/views/container/VolumeView.vue:206 +#: src/views/container/VolumeView.vue:36 src/views/container/VolumeView.vue:206 msgid "Driver" msgstr "驅動程式" -#: src/views/container/NetworkView.vue:62 -#: src/views/container/VolumeView.vue:43 -#: src/views/website/EditModal.vue:2030 +#: src/views/container/NetworkView.vue:62 src/views/container/VolumeView.vue:43 +#: src/views/website/EditModal.vue:2040 msgid "Scope" msgstr "範圍" @@ -6144,10 +6000,8 @@ msgstr "選項名稱" msgid "Option Value" msgstr "選項值" -#: src/views/container/VolumeView.vue:50 -#: src/views/home/IndexView.vue:806 -#: src/views/toolbox/DiskView.vue:282 -#: src/views/toolbox/DiskView.vue:604 +#: src/views/container/VolumeView.vue:50 src/views/home/IndexView.vue:806 +#: src/views/toolbox/DiskView.vue:282 src/views/toolbox/DiskView.vue:604 msgid "Mount Point" msgstr "掛載點" @@ -6184,7 +6038,7 @@ msgid "Specific" msgstr "特定" #: src/views/database/CreateDatabaseModal.vue:78 -#: src/views/database/IndexView.vue:48 +#: src/views/database/IndexView.vue:146 msgid "Create Database" msgstr "創建數據庫" @@ -6232,7 +6086,7 @@ msgid "Select type" msgstr "選擇類型" #: src/views/database/CreateServerModal.vue:113 -#: src/views/database/UpdateServerModal.vue:70 +#: src/views/database/UpdateServerModal.vue:71 msgid "Enter database server name" msgstr "輸入數據庫服務器名稱" @@ -6249,38 +6103,38 @@ msgid "Select" msgstr "選擇" #: src/views/database/CreateServerModal.vue:148 -#: src/views/database/UpdateServerModal.vue:80 +#: src/views/database/UpdateServerModal.vue:81 msgid "Enter database server host" msgstr "輸入數據庫伺服器主機" #: src/views/database/CreateServerModal.vue:159 -#: src/views/database/UpdateServerModal.vue:91 +#: src/views/database/UpdateServerModal.vue:92 msgid "Enter database server port" msgstr "輸入數據庫伺服器端口" #: src/views/database/CreateServerModal.vue:173 -#: src/views/database/UpdateServerModal.vue:101 +#: src/views/database/UpdateServerModal.vue:102 msgid "Enter database server username" msgstr "輸入數據庫伺服器用戶名" #: src/views/database/CreateServerModal.vue:186 -#: src/views/database/UpdateServerModal.vue:110 +#: src/views/database/UpdateServerModal.vue:111 msgid "Enter database server password" msgstr "輸入數據庫伺服器密碼" #: src/views/database/CreateServerModal.vue:195 -#: src/views/database/UpdateServerModal.vue:118 +#: src/views/database/UpdateServerModal.vue:119 msgid "Enter database server comment" msgstr "輸入數據庫伺服器備註" #: src/views/database/CreateUserModal.vue:100 #: src/views/database/UpdateUserModal.vue:59 -msgid "If the privilege databases does not exist, it will be created automatically." +msgid "" +"If the privilege databases does not exist, it will be created automatically." msgstr "如果特權數據庫不存在,將會自動創建。" #: src/views/database/CreateUserModal.vue:154 -#: src/views/database/UpdateUserModal.vue:72 -#: src/views/database/UserList.vue:81 +#: src/views/database/UpdateUserModal.vue:72 src/views/database/UserList.vue:81 msgid "Privileges" msgstr "權限" @@ -6320,7 +6174,7 @@ msgid "Are you sure you want to delete this index?" msgstr "您確定要刪除此索引嗎?" #: src/views/database/ElasticsearchDataView.vue:162 -#: src/views/website/EditModal.vue:1784 +#: src/views/website/EditModal.vue:1794 msgid "Source" msgstr "來源" @@ -6430,8 +6284,7 @@ msgstr "新鍵名" msgid "Enter new key name" msgstr "輸入新鍵名稱" -#: src/views/database/RedisKeyModal.vue:90 -#: src/views/toolbox/SshView.vue:339 +#: src/views/database/RedisKeyModal.vue:90 src/views/toolbox/SshView.vue:339 msgid "View Key" msgstr "查看密鑰" @@ -6461,13 +6314,11 @@ msgstr "輸入 JSON 值" msgid "Unsupported database type" msgstr "不支援的資料庫類型" -#: src/views/database/ServerList.vue:147 -#: src/views/database/UserList.vue:120 +#: src/views/database/ServerList.vue:147 src/views/database/UserList.vue:120 msgid "Valid" msgstr "有效" -#: src/views/database/ServerList.vue:147 -#: src/views/database/UserList.vue:120 +#: src/views/database/ServerList.vue:147 src/views/database/UserList.vue:120 msgid "Invalid" msgstr "無效" @@ -6476,11 +6327,12 @@ msgid "Confirm Sync" msgstr "確認同步" #: src/views/database/ServerList.vue:188 -msgid "Are you sure you want to synchronize database users (excluding password) to the panel?" +msgid "" +"Are you sure you want to synchronize database users (excluding password) to " +"the panel?" msgstr "您確定要將數據庫用戶(不包括密碼)同步到面板嗎?" -#: src/views/database/ServerList.vue:195 -#: src/views/toolbox/SystemView.vue:122 +#: src/views/database/ServerList.vue:195 src/views/toolbox/SystemView.vue:122 msgid "Synchronized successfully" msgstr "同步成功" @@ -6489,14 +6341,16 @@ msgid "Sync" msgstr "同步" #: src/views/database/ServerList.vue:234 -msgid "Built-in servers cannot be deleted. If you need to delete them, please uninstall the corresponding app" +msgid "" +"Built-in servers cannot be deleted. If you need to delete them, please " +"uninstall the corresponding app" msgstr "內置服務器無法刪除。如果需要刪除它們,請卸載相應的應用" #: src/views/database/ServerList.vue:241 msgid "Are you sure you want to delete the server?" msgstr "您確定要刪除該服務器嗎?" -#: src/views/database/UpdateServerModal.vue:57 +#: src/views/database/UpdateServerModal.vue:58 msgid "Modify Server" msgstr "修改服務器" @@ -6512,8 +6366,7 @@ msgstr "未保存" msgid "Are you sure you want to delete the user?" msgstr "您確定要刪除該用戶嗎?" -#: src/views/environment/DotnetView.vue:13 -#: src/views/environment/GoView.vue:46 +#: src/views/environment/DotnetView.vue:13 src/views/environment/GoView.vue:46 #: src/views/environment/JavaView.vue:13 #: src/views/environment/NodejsView.vue:49 #: src/views/environment/PHPView.vue:131 @@ -6521,8 +6374,7 @@ msgstr "您確定要刪除該用戶嗎?" msgid "Set successfully" msgstr "設置成功" -#: src/views/environment/DotnetView.vue:25 -#: src/views/environment/GoView.vue:64 +#: src/views/environment/DotnetView.vue:25 src/views/environment/GoView.vue:64 #: src/views/environment/JavaView.vue:25 #: src/views/environment/NodejsView.vue:67 #: src/views/environment/PHPView.vue:196 @@ -6531,8 +6383,11 @@ msgid "Set as CLI Default Version" msgstr "設置為 CLI 默認版本" #: src/views/environment/DotnetView.vue:30 -msgid ".NET is a free, open-source, cross-platform framework for building modern apps and powerful cloud services." -msgstr ".NET 是一個免費、開源、跨平台的框架,用於構建現代應用程式和強大的雲端服務。" +msgid "" +".NET is a free, open-source, cross-platform framework for building modern " +"apps and powerful cloud services." +msgstr "" +".NET 是一個免費、開源、跨平台的框架,用於構建現代應用程式和強大的雲端服務。" #: src/views/environment/GoView.vue:16 msgid "Official (proxy.golang.org)" @@ -6542,13 +6397,11 @@ msgstr "官方(proxy.golang.org)" msgid "China - Qiniu (goproxy.cn)" msgstr "中國 - 七牛雲(goproxy.cn)" -#: src/views/environment/GoView.vue:19 -#: src/views/environment/PythonView.vue:18 +#: src/views/environment/GoView.vue:19 src/views/environment/PythonView.vue:18 msgid "China - Alibaba (mirrors.aliyun.com)" msgstr "中國 - 阿里巴巴(mirrors.aliyun.com)" -#: src/views/environment/GoView.vue:23 -#: src/views/environment/NodejsView.vue:22 +#: src/views/environment/GoView.vue:23 src/views/environment/NodejsView.vue:22 #: src/views/environment/PythonView.vue:22 msgid "China - Tencent (mirrors.tencent.com)" msgstr "中國 - 騰訊(mirrors.tencent.com)" @@ -6558,7 +6411,9 @@ msgid "Proxy Settings" msgstr "代理設置" #: src/views/environment/GoView.vue:74 -msgid "GOPROXY is used to configure the Go module proxy. Using a domestic mirror can speed up dependency downloads." +msgid "" +"GOPROXY is used to configure the Go module proxy. Using a domestic mirror " +"can speed up dependency downloads." msgstr "GOPROXY 用於配置 Go 模塊代理。使用國內鏡像可以加快依賴項下載速度。" #: src/views/environment/GoView.vue:79 @@ -6570,8 +6425,12 @@ msgid "Select or enter proxy address" msgstr "選擇或輸入代理地址" #: src/views/environment/JavaView.vue:30 -msgid "Amazon Corretto is a no-cost, multiplatform, production-ready distribution of the Open Java Development Kit (OpenJDK)." -msgstr "Amazon Corretto 是一個無成本、多平台、生產就緒的 Open Java Development Kit(OpenJDK)發行版。" +msgid "" +"Amazon Corretto is a no-cost, multiplatform, production-ready distribution " +"of the Open Java Development Kit (OpenJDK)." +msgstr "" +"Amazon Corretto 是一個無成本、多平台、生產就緒的 Open Java Development Kit" +"(OpenJDK)發行版。" #: src/views/environment/NodejsView.vue:16 msgid "Official (registry.npmjs.org)" @@ -6590,7 +6449,9 @@ msgid "Registry Settings" msgstr "註冊表設置" #: src/views/environment/NodejsView.vue:77 -msgid "npm registry is used to configure the npm package source. Using a domestic mirror can speed up package downloads." +msgid "" +"npm registry is used to configure the npm package source. Using a domestic " +"mirror can speed up package downloads." msgstr "npm 註冊表用於配置 npm 包源。使用國內鏡像可以加速包下載。" #: src/views/environment/NodejsView.vue:82 @@ -6635,8 +6496,12 @@ msgid "Disabled Functions" msgstr "禁用函數" #: src/views/environment/PhpConfigTuneView.vue:283 -msgid "Enter the PHP functions to disable, separated by commas. Common dangerous functions include: exec, shell_exec, system, passthru, proc_open, popen, etc." -msgstr "輸入要禁用的 PHP 函數,用逗號分隔。常見的危險函數包括:exec、shell_exec、system、passthru、proc_open、popen 等。" +msgid "" +"Enter the PHP functions to disable, separated by commas. Common dangerous " +"functions include: exec, shell_exec, system, passthru, proc_open, popen, etc." +msgstr "" +"輸入要禁用的 PHP 函數,用逗號分隔。常見的危險函數包括:exec、shell_exec、" +"system、passthru、proc_open、popen 等。" #: src/views/environment/PhpConfigTuneView.vue:294 msgid "e.g. exec,shell_exec,system,passthru" @@ -6647,7 +6512,9 @@ msgid "Upload Limits" msgstr "上傳限制" #: src/views/environment/PhpConfigTuneView.vue:314 -msgid "Adjust PHP file upload limits. post_max_size should be greater than upload_max_filesize." +msgid "" +"Adjust PHP file upload limits. post_max_size should be greater than " +"upload_max_filesize." msgstr "調整 PHP 文件上傳限制。post_max_size 應大於 upload_max_filesize。" #: src/views/environment/PhpConfigTuneView.vue:320 @@ -6675,7 +6542,8 @@ msgid "Timeout Limits" msgstr "超時限制" #: src/views/environment/PhpConfigTuneView.vue:385 -msgid "Adjust PHP script timeout limits. Values are in seconds, -1 means no limit." +msgid "" +"Adjust PHP script timeout limits. Values are in seconds, -1 means no limit." msgstr "調整 PHP 腳本超時限制。值以秒為單位,-1 表示無限制。" #: src/views/environment/PhpConfigTuneView.vue:389 @@ -6700,7 +6568,8 @@ msgid "e.g. 1000" msgstr "例如 1000" #: src/views/environment/PhpConfigTuneView.vue:430 -msgid "Adjust PHP-FPM process manager settings. These settings are in php-fpm.conf." +msgid "" +"Adjust PHP-FPM process manager settings. These settings are in php-fpm.conf." msgstr "調整 PHP-FPM 進程管理器設置。這些設置在 php-fpm.conf 中。" #: src/views/environment/PhpConfigTuneView.vue:434 @@ -6728,8 +6597,12 @@ msgid "Max Spare Servers (pm.max_spare_servers)" msgstr "最大空閒服務器數(pm.max_spare_servers)" #: src/views/environment/PhpConfigTuneView.vue:495 -msgid "Adjust PHP session settings. When using redis or memcached, make sure the corresponding extension is installed and the service is running." -msgstr "調整 PHP 會話設置。使用 redis 或 memcached 時,請確保已安裝相應擴展且服務正在運行。" +msgid "" +"Adjust PHP session settings. When using redis or memcached, make sure the " +"corresponding extension is installed and the service is running." +msgstr "" +"調整 PHP 會話設置。使用 redis 或 memcached 時,請確保已安裝相應擴展且服務正在" +"運行。" #: src/views/environment/PhpConfigTuneView.vue:501 msgid "Save Handler (session.save_handler)" @@ -6800,16 +6673,24 @@ msgid "View PHPInfo" msgstr "查看 PHPInfo" #: src/views/environment/PHPView.vue:227 -msgid "This modifies the PHP %{ version } main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 PHP %{ version } 的主配置文件。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the PHP %{ version } main configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 PHP %{ version } 的主配置文件。如果您不了解每個參數的含義,請不要隨" +"意修改!" #: src/views/environment/PHPView.vue:241 msgid "FPM Configuration" msgstr "FPM 配置" #: src/views/environment/PHPView.vue:245 -msgid "This modifies the PHP %{ version } FPM configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!" -msgstr "這將修改 PHP %{ version } 的 FPM 配置文件。如果您不了解每個參數的含義,請不要隨意修改!" +msgid "" +"This modifies the PHP %{ version } FPM configuration file. If you do not " +"understand the meaning of each parameter, please do not modify it randomly!" +msgstr "" +"這將修改 PHP %{ version } 的 FPM 配置文件。如果您不了解每個參數的含義,請不要" +"隨意修改!" #: src/views/environment/PHPView.vue:282 msgid "Slow Logs" @@ -6836,7 +6717,9 @@ msgid "Mirror Settings" msgstr "鏡像設置" #: src/views/environment/PythonView.vue:81 -msgid "pip mirror is used to configure the Python package source. Using a domestic mirror can speed up package downloads." +msgid "" +"pip mirror is used to configure the Python package source. Using a domestic " +"mirror can speed up package downloads." msgstr "pip 鏡像用於配置 Python 包源。使用國內鏡像可以加速包下載。" #: src/views/environment/PythonView.vue:86 @@ -6855,69 +6738,67 @@ msgstr "抱歉,您訪問的頁面不存在。" msgid "Back to Home" msgstr "返回首頁" -#: src/views/file/composables/usePaste.ts:14 +#: src/views/file/composables/useFileOps.ts:57 +msgid "Marked successfully, please navigate to the destination path to paste" +msgstr "標記成功,請導航到目標路徑進行粘貼" + +#: src/views/file/composables/usePaste.ts:15 msgid "Please mark the files/folders to copy or move first" msgstr "請先標記要複製或移動的文件/文件夾" -#: src/views/file/composables/usePaste.ts:28 +#: src/views/file/composables/usePaste.ts:29 msgid "Moved successfully" msgstr "移動成功" -#: src/views/file/composables/usePaste.ts:51 +#: src/views/file/composables/usePaste.ts:58 msgid "Please enter a new name" msgstr "請輸入新名稱" -#: src/views/file/composables/usePaste.ts:56 -#: src/views/file/composables/usePaste.ts:70 +#: src/views/file/composables/usePaste.ts:63 +#: src/views/file/composables/usePaste.ts:77 msgid "Name cannot be empty" msgstr "名稱不能為空" -#: src/views/file/composables/usePaste.ts:89 -#: src/views/file/composables/usePaste.ts:143 +#: src/views/file/composables/usePaste.ts:96 +#: src/views/file/composables/usePaste.ts:150 msgid "Canceled" msgstr "已取消" -#: src/views/file/composables/usePaste.ts:131 -#: src/views/file/ListView.vue:239 -#: src/views/file/ListView.vue:766 -#: src/views/file/ListView.vue:850 +#: src/views/file/composables/usePaste.ts:138 src/views/file/ListView.vue:281 +#: src/views/file/ListView.vue:818 src/views/file/ListView.vue:867 msgid "Warning" msgstr "警告" -#: src/views/file/composables/usePaste.ts:132 +#: src/views/file/composables/usePaste.ts:139 msgid "There are items with the same name %{ items } Do you want to overwrite?" msgstr "存在同名項目 %{ items } 是否要覆蓋?" -#: src/views/file/composables/usePaste.ts:168 -#: src/views/file/ListView.vue:768 -#: src/views/file/UploadModal.vue:752 -#: src/views/file/UploadModal.vue:784 +#: src/views/file/composables/usePaste.ts:175 src/views/file/ListView.vue:820 +#: src/views/file/UploadModal.vue:752 src/views/file/UploadModal.vue:784 msgid "Overwrite" msgstr "覆蓋" -#: src/views/file/CompressModal.vue:47 -msgid "Compress task created successfully, please check the task list for progress" +#: src/views/file/CompressModal.vue:52 +msgid "" +"Compress task created successfully, please check the task list for progress" msgstr "壓縮任務創建成功,請在任務列表中查看進度" -#: src/views/file/CompressModal.vue:70 -#: src/views/file/CompressModal.vue:103 -#: src/views/file/ListView.vue:309 -#: src/views/file/ListView.vue:345 -#: src/views/file/ListView.vue:953 -#: src/views/file/ListView.vue:1532 -#: src/views/file/ToolBar.vue:216 +#: src/views/file/CompressModal.vue:97 src/views/file/CompressModal.vue:116 +#: src/views/file/ListView.vue:351 src/views/file/ListView.vue:387 +#: src/views/file/ListView.vue:974 src/views/file/ListView.vue:1596 +#: src/views/file/ToolBar.vue:189 msgid "Compress" msgstr "壓縮" -#: src/views/file/CompressModal.vue:78 +#: src/views/file/CompressModal.vue:105 msgid "Files to compress" msgstr "要壓縮的檔案" -#: src/views/file/CompressModal.vue:81 +#: src/views/file/CompressModal.vue:108 msgid "Compress to" msgstr "壓縮到" -#: src/views/file/CompressModal.vue:84 +#: src/views/file/CompressModal.vue:111 msgid "Format" msgstr "格式" @@ -6925,128 +6806,141 @@ msgstr "格式" msgid "You have unsaved changes. Do you want to save them before closing?" msgstr "您有未儲存的更改,在關閉之前是否要儲存它們?" -#: src/views/file/EditModal.vue:105 +#: src/views/file/EditModal.vue:83 msgid "Failed to save files: %{ files }" msgstr "無法保存文件:%{ files }" -#: src/views/file/EditModal.vue:185 +#: src/views/file/EditModal.vue:141 msgid "File Editor" msgstr "文件編輯器" -#: src/views/file/ListView.vue:240 -msgid "%{ name } has immutable attribute. The panel will temporarily remove the immutable attribute, perform the operation, and then restore the immutable attribute. Do you want to continue?" -msgstr "%{ name } 具有不可變屬性。面板將暫時移除不可變屬性,執行操作,然後恢復不可變屬性。您要繼續嗎?" +#: src/views/file/IndexView.vue:242 +#, fuzzy +msgid "Drop files to upload" +msgstr "沒有文件可保存" -#: src/views/file/ListView.vue:244 -#: src/views/file/UploadModal.vue:506 -#: src/views/file/UploadModal.vue:641 -msgid "Continue" -msgstr "繼續" +#: src/views/file/ListView.vue:259 src/views/file/ListView.vue:399 +#: src/views/file/ListView.vue:992 +#, fuzzy +msgid "Add Protection" +msgstr "保護模式" -#: src/views/file/ListView.vue:297 -#: src/views/file/ListView.vue:315 -#: src/views/file/ListView.vue:359 -#: src/views/file/ToolBar.vue:211 +#: src/views/file/ListView.vue:259 src/views/file/ListView.vue:398 +#: src/views/file/ListView.vue:992 +#, fuzzy +msgid "Remove Protection" +msgstr "連接遠程伺服器" + +#: src/views/file/ListView.vue:261 +#, fuzzy +msgid "Add tamper protection for %{ name }?" +msgstr "編輯項目 - %{ name }" + +#: src/views/file/ListView.vue:262 +msgid "" +"Remove tamper protection for %{ name }? The matching rule or exclusions will " +"be adjusted accordingly." +msgstr "" + +#: src/views/file/ListView.vue:270 src/views/monitor/IndexView.vue:695 +#: src/views/monitor/IndexView.vue:704 +msgid "Operation successful" +msgstr "操作成功" + +#: src/views/file/ListView.vue:282 +msgid "" +"%{ name } has immutable attribute. The panel will temporarily remove the " +"immutable attribute, perform the operation, and then restore the immutable " +"attribute. Do you want to continue?" +msgstr "" +"%{ name } 具有不可變屬性。面板將暫時移除不可變屬性,執行操作,然後恢復不可變" +"屬性。您要繼續嗎?" + +#: src/views/file/ListView.vue:339 src/views/file/ListView.vue:357 +#: src/views/file/ListView.vue:408 src/views/file/ToolBar.vue:184 msgid "Paste" msgstr "貼上" -#: src/views/file/ListView.vue:308 -#: src/views/file/ListView.vue:342 -#: src/views/file/ListView.vue:951 -#: src/views/file/ToolBar.vue:215 +#: src/views/file/ListView.vue:350 src/views/file/ListView.vue:384 +#: src/views/file/ListView.vue:972 src/views/file/ToolBar.vue:188 msgid "Move" msgstr "移動" -#: src/views/file/ListView.vue:310 -#: src/views/file/ListView.vue:343 -#: src/views/file/ListView.vue:952 -#: src/views/file/ListView.vue:1350 -#: src/views/file/PermissionModal.vue:146 -#: src/views/file/PropertyModal.vue:42 -#: src/views/file/ToolBar.vue:217 +#: src/views/file/ListView.vue:352 src/views/file/ListView.vue:385 +#: src/views/file/ListView.vue:973 src/views/file/ListView.vue:1402 +#: src/views/file/PermissionModal.vue:146 src/views/file/PropertyModal.vue:42 +#: src/views/file/ToolBar.vue:190 msgid "Permission" msgstr "權限" -#: src/views/file/ListView.vue:327 -#: src/views/file/ListView.vue:1519 +#: src/views/file/ListView.vue:369 src/views/file/ListView.vue:1583 msgid "Open" msgstr "開啟" -#: src/views/file/ListView.vue:329 -#: src/views/file/ListView.vue:1538 +#: src/views/file/ListView.vue:371 src/views/file/ListView.vue:1602 msgid "Preview" msgstr "預覽" -#: src/views/file/ListView.vue:331 -#: src/views/file/ListView.vue:958 -#: src/views/file/ListView.vue:1647 +#: src/views/file/ListView.vue:373 src/views/file/ListView.vue:979 +#: src/views/file/ListView.vue:1705 msgid "Uncompress" msgstr "解壓縮" -#: src/views/file/ListView.vue:354 -#: src/views/file/ListView.vue:968 +#: src/views/file/ListView.vue:403 src/views/file/ListView.vue:997 #: src/views/file/PropertyModal.vue:11 msgid "Properties" msgstr "屬性" -#: src/views/file/ListView.vue:677 -#: src/views/file/ToolBar.vue:78 -#: src/views/file/ToolBar.vue:97 -msgid "Marked successfully, please navigate to the destination path to paste" -msgstr "標記成功,請導航到目標路徑進行粘貼" - -#: src/views/file/ListView.vue:767 -msgid "There are items with the same name. Do you want to overwrite?" -msgstr "存在同名項目。您要覆蓋嗎?" - -#: src/views/file/ListView.vue:775 -#: src/views/file/ListView.vue:794 +#: src/views/file/ListView.vue:806 msgid "Renamed %{ source } to %{ target } successfully" msgstr "成功將 %{ source } 重命名為 %{ target }" -#: src/views/file/ListView.vue:841 +#: src/views/file/ListView.vue:819 +msgid "There are items with the same name. Do you want to overwrite?" +msgstr "存在同名項目。您要覆蓋嗎?" + +#: src/views/file/ListView.vue:858 msgid "Some files are immutable and cannot be deleted" msgstr "某些文件是不可變的,無法刪除" -#: src/views/file/ListView.vue:848 +#: src/views/file/ListView.vue:865 msgid "Are you sure you want to delete %{count} items?" msgstr "您確定要刪除 %{count} 項嗎?" -#: src/views/file/ListView.vue:861 -#: src/views/file/PathInput.vue:34 +#: src/views/file/ListView.vue:878 src/views/file/PathInput.vue:34 msgid "Path copied to clipboard" msgstr "路徑已複製到剪貼板" -#: src/views/file/ListView.vue:961 +#: src/views/file/ListView.vue:982 msgid "Copy Path" msgstr "複製路徑" -#: src/views/file/ListView.vue:1217 -msgid "Uncompress task created successfully, please check the task list for progress" +#: src/views/file/ListView.vue:1250 +msgid "" +"Uncompress task created successfully, please check the task list for progress" msgstr "解壓任務創建成功,請在任務列表中查看進度" -#: src/views/file/ListView.vue:1578 +#: src/views/file/ListView.vue:1642 msgid "No files" msgstr "沒有文件" -#: src/views/file/ListView.vue:1588 +#: src/views/file/ListView.vue:1652 msgid "%{count} item(s) selected" msgstr "選擇了 %{count} 項" -#: src/views/file/ListView.vue:1596 +#: src/views/file/ListView.vue:1660 msgid "%{count} item(s)" msgstr "共 %{count} 項" -#: src/views/file/ListView.vue:1635 +#: src/views/file/ListView.vue:1693 msgid "Uncompress - %{ file }" msgstr "解壓 - %{ file }" -#: src/views/file/ListView.vue:1643 +#: src/views/file/ListView.vue:1701 msgid "Uncompress to" msgstr "解壓到" -#: src/views/file/ListView.vue:1655 -#: src/views/file/ToolBar.vue:264 +#: src/views/file/ListView.vue:1713 src/views/file/ToolBar.vue:237 msgid "Terminal - %{ path }" msgstr "終端 - %{ path }" @@ -7054,8 +6948,7 @@ msgstr "終端 - %{ path }" msgid "Failed to copy path" msgstr "無法複製路徑" -#: src/views/file/PathInput.vue:109 -#: src/views/home/UpdateView.vue:164 +#: src/views/file/PathInput.vue:109 src/views/home/UpdateView.vue:164 msgid "Back" msgstr "返回" @@ -7096,27 +6989,22 @@ msgid "Modify permissions - %{ path }" msgstr "修改權限 - %{ path }" #: src/views/file/PermissionModal.vue:119 -#: src/views/file/PermissionModal.vue:149 -#: src/views/file/PropertyModal.vue:45 +#: src/views/file/PermissionModal.vue:149 src/views/file/PropertyModal.vue:45 msgid "Owner" msgstr "擁有者" #: src/views/file/PermissionModal.vue:121 #: src/views/file/PermissionModal.vue:130 -#: src/views/file/PermissionModal.vue:139 -#: src/views/home/IndexView.vue:212 -#: src/views/home/IndexView.vue:228 -#: src/views/home/IndexView.vue:1000 +#: src/views/file/PermissionModal.vue:139 src/views/home/IndexView.vue:212 +#: src/views/home/IndexView.vue:228 src/views/home/IndexView.vue:1000 #: src/views/monitor/IndexView.vue:639 msgid "Read" msgstr "讀取" #: src/views/file/PermissionModal.vue:122 #: src/views/file/PermissionModal.vue:131 -#: src/views/file/PermissionModal.vue:140 -#: src/views/home/IndexView.vue:212 -#: src/views/home/IndexView.vue:252 -#: src/views/home/IndexView.vue:1001 +#: src/views/file/PermissionModal.vue:140 src/views/home/IndexView.vue:212 +#: src/views/home/IndexView.vue:252 src/views/home/IndexView.vue:1001 #: src/views/monitor/IndexView.vue:648 msgid "Write" msgstr "寫入" @@ -7131,7 +7019,7 @@ msgstr "執行" msgid "Others" msgstr "其他" -#: src/views/file/PreviewModal.vue:32 +#: src/views/file/PreviewModal.vue:31 msgid "Preview - " msgstr "預覽 - " @@ -7155,44 +7043,44 @@ msgstr "隱藏" msgid "Immutable" msgstr "不可變" -#: src/views/file/ToolBar.vue:55 -msgid "Download task created successfully, please check the task list for progress" +#: src/views/file/ToolBar.vue:57 +msgid "" +"Download task created successfully, please check the task list for progress" msgstr "下載任務創建成功,請在任務列表中查看進度" -#: src/views/file/ToolBar.vue:65 +#: src/views/file/ToolBar.vue:67 msgid "Please select files/folders to copy" msgstr "請選擇要複製的文件/文件夾" -#: src/views/file/ToolBar.vue:84 +#: src/views/file/ToolBar.vue:75 msgid "Please select files/folders to move" msgstr "請選擇要移動的文件/文件夾" -#: src/views/file/ToolBar.vue:157 +#: src/views/file/ToolBar.vue:130 msgid "Sort" msgstr "排序" -#: src/views/file/ToolBar.vue:182 -#: src/views/file/ToolBar.vue:236 +#: src/views/file/ToolBar.vue:155 src/views/file/ToolBar.vue:209 msgid "Remote Download" msgstr "遠程下載" -#: src/views/file/ToolBar.vue:201 +#: src/views/file/ToolBar.vue:174 msgid "Switch to grid view" msgstr "切換為網格視圖" -#: src/views/file/ToolBar.vue:202 +#: src/views/file/ToolBar.vue:175 msgid "Switch to list view" msgstr "切換為列表視圖" -#: src/views/file/ToolBar.vue:220 +#: src/views/file/ToolBar.vue:193 msgid "Are you sure you want to delete in bulk?" msgstr "您確定要批量刪除嗎?" -#: src/views/file/ToolBar.vue:244 +#: src/views/file/ToolBar.vue:217 msgid "Download URL" msgstr "下載 URL" -#: src/views/file/ToolBar.vue:247 +#: src/views/file/ToolBar.vue:220 msgid "Save as" msgstr "另存為" @@ -7208,19 +7096,18 @@ msgstr "無效的新名稱「%{name}」" msgid "Duplicate new name \"%{name}\"" msgstr "重複的新名稱「%{name}」" -#: src/views/file/UploadModal.vue:473 -#: src/views/file/UploadModal.vue:593 +#: src/views/file/UploadModal.vue:473 src/views/file/UploadModal.vue:593 msgid "Upload %{ fileName } successful" msgstr "上傳 %{ fileName } 成功" -#: src/views/file/UploadModal.vue:501 -#: src/views/file/UploadModal.vue:636 +#: src/views/file/UploadModal.vue:501 src/views/file/UploadModal.vue:636 msgid "Confirm Upload" msgstr "確認上傳" -#: src/views/file/UploadModal.vue:502 -#: src/views/file/UploadModal.vue:637 -msgid "You are about to upload %{count} files. This may take a while. Do you want to continue?" +#: src/views/file/UploadModal.vue:502 src/views/file/UploadModal.vue:637 +msgid "" +"You are about to upload %{count} files. This may take a while. Do you want " +"to continue?" msgstr "您即將上傳 %{count} 個文件。這可能需要一些時間。您想繼續嗎?" #: src/views/file/UploadModal.vue:685 @@ -7232,7 +7119,8 @@ msgid "Preparing..." msgstr "準備中……" #: src/views/file/UploadModal.vue:715 -msgid "For large files, it is recommended to use SFTP and other methods to upload" +msgid "" +"For large files, it is recommended to use SFTP and other methods to upload" msgstr "對於大檔案,建議使用 SFTP 等方法上傳" #: src/views/file/UploadModal.vue:727 @@ -7240,15 +7128,16 @@ msgid "Files already exist" msgstr "檔案已存在" #: src/views/file/UploadModal.vue:738 -msgid "The following files already exist in the target directory. Choose an action for each." +msgid "" +"The following files already exist in the target directory. Choose an action " +"for each." msgstr "目標目錄中已經存在以下檔案。請為每個檔案選擇一個動作。" #: src/views/file/UploadModal.vue:744 msgid "Apply to all:" msgstr "應用於所有:" -#: src/views/file/UploadModal.vue:746 -#: src/views/file/UploadModal.vue:782 +#: src/views/file/UploadModal.vue:746 src/views/file/UploadModal.vue:782 msgid "Skip" msgstr "跳過" @@ -7263,10 +7152,8 @@ msgstr "創建轉發" #: src/views/firewall/CreateForwardModal.vue:64 #: src/views/firewall/CreateIpModal.vue:104 -#: src/views/firewall/CreateModal.vue:116 -#: src/views/firewall/ForwardView.vue:16 -#: src/views/firewall/IpRuleView.vue:16 -#: src/views/firewall/RuleView.vue:33 +#: src/views/firewall/CreateModal.vue:116 src/views/firewall/ForwardView.vue:16 +#: src/views/firewall/IpRuleView.vue:16 src/views/firewall/RuleView.vue:33 msgid "Transport Protocol" msgstr "傳輸協議" @@ -7285,29 +7172,25 @@ msgid "Target Port" msgstr "目標端口" #: src/views/firewall/CreateIpModal.vue:39 -#: src/views/firewall/CreateModal.vue:39 -#: src/views/firewall/IpRuleView.vue:70 +#: src/views/firewall/CreateModal.vue:39 src/views/firewall/IpRuleView.vue:70 #: src/views/firewall/RuleView.vue:175 msgid "Accept" msgstr "接受" #: src/views/firewall/CreateIpModal.vue:43 -#: src/views/firewall/CreateModal.vue:43 -#: src/views/firewall/IpRuleView.vue:72 +#: src/views/firewall/CreateModal.vue:43 src/views/firewall/IpRuleView.vue:72 #: src/views/firewall/RuleView.vue:177 msgid "Drop" msgstr "丟棄" #: src/views/firewall/CreateIpModal.vue:47 -#: src/views/firewall/CreateModal.vue:47 -#: src/views/firewall/IpRuleView.vue:74 +#: src/views/firewall/CreateModal.vue:47 src/views/firewall/IpRuleView.vue:74 #: src/views/firewall/RuleView.vue:179 msgid "Reject" msgstr "拒絕" #: src/views/firewall/CreateIpModal.vue:54 -#: src/views/firewall/CreateModal.vue:54 -#: src/views/firewall/IpRuleView.vue:99 +#: src/views/firewall/CreateModal.vue:54 src/views/firewall/IpRuleView.vue:99 #: src/views/firewall/RuleView.vue:204 #: src/views/website/stats/OverviewTab.vue:390 #: src/views/website/stats/OverviewTab.vue:424 @@ -7317,8 +7200,7 @@ msgid "Inbound" msgstr "入站" #: src/views/firewall/CreateIpModal.vue:58 -#: src/views/firewall/CreateModal.vue:58 -#: src/views/firewall/IpRuleView.vue:101 +#: src/views/firewall/CreateModal.vue:58 src/views/firewall/IpRuleView.vue:101 #: src/views/firewall/RuleView.vue:206 #: src/views/website/stats/OverviewTab.vue:388 #: src/views/website/stats/OverviewTab.vue:389 @@ -7334,15 +7216,13 @@ msgid "%{ address } created successfully" msgstr "%{ address } 創建成功" #: src/views/firewall/CreateIpModal.vue:96 -#: src/views/firewall/CreateModal.vue:108 -#: src/views/firewall/IpRuleView.vue:195 -#: src/views/firewall/RuleView.vue:303 +#: src/views/firewall/CreateModal.vue:108 src/views/firewall/IpRuleView.vue:195 +#: src/views/firewall/RuleView.vue:324 msgid "Create Rule" msgstr "創建規則" #: src/views/firewall/CreateIpModal.vue:107 -#: src/views/firewall/CreateModal.vue:119 -#: src/views/firewall/IpRuleView.vue:33 +#: src/views/firewall/CreateModal.vue:119 src/views/firewall/IpRuleView.vue:33 #: src/views/firewall/RuleView.vue:50 msgid "Network Protocol" msgstr "網路協議" @@ -7357,15 +7237,13 @@ msgid "IP or IP range: 172.16.0.1 or 172.16.0.0/16" msgstr "IP 或 IP 範圍:172.16.0.1 或 172.16.0.0/16" #: src/views/firewall/CreateIpModal.vue:117 -#: src/views/firewall/CreateModal.vue:151 -#: src/views/firewall/IpRuleView.vue:50 +#: src/views/firewall/CreateModal.vue:151 src/views/firewall/IpRuleView.vue:50 #: src/views/firewall/RuleView.vue:155 msgid "Strategy" msgstr "策略" #: src/views/firewall/CreateIpModal.vue:120 -#: src/views/firewall/CreateModal.vue:154 -#: src/views/firewall/IpRuleView.vue:86 +#: src/views/firewall/CreateModal.vue:154 src/views/firewall/IpRuleView.vue:86 #: src/views/firewall/RuleView.vue:191 msgid "Direction" msgstr "方向" @@ -7378,22 +7256,18 @@ msgstr "起始端口" msgid "End Port" msgstr "結束連接埠" -#: src/views/firewall/CreateModal.vue:144 -#: src/views/firewall/IpRuleView.vue:111 -#: src/views/firewall/RuleView.vue:216 -#: src/views/website/EditModal.vue:1797 +#: src/views/firewall/CreateModal.vue:144 src/views/firewall/IpRuleView.vue:111 +#: src/views/firewall/RuleView.vue:216 src/views/website/EditModal.vue:1807 msgid "Target" msgstr "目標" -#: src/views/firewall/ForwardView.vue:125 -#: src/views/firewall/IpRuleView.vue:167 -#: src/views/firewall/RuleView.vue:275 +#: src/views/firewall/ForwardView.vue:125 src/views/firewall/IpRuleView.vue:167 +#: src/views/firewall/RuleView.vue:296 msgid "Please select rules to delete" msgstr "請選擇要刪除的規則" -#: src/views/firewall/ForwardView.vue:157 -#: src/views/firewall/IpRuleView.vue:199 -#: src/views/firewall/RuleView.vue:307 +#: src/views/firewall/ForwardView.vue:157 src/views/firewall/IpRuleView.vue:199 +#: src/views/firewall/RuleView.vue:328 msgid "Are you sure you want to delete the selected rules?" msgstr "您確定要刪除所選規則嗎?" @@ -7409,13 +7283,11 @@ msgstr "IP 規則" msgid "Port Forwarding" msgstr "連接埠轉發" -#: src/views/firewall/IndexView.vue:25 -#: src/views/firewall/SettingView.vue:96 +#: src/views/firewall/IndexView.vue:25 src/views/firewall/SettingView.vue:96 msgid "Scan Awareness" msgstr "掃描感知" -#: src/views/firewall/IpRuleView.vue:76 -#: src/views/firewall/RuleView.vue:181 +#: src/views/firewall/IpRuleView.vue:76 src/views/firewall/RuleView.vue:181 msgid "Mark" msgstr "標記" @@ -7423,8 +7295,7 @@ msgstr "標記" msgid "Not Used" msgstr "未使用" -#: src/views/firewall/RuleView.vue:106 -#: src/views/toolbox/PanelView.vue:154 +#: src/views/firewall/RuleView.vue:106 src/views/toolbox/PanelView.vue:154 msgid "In Use" msgstr "使用中" @@ -7432,19 +7303,27 @@ msgstr "使用中" msgid "No process information" msgstr "沒有進程信息" -#: src/views/firewall/ScanView.vue:193 -#: src/views/firewall/ScanView.vue:211 -#: src/views/firewall/ScanView.vue:223 -#: src/views/firewall/ScanView.vue:288 -#: src/views/firewall/ScanView.vue:302 -#: src/views/firewall/ScanView.vue:318 +#: src/views/firewall/RuleView.vue:275 +msgid "Import finished: %{succeeded} succeeded, %{failed} failed" +msgstr "" + +#: src/views/firewall/RuleView.vue:338 +#, fuzzy +msgid "Export" +msgstr "Exporters" + +#: src/views/firewall/RuleView.vue:342 +msgid "Import" +msgstr "" + +#: src/views/firewall/ScanView.vue:193 src/views/firewall/ScanView.vue:211 +#: src/views/firewall/ScanView.vue:223 src/views/firewall/ScanView.vue:288 +#: src/views/firewall/ScanView.vue:302 src/views/firewall/ScanView.vue:318 msgid "Scan Count" msgstr "掃描次數" -#: src/views/firewall/ScanView.vue:193 -#: src/views/firewall/ScanView.vue:216 -#: src/views/firewall/ScanView.vue:229 -#: src/views/firewall/ScanView.vue:440 +#: src/views/firewall/ScanView.vue:193 src/views/firewall/ScanView.vue:216 +#: src/views/firewall/ScanView.vue:229 src/views/firewall/ScanView.vue:440 msgid "Source IPs" msgstr "來源 IP 數" @@ -7467,16 +7346,13 @@ msgctxt "firewall" msgid "Block" msgstr "阻止" -#: src/views/firewall/ScanView.vue:279 -#: src/views/firewall/ScanView.vue:307 +#: src/views/firewall/ScanView.vue:279 src/views/firewall/ScanView.vue:307 #: src/views/log/SSHLog.vue:78 msgid "Source IP" msgstr "來源 IP" -#: src/views/firewall/ScanView.vue:281 -#: src/views/firewall/ScanView.vue:309 -#: src/views/firewall/ScanView.vue:390 -#: src/views/website/stats/IPsTab.vue:122 +#: src/views/firewall/ScanView.vue:281 src/views/firewall/ScanView.vue:309 +#: src/views/firewall/ScanView.vue:390 src/views/website/stats/IPsTab.vue:122 msgid "Location" msgstr "位置" @@ -7484,8 +7360,7 @@ msgstr "位置" msgid "Port Count" msgstr "端口數" -#: src/views/firewall/ScanView.vue:291 -#: src/views/firewall/ScanView.vue:326 +#: src/views/firewall/ScanView.vue:291 src/views/firewall/ScanView.vue:326 msgid "Last Seen" msgstr "最後記錄" @@ -7502,11 +7377,11 @@ msgid "Scan Awareness Disabled" msgstr "掃描感知已禁用" #: src/views/firewall/ScanView.vue:348 -msgid "Enable scan awareness in the Settings tab to start detecting port scans." +msgid "" +"Enable scan awareness in the Settings tab to start detecting port scans." msgstr "在設置標籤頁中啟用掃描感知以開始檢測端口掃描。" -#: src/views/firewall/ScanView.vue:356 -#: src/views/website/StatsView.vue:194 +#: src/views/firewall/ScanView.vue:356 src/views/website/StatsView.vue:194 msgid "Overview" msgstr "概覽" @@ -7522,8 +7397,7 @@ msgstr "搜索 IP" msgid "Are you sure you want to clear all scan data?" msgstr "您確定要清除所有掃描數據嗎?" -#: src/views/firewall/ScanView.vue:403 -#: src/views/website/StatsView.vue:185 +#: src/views/firewall/ScanView.vue:403 src/views/website/StatsView.vue:185 msgid "Clear Data" msgstr "清除數據" @@ -7547,8 +7421,7 @@ msgstr "來源 IP 前 10" msgid "Top 10 Scanned Ports" msgstr "掃描端口前 10" -#: src/views/firewall/SettingView.vue:22 -#: src/views/firewall/SettingView.vue:28 +#: src/views/firewall/SettingView.vue:22 src/views/firewall/SettingView.vue:28 #: src/views/firewall/SettingView.vue:79 msgid "Settings saved successfully" msgstr "設置保存成功" @@ -7609,22 +7482,17 @@ msgstr "運行正常" msgid "Running smoothly" msgstr "運行流暢" -#: src/views/home/IndexView.vue:188 -#: src/views/home/IndexView.vue:956 -#: src/views/home/IndexView.vue:976 -#: src/views/toolbox/BenchmarkView.vue:204 -#: src/views/toolbox/DiskView.vue:758 -#: src/views/toolbox/IndexView.vue:31 +#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:956 +#: src/views/home/IndexView.vue:976 src/views/toolbox/BenchmarkView.vue:204 +#: src/views/toolbox/DiskView.vue:758 src/views/toolbox/IndexView.vue:31 msgid "Disk" msgstr "磁碟" -#: src/views/home/IndexView.vue:211 -#: src/views/home/IndexView.vue:228 +#: src/views/home/IndexView.vue:211 src/views/home/IndexView.vue:228 msgid "Send" msgstr "發送" -#: src/views/home/IndexView.vue:211 -#: src/views/home/IndexView.vue:252 +#: src/views/home/IndexView.vue:211 src/views/home/IndexView.vue:252 msgid "Receive" msgstr "接收" @@ -7632,26 +7500,20 @@ msgstr "接收" msgid "Unit %{unit}" msgstr "單位 %{unit}" -#: src/views/home/IndexView.vue:234 -#: src/views/home/IndexView.vue:258 -#: src/views/monitor/IndexView.vue:433 -#: src/views/monitor/IndexView.vue:502 +#: src/views/home/IndexView.vue:234 src/views/home/IndexView.vue:258 +#: src/views/monitor/IndexView.vue:433 src/views/monitor/IndexView.vue:502 #: src/views/monitor/IndexView.vue:564 msgid "Maximum" msgstr "最大值" -#: src/views/home/IndexView.vue:235 -#: src/views/home/IndexView.vue:259 -#: src/views/monitor/IndexView.vue:434 -#: src/views/monitor/IndexView.vue:503 +#: src/views/home/IndexView.vue:235 src/views/home/IndexView.vue:259 +#: src/views/monitor/IndexView.vue:434 src/views/monitor/IndexView.vue:503 #: src/views/monitor/IndexView.vue:565 msgid "Minimum" msgstr "最小值" -#: src/views/home/IndexView.vue:239 -#: src/views/home/IndexView.vue:263 -#: src/views/monitor/IndexView.vue:438 -#: src/views/monitor/IndexView.vue:507 +#: src/views/home/IndexView.vue:239 src/views/home/IndexView.vue:263 +#: src/views/monitor/IndexView.vue:438 src/views/monitor/IndexView.vue:507 #: src/views/monitor/IndexView.vue:569 msgid "Average" msgstr "平均值" @@ -7672,8 +7534,7 @@ msgstr "伺服器重新啟動中……" msgid "Restart Panel" msgstr "重新啟動面板" -#: src/views/home/IndexView.vue:394 -#: src/views/home/IndexView.vue:1025 +#: src/views/home/IndexView.vue:394 src/views/home/IndexView.vue:1025 msgid "Restart Server" msgstr "重啟伺服器" @@ -7682,15 +7543,24 @@ msgid "Current version is the latest" msgstr "當前版本是最新版本" #: src/views/home/IndexView.vue:501 -msgid "Your operating system %{ os_name } has reached its end-of-life. Please consider upgrading to a supported version to ensure optimal performance and security." -msgstr "您的操作系統 %{ os_name } 已經結束生命週期。請考慮升級到受支持的版本,以確保最佳的性能和安全性。" +msgid "" +"Your operating system %{ os_name } has reached its end-of-life. Please " +"consider upgrading to a supported version to ensure optimal performance and " +"security." +msgstr "" +"您的操作系統 %{ os_name } 已經結束生命週期。請考慮升級到受支持的版本,以確保" +"最佳的性能和安全性。" #: src/views/home/IndexView.vue:512 -msgid "Your operating system %{ os_name } is not officially supported. Some features may not work as expected. Please consider using a supported operating system for the best experience." -msgstr "您的操作系統 %{ os_name } 不受官方支持。某些功能可能無法按預期工作。請考慮使用受支持的操作系統以獲得最佳體驗。" +msgid "" +"Your operating system %{ os_name } is not officially supported. Some " +"features may not work as expected. Please consider using a supported " +"operating system for the best experience." +msgstr "" +"您的操作系統 %{ os_name } 不受官方支持。某些功能可能無法按預期工作。請考慮使" +"用受支持的操作系統以獲得最佳體驗。" -#: src/views/home/IndexView.vue:543 -#: src/views/task/IndexView.vue:25 +#: src/views/home/IndexView.vue:543 src/views/task/IndexView.vue:25 msgid "Scheduled Tasks" msgstr "計劃任務" @@ -7718,8 +7588,7 @@ msgstr "最近 15 分鐘" msgid "cores" msgstr "核心" -#: src/views/home/IndexView.vue:617 -#: src/views/toolbox/disk/RaidView.vue:111 +#: src/views/home/IndexView.vue:617 src/views/toolbox/disk/RaidView.vue:111 #: src/views/toolbox/disk/RaidView.vue:142 #: src/views/toolbox/disk/SmartView.vue:104 msgid "Model" @@ -7753,8 +7622,7 @@ msgstr "已用物理記憶體" msgid "Physical Memory Available" msgstr "可用實體記憶體" -#: src/views/home/IndexView.vue:709 -#: src/views/toolbox/DiskView.vue:218 +#: src/views/home/IndexView.vue:709 src/views/toolbox/DiskView.vue:218 msgid "Free" msgstr "空閒" @@ -7762,8 +7630,7 @@ msgstr "空閒" msgid "Active" msgstr "活躍" -#: src/views/home/IndexView.vue:715 -#: src/views/project/ListView.vue:76 +#: src/views/home/IndexView.vue:715 src/views/project/ListView.vue:76 msgid "Inactive" msgstr "非活躍" @@ -7823,8 +7690,7 @@ msgstr "您尚未設置任何要在此處顯示的應用!" msgid "Environment Information" msgstr "環境資訊" -#: src/views/home/IndexView.vue:889 -#: src/views/toolbox/SystemView.vue:231 +#: src/views/home/IndexView.vue:889 src/views/toolbox/SystemView.vue:231 msgid "System Hostname" msgstr "系統主機名" @@ -7885,7 +7751,9 @@ msgid "Read/Write Latency" msgstr "讀/寫延遲" #: src/views/home/IndexView.vue:1027 -msgid "Are you sure you want to restart the server? This will disconnect all connections." +msgid "" +"Are you sure you want to restart the server? This will disconnect all " +"connections." msgstr "您確定要重新啟動伺服器嗎?這將斷開所有連接。" #: src/views/home/UpdateView.vue:107 @@ -7913,7 +7781,8 @@ msgid "Panel is restarting, please wait..." msgstr "正在重新啟動面板,請稍候……" #: src/views/home/UpdateView.vue:152 -msgid "Update may have failed, please check the panel logs and refresh manually." +msgid "" +"Update may have failed, please check the panel logs and refresh manually." msgstr "更新可能失敗,請檢查面板日誌並手動刷新。" #: src/views/home/UpdateView.vue:158 @@ -7928,8 +7797,7 @@ msgstr "有新版本可用" msgid "Current" msgstr "當前" -#: src/views/home/UpdateView.vue:189 -#: src/views/home/UpdateView.vue:209 +#: src/views/home/UpdateView.vue:189 src/views/home/UpdateView.vue:209 msgid "Latest" msgstr "最新" @@ -7941,29 +7809,22 @@ msgstr "立即更新" msgid "Changelog" msgstr "變更日誌" -#: src/views/log/DatabaseLog.vue:30 -#: src/views/log/HttpLog.vue:30 -#: src/views/log/OperationLog.vue:33 -#: src/views/monitor/IndexView.vue:773 -#: src/views/monitor/IndexView.vue:827 -#: src/views/monitor/IndexView.vue:879 -#: src/views/monitor/IndexView.vue:935 -#: src/views/monitor/IndexView.vue:1002 +#: src/views/log/DatabaseLog.vue:30 src/views/log/HttpLog.vue:30 +#: src/views/log/OperationLog.vue:33 src/views/monitor/IndexView.vue:773 +#: src/views/monitor/IndexView.vue:827 src/views/monitor/IndexView.vue:879 +#: src/views/monitor/IndexView.vue:935 src/views/monitor/IndexView.vue:1002 #: src/views/website/StatsView.vue:138 msgid "Today" msgstr "今天" -#: src/views/log/DatabaseLog.vue:48 -#: src/views/log/HttpLog.vue:56 -#: src/views/log/OperationLog.vue:51 -#: src/views/log/SSHLog.vue:58 -#: src/views/toolbox/SystemView.vue:250 +#: src/views/log/DatabaseLog.vue:48 src/views/log/HttpLog.vue:56 +#: src/views/log/OperationLog.vue:51 src/views/log/SSHLog.vue:58 +#: src/views/tamper/IndexView.vue:182 src/views/toolbox/SystemView.vue:250 #: src/views/website/stats/ErrorsTab.vue:87 msgid "Time" msgstr "時間" -#: src/views/log/DatabaseLog.vue:57 -#: src/views/log/OperationLog.vue:60 +#: src/views/log/DatabaseLog.vue:57 src/views/log/OperationLog.vue:60 msgid "Level" msgstr "級別" @@ -7971,10 +7832,9 @@ msgstr "級別" msgid "Query" msgstr "查詢" -#: src/views/log/DatabaseLog.vue:81 -#: src/views/log/HttpLog.vue:107 -#: src/views/toolbox/MigrationView.vue:697 -#: src/views/toolbox/MigrationView.vue:784 +#: src/views/log/DatabaseLog.vue:81 src/views/log/HttpLog.vue:107 +#: src/views/toolbox/MigrationView.vue:728 +#: src/views/toolbox/MigrationView.vue:815 msgid "Duration" msgstr "持續時間" @@ -7982,21 +7842,17 @@ msgstr "持續時間" msgid "Rows" msgstr "行" -#: src/views/log/DatabaseLog.vue:112 -#: src/views/log/HttpLog.vue:141 +#: src/views/log/DatabaseLog.vue:112 src/views/log/HttpLog.vue:141 #: src/views/log/OperationLog.vue:164 msgid "Date" msgstr "日期" -#: src/views/log/DatabaseLog.vue:119 -#: src/views/log/HttpLog.vue:148 -#: src/views/log/OperationLog.vue:171 -#: src/views/log/SSHLog.vue:102 +#: src/views/log/DatabaseLog.vue:119 src/views/log/HttpLog.vue:148 +#: src/views/log/OperationLog.vue:171 src/views/log/SSHLog.vue:102 msgid "Show entries" msgstr "顯示條目" -#: src/views/log/HttpLog.vue:65 -#: src/views/website/stats/ErrorsTab.vue:94 +#: src/views/log/HttpLog.vue:65 src/views/website/stats/ErrorsTab.vue:94 msgid "Method" msgstr "方法" @@ -8024,10 +7880,8 @@ msgstr "SSH 日誌" msgid "Operator" msgstr "操作員" -#: src/views/log/OperationLog.vue:87 -#: src/views/toolbox/IndexView.vue:29 -#: src/views/toolbox/PanelView.vue:129 -#: src/views/toolbox/PanelView.vue:148 +#: src/views/log/OperationLog.vue:87 src/views/toolbox/IndexView.vue:29 +#: src/views/toolbox/PanelView.vue:129 src/views/toolbox/PanelView.vue:148 msgid "System" msgstr "系統" @@ -8035,8 +7889,7 @@ msgstr "系統" msgid "Message" msgstr "消息" -#: src/views/log/OperationLog.vue:100 -#: src/views/toolbox/MigrationView.vue:785 +#: src/views/log/OperationLog.vue:100 src/views/toolbox/MigrationView.vue:816 msgid "Details" msgstr "詳情" @@ -8048,8 +7901,7 @@ msgstr "%{count} 個字段" msgid "Accepted" msgstr "已接受" -#: src/views/log/SSHLog.vue:46 -#: src/views/project/ListView.vue:74 +#: src/views/log/SSHLog.vue:46 src/views/project/ListView.vue:74 #: src/views/task/TaskView.vue:44 msgid "Failed" msgstr "失敗" @@ -8079,7 +7931,8 @@ msgid "Please enter captcha code" msgstr "請輸入驗證碼" #: src/views/login/IndexView.vue:153 -msgid "Failed to get encryption public key, please refresh the page and try again" +msgid "" +"Failed to get encryption public key, please refresh the page and try again" msgstr "獲取加密公鑰失敗,請刷新頁面後重試" #: src/views/login/IndexView.vue:238 @@ -8110,9 +7963,8 @@ msgstr "記住我" msgid "Login with Passkey" msgstr "使用通行金鑰登入" -#: src/views/monitor/IndexView.vue:335 -#: src/views/monitor/IndexView.vue:347 -#: src/views/toolbox/IndexView.vue:27 +#: src/views/monitor/IndexView.vue:335 src/views/monitor/IndexView.vue:347 +#: src/views/tamper/IndexView.vue:196 src/views/toolbox/IndexView.vue:27 #: src/views/toolbox/NetworkView.vue:75 msgid "Process" msgstr "進程" @@ -8141,8 +7993,7 @@ msgstr "15 分鐘" msgid "Usage %" msgstr "使用率 %" -#: src/views/monitor/IndexView.vue:493 -#: src/views/toolbox/DiskView.vue:259 +#: src/views/monitor/IndexView.vue:493 src/views/toolbox/DiskView.vue:259 msgid "Usage" msgstr "使用率" @@ -8150,11 +8001,6 @@ msgstr "使用率" msgid "Unit MB" msgstr "單位 MB" -#: src/views/monitor/IndexView.vue:695 -#: src/views/monitor/IndexView.vue:704 -msgid "Operation successful" -msgstr "操作成功" - #: src/views/monitor/IndexView.vue:715 msgid "Enable Monitoring" msgstr "啟用監控" @@ -8171,13 +8017,11 @@ msgstr "天" msgid "Collection Interval" msgstr "採集間隔" -#: src/views/monitor/IndexView.vue:727 -#: src/views/setting/SettingSafe.vue:45 +#: src/views/monitor/IndexView.vue:727 src/views/setting/SettingSafe.vue:45 msgid "minutes" msgstr "分鐘" -#: src/views/monitor/IndexView.vue:743 -#: src/views/website/EditModal.vue:2101 +#: src/views/monitor/IndexView.vue:743 src/views/website/EditModal.vue:2111 msgid "Are you sure you want to clear?" msgstr "確定要清除嗎?" @@ -8189,22 +8033,17 @@ msgstr "清除監控記錄" msgid "Load" msgstr "負載" -#: src/views/monitor/IndexView.vue:767 -#: src/views/monitor/IndexView.vue:821 -#: src/views/monitor/IndexView.vue:873 -#: src/views/monitor/IndexView.vue:929 +#: src/views/monitor/IndexView.vue:767 src/views/monitor/IndexView.vue:821 +#: src/views/monitor/IndexView.vue:873 src/views/monitor/IndexView.vue:929 #: src/views/monitor/IndexView.vue:996 #: src/views/website/stats/OverviewTab.vue:259 #: src/views/website/StatsView.vue:144 msgid "Yesterday" msgstr "昨天" -#: src/views/monitor/IndexView.vue:779 -#: src/views/monitor/IndexView.vue:833 -#: src/views/monitor/IndexView.vue:885 -#: src/views/monitor/IndexView.vue:941 -#: src/views/monitor/IndexView.vue:1008 -#: src/views/website/StatsView.vue:147 +#: src/views/monitor/IndexView.vue:779 src/views/monitor/IndexView.vue:833 +#: src/views/monitor/IndexView.vue:885 src/views/monitor/IndexView.vue:941 +#: src/views/monitor/IndexView.vue:1008 src/views/website/StatsView.vue:147 msgid "Last 7 Days" msgstr "近 7 天" @@ -8264,28 +8103,26 @@ msgstr "創建 Python 項目" msgid "Create .NET Project" msgstr "建立 .NET 專案" -#: src/views/project/CreateModal.vue:407 -#: src/views/project/ListView.vue:295 +#: src/views/project/CreateModal.vue:407 src/views/project/ListView.vue:295 msgid "Create Project" msgstr "創建項目" -#: src/views/project/CreateModal.vue:423 -#: src/views/project/EditModal.vue:184 +#: src/views/project/CreateModal.vue:423 src/views/project/EditModal.vue:184 msgid "Project Name" msgstr "項目名" -#: src/views/project/CreateModal.vue:428 -#: src/views/project/EditModal.vue:189 +#: src/views/project/CreateModal.vue:428 src/views/project/EditModal.vue:189 msgid "Project name, used as service identifier" msgstr "項目名稱,用作服務標識符" -#: src/views/project/CreateModal.vue:432 -#: src/views/project/EditModal.vue:203 +#: src/views/project/CreateModal.vue:432 src/views/project/EditModal.vue:203 msgid "Project Directory" msgstr "項目目錄" #: src/views/project/CreateModal.vue:439 -msgid "Project root directory (if left empty, defaults to project directory/project name)" +msgid "" +"Project root directory (if left empty, defaults to project directory/project " +"name)" msgstr "項目根目錄(如果留空,默認為項目目錄/項目名稱)" #: src/views/project/CreateModal.vue:454 @@ -8316,18 +8153,14 @@ msgstr "Java 版本" msgid "Select Java Version" msgstr "選擇 Java 版本" -#: src/views/project/CreateModal.vue:506 -#: src/views/project/CreateModal.vue:532 -#: src/views/project/CreateModal.vue:558 -#: src/views/project/CreateModal.vue:584 +#: src/views/project/CreateModal.vue:506 src/views/project/CreateModal.vue:532 +#: src/views/project/CreateModal.vue:558 src/views/project/CreateModal.vue:584 #: src/views/project/CreateModal.vue:610 msgid "Framework" msgstr "框架" -#: src/views/project/CreateModal.vue:510 -#: src/views/project/CreateModal.vue:536 -#: src/views/project/CreateModal.vue:562 -#: src/views/project/CreateModal.vue:588 +#: src/views/project/CreateModal.vue:510 src/views/project/CreateModal.vue:536 +#: src/views/project/CreateModal.vue:562 src/views/project/CreateModal.vue:588 #: src/views/project/CreateModal.vue:614 msgid "Select Framework" msgstr "選擇框架" @@ -8340,15 +8173,13 @@ msgstr "Node.js 版本" msgid "Select Node.js Version" msgstr "選擇 Node.js 版本" -#: src/views/project/CreateModal.vue:548 -#: src/views/website/CreateModal.vue:236 -#: src/views/website/EditModal.vue:926 +#: src/views/project/CreateModal.vue:548 src/views/website/CreateModal.vue:236 +#: src/views/website/EditModal.vue:936 msgid "PHP Version" msgstr "PHP 版本" -#: src/views/project/CreateModal.vue:552 -#: src/views/website/CreateModal.vue:240 -#: src/views/website/EditModal.vue:931 +#: src/views/project/CreateModal.vue:552 src/views/website/CreateModal.vue:240 +#: src/views/website/EditModal.vue:941 msgid "Select PHP Version" msgstr "選擇 PHP 版本" @@ -8368,8 +8199,7 @@ msgstr ".NET 版本" msgid "Select .NET Version" msgstr "選擇 .NET 版本" -#: src/views/project/CreateModal.vue:630 -#: src/views/project/EditModal.vue:245 +#: src/views/project/CreateModal.vue:630 src/views/project/EditModal.vue:245 msgid "Select or enter user" msgstr "選擇或輸入用戶" @@ -8377,15 +8207,13 @@ msgstr "選擇或輸入用戶" msgid "Select www user if no special requirements" msgstr "如果沒有特殊要求,請選擇 www 用戶" -#: src/views/project/CreateModal.vue:646 -#: src/views/project/EditModal.vue:262 +#: src/views/project/CreateModal.vue:646 src/views/project/EditModal.vue:262 msgid "e.g., php artisan serve, node app.js" msgstr "例如,php artisan serve、node app.js" #: src/views/project/CreateModal.vue:649 #: src/views/website/BulkCreateModal.vue:59 -#: src/views/website/CreateModal.vue:28 -#: src/views/website/IndexView.vue:26 +#: src/views/website/CreateModal.vue:28 src/views/website/IndexView.vue:26 #: src/views/website/ListView.vue:126 msgid "Reverse Proxy" msgstr "反向代理" @@ -8434,12 +8262,10 @@ msgstr "文件(附加)" msgid "File (truncate)" msgstr "文件(截斷)" -#: src/views/project/EditModal.vue:72 -#: src/views/setting/SettingBase.vue:187 -#: src/views/setting/SettingSafe.vue:246 -#: src/views/website/EditModal.vue:778 -#: src/views/website/EditModal.vue:782 -#: src/views/website/EditModal.vue:997 +#: src/views/project/EditModal.vue:72 src/views/setting/SettingBase.vue:187 +#: src/views/setting/SettingSafe.vue:246 src/views/tamper/IndexView.vue:132 +#: src/views/website/EditModal.vue:788 src/views/website/EditModal.vue:792 +#: src/views/website/EditModal.vue:1007 msgid "Disabled" msgstr "禁用" @@ -8536,8 +8362,12 @@ msgid "Dependencies" msgstr "依賴" #: src/views/project/EditModal.vue:411 -msgid "Configure service dependencies to control startup order. Common services: network.target, mysqld.service, postgresql.service, redis.service" -msgstr "配置服務依賴關係以控制啟動順序。常見服務:network.target、mysqld.service、postgresql.service、redis.service" +msgid "" +"Configure service dependencies to control startup order. Common services: " +"network.target, mysqld.service, postgresql.service, redis.service" +msgstr "" +"配置服務依賴關係以控制啟動順序。常見服務:network.target、mysqld.service、" +"postgresql.service、redis.service" #: src/views/project/EditModal.vue:417 msgid "Requires" @@ -8572,7 +8402,9 @@ msgid "Start this service before the specified services" msgstr "在指定的服務之前啟動此服務" #: src/views/project/EditModal.vue:462 -msgid "Set resource limits to prevent the service from consuming too many system resources" +msgid "" +"Set resource limits to prevent the service from consuming too many system " +"resources" msgstr "設置資源限制以防止服務消耗過多系統資源" #: src/views/project/EditModal.vue:470 @@ -8604,7 +8436,9 @@ msgid "Security Settings" msgstr "安全設置" #: src/views/project/EditModal.vue:509 -msgid "Security settings can enhance service isolation but may affect functionality. Please test thoroughly before enabling." +msgid "" +"Security settings can enhance service isolation but may affect " +"functionality. Please test thoroughly before enabling." msgstr "安全設置可以增強服務隔離,但可能會影響功能。請在啟用之前進行充分測試。" #: src/views/project/EditModal.vue:515 @@ -8628,8 +8462,11 @@ msgid "Protect System" msgstr "保護系統" #: src/views/project/EditModal.vue:544 -msgid "true: /usr, /boot read-only; full: + /etc read-only; strict: entire filesystem read-only" -msgstr "true:/usr,/boot 為只讀;full:+ /etc 為只讀;strict:整個文件系統為只讀" +msgid "" +"true: /usr, /boot read-only; full: + /etc read-only; strict: entire " +"filesystem read-only" +msgstr "" +"true:/usr,/boot 為只讀;full:+ /etc 為只讀;strict:整個文件系統為只讀" #: src/views/project/EditModal.vue:552 msgid "Path Access Control" @@ -8663,10 +8500,8 @@ msgstr "Java" msgid "Node.js" msgstr "Node.js" -#: src/views/project/IndexView.vue:26 -#: src/views/website/BulkCreateModal.vue:60 -#: src/views/website/CreateModal.vue:29 -#: src/views/website/IndexView.vue:27 +#: src/views/project/IndexView.vue:26 src/views/website/BulkCreateModal.vue:60 +#: src/views/website/CreateModal.vue:29 src/views/website/IndexView.vue:27 #: src/views/website/ListView.vue:127 msgid "PHP" msgstr "PHP" @@ -8703,8 +8538,7 @@ msgstr "您確定要刪除所選項目嗎?" msgid "Enter user name" msgstr "輸入用戶名" -#: src/views/setting/CreateModal.vue:59 -#: src/views/setting/PasswordModal.vue:48 +#: src/views/setting/CreateModal.vue:59 src/views/setting/PasswordModal.vue:48 msgid "Enter user password" msgstr "輸入用戶密碼" @@ -8712,13 +8546,11 @@ msgstr "輸入用戶密碼" msgid "Enter user email" msgstr "輸入用戶郵箱" -#: src/views/setting/IndexView.vue:100 -#: src/views/setting/IndexView.vue:124 +#: src/views/setting/IndexView.vue:100 src/views/setting/IndexView.vue:124 msgid "Panel is restarting, page will refresh in 5 seconds" msgstr "面板正在重啟,頁面將在 5 秒後刷新" -#: src/views/setting/IndexView.vue:118 -#: src/views/website/EditModal.vue:225 +#: src/views/setting/IndexView.vue:118 src/views/website/EditModal.vue:235 msgid "Please wait..." msgstr "請稍候……" @@ -8766,13 +8598,14 @@ msgstr "註冊已取消" msgid "Passkey registration failed: %{msg}" msgstr "通行金鑰註冊失敗:%{msg}" -#: src/views/setting/PasskeyModal.vue:152 -#: src/views/setting/SettingUser.vue:116 +#: src/views/setting/PasskeyModal.vue:152 src/views/setting/SettingUser.vue:116 msgid "Passkeys" msgstr "通行金鑰" #: src/views/setting/PasskeyModal.vue:162 -msgid "Passkeys are only available when using a bound domain with a trusted HTTPS certificate." +msgid "" +"Passkeys are only available when using a bound domain with a trusted HTTPS " +"certificate." msgstr "通行金鑰只有在綁定網域和使用可信任 HTTPS 憑證時才可用。" #: src/views/setting/PasskeyModal.vue:171 @@ -8791,8 +8624,7 @@ msgstr "穩定版" msgid "Beta" msgstr "測試版" -#: src/views/setting/SettingBase.vue:128 -#: src/views/setting/SettingBase.vue:129 +#: src/views/setting/SettingBase.vue:128 src/views/setting/SettingBase.vue:129 msgid "Panel Name" msgstr "面板名稱" @@ -8885,7 +8717,9 @@ msgid "Login Timeout" msgstr "登錄超時" #: src/views/setting/SettingSafe.vue:31 -msgid "Set the maximum lifetime (in minutes) of the login state, after which you need to log in again" +msgid "" +"Set the maximum lifetime (in minutes) of the login state, after which you " +"need to log in again" msgstr "設置登入狀態的最長生命週期(單位:分鐘),超過該時間後需要重新登入" #: src/views/setting/SettingSafe.vue:39 @@ -8897,19 +8731,26 @@ msgid "Access Entrance" msgstr "訪問入口" #: src/views/setting/SettingSafe.vue:59 -msgid "Set the access entrance of the panel (e.g. /mypanel) to prevent some malicious access. Leave blank to disable (not recommended)" -msgstr "設置面板的訪問入口(例如 /mypanel)以防止惡意訪問。留空以禁用(不推薦)" +msgid "" +"Set the access entrance of the panel (e.g. /mypanel) to prevent some " +"malicious access. Leave blank to disable (not recommended)" +msgstr "" +"設置面板的訪問入口(例如 /mypanel)以防止惡意訪問。留空以禁用(不推薦)" #: src/views/setting/SettingSafe.vue:72 msgid "Entrance Error Page" msgstr "入口錯誤頁" #: src/views/setting/SettingSafe.vue:77 -msgid "Set the error page to display when accessing with wrong entrance. 418 shows teapot page, Nginx 404 shows nginx style 404 page, Close Connection will close the connection immediately" -msgstr "設置當通過錯誤入口訪問時顯示的錯誤頁面。418 顯示茶壺頁面,Nginx 404 顯示 Nginx 風格的 404 頁面,關閉連接將立即關閉連接" +msgid "" +"Set the error page to display when accessing with wrong entrance. 418 shows " +"teapot page, Nginx 404 shows nginx style 404 page, Close Connection will " +"close the connection immediately" +msgstr "" +"設置當通過錯誤入口訪問時顯示的錯誤頁面。418 顯示茶壺頁面,Nginx 404 顯示 " +"Nginx 風格的 404 頁面,關閉連接將立即關閉連接" -#: src/views/setting/SettingSafe.vue:86 -#: src/views/setting/SettingSafe.vue:90 +#: src/views/setting/SettingSafe.vue:86 src/views/setting/SettingSafe.vue:90 msgid "418 I'm a teapot" msgstr "418 I'm a teapot" @@ -8926,7 +8767,9 @@ msgid "Login Captcha" msgstr "登錄驗證碼" #: src/views/setting/SettingSafe.vue:103 -msgid "When enabled, a captcha will be required after 3 failed login attempts to prevent brute force attacks" +msgid "" +"When enabled, a captcha will be required after 3 failed login attempts to " +"prevent brute force attacks" msgstr "啟用後,在 3 次登錄失敗後將要求輸入驗證碼,以防止暴力破解攻擊" #: src/views/setting/SettingSafe.vue:116 @@ -8934,8 +8777,12 @@ msgid "Request IP Header" msgstr "請求 IP 頭" #: src/views/setting/SettingSafe.vue:121 -msgid "Set the header that carries the real IP of the client, useful when using CDN or reverse proxy. Leave blank to use the client IP directly" -msgstr "設置承載客戶端真實 IP 的請求頭,在使用 CDN 或反向代理時非常有用。留空以直接使用客戶端 IP" +msgid "" +"Set the header that carries the real IP of the client, useful when using CDN " +"or reverse proxy. Leave blank to use the client IP directly" +msgstr "" +"設置承載客戶端真實 IP 的請求頭,在使用 CDN 或反向代理時非常有用。留空以直接使" +"用客戶端 IP" #: src/views/setting/SettingSafe.vue:127 msgid "X-Real-IP" @@ -8946,7 +8793,9 @@ msgid "Bind Domain" msgstr "綁定域名" #: src/views/setting/SettingSafe.vue:139 -msgid "Restrict panel access to the specified domain names. Leave blank to allow access from any domain" +msgid "" +"Restrict panel access to the specified domain names. Leave blank to allow " +"access from any domain" msgstr "限制面板訪問為指定的域名。留空以允許來自任何域名的訪問" #: src/views/setting/SettingSafe.vue:156 @@ -8954,7 +8803,9 @@ msgid "Bind IP" msgstr "綁定 IP" #: src/views/setting/SettingSafe.vue:161 -msgid "Restrict panel access to the specified IP addresses. Leave blank to allow access from any IP" +msgid "" +"Restrict panel access to the specified IP addresses. Leave blank to allow " +"access from any IP" msgstr "限制面板訪問為指定的 IP 地址。留空以允許來自任何 IP 的訪問" #: src/views/setting/SettingSafe.vue:174 @@ -8962,7 +8813,9 @@ msgid "Bind UA" msgstr "綁定 UA" #: src/views/setting/SettingSafe.vue:179 -msgid "Restrict panel access to the specified User-Agent strings. Leave blank to allow access from any User-Agent" +msgid "" +"Restrict panel access to the specified User-Agent strings. Leave blank to " +"allow access from any User-Agent" msgstr "限制面板訪問為指定的用戶代理字符串。留空以允許任何用戶代理的訪問" #: src/views/setting/SettingSafe.vue:196 @@ -8970,24 +8823,38 @@ msgid "Offline Mode" msgstr "離線模式" #: src/views/setting/SettingSafe.vue:201 -msgid "When enabled, the panel will not attempt to connect to external services for updates or other features. This may limit some functionalities" -msgstr "啟用後,面板將不會嘗試連接外部服務以獲取更新或其他功能。這可能會限制某些功能" +msgid "" +"When enabled, the panel will not attempt to connect to external services for " +"updates or other features. This may limit some functionalities" +msgstr "" +"啟用後,面板將不會嘗試連接外部服務以獲取更新或其他功能。這可能會限制某些功能" #: src/views/setting/SettingSafe.vue:214 msgid "Auto Update" msgstr "自動更新" #: src/views/setting/SettingSafe.vue:219 -msgid "When enabled, the panel will automatically check for and install updates when they are available. It is recommended to keep this enabled to ensure you have the latest features and security patches" -msgstr "啟用後,面板將自動檢查並安裝可用的更新。建議保持此功能啟用,以確保您擁有最新的功能和安全補丁" +msgid "" +"When enabled, the panel will automatically check for and install updates " +"when they are available. It is recommended to keep this enabled to ensure " +"you have the latest features and security patches" +msgstr "" +"啟用後,面板將自動檢查並安裝可用的更新。建議保持此功能啟用,以確保您擁有最新" +"的功能和安全補丁" #: src/views/setting/SettingSafe.vue:232 msgid "Panel HTTPS" msgstr "面板 HTTPS" #: src/views/setting/SettingSafe.vue:237 -msgid "Enable HTTPS for the panel. ACME will automatically obtain and renew the certificate daily (requires panel accessible via public IP). Self-Signed generates a certificate automatically (browsers will show a warning). Custom allows you to provide your own certificate" -msgstr "為面板啟用 HTTPS。ACME 將每天自動取得並更新憑證(需支援透過公網 IP 存取面板)。自簽名會自動產生憑證(瀏覽器會顯示警告)。自訂允許您提供自己的憑證" +msgid "" +"Enable HTTPS for the panel. ACME will automatically obtain and renew the " +"certificate daily (requires panel accessible via public IP). Self-Signed " +"generates a certificate automatically (browsers will show a warning). Custom " +"allows you to provide your own certificate" +msgstr "" +"為面板啟用 HTTPS。ACME 將每天自動取得並更新憑證(需支援透過公網 IP 存取面" +"板)。自簽名會自動產生憑證(瀏覽器會顯示警告)。自訂允許您提供自己的憑證" #: src/views/setting/SettingSafe.vue:247 msgid "ACME (Auto)" @@ -9001,14 +8868,16 @@ msgstr "自簽名" msgid "Custom Certificate" msgstr "自訂證書" -#: src/views/setting/SettingSafe.vue:257 -#: src/views/setting/SettingSafe.vue:262 +#: src/views/setting/SettingSafe.vue:257 src/views/setting/SettingSafe.vue:262 msgid "Panel Public IP" msgstr "面板公網 IP" #: src/views/setting/SettingSafe.vue:267 -msgid "Panel public IP is used to issue HTTPS certificates using ACME. Ensure that the entered IP address is accessible from the public network." -msgstr "面板公網 IP 用於使用 ACME 頒發 HTTPS 證書。確保輸入的 IP 地址可以從公網訪問。" +msgid "" +"Panel public IP is used to issue HTTPS certificates using ACME. Ensure that " +"the entered IP address is accessible from the public network." +msgstr "" +"面板公網 IP 用於使用 ACME 頒發 HTTPS 證書。確保輸入的 IP 地址可以從公網訪問。" #: src/views/setting/SettingUser.vue:56 msgid "2FA" @@ -9018,8 +8887,7 @@ msgstr "兩步驗證" msgid "Disabled successfully" msgstr "禁用成功" -#: src/views/setting/SettingUser.vue:104 -#: src/views/setting/TokenModal.vue:202 +#: src/views/setting/SettingUser.vue:104 src/views/setting/TokenModal.vue:202 msgid "Access Tokens" msgstr "訪問令牌" @@ -9047,23 +8915,19 @@ msgstr "複製並關閉" msgid "Copy failed" msgstr "複製失敗" -#: src/views/setting/TokenModal.vue:212 -#: src/views/setting/TokenModal.vue:239 +#: src/views/setting/TokenModal.vue:212 src/views/setting/TokenModal.vue:239 msgid "Create Access Token" msgstr "創建訪問令牌" -#: src/views/setting/TokenModal.vue:248 -#: src/views/setting/TokenModal.vue:286 +#: src/views/setting/TokenModal.vue:248 src/views/setting/TokenModal.vue:286 msgid "IP White List" msgstr "IP 白名單" -#: src/views/setting/TokenModal.vue:251 -#: src/views/setting/TokenModal.vue:289 +#: src/views/setting/TokenModal.vue:251 src/views/setting/TokenModal.vue:289 msgid "127.0.0.1" msgstr "127.0.0.1" -#: src/views/setting/TokenModal.vue:259 -#: src/views/setting/TokenModal.vue:297 +#: src/views/setting/TokenModal.vue:259 src/views/setting/TokenModal.vue:297 msgid "Please select the expiration time" msgstr "請選擇到期時間" @@ -9084,7 +8948,8 @@ msgid "Scan the QR code with your 2FA app and enter the code below" msgstr "用您的兩步驗證應用掃描二維碼並在下方輸入代碼" #: src/views/setting/TwoFaModal.vue:73 -msgid "If you cannot scan the QR code, please enter the URL below in your 2FA app" +msgid "" +"If you cannot scan the QR code, please enter the URL below in your 2FA app" msgstr "如果您無法掃描二維碼,請在您的兩步驗證應用中輸入下面的 URL" #: src/views/setting/TwoFaModal.vue:86 @@ -9095,76 +8960,343 @@ msgstr "代碼" msgid "Enter the code" msgstr "輸入代碼" -#: src/views/ssh/CreateModal.vue:53 -#: src/views/ssh/IndexView.vue:533 +#: src/views/ssh/CreateModal.vue:53 src/views/ssh/IndexView.vue:575 msgid "Create Host" msgstr "創建主機" -#: src/views/ssh/CreateModal.vue:76 -#: src/views/ssh/UpdateModal.vue:82 +#: src/views/ssh/CreateModal.vue:76 src/views/ssh/UpdateModal.vue:82 msgid "Authentication Method" msgstr "驗證方式" -#: src/views/ssh/CreateModal.vue:95 -#: src/views/ssh/UpdateModal.vue:101 +#: src/views/ssh/CreateModal.vue:95 src/views/ssh/UpdateModal.vue:101 msgid "Passphrase" msgstr "密碼短語" -#: src/views/ssh/CreateModal.vue:100 -#: src/views/ssh/UpdateModal.vue:106 +#: src/views/ssh/CreateModal.vue:100 src/views/ssh/UpdateModal.vue:106 msgid "Leave empty if key has no passphrase" msgstr "如果密鑰沒有密碼短語,請留空" -#: src/views/ssh/CreateModal.vue:103 -#: src/views/ssh/UpdateModal.vue:109 +#: src/views/ssh/CreateModal.vue:103 src/views/ssh/UpdateModal.vue:109 msgid "Remarks" msgstr "備註" -#: src/views/ssh/IndexView.vue:65 -msgid "Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" +#: src/views/ssh/IndexView.vue:67 +msgid "" +"Clipboard is unavailable in non-HTTPS context, please use Ctrl+V to paste" msgstr "剪貼簿在非 HTTPS 環境下不可用,請使用 Ctrl+V 貼上" -#: src/views/ssh/IndexView.vue:121 +#: src/views/ssh/IndexView.vue:97 src/views/ssh/IndexView.vue:178 +#, fuzzy +msgid "File Transfer" +msgstr "文件名" + +#: src/views/ssh/IndexView.vue:128 msgid "Are you sure you want to delete this host?" msgstr "您確定要刪除這個主機嗎?" -#: src/views/ssh/IndexView.vue:284 +#: src/views/ssh/IndexView.vue:316 msgid "Connection closed. Please refresh." msgstr "連接已關閉。請刷新。" -#: src/views/ssh/IndexView.vue:289 +#: src/views/ssh/IndexView.vue:321 msgid "Connection error. Please refresh." msgstr "連接錯誤。請刷新。" -#: src/views/ssh/IndexView.vue:473 +#: src/views/ssh/IndexView.vue:511 msgid "New Session" msgstr "新建會話" -#: src/views/ssh/IndexView.vue:500 +#: src/views/ssh/IndexView.vue:538 msgid "Manage Hosts" msgstr "管理主機" -#: src/views/ssh/IndexView.vue:505 +#: src/views/ssh/IndexView.vue:543 msgid "Exit Fullscreen" msgstr "退出全螢幕" -#: src/views/ssh/IndexView.vue:505 +#: src/views/ssh/IndexView.vue:543 msgid "Fullscreen" msgstr "全螢幕" -#: src/views/ssh/IndexView.vue:527 -#: src/views/toolbox/SystemView.vue:237 +#: src/views/ssh/IndexView.vue:569 src/views/toolbox/SystemView.vue:237 msgid "Hosts" msgstr "Hosts" -#: src/views/ssh/IndexView.vue:552 +#: src/views/ssh/IndexView.vue:594 msgid "Bash session on this server" msgstr "此伺服器上的 Bash 會話" +#: src/views/ssh/SftpBrowser.vue:133 +#, fuzzy +msgid "Parent Directory" +msgstr "項目目錄" + +#: src/views/ssh/SftpBrowser.vue:145 +#, fuzzy +msgid "Create Directory" +msgstr "網站目錄" + +#: src/views/ssh/SftpBrowser.vue:155 +#, fuzzy +msgid "Directory name" +msgstr "目錄" + +#: src/views/ssh/SftpBrowser.vue:195 +#, fuzzy +msgid "Empty directory" +msgstr "根目錄" + +#: src/views/ssh/SftpPanel.vue:60 +#, fuzzy +msgid "Please select files to transfer" +msgstr "請選擇要刪除的規則" + +#: src/views/ssh/SftpPanel.vue:64 +msgid "Source and destination are the same directory" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:134 +#, fuzzy +msgid "Connection closed" +msgstr "連接已關閉。" + +#: src/views/ssh/SftpPanel.vue:165 +#, fuzzy +msgid "Cancelled" +msgstr "已取消" + +#: src/views/ssh/SftpPanel.vue:206 +#, fuzzy +msgid "Transfer to right" +msgstr "進行傳輸" + +#: src/views/ssh/SftpPanel.vue:216 +#, fuzzy +msgid "Transfer to left" +msgstr "進行傳輸" + +#: src/views/ssh/SftpPanel.vue:234 +msgid "Transfer Queue" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:236 +msgid "Clear Finished" +msgstr "" + +#: src/views/ssh/SftpPanel.vue:272 src/views/task/TaskView.vue:42 +#: src/views/toolbox/ProcessView.vue:53 src/views/toolbox/ProcessView.vue:89 +msgid "Waiting" +msgstr "正在駐留等待" + #: src/views/ssh/UpdateModal.vue:59 msgid "Update Host" msgstr "更新主機" +#: src/views/tamper/IndexView.vue:47 +msgid "eBPF mode is not available, please activate it first" +msgstr "" + +#: src/views/tamper/IndexView.vue:64 +msgid "Activate eBPF LSM" +msgstr "" + +#: src/views/tamper/IndexView.vue:65 +msgid "" +"The panel will modify the kernel boot parameters (append bpf to the LSM " +"list) and reboot the server immediately. All services will be interrupted " +"during the reboot. Continue?" +msgstr "" + +#: src/views/tamper/IndexView.vue:74 +msgid "The server is rebooting, please reconnect later" +msgstr "" + +#: src/views/tamper/IndexView.vue:116 src/views/tamper/RuleModal.vue:102 +#, fuzzy +msgid "Protected Directory" +msgstr "項目目錄" + +#: src/views/tamper/IndexView.vue:118 +msgid "Extensions" +msgstr "" + +#: src/views/tamper/IndexView.vue:122 +#, fuzzy +msgid "All files" +msgstr "所有站點" + +#: src/views/tamper/IndexView.vue:132 src/views/tamper/RuleModal.vue:111 +#: src/views/task/CronView.vue:76 src/views/toolbox/WebHookView.vue:91 +#: src/views/toolbox/WebHookView.vue:386 +msgid "Enabled" +msgstr "已啟用" + +#: src/views/tamper/IndexView.vue:149 +#, fuzzy +msgid "Are you sure to delete this rule?" +msgstr "您確定要刪除該用戶嗎?" + +#: src/views/tamper/IndexView.vue:188 +#, fuzzy +msgid "Operation" +msgstr "操作員" + +#: src/views/tamper/IndexView.vue:202 src/views/tamper/IndexView.vue:370 +#: src/views/website/EditModal.vue:2116 +msgid "Clear Logs" +msgstr "清除日誌" + +#: src/views/tamper/IndexView.vue:203 +#, fuzzy +msgid "Are you sure to clear all interception logs?" +msgstr "您確定要清理所有會話文件嗎?" + +#: src/views/tamper/IndexView.vue:218 +#, fuzzy +msgid "Protection Rules" +msgstr "保護模式" + +#: src/views/tamper/IndexView.vue:219 +#, fuzzy +msgid "Interception Logs" +msgstr "操作日誌" + +#: src/views/tamper/IndexView.vue:226 +msgid "Tamper protection is only supported on Linux." +msgstr "" + +#: src/views/tamper/IndexView.vue:233 +#, fuzzy +msgid "Protecting" +msgstr "保護模式" + +#: src/views/tamper/IndexView.vue:236 +#, fuzzy +msgid "Protected Files" +msgstr "保護 /home" + +#: src/views/tamper/IndexView.vue:239 +#, fuzzy +msgid "Protected Directories" +msgstr "項目目錄" + +#: src/views/tamper/IndexView.vue:247 +#, fuzzy +msgid "Enable Protection" +msgstr "啟用速率限制" + +#: src/views/tamper/IndexView.vue:252 +#, fuzzy +msgid "File Lock (chattr)" +msgstr "文件(截斷)" + +#: src/views/tamper/IndexView.vue:256 +#, fuzzy +msgid "Mode Description" +msgstr "描述" + +#: src/views/tamper/IndexView.vue:259 +msgid "" +"Locks files with the immutable attribute, enforced by the kernel at the VFS " +"layer. Works on all distributions with no kernel dependency. Blocks " +"tampering by web processes, but not root." +msgstr "" + +#: src/views/tamper/IndexView.vue:266 +msgid "" +"Intercepts write/delete/rename via eBPF-LSM with per-process tracing. More " +"precise and auditable, but requires the bpf LSM to be active in the kernel." +msgstr "" + +#: src/views/tamper/IndexView.vue:272 +#, fuzzy +msgid "Block New Files" +msgstr "新文件" + +#: src/views/tamper/IndexView.vue:277 +msgid "" +"Delete newly created files of protected types in protected directories. When " +"off, new files are frozen and logged instead." +msgstr "" + +#: src/views/tamper/IndexView.vue:284 +#, fuzzy +msgid "Log Retention (days)" +msgstr "保存天數" + +#: src/views/tamper/IndexView.vue:294 src/views/website/SettingView.vue:108 +#: src/views/website/SettingView.vue:123 src/views/website/SettingView.vue:138 +#: src/views/website/SettingView.vue:162 src/views/website/SettingView.vue:202 +#: src/views/website/SettingView.vue:265 +msgid "Save Changes" +msgstr "保存更改" + +#: src/views/tamper/IndexView.vue:301 +#, fuzzy +msgid "eBPF Environment" +msgstr "環境" + +#: src/views/tamper/IndexView.vue:304 +#, fuzzy +msgid "Kernel Version" +msgstr "系統內核版本" + +#: src/views/tamper/IndexView.vue:307 +#, fuzzy +msgid "Active LSM" +msgstr "活躍" + +#: src/views/tamper/IndexView.vue:310 +#, fuzzy +msgid "eBPF Available" +msgstr "可用" + +#: src/views/tamper/IndexView.vue:312 src/views/toolbox/DiskView.vue:250 +msgid "Available" +msgstr "可用" + +#: src/views/tamper/IndexView.vue:312 +#, fuzzy +msgid "Unavailable" +msgstr "可用" + +#: src/views/tamper/IndexView.vue:326 +msgid "Activate eBPF and Reboot" +msgstr "" + +#: src/views/tamper/RuleModal.vue:83 +#, fuzzy +msgid "Edit Rule" +msgstr "新增規則" + +#: src/views/tamper/RuleModal.vue:90 +#, fuzzy +msgid "Quick Select Website" +msgstr "選擇網站" + +#: src/views/tamper/RuleModal.vue:95 +msgid "Pick a website to fill name and path" +msgstr "" + +#: src/views/tamper/RuleModal.vue:100 +msgid "Rule identifier, usually the website name" +msgstr "" + +#: src/views/tamper/RuleModal.vue:105 +msgid "Protected Extensions" +msgstr "" + +#: src/views/tamper/RuleModal.vue:108 +#, fuzzy +msgid "Exclude Paths" +msgstr "可執行路徑" + +#: src/views/tamper/RuleModal.vue:117 +msgid "" +"Leave extensions empty to protect all files (directories become append-" +"only). Excludes accept a path segment name (e.g. cache) or an absolute path." +msgstr "" + #: src/views/task/CreateModal.vue:36 msgid "# Enter your script content here" msgstr "# 在此處輸入您的腳本內容" @@ -9205,20 +9337,17 @@ msgstr "日誌輪轉 - 網站" msgid "Log Rotation - Container" msgstr "日誌輪轉 - 容器" -#: src/views/task/CreateModal.vue:152 -#: src/views/task/CreateModal.vue:338 +#: src/views/task/CreateModal.vue:152 src/views/task/CreateModal.vue:338 #: src/views/task/CronView.vue:71 msgid "Log Rotation" msgstr "日誌輪替" -#: src/views/task/CreateModal.vue:157 -#: src/views/task/CreateModal.vue:339 +#: src/views/task/CreateModal.vue:157 src/views/task/CreateModal.vue:339 #: src/views/task/CronView.vue:68 msgid "Access URL" msgstr "訪問 URL" -#: src/views/task/CreateModal.vue:159 -#: src/views/task/CreateModal.vue:340 +#: src/views/task/CreateModal.vue:159 src/views/task/CreateModal.vue:340 #: src/views/task/CronView.vue:69 msgid "Sync Time" msgstr "同步時間" @@ -9231,32 +9360,25 @@ msgstr "創建計劃任務" msgid "Edit Scheduled Task" msgstr "編輯計劃任務" -#: src/views/task/CreateModal.vue:332 -#: src/views/task/CronView.vue:57 +#: src/views/task/CreateModal.vue:332 src/views/task/CronView.vue:57 msgid "Task Type" msgstr "任務類型" -#: src/views/task/CreateModal.vue:336 -#: src/views/task/CronView.vue:66 +#: src/views/task/CreateModal.vue:336 src/views/task/CronView.vue:66 msgid "Run Script" msgstr "運行腳本" -#: src/views/task/CreateModal.vue:337 -#: src/views/task/CronView.vue:67 +#: src/views/task/CreateModal.vue:337 src/views/task/CronView.vue:67 msgid "Backup Data" msgstr "備份數據" -#: src/views/task/CreateModal.vue:344 -#: src/views/task/CreateModal.vue:345 -#: src/views/task/CronView.vue:50 -#: src/views/task/CronView.vue:318 -#: src/views/task/CronView.vue:319 -#: src/views/task/TaskView.vue:27 +#: src/views/task/CreateModal.vue:344 src/views/task/CreateModal.vue:345 +#: src/views/task/CronView.vue:50 src/views/task/CronView.vue:318 +#: src/views/task/CronView.vue:319 src/views/task/TaskView.vue:27 msgid "Task Name" msgstr "任務名稱" -#: src/views/task/CreateModal.vue:352 -#: src/views/task/CronView.vue:90 +#: src/views/task/CreateModal.vue:352 src/views/task/CronView.vue:90 #: src/views/task/CronView.vue:321 msgid "Task Schedule" msgstr "任務週期" @@ -9265,14 +9387,14 @@ msgstr "任務週期" msgid "Retention Count" msgstr "保留數量" -#: src/views/task/CreateModal.vue:362 -#: src/views/task/CronView.vue:324 +#: src/views/task/CreateModal.vue:362 src/views/task/CronView.vue:324 msgid "Process Lock" msgstr "進程鎖" -#: src/views/task/CreateModal.vue:366 -#: src/views/task/CronView.vue:328 -msgid "Prevent duplicate execution: skip this run if the previous one is still running" +#: src/views/task/CreateModal.vue:366 src/views/task/CronView.vue:328 +msgid "" +"Prevent duplicate execution: skip this run if the previous one is still " +"running" msgstr "防止重複執行:如果上次運行未結束,則跳過本次運行" #: src/views/task/CreateModal.vue:373 @@ -9295,8 +9417,7 @@ msgstr "標頭名稱" msgid "Header Value" msgstr "標頭值" -#: src/views/task/CreateModal.vue:418 -#: src/views/task/CreateModal.vue:423 +#: src/views/task/CreateModal.vue:418 src/views/task/CreateModal.vue:423 msgid "Request Body" msgstr "請求體" @@ -9340,8 +9461,7 @@ msgstr "Valkey" msgid "Rotation Type" msgstr "輪轉類型" -#: src/views/task/CreateModal.vue:497 -#: src/views/task/CreateModal.vue:503 +#: src/views/task/CreateModal.vue:497 src/views/task/CreateModal.vue:503 #: src/views/website/CreateModal.vue:252 msgid "Select Database" msgstr "選擇數據庫" @@ -9350,8 +9470,7 @@ msgstr "選擇數據庫" msgid "Enter directory path" msgstr "輸入目錄路徑" -#: src/views/task/CreateModal.vue:529 -#: src/views/task/CreateModal.vue:535 +#: src/views/task/CreateModal.vue:529 src/views/task/CreateModal.vue:535 msgid "Select Container" msgstr "選擇容器" @@ -9359,12 +9478,6 @@ msgstr "選擇容器" msgid "Select storage" msgstr "選擇儲存" -#: src/views/task/CronView.vue:76 -#: src/views/toolbox/WebHookView.vue:91 -#: src/views/toolbox/WebHookView.vue:386 -msgid "Enabled" -msgstr "已啟用" - #: src/views/task/CronView.vue:110 msgid "Last Update Time" msgstr "最後更新時間" @@ -9397,12 +9510,6 @@ msgstr "您確定要刪除所選任務嗎?" msgid "Completed" msgstr "已完成" -#: src/views/task/TaskView.vue:42 -#: src/views/toolbox/ProcessView.vue:53 -#: src/views/toolbox/ProcessView.vue:89 -msgid "Waiting" -msgstr "正在駐留等待" - #: src/views/task/TaskView.vue:58 msgid "Completion Time" msgstr "完成時間" @@ -9431,8 +9538,11 @@ msgid "Pending benchmark" msgstr "待跑分" #: src/views/toolbox/BenchmarkView.vue:90 -msgid "Benchmark results are for reference only and may differ from actual performance due to system resource scheduling, caching, and other factors!" -msgstr "跑分結果僅供參考,由於系統資源調度、快取和其他因素,可能與實際性能有所不同!" +msgid "" +"Benchmark results are for reference only and may differ from actual " +"performance due to system resource scheduling, caching, and other factors!" +msgstr "" +"跑分結果僅供參考,由於系統資源調度、快取和其他因素,可能與實際性能有所不同!" #: src/views/toolbox/BenchmarkView.vue:97 msgid "Benchmarking in progress, it may take some time..." @@ -9510,8 +9620,7 @@ msgstr "跑分中……" msgid "Start Benchmark" msgstr "開始跑分" -#: src/views/toolbox/disk/RaidView.vue:93 -#: src/views/toolbox/DiskView.vue:603 +#: src/views/toolbox/disk/RaidView.vue:93 src/views/toolbox/DiskView.vue:603 #: src/views/toolbox/DiskView.vue:912 msgid "Device" msgstr "設備" @@ -9691,11 +9800,6 @@ msgstr "選擇一個磁盤" msgid "No SMART-capable disks found" msgstr "未找到支持 SMART 的磁盤" -#: src/views/toolbox/disk/SmartView.vue:280 -#: src/views/toolbox/PanelView.vue:98 -msgid "Basic Info" -msgstr "基本信息" - #: src/views/toolbox/disk/SmartView.vue:301 msgid "Health Status" msgstr "健康狀態" @@ -9720,8 +9824,7 @@ msgstr "無可用 SMART 屬性" msgid "Failed to parse disk data, please refresh and try again" msgstr "無法解析磁碟數據,請刷新並重試" -#: src/views/toolbox/DiskView.vue:231 -#: src/views/toolbox/DiskView.vue:687 +#: src/views/toolbox/DiskView.vue:231 src/views/toolbox/DiskView.vue:687 #: src/views/toolbox/DiskView.vue:726 msgid "Partition" msgstr "分區" @@ -9730,29 +9833,25 @@ msgstr "分區" msgid "Used" msgstr "已用" -#: src/views/toolbox/DiskView.vue:250 -msgid "Available" -msgstr "可用" - #: src/views/toolbox/DiskView.vue:267 msgid "Not Mounted" msgstr "未掛載" -#: src/views/toolbox/DiskView.vue:290 -#: src/views/toolbox/DiskView.vue:605 +#: src/views/toolbox/DiskView.vue:290 src/views/toolbox/DiskView.vue:605 msgid "FS" msgstr "檔案系統" -#: src/views/toolbox/DiskView.vue:340 -#: src/views/toolbox/DiskView.vue:476 -#: src/views/toolbox/DiskView.vue:517 -#: src/views/toolbox/DiskView.vue:560 +#: src/views/toolbox/DiskView.vue:340 src/views/toolbox/DiskView.vue:476 +#: src/views/toolbox/DiskView.vue:517 src/views/toolbox/DiskView.vue:560 msgid "Please fill in all fields" msgstr "請填寫所有欄位" #: src/views/toolbox/DiskView.vue:344 -msgid "Are you sure you want to mount %{ device } to %{ path } and write to fstab for auto-mount on boot?" -msgstr "您確定要將 %{ device } 掛載到 %{ path } 並寫入 fstab 以在啟動時自動掛載嗎?" +msgid "" +"Are you sure you want to mount %{ device } to %{ path } and write to fstab " +"for auto-mount on boot?" +msgstr "" +"您確定要將 %{ device } 掛載到 %{ path } 並寫入 fstab 以在啟動時自動掛載嗎?" #: src/views/toolbox/DiskView.vue:348 msgid "Are you sure you want to mount %{ device } to %{ path }?" @@ -9770,22 +9869,20 @@ msgstr "您確定要卸載這個分區嗎?" msgid "Unmounted successfully" msgstr "卸載成功" -#: src/views/toolbox/DiskView.vue:390 -#: src/views/toolbox/DiskView.vue:437 +#: src/views/toolbox/DiskView.vue:390 src/views/toolbox/DiskView.vue:437 msgid "Please select a device" msgstr "請選擇一個設備" -#: src/views/toolbox/DiskView.vue:394 -#: src/views/toolbox/DiskView.vue:417 -#: src/views/toolbox/DiskView.vue:459 -#: src/views/toolbox/DiskView.vue:499 -#: src/views/toolbox/DiskView.vue:542 -#: src/views/toolbox/DiskView.vue:586 +#: src/views/toolbox/DiskView.vue:394 src/views/toolbox/DiskView.vue:417 +#: src/views/toolbox/DiskView.vue:459 src/views/toolbox/DiskView.vue:499 +#: src/views/toolbox/DiskView.vue:542 src/views/toolbox/DiskView.vue:586 msgid "Dangerous Operation" msgstr "危險操作" #: src/views/toolbox/DiskView.vue:395 -msgid "Formatting will erase all data on the partition. This operation is irreversible. Are you sure?" +msgid "" +"Formatting will erase all data on the partition. This operation is " +"irreversible. Are you sure?" msgstr "格式化將刪除分區上的所有數據。此操作是不可逆的。您確定嗎?" #: src/views/toolbox/DiskView.vue:398 @@ -9801,8 +9898,12 @@ msgid "Please enter disk name" msgstr "請輸入磁碟名稱" #: src/views/toolbox/DiskView.vue:418 -msgid "This will delete all partitions on %{ device } and create a single partition. All data will be permanently lost. Are you absolutely sure?" -msgstr "這將刪除 %{ device } 上的所有分區並創建一個單一的分區。所有數據將永久丟失。您確定嗎?" +msgid "" +"This will delete all partitions on %{ device } and create a single " +"partition. All data will be permanently lost. Are you absolutely sure?" +msgstr "" +"這將刪除 %{ device } 上的所有分區並創建一個單一的分區。所有數據將永久丟失。您" +"確定嗎?" #: src/views/toolbox/DiskView.vue:422 msgid "Confirm Initialize" @@ -9837,7 +9938,9 @@ msgid "Volume group created successfully" msgstr "卷組創建成功" #: src/views/toolbox/DiskView.vue:500 -msgid "Are you sure you want to remove the volume group %{ name }? All logical volumes in this group will be deleted!" +msgid "" +"Are you sure you want to remove the volume group %{ name }? All logical " +"volumes in this group will be deleted!" msgstr "您確定要刪除卷組 %{ name } 嗎?此組中的所有邏輯卷將被刪除!" #: src/views/toolbox/DiskView.vue:508 @@ -9845,7 +9948,8 @@ msgid "Volume group removed successfully" msgstr "卷組刪除成功" #: src/views/toolbox/DiskView.vue:522 -msgid "Are you sure you want to create logical volume %{ name } with %{ size }GB?" +msgid "" +"Are you sure you want to create logical volume %{ name } with %{ size }GB?" msgstr "您確定要創建邏輯卷 %{ name },大小為 %{ size }GB 嗎?" #: src/views/toolbox/DiskView.vue:530 @@ -9853,7 +9957,9 @@ msgid "Logical volume created successfully" msgstr "邏輯卷創建成功" #: src/views/toolbox/DiskView.vue:543 -msgid "Are you sure you want to remove the logical volume %{ path }? All data on this volume will be lost!" +msgid "" +"Are you sure you want to remove the logical volume %{ path }? All data on " +"this volume will be lost!" msgstr "您確定要刪除邏輯卷 %{ path } 嗎?該卷上的所有數據將丟失!" #: src/views/toolbox/DiskView.vue:551 @@ -9869,8 +9975,11 @@ msgid "Logical volume extended successfully" msgstr "邏輯卷擴展成功" #: src/views/toolbox/DiskView.vue:587 -msgid "Are you sure you want to remove the fstab entry for %{ mountPoint }? This will prevent auto-mount on boot." -msgstr "您確定要刪除 %{ mountPoint } 的 fstab 條目嗎?這將阻止在啟動時自動掛載。" +msgid "" +"Are you sure you want to remove the fstab entry for %{ mountPoint }? This " +"will prevent auto-mount on boot." +msgstr "" +"您確定要刪除 %{ mountPoint } 的 fstab 條目嗎?這將阻止在啟動時自動掛載。" #: src/views/toolbox/DiskView.vue:595 msgid "Fstab entry removed successfully" @@ -9892,13 +10001,11 @@ msgstr "%{ count } 個分區" msgid "No disks found" msgstr "未找到磁碟" -#: src/views/toolbox/DiskView.vue:683 -#: src/views/toolbox/DiskView.vue:713 +#: src/views/toolbox/DiskView.vue:683 src/views/toolbox/DiskView.vue:713 msgid "Mount" msgstr "掛載" -#: src/views/toolbox/DiskView.vue:691 -#: src/views/toolbox/DiskView.vue:730 +#: src/views/toolbox/DiskView.vue:691 src/views/toolbox/DiskView.vue:730 msgid "Select partition" msgstr "選擇分區" @@ -9918,8 +10025,7 @@ msgstr "例如 defaults,noatime" msgid "Auto-mount on boot" msgstr "啟動時自動掛載" -#: src/views/toolbox/DiskView.vue:719 -#: src/views/toolbox/DiskView.vue:741 +#: src/views/toolbox/DiskView.vue:719 src/views/toolbox/DiskView.vue:741 msgctxt "disk action" msgid "Format" msgstr "格式化" @@ -9928,18 +10034,18 @@ msgstr "格式化" msgid "Warning: Formatting will erase all data!" msgstr "警告:格式化將清除所有數據!" -#: src/views/toolbox/DiskView.vue:735 -#: src/views/toolbox/DiskView.vue:767 +#: src/views/toolbox/DiskView.vue:735 src/views/toolbox/DiskView.vue:767 msgid "Filesystem Type" msgstr "檔案系統類型" -#: src/views/toolbox/DiskView.vue:747 -#: src/views/toolbox/DiskView.vue:773 +#: src/views/toolbox/DiskView.vue:747 src/views/toolbox/DiskView.vue:773 msgid "Initialize" msgstr "初始化" #: src/views/toolbox/DiskView.vue:751 -msgid "Warning: This will delete all partitions and create a single partition. All data will be lost!" +msgid "" +"Warning: This will delete all partitions and create a single partition. All " +"data will be lost!" msgstr "警告:這將刪除所有分區並創建一個單分區。所有數據將丟失!" #: src/views/toolbox/DiskView.vue:762 @@ -9958,8 +10064,7 @@ msgstr "無 fstab 條目" msgid "LVM Management" msgstr "LVM 管理" -#: src/views/toolbox/DiskView.vue:803 -#: src/views/toolbox/DiskView.vue:935 +#: src/views/toolbox/DiskView.vue:803 src/views/toolbox/DiskView.vue:935 msgid "Physical Volumes" msgstr "物理卷" @@ -9983,8 +10088,7 @@ msgstr "邏輯卷" msgid "No logical volumes" msgstr "無邏輯卷" -#: src/views/toolbox/DiskView.vue:909 -#: src/views/toolbox/DiskView.vue:922 +#: src/views/toolbox/DiskView.vue:909 src/views/toolbox/DiskView.vue:922 msgid "Create PV" msgstr "創建物理卷" @@ -9992,8 +10096,7 @@ msgstr "創建物理卷" msgid "Select device" msgstr "選擇設備" -#: src/views/toolbox/DiskView.vue:928 -#: src/views/toolbox/DiskView.vue:946 +#: src/views/toolbox/DiskView.vue:928 src/views/toolbox/DiskView.vue:946 msgid "Create VG" msgstr "創建卷組" @@ -10009,8 +10112,7 @@ msgstr "輸入卷組名" msgid "Select PVs" msgstr "選擇物理卷" -#: src/views/toolbox/DiskView.vue:952 -#: src/views/toolbox/DiskView.vue:975 +#: src/views/toolbox/DiskView.vue:952 src/views/toolbox/DiskView.vue:975 msgid "Create LV" msgstr "創建邏輯卷" @@ -10034,8 +10136,7 @@ msgstr "選擇卷組" msgid "Size (GB)" msgstr "大小(GB)" -#: src/views/toolbox/DiskView.vue:981 -#: src/views/toolbox/DiskView.vue:1004 +#: src/views/toolbox/DiskView.vue:981 src/views/toolbox/DiskView.vue:1004 msgid "Extend LV" msgstr "擴展邏輯卷" @@ -10124,7 +10225,9 @@ msgid "Log Cleaner" msgstr "日誌清理" #: src/views/toolbox/LogView.vue:142 -msgid "Scan and clean redundant logs to free up disk space. Cleaning is irreversible." +msgid "" +"Scan and clean redundant logs to free up disk space. Cleaning is " +"irreversible." msgstr "掃描並清理冗餘日誌以釋放磁碟空間。清理操作不可逆。" #: src/views/toolbox/LogView.vue:158 @@ -10159,244 +10262,275 @@ msgstr "掃描" msgid "Clean" msgstr "清理" -#: src/views/toolbox/MigrationView.vue:88 -#: src/views/toolbox/MigrationView.vue:112 +#: src/views/toolbox/MigrationView.vue:89 +#: src/views/toolbox/MigrationView.vue:113 msgid "Please fill in all connection fields" msgstr "請填寫所有連接欄位" -#: src/views/toolbox/MigrationView.vue:124 +#: src/views/toolbox/MigrationView.vue:125 msgid "Environment check refreshed" msgstr "環境檢查已刷新" -#: src/views/toolbox/MigrationView.vue:142 -msgid "Web server mismatch: local is %{local}, remote is %{remote}. Migration cannot proceed." +#: src/views/toolbox/MigrationView.vue:144 +msgid "" +"Web server mismatch: local is %{local}, remote is %{remote}. Migration " +"cannot proceed." msgstr "Web 伺服器不匹配:本地為 %{local},遠程為 %{remote}。無法繼續遷移。" -#: src/views/toolbox/MigrationView.vue:145 -#: src/views/toolbox/MigrationView.vue:146 +#: src/views/toolbox/MigrationView.vue:147 +#: src/views/toolbox/MigrationView.vue:148 msgid "none" msgstr "none" -#: src/views/toolbox/MigrationView.vue:160 -msgid "%{type} is installed locally but not on the remote server. Related projects may need reconfiguration." -msgstr "%{type} 已在本地安裝,但未在遠程伺服器上安裝。相關項目可能需要重新配置。" +#: src/views/toolbox/MigrationView.vue:162 +msgid "" +"%{type} is installed locally but not on the remote server. Related projects " +"may need reconfiguration." +msgstr "" +"%{type} 已在本地安裝,但未在遠程伺服器上安裝。相關項目可能需要重新配置。" -#: src/views/toolbox/MigrationView.vue:180 -msgid "%{type} is installed locally but not on the remote server. Database migration for this type will be skipped." -msgstr "%{type} 已在本地安裝,但未在遠程伺服器上安裝。此類型的資料庫遷移將被跳過。" +#: src/views/toolbox/MigrationView.vue:182 +msgid "" +"%{type} is installed locally but not on the remote server. Database " +"migration for this type will be skipped." +msgstr "" +"%{type} 已在本地安裝,但未在遠程伺服器上安裝。此類型的資料庫遷移將被跳過。" -#: src/views/toolbox/MigrationView.vue:248 +#: src/views/toolbox/MigrationView.vue:203 +#, fuzzy +msgid "Ignore Environment Check" +msgstr "環境預檢查" + +#: src/views/toolbox/MigrationView.vue:204 +msgid "" +"Due to environment inconsistency, migrated items may not work properly after " +"migration. Do you still want to continue?" +msgstr "" + +#: src/views/toolbox/MigrationView.vue:269 msgid "Please select at least one item to migrate" msgstr "請至少選擇一個要遷移的項目" -#: src/views/toolbox/MigrationView.vue:253 +#: src/views/toolbox/MigrationView.vue:274 msgid "Confirm Migration" msgstr "確認遷移" -#: src/views/toolbox/MigrationView.vue:254 -msgid "Are you sure you want to start migration? This will transfer the selected items to the remote server." +#: src/views/toolbox/MigrationView.vue:275 +msgid "" +"Are you sure you want to start migration? This will transfer the selected " +"items to the remote server." msgstr "您確定要開始遷移嗎?這將把選定的項目傳輸到遠程伺服器。" -#: src/views/toolbox/MigrationView.vue:345 +#: src/views/toolbox/MigrationView.vue:366 msgid "Reset Migration" msgstr "重置遷移" -#: src/views/toolbox/MigrationView.vue:346 +#: src/views/toolbox/MigrationView.vue:367 msgid "Are you sure you want to reset the migration state?" msgstr "您確定要重置遷移狀態嗎?" -#: src/views/toolbox/MigrationView.vue:369 +#: src/views/toolbox/MigrationView.vue:391 msgid "Migration state has been reset" msgstr "遷移狀態已重置" -#: src/views/toolbox/MigrationView.vue:407 +#: src/views/toolbox/MigrationView.vue:429 msgid "Enter remote server info" msgstr "輸入遠程伺服器信息" -#: src/views/toolbox/MigrationView.vue:409 +#: src/views/toolbox/MigrationView.vue:431 msgid "Pre-check" msgstr "預檢查" -#: src/views/toolbox/MigrationView.vue:409 +#: src/views/toolbox/MigrationView.vue:431 msgid "Verify environment" msgstr "校驗環境" -#: src/views/toolbox/MigrationView.vue:411 +#: src/views/toolbox/MigrationView.vue:433 msgid "Select Items" msgstr "選擇項目" -#: src/views/toolbox/MigrationView.vue:412 +#: src/views/toolbox/MigrationView.vue:434 msgid "Choose what to migrate" msgstr "選擇要遷移的內容" -#: src/views/toolbox/MigrationView.vue:414 +#: src/views/toolbox/MigrationView.vue:436 msgid "Migrating" msgstr "遷移中" -#: src/views/toolbox/MigrationView.vue:414 +#: src/views/toolbox/MigrationView.vue:436 msgid "Transfer in progress" msgstr "進行傳輸" -#: src/views/toolbox/MigrationView.vue:415 +#: src/views/toolbox/MigrationView.vue:437 msgid "Complete" msgstr "完成" -#: src/views/toolbox/MigrationView.vue:415 +#: src/views/toolbox/MigrationView.vue:437 msgid "View results" msgstr "查看結果" -#: src/views/toolbox/MigrationView.vue:420 +#: src/views/toolbox/MigrationView.vue:442 msgid "Remote Server Connection" msgstr "連接遠程伺服器" -#: src/views/toolbox/MigrationView.vue:422 +#: src/views/toolbox/MigrationView.vue:444 msgid "Panel URL" msgstr "面板 URL" -#: src/views/toolbox/MigrationView.vue:425 +#: src/views/toolbox/MigrationView.vue:447 msgid "e.g. https://remote-server:8888" msgstr "例如 https://remote-server:8888" -#: src/views/toolbox/MigrationView.vue:428 +#: src/views/toolbox/MigrationView.vue:450 msgid "Token ID" msgstr "令牌 ID" -#: src/views/toolbox/MigrationView.vue:431 +#: src/views/toolbox/MigrationView.vue:453 msgid "API Token ID" msgstr "API 令牌 ID" -#: src/views/toolbox/MigrationView.vue:436 +#: src/views/toolbox/MigrationView.vue:458 msgid "Access Token" msgstr "訪問令牌" -#: src/views/toolbox/MigrationView.vue:441 +#: src/views/toolbox/MigrationView.vue:463 msgid "API Access Token" msgstr "API 訪問令牌" -#: src/views/toolbox/MigrationView.vue:453 +#: src/views/toolbox/MigrationView.vue:475 msgid "Environment Pre-check" msgstr "環境預檢查" -#: src/views/toolbox/MigrationView.vue:472 +#: src/views/toolbox/MigrationView.vue:494 msgid "Remote" msgstr "遠程" -#: src/views/toolbox/MigrationView.vue:478 +#: src/views/toolbox/MigrationView.vue:500 msgid "Web Server" msgstr "Web 伺服器" -#: src/views/toolbox/MigrationView.vue:488 -#: src/views/toolbox/MigrationView.vue:539 +#: src/views/toolbox/MigrationView.vue:510 +#: src/views/toolbox/MigrationView.vue:561 msgid "Match" msgstr "匹配" -#: src/views/toolbox/MigrationView.vue:489 +#: src/views/toolbox/MigrationView.vue:511 msgid "Mismatch" msgstr "不匹配" -#: src/views/toolbox/MigrationView.vue:508 -#: src/views/toolbox/MigrationView.vue:523 +#: src/views/toolbox/MigrationView.vue:530 +#: src/views/toolbox/MigrationView.vue:545 msgid "Not installed" msgstr "未安裝" -#: src/views/toolbox/MigrationView.vue:540 +#: src/views/toolbox/MigrationView.vue:562 msgid "Different" msgstr "不同" -#: src/views/toolbox/MigrationView.vue:603 +#: src/views/toolbox/MigrationView.vue:619 +#, fuzzy +msgid "Ignore environment check" +msgstr "環境預檢查" + +#: src/views/toolbox/MigrationView.vue:634 msgid "Select Migration Items" msgstr "選擇遷移項目" -#: src/views/toolbox/MigrationView.vue:605 +#: src/views/toolbox/MigrationView.vue:636 msgid "Websites" msgstr "網站" -#: src/views/toolbox/MigrationView.vue:616 +#: src/views/toolbox/MigrationView.vue:647 msgid "No websites found" msgstr "未找到網站" -#: src/views/toolbox/MigrationView.vue:620 +#: src/views/toolbox/MigrationView.vue:651 msgid "Databases" msgstr "資料庫" -#: src/views/toolbox/MigrationView.vue:632 +#: src/views/toolbox/MigrationView.vue:663 msgid "No databases found" msgstr "未找到資料庫" -#: src/views/toolbox/MigrationView.vue:636 +#: src/views/toolbox/MigrationView.vue:667 msgid "Database Users" msgstr "資料庫用戶" -#: src/views/toolbox/MigrationView.vue:649 +#: src/views/toolbox/MigrationView.vue:680 msgid "No database users found" msgstr "未找到資料庫用戶" -#: src/views/toolbox/MigrationView.vue:653 +#: src/views/toolbox/MigrationView.vue:684 msgid "Projects" msgstr "項目" -#: src/views/toolbox/MigrationView.vue:665 +#: src/views/toolbox/MigrationView.vue:696 msgid "No projects found" msgstr "未找到項目" -#: src/views/toolbox/MigrationView.vue:671 +#: src/views/toolbox/MigrationView.vue:702 msgid "Stop services during migration to ensure data consistency (recommended)" msgstr "遷移期間停止服務以確保資料一致性(推薦)" -#: src/views/toolbox/MigrationView.vue:683 +#: src/views/toolbox/MigrationView.vue:714 msgid "Start Migration" msgstr "開始遷移" -#: src/views/toolbox/MigrationView.vue:689 +#: src/views/toolbox/MigrationView.vue:720 msgid "Migration Progress" msgstr "遷移進度" -#: src/views/toolbox/MigrationView.vue:717 +#: src/views/toolbox/MigrationView.vue:748 msgid "Migration Logs" msgstr "遷移日誌" -#: src/views/toolbox/MigrationView.vue:726 -#: src/views/toolbox/MigrationView.vue:831 +#: src/views/toolbox/MigrationView.vue:757 +#: src/views/toolbox/MigrationView.vue:862 msgid "Download Log" msgstr "下載日誌" -#: src/views/toolbox/MigrationView.vue:750 +#: src/views/toolbox/MigrationView.vue:781 msgid "Migration in progress..." msgstr "遷移進行中……" -#: src/views/toolbox/MigrationView.vue:757 +#: src/views/toolbox/MigrationView.vue:788 msgid "Migration Complete" msgstr "遷移完成" -#: src/views/toolbox/MigrationView.vue:762 +#: src/views/toolbox/MigrationView.vue:793 msgid "All items migrated successfully" msgstr "所有項目遷移成功" -#: src/views/toolbox/MigrationView.vue:763 +#: src/views/toolbox/MigrationView.vue:794 msgid "Migration completed with some issues" msgstr "遷移部分完成" -#: src/views/toolbox/MigrationView.vue:769 +#: src/views/toolbox/MigrationView.vue:800 msgid "Started" msgstr "開始" -#: src/views/toolbox/MigrationView.vue:771 +#: src/views/toolbox/MigrationView.vue:802 msgid "Ended" msgstr "結束" -#: src/views/toolbox/MigrationView.vue:803 +#: src/views/toolbox/MigrationView.vue:834 msgid "Migration succeeded" msgstr "遷移成功" -#: src/views/toolbox/MigrationView.vue:819 +#: src/views/toolbox/MigrationView.vue:850 msgid "Reminder" msgstr "提醒" -#: src/views/toolbox/MigrationView.vue:823 -msgid "Some environments differ between local and remote servers. You may need to adjust settings on the remote server otherwise related items may not work properly after migration." -msgstr "本地和遠程伺服器之間存在一些環境差異。您可能需要在遠程伺服器上調整設置,否則相關項目在遷移後可能無法正常工作。" +#: src/views/toolbox/MigrationView.vue:854 +msgid "" +"Some environments differ between local and remote servers. You may need to " +"adjust settings on the remote server otherwise related items may not work " +"properly after migration." +msgstr "" +"本地和遠程伺服器之間存在一些環境差異。您可能需要在遠程伺服器上調整設置,否則" +"相關項目在遷移後可能無法正常工作。" -#: src/views/toolbox/MigrationView.vue:834 +#: src/views/toolbox/MigrationView.vue:865 msgid "Start New Migration" msgstr "開始新遷移" @@ -10436,8 +10570,7 @@ msgstr "Goroutines" msgid "Cgo Calls" msgstr "Cgo 調用" -#: src/views/toolbox/PanelView.vue:123 -#: src/views/toolbox/PanelView.vue:145 +#: src/views/toolbox/PanelView.vue:123 src/views/toolbox/PanelView.vue:145 msgid "Allocated" msgstr "已分配" @@ -10457,8 +10590,7 @@ msgstr "分配次數" msgid "Frees" msgstr "釋放次數" -#: src/views/toolbox/PanelView.vue:151 -#: src/views/toolbox/ProcessView.vue:51 +#: src/views/toolbox/PanelView.vue:151 src/views/toolbox/ProcessView.vue:51 #: src/views/toolbox/ProcessView.vue:85 msgid "Idle" msgstr "空閒" @@ -10539,18 +10671,15 @@ msgstr "總計:%{ count }" msgid "All Status" msgstr "所有狀態" -#: src/views/toolbox/ProcessView.vue:49 -#: src/views/toolbox/ProcessView.vue:81 +#: src/views/toolbox/ProcessView.vue:49 src/views/toolbox/ProcessView.vue:81 msgid "Sleeping" msgstr "睡眠" -#: src/views/toolbox/ProcessView.vue:52 -#: src/views/toolbox/ProcessView.vue:87 +#: src/views/toolbox/ProcessView.vue:52 src/views/toolbox/ProcessView.vue:87 msgid "Zombie" msgstr "僵屍進程" -#: src/views/toolbox/ProcessView.vue:54 -#: src/views/toolbox/ProcessView.vue:91 +#: src/views/toolbox/ProcessView.vue:54 src/views/toolbox/ProcessView.vue:91 msgid "Locked" msgstr "已鎖定" @@ -10594,18 +10723,15 @@ msgstr "用戶信號 2(SIGUSR2)" msgid "Blocked" msgstr "阻塞" -#: src/views/toolbox/ProcessView.vue:114 -#: src/views/toolbox/ProcessView.vue:390 +#: src/views/toolbox/ProcessView.vue:114 src/views/toolbox/ProcessView.vue:390 msgid "Parent PID" msgstr "父進程 PID" -#: src/views/toolbox/ProcessView.vue:121 -#: src/views/toolbox/ProcessView.vue:402 +#: src/views/toolbox/ProcessView.vue:121 src/views/toolbox/ProcessView.vue:402 msgid "Threads" msgstr "線程" -#: src/views/toolbox/ProcessView.vue:162 -#: src/views/toolbox/ProcessView.vue:423 +#: src/views/toolbox/ProcessView.vue:162 src/views/toolbox/ProcessView.vue:423 msgid "Start Time" msgstr "啟動時間" @@ -10653,10 +10779,6 @@ msgstr "可執行路徑" msgid "Command Line" msgstr "命令行" -#: src/views/toolbox/ProcessView.vue:453 -msgid "No environment variables" -msgstr "無環境變數" - #: src/views/toolbox/ProcessView.vue:461 msgid "Open Files" msgstr "已開啟檔案" @@ -10713,8 +10835,7 @@ msgstr "請輸入密碼" msgid "Root password updated" msgstr "Root 密碼已更新" -#: src/views/toolbox/SshView.vue:135 -#: src/views/toolbox/SshView.vue:148 +#: src/views/toolbox/SshView.vue:135 src/views/toolbox/SshView.vue:148 msgid "SSH key generated" msgstr "SSH 密鑰已生成" @@ -10782,10 +10903,6 @@ msgstr "輸入新密碼" msgid "Generate Random" msgstr "隨機生成" -#: src/views/toolbox/SshView.vue:314 -msgid "Reset" -msgstr "重置" - #: src/views/toolbox/SshView.vue:324 msgid "Root SSH Key" msgstr "Root SSH 密鑰" @@ -10799,7 +10916,9 @@ msgid "Root Private Key" msgstr "Root 私鑰" #: src/views/toolbox/SshView.vue:365 -msgid "This is the private key of the root user. Keep it safe and use it to login to this server." +msgid "" +"This is the private key of the root user. Keep it safe and use it to login " +"to this server." msgstr "這是 root 用戶的私鑰。請妥善保管,並用它登入到此伺服器。" #: src/views/toolbox/SshView.vue:375 @@ -10847,7 +10966,9 @@ msgid "Enter hostname, e.g. myserver" msgstr "輸入主機名,例如 myserver" #: src/views/toolbox/SystemView.vue:254 -msgid "After manually changing the time, it may still be overwritten by system automatic time synchronization." +msgid "" +"After manually changing the time, it may still be overwritten by system " +"automatic time synchronization." msgstr "手動更改時間後,系統自動時間同步可能仍會覆蓋設置。" #: src/views/toolbox/SystemView.vue:260 @@ -10883,11 +11004,15 @@ msgid "System NTP Server Configuration" msgstr "系統 NTP 服務器配置" #: src/views/toolbox/SystemView.vue:318 -msgid "Unable to detect NTP service. Please ensure chrony or systemd-timesyncd is installed." +msgid "" +"Unable to detect NTP service. Please ensure chrony or systemd-timesyncd is " +"installed." msgstr "無法檢測到 NTP 服務。請確保已安裝 chrony 或 systemd-timesyncd。" #: src/views/toolbox/SystemView.vue:325 -msgid "Current NTP service: %{ service }. Changes will be applied to system configuration." +msgid "" +"Current NTP service: %{ service }. Changes will be applied to system " +"configuration." msgstr "當前 NTP 服務:%{ service }。更改將應用於系統配置。" #: src/views/toolbox/SystemView.vue:338 @@ -10898,12 +11023,6 @@ msgstr "輸入 NTP 服務器地址" msgid "Reset to Default" msgstr "重置為默認值" -#: src/views/toolbox/WebHookView.vue:73 -#: src/views/toolbox/WebHookView.vue:339 -#: src/views/toolbox/WebHookView.vue:380 -msgid "Raw Output" -msgstr "原始輸出" - #: src/views/toolbox/WebHookView.vue:105 msgid "Call Count" msgstr "調用次數" @@ -10924,38 +11043,31 @@ msgstr "您確定要刪除此 Web 掛鉤嗎?" msgid "URL copied to clipboard" msgstr "URL 已複製到剪貼板" -#: src/views/toolbox/WebHookView.vue:232 -#: src/views/toolbox/WebHookView.vue:259 +#: src/views/toolbox/WebHookView.vue:232 src/views/toolbox/WebHookView.vue:259 msgid "Please enter a name" msgstr "請輸入名稱" -#: src/views/toolbox/WebHookView.vue:236 -#: src/views/toolbox/WebHookView.vue:263 +#: src/views/toolbox/WebHookView.vue:236 src/views/toolbox/WebHookView.vue:263 msgid "Please enter a script" msgstr "請輸入腳本" -#: src/views/toolbox/WebHookView.vue:295 -#: src/views/toolbox/WebHookView.vue:323 +#: src/views/toolbox/WebHookView.vue:295 src/views/toolbox/WebHookView.vue:323 msgid "Create WebHook" msgstr "創建 Web 掛鉤" -#: src/views/toolbox/WebHookView.vue:331 -#: src/views/toolbox/WebHookView.vue:372 +#: src/views/toolbox/WebHookView.vue:331 src/views/toolbox/WebHookView.vue:372 msgid "Enter WebHook name" msgstr "輸入 Web 掛鉤名稱" -#: src/views/toolbox/WebHookView.vue:336 -#: src/views/toolbox/WebHookView.vue:377 +#: src/views/toolbox/WebHookView.vue:336 src/views/toolbox/WebHookView.vue:377 msgid "User to run the script (default: root)" msgstr "運行腳本用戶(默認:root)" -#: src/views/toolbox/WebHookView.vue:342 -#: src/views/toolbox/WebHookView.vue:383 +#: src/views/toolbox/WebHookView.vue:342 src/views/toolbox/WebHookView.vue:383 msgid "Return script output as raw text instead of JSON" msgstr "將腳本輸出作為原始文本而非 JSON 返回" -#: src/views/toolbox/WebHookView.vue:345 -#: src/views/toolbox/WebHookView.vue:389 +#: src/views/toolbox/WebHookView.vue:345 src/views/toolbox/WebHookView.vue:389 msgid "Script" msgstr "腳本" @@ -10964,14 +11076,12 @@ msgid "Edit WebHook" msgstr "編輯 Web 掛鉤" #: src/views/website/BulkCreateModal.vue:32 -#: src/views/website/CreateModal.vue:57 -#: src/views/website/EditModal.vue:83 +#: src/views/website/CreateModal.vue:57 src/views/website/EditModal.vue:83 msgid "Not used" msgstr "未使用" #: src/views/website/BulkCreateModal.vue:61 -#: src/views/website/CreateModal.vue:30 -#: src/views/website/IndexView.vue:28 +#: src/views/website/CreateModal.vue:30 src/views/website/IndexView.vue:28 #: src/views/website/ListView.vue:128 msgid "Pure Static" msgstr "純靜態" @@ -10988,8 +11098,7 @@ msgstr "批量創建 PHP 網站" msgid "Bulk Create Pure Static Website" msgstr "批量創建純靜態網站" -#: src/views/website/BulkCreateModal.vue:74 -#: src/views/website/ListView.vue:409 +#: src/views/website/BulkCreateModal.vue:74 src/views/website/ListView.vue:409 msgid "Bulk Create Website" msgstr "批量創建網站" @@ -11006,7 +11115,9 @@ msgid "name|domain|port|path|remark" msgstr "名稱|域名|端口|路徑|備註" #: src/views/website/BulkCreateModal.vue:92 -msgid "Proxy Target: The target address for reverse proxy (e.g., http://127.0.0.1:3000)." +msgid "" +"Proxy Target: The target address for reverse proxy (e.g., " +"http://127.0.0.1:3000)." msgstr "代理目標:反向代理的目標地址(例如:http://127.0.0.1:3000)。" #: src/views/website/BulkCreateModal.vue:96 @@ -11027,8 +11138,7 @@ msgid "Website %{ name } created successfully" msgstr "網站 %{ name } 創建成功" #: src/views/website/BulkCreateModal.vue:189 -#: src/views/website/CreateModal.vue:180 -#: src/views/website/ListView.vue:120 +#: src/views/website/CreateModal.vue:180 src/views/website/ListView.vue:120 msgid "Website Type" msgstr "網站類型" @@ -11038,19 +11148,27 @@ msgid "Select Website Type" msgstr "選擇網站類型" #: src/views/website/BulkCreateModal.vue:198 -msgid "Please enter the website name, domain, port, path, and remark in the text area below, one per line." +msgid "" +"Please enter the website name, domain, port, path, and remark in the text " +"area below, one per line." msgstr "請在下面的文本區域輸入網站名稱、域名、端口、路徑和備註,每行一個。" #: src/views/website/BulkCreateModal.vue:211 -msgid "Name: The name of the website, which will be displayed in the website list, must be unique." +msgid "" +"Name: The name of the website, which will be displayed in the website list, " +"must be unique." msgstr "名稱:網站的名稱,將顯示在網站列表中,必須是唯一的。" #: src/views/website/BulkCreateModal.vue:218 -msgid "Domain: The domain name of the website, multiple domains can be separated by commas." +msgid "" +"Domain: The domain name of the website, multiple domains can be separated by " +"commas." msgstr "域名:網站的域名,多個域名可以用英文逗號分隔。" #: src/views/website/BulkCreateModal.vue:225 -msgid "Port: The port number of the website, multiple ports can be separated by commas." +msgid "" +"Port: The port number of the website, multiple ports can be separated by " +"commas." msgstr "端口:網站的端口號,多個端口可以用英文逗號分隔。" #: src/views/website/BulkCreateModal.vue:237 @@ -11069,27 +11187,28 @@ msgstr "創建 PHP 網站" msgid "Create Pure Static Website" msgstr "創建純靜態網站" -#: src/views/website/CreateModal.vue:80 -#: src/views/website/ListView.vue:406 +#: src/views/website/CreateModal.vue:80 src/views/website/ListView.vue:406 msgid "Create Website" msgstr "創建網站" #: src/views/website/CreateModal.vue:193 -msgid "Must be unique, used for directory naming, database naming, etc., and only supports letters, numbers, hyphens, and underscores" +msgid "" +"Must be unique, used for directory naming, database naming, etc., and only " +"supports letters, numbers, hyphens, and underscores" msgstr "必須唯一,用於目錄命名、數據庫命名等。只支持字母、數字、連字符和下劃線" -#: src/views/website/CreateModal.vue:280 -#: src/views/website/CreateModal.vue:285 +#: src/views/website/CreateModal.vue:280 src/views/website/CreateModal.vue:285 msgid "Database User" msgstr "數據庫用戶" -#: src/views/website/CreateModal.vue:294 -#: src/views/website/CreateModal.vue:300 +#: src/views/website/CreateModal.vue:294 src/views/website/CreateModal.vue:300 msgid "Database Password" msgstr "數據庫密碼" #: src/views/website/CreateModal.vue:312 -msgid "Website root directory (if left empty, defaults to website directory/website name/public)" +msgid "" +"Website root directory (if left empty, defaults to website directory/website " +"name/public)" msgstr "網站根目錄(如果留空,預設為網站目錄/網站名稱/public)" #: src/views/website/CreateModal.vue:324 @@ -11100,8 +11219,7 @@ msgstr "代理目標" msgid "Proxy target address (e.g., http://127.0.0.1:3000)" msgstr "代理目標地址(如:http://127.0.0.1:3000)" -#: src/views/website/CreateModal.vue:332 -#: src/views/website/CreateModal.vue:337 +#: src/views/website/CreateModal.vue:332 src/views/website/CreateModal.vue:337 #: src/views/website/ListView.vue:229 msgid "Remark" msgstr "備註" @@ -11114,675 +11232,674 @@ msgstr "編輯網站 - %{ name }" msgid "Edit Website" msgstr "編輯網站" -#: src/views/website/EditModal.vue:171 +#: src/views/website/EditModal.vue:181 msgid "Reset successfully" msgstr "重置成功" -#: src/views/website/EditModal.vue:199 -msgid "Your website contains wildcard domains, which require DNS verification. Please add a DNS provider in Certificate Management first." -msgstr "您的網站包含萬用字元域名,這需要進行 DNS 驗證。請先在憑證管理中新增一個 DNS 提供商。" +#: src/views/website/EditModal.vue:209 +msgid "" +"Your website contains wildcard domains, which require DNS verification. " +"Please add a DNS provider in Certificate Management first." +msgstr "" +"您的網站包含萬用字元域名,這需要進行 DNS 驗證。請先在憑證管理中新增一個 DNS " +"提供商。" -#: src/views/website/EditModal.vue:216 +#: src/views/website/EditModal.vue:226 msgid "Please select a DNS provider" msgstr "請選擇一個 DNS 提供商" -#: src/views/website/EditModal.vue:231 +#: src/views/website/EditModal.vue:241 msgid "Issued successfully" msgstr "簽發成功" -#: src/views/website/EditModal.vue:245 +#: src/views/website/EditModal.vue:255 msgid "The selected certificate is invalid" msgstr "所選證書無效" -#: src/views/website/EditModal.vue:374 +#: src/views/website/EditModal.vue:384 msgid "Exact Match (=)" msgstr "精確匹配 (=)" -#: src/views/website/EditModal.vue:375 +#: src/views/website/EditModal.vue:385 msgid "Priority Prefix Match (^~)" msgstr "優先前綴匹配 (^~)" -#: src/views/website/EditModal.vue:376 +#: src/views/website/EditModal.vue:386 msgid "Prefix Match" msgstr "前綴匹配" -#: src/views/website/EditModal.vue:377 +#: src/views/website/EditModal.vue:387 msgid "Case-sensitive Regex (~)" msgstr "區分大小寫的正則匹配 (~)" -#: src/views/website/EditModal.vue:378 +#: src/views/website/EditModal.vue:388 msgid "Case-insensitive Regex (~*)" msgstr "不區分大小寫的正則匹配 (~*)" -#: src/views/website/EditModal.vue:730 +#: src/views/website/EditModal.vue:740 msgid "URL Redirect" msgstr "URL 重定向" -#: src/views/website/EditModal.vue:731 +#: src/views/website/EditModal.vue:741 msgid "Host Redirect" msgstr "Host 重定向" -#: src/views/website/EditModal.vue:732 +#: src/views/website/EditModal.vue:742 msgid "404 Redirect" msgstr "404 重定向" -#: src/views/website/EditModal.vue:737 +#: src/views/website/EditModal.vue:747 msgid "Moved Permanently" msgstr "永久移動" -#: src/views/website/EditModal.vue:738 +#: src/views/website/EditModal.vue:748 msgid "Found" msgstr "已找到" -#: src/views/website/EditModal.vue:739 +#: src/views/website/EditModal.vue:749 msgid "Temporary Redirect" msgstr "臨時重定向" -#: src/views/website/EditModal.vue:740 +#: src/views/website/EditModal.vue:750 msgid "Permanent Redirect" msgstr "永久重定向" -#: src/views/website/EditModal.vue:779 -#: src/views/website/EditModal.vue:783 +#: src/views/website/EditModal.vue:789 src/views/website/EditModal.vue:793 msgid "Default Path" msgstr "預設路徑" -#: src/views/website/EditModal.vue:864 +#: src/views/website/EditModal.vue:874 msgid "Domain & Listening" msgstr "域名和監聽" -#: src/views/website/EditModal.vue:874 +#: src/views/website/EditModal.vue:884 msgid "Listening Address" msgstr "監聽地址" -#: src/views/website/EditModal.vue:909 +#: src/views/website/EditModal.vue:919 msgid "Website Directory" msgstr "網站目錄" -#: src/views/website/EditModal.vue:912 +#: src/views/website/EditModal.vue:922 msgid "Enter website directory (absolute path)" msgstr "輸入網站目錄(絕對路徑)" -#: src/views/website/EditModal.vue:915 +#: src/views/website/EditModal.vue:925 msgid "Running Directory" msgstr "運行目錄" -#: src/views/website/EditModal.vue:919 +#: src/views/website/EditModal.vue:929 msgid "Enter running directory (needed for Laravel etc.) (absolute path)" msgstr "輸入運行目錄(Laravel等需要)(絕對路徑)" -#: src/views/website/EditModal.vue:923 +#: src/views/website/EditModal.vue:933 msgid "Default Document" msgstr "預設文件" -#: src/views/website/EditModal.vue:936 +#: src/views/website/EditModal.vue:946 msgid "Anti-cross-site Attack" msgstr "防跨站攻擊" -#: src/views/website/EditModal.vue:942 +#: src/views/website/EditModal.vue:952 msgid "Upstreams" msgstr "上游" -#: src/views/website/EditModal.vue:963 +#: src/views/website/EditModal.vue:973 msgid "Upstream name" msgstr "上游名稱" -#: src/views/website/EditModal.vue:977 -#: src/views/website/EditModal.vue:984 +#: src/views/website/EditModal.vue:987 src/views/website/EditModal.vue:994 msgid "Round Robin (default)" msgstr "輪詢(默認)" -#: src/views/website/EditModal.vue:985 +#: src/views/website/EditModal.vue:995 msgid "Least Busy" msgstr "最少繁忙" -#: src/views/website/EditModal.vue:986 +#: src/views/website/EditModal.vue:996 msgid "By Traffic" msgstr "按流量" -#: src/views/website/EditModal.vue:991 +#: src/views/website/EditModal.vue:1001 msgid "Keepalive Connections" msgstr "保持活動連接" -#: src/views/website/EditModal.vue:1036 +#: src/views/website/EditModal.vue:1046 msgid "Backend Servers" msgstr "後端服務器" -#: src/views/website/EditModal.vue:1039 +#: src/views/website/EditModal.vue:1049 msgid "Server address, e.g., 127.0.0.1:8080" msgstr "服務器地址,例如 127.0.0.1:8080" -#: src/views/website/EditModal.vue:1040 +#: src/views/website/EditModal.vue:1050 msgid "Options, e.g., weight=5 backup" msgstr "選項,例如 weight=5 backup" -#: src/views/website/EditModal.vue:1052 +#: src/views/website/EditModal.vue:1062 msgid "No upstreams configured" msgstr "未配置上游" -#: src/views/website/EditModal.vue:1061 +#: src/views/website/EditModal.vue:1071 msgid "Proxies" msgstr "代理" -#: src/views/website/EditModal.vue:1079 -#: src/views/website/EditModal.vue:1759 +#: src/views/website/EditModal.vue:1089 src/views/website/EditModal.vue:1769 msgid "Rule" msgstr "規則" -#: src/views/website/EditModal.vue:1087 +#: src/views/website/EditModal.vue:1097 msgid "Match Type" msgstr "匹配類型" -#: src/views/website/EditModal.vue:1096 +#: src/views/website/EditModal.vue:1106 msgid "Match Expression" msgstr "匹配表達式" -#: src/views/website/EditModal.vue:1100 +#: src/views/website/EditModal.vue:1110 msgid "e.g., /, /api, ^/api/v[0-9]+/" msgstr "例如 /, /api, ^/api/v[0-9]+/" -#: src/views/website/EditModal.vue:1108 +#: src/views/website/EditModal.vue:1118 msgid "Backend address, e.g., http://127.0.0.1:8080 or http://upstream_name" msgstr "後端地址,例如 http://127.0.0.1:8080 或 http://upstream_name" -#: src/views/website/EditModal.vue:1115 +#: src/views/website/EditModal.vue:1125 msgid "Proxy Host" msgstr "代理主機名" -#: src/views/website/EditModal.vue:1119 +#: src/views/website/EditModal.vue:1129 msgid "Default: $proxy_host, or extracted from Proxy Pass" msgstr "默認:$proxy_host 或從代理目標中提取" -#: src/views/website/EditModal.vue:1123 +#: src/views/website/EditModal.vue:1133 msgid "Proxy SNI" msgstr "代理 SNI" -#: src/views/website/EditModal.vue:1126 +#: src/views/website/EditModal.vue:1136 msgid "Optional, for HTTPS backends" msgstr "可選,用於 HTTPS 後端" -#: src/views/website/EditModal.vue:1129 +#: src/views/website/EditModal.vue:1139 msgid "Enable Cache" msgstr "啟用快取" -#: src/views/website/EditModal.vue:1135 +#: src/views/website/EditModal.vue:1145 msgid "Enable Buffering" msgstr "啟用緩衝區" -#: src/views/website/EditModal.vue:1176 +#: src/views/website/EditModal.vue:1186 msgid "Cache Settings" msgstr "快取設定" -#: src/views/website/EditModal.vue:1181 +#: src/views/website/EditModal.vue:1191 msgid "Cache Valid" msgstr "快取規則" -#: src/views/website/EditModal.vue:1184 +#: src/views/website/EditModal.vue:1194 msgid "Status codes, e.g., 200 302 or any" msgstr "狀態碼,例如 200 302 或其他" -#: src/views/website/EditModal.vue:1185 +#: src/views/website/EditModal.vue:1195 msgid "Duration, e.g., 10m, 1h, 1d" msgstr "持續時間,例如 10m,1h,1d" -#: src/views/website/EditModal.vue:1186 +#: src/views/website/EditModal.vue:1196 msgid "Add Cache Valid Rule" msgstr "新增快取規則" -#: src/views/website/EditModal.vue:1192 +#: src/views/website/EditModal.vue:1202 msgid "No Cache Conditions" msgstr "不快取條件" -#: src/views/website/EditModal.vue:1205 +#: src/views/website/EditModal.vue:1215 msgid "Select or enter conditions" msgstr "選擇或輸入條件" -#: src/views/website/EditModal.vue:1209 +#: src/views/website/EditModal.vue:1219 msgid "Use Stale" msgstr "使用過期" -#: src/views/website/EditModal.vue:1222 +#: src/views/website/EditModal.vue:1232 msgid "When to use stale cache" msgstr "何時使用過期快取" -#: src/views/website/EditModal.vue:1226 +#: src/views/website/EditModal.vue:1236 msgid "Background Update" msgstr "背景更新" -#: src/views/website/EditModal.vue:1230 +#: src/views/website/EditModal.vue:1240 msgid "Cache Lock" msgstr "快取鎖" -#: src/views/website/EditModal.vue:1234 +#: src/views/website/EditModal.vue:1244 msgid "Min Uses" msgstr "最小使用次數" -#: src/views/website/EditModal.vue:1245 +#: src/views/website/EditModal.vue:1255 msgid "Cache Methods" msgstr "快取方法" -#: src/views/website/EditModal.vue:1254 +#: src/views/website/EditModal.vue:1264 msgid "Default: GET HEAD" msgstr "預設:GET HEAD" -#: src/views/website/EditModal.vue:1258 +#: src/views/website/EditModal.vue:1268 msgid "Cache Key" msgstr "快取鍵" -#: src/views/website/EditModal.vue:1262 +#: src/views/website/EditModal.vue:1272 msgid "Custom cache key, e.g., $scheme$host$request_uri" msgstr "自訂快取鍵,例如 $scheme$host$request_uri" -#: src/views/website/EditModal.vue:1270 +#: src/views/website/EditModal.vue:1280 msgid "Custom Request Headers" msgstr "自定義請求頭" -#: src/views/website/EditModal.vue:1273 -#: src/views/website/EditModal.vue:1572 +#: src/views/website/EditModal.vue:1283 src/views/website/EditModal.vue:1582 msgid "Header name" msgstr "請求頭" -#: src/views/website/EditModal.vue:1275 +#: src/views/website/EditModal.vue:1285 msgid "Value or variable like $host, $remote_addr" msgstr "類似於 $host、$remote_addr 的值或變量" -#: src/views/website/EditModal.vue:1277 +#: src/views/website/EditModal.vue:1287 msgid "Add Request Header" msgstr "添加請求頭" -#: src/views/website/EditModal.vue:1284 +#: src/views/website/EditModal.vue:1294 msgid "Response Content Replacement" msgstr "響應內容替換" -#: src/views/website/EditModal.vue:1289 +#: src/views/website/EditModal.vue:1299 msgid "Original content" msgstr "原始內容" -#: src/views/website/EditModal.vue:1290 +#: src/views/website/EditModal.vue:1300 msgid "Replacement content" msgstr "替換內容" -#: src/views/website/EditModal.vue:1291 +#: src/views/website/EditModal.vue:1301 msgid "Add Replacement Rule" msgstr "添加替換規則" -#: src/views/website/EditModal.vue:1301 -#: src/views/website/EditModal.vue:1831 +#: src/views/website/EditModal.vue:1311 src/views/website/EditModal.vue:1841 msgid "Advanced Settings" msgstr "進階設定" -#: src/views/website/EditModal.vue:1306 +#: src/views/website/EditModal.vue:1316 msgid "HTTP Version" msgstr "HTTP 版本" -#: src/views/website/EditModal.vue:1314 +#: src/views/website/EditModal.vue:1324 msgid "Select HTTP version" msgstr "選擇 HTTP 版本" -#: src/views/website/EditModal.vue:1319 +#: src/views/website/EditModal.vue:1329 msgid "Max Body Size" msgstr "最大主體大小" -#: src/views/website/EditModal.vue:1325 +#: src/views/website/EditModal.vue:1335 msgid "Use global" msgstr "使用全域" -#: src/views/website/EditModal.vue:1344 +#: src/views/website/EditModal.vue:1354 msgid "Timeout Settings" msgstr "逾時設定" -#: src/views/website/EditModal.vue:1355 +#: src/views/website/EditModal.vue:1365 msgid "Connect Timeout" msgstr "連接逾時" -#: src/views/website/EditModal.vue:1381 +#: src/views/website/EditModal.vue:1391 msgid "Read Timeout" msgstr "讀取逾時" -#: src/views/website/EditModal.vue:1407 +#: src/views/website/EditModal.vue:1417 msgid "Send Timeout" msgstr "傳送逾時" -#: src/views/website/EditModal.vue:1438 +#: src/views/website/EditModal.vue:1448 msgid "Retry Settings" msgstr "重試設定" -#: src/views/website/EditModal.vue:1449 +#: src/views/website/EditModal.vue:1459 msgid "SSL Backend Verify" msgstr "SSL 後端驗證" -#: src/views/website/EditModal.vue:1458 +#: src/views/website/EditModal.vue:1468 msgid "Response Headers" msgstr "回應標頭" -#: src/views/website/EditModal.vue:1469 +#: src/views/website/EditModal.vue:1479 msgid "Retry Conditions" msgstr "重試條件" -#: src/views/website/EditModal.vue:1485 +#: src/views/website/EditModal.vue:1495 msgid "Select retry conditions" msgstr "選擇重試條件" -#: src/views/website/EditModal.vue:1488 +#: src/views/website/EditModal.vue:1498 msgid "Max Tries" msgstr "最大重試次數" -#: src/views/website/EditModal.vue:1492 -#: src/views/website/EditModal.vue:1507 -#: src/views/website/EditModal.vue:1883 -#: src/views/website/EditModal.vue:1896 -#: src/views/website/EditModal.vue:1909 +#: src/views/website/EditModal.vue:1502 src/views/website/EditModal.vue:1517 +#: src/views/website/EditModal.vue:1893 src/views/website/EditModal.vue:1906 +#: src/views/website/EditModal.vue:1919 msgid "Unlimited" msgstr "無限制" -#: src/views/website/EditModal.vue:1496 +#: src/views/website/EditModal.vue:1506 msgid "Retry Timeout" msgstr "重試逾時時間" -#: src/views/website/EditModal.vue:1526 +#: src/views/website/EditModal.vue:1536 msgid "Enable Verify" msgstr "啟用驗證" -#: src/views/website/EditModal.vue:1529 +#: src/views/website/EditModal.vue:1539 msgid "Verify Depth" msgstr "驗證深度" -#: src/views/website/EditModal.vue:1536 +#: src/views/website/EditModal.vue:1546 msgid "Trusted Certificate" msgstr "受信任的憑證" -#: src/views/website/EditModal.vue:1540 +#: src/views/website/EditModal.vue:1550 msgid "CA certificate path, e.g. /etc/ssl/certs/ca-certificates.crt" msgstr "CA憑證路徑,例如 /etc/ssl/certs/ca-certificates.crt" -#: src/views/website/EditModal.vue:1552 +#: src/views/website/EditModal.vue:1562 msgid "Hide Headers" msgstr "隱藏回應標頭" -#: src/views/website/EditModal.vue:1566 +#: src/views/website/EditModal.vue:1576 msgid "Select or input headers to hide" msgstr "選擇或輸入要隱藏的回應標頭" -#: src/views/website/EditModal.vue:1569 +#: src/views/website/EditModal.vue:1579 msgid "Add Headers" msgstr "新增回應標頭" -#: src/views/website/EditModal.vue:1573 +#: src/views/website/EditModal.vue:1583 msgid "Header value" msgstr "標頭值" -#: src/views/website/EditModal.vue:1574 +#: src/views/website/EditModal.vue:1584 msgid "Add Response Header" msgstr "新增回應標頭" -#: src/views/website/EditModal.vue:1583 +#: src/views/website/EditModal.vue:1593 msgid "IP Access Control" msgstr "IP 存取控制" -#: src/views/website/EditModal.vue:1594 +#: src/views/website/EditModal.vue:1604 msgid "Allow IPs" msgstr "允許 IP" -#: src/views/website/EditModal.vue:1597 +#: src/views/website/EditModal.vue:1607 msgid "IP or CIDR, e.g. 192.168.1.0/24" msgstr "IP 或 CIDR,例如 192.168.1.0/24" -#: src/views/website/EditModal.vue:1600 +#: src/views/website/EditModal.vue:1610 msgid "Deny IPs" msgstr "阻止 IP" -#: src/views/website/EditModal.vue:1603 +#: src/views/website/EditModal.vue:1613 msgid "IP or CIDR, e.g. all" msgstr "IP 或 CIDR,例如 all" -#: src/views/website/EditModal.vue:1617 +#: src/views/website/EditModal.vue:1627 msgid "No proxy rules configured" msgstr "未配置代理規則" -#: src/views/website/EditModal.vue:1622 +#: src/views/website/EditModal.vue:1632 msgid "Add Proxy Rule" msgstr "添加代理規則" -#: src/views/website/EditModal.vue:1631 +#: src/views/website/EditModal.vue:1641 msgid "Certificate Validity" msgstr "證書有效期" -#: src/views/website/EditModal.vue:1645 +#: src/views/website/EditModal.vue:1655 msgid "Domains" msgstr "域名" -#: src/views/website/EditModal.vue:1654 +#: src/views/website/EditModal.vue:1664 msgid "Main Switch" msgstr "主開關" -#: src/views/website/EditModal.vue:1660 +#: src/views/website/EditModal.vue:1670 msgid "Use Existing Certificate" msgstr "使用現有證書" -#: src/views/website/EditModal.vue:1677 +#: src/views/website/EditModal.vue:1687 msgid "HTTP Redirect" msgstr "HTTP 重定向" -#: src/views/website/EditModal.vue:1680 +#: src/views/website/EditModal.vue:1690 msgid "OCSP Stapling" msgstr "OCSP 裝訂" -#: src/views/website/EditModal.vue:1685 +#: src/views/website/EditModal.vue:1695 msgid "TLS Version" msgstr "TLS 版本" -#: src/views/website/EditModal.vue:1726 +#: src/views/website/EditModal.vue:1736 msgid "Rewrite" msgstr "重寫" -#: src/views/website/EditModal.vue:1741 +#: src/views/website/EditModal.vue:1751 msgid "Redirects" msgstr "重定向" -#: src/views/website/EditModal.vue:1772 +#: src/views/website/EditModal.vue:1782 msgid "Redirect Type" msgstr "重定向類型" -#: src/views/website/EditModal.vue:1775 +#: src/views/website/EditModal.vue:1785 #: src/views/website/stats/ErrorsTab.vue:115 msgid "Status Code" msgstr "狀態碼" -#: src/views/website/EditModal.vue:1790 +#: src/views/website/EditModal.vue:1800 msgid "Source path, e.g., /old" msgstr "來源路徑,例如 /old" -#: src/views/website/EditModal.vue:1791 +#: src/views/website/EditModal.vue:1801 msgid "Source host, e.g., example.com" msgstr "來源主機,例如 example.com" -#: src/views/website/EditModal.vue:1803 +#: src/views/website/EditModal.vue:1813 msgid "Target path, e.g., /new" msgstr "目標路徑,例如 /new" -#: src/views/website/EditModal.vue:1804 +#: src/views/website/EditModal.vue:1814 msgid "Target URL, e.g., https://example.com" msgstr "目標 URL,例如 https://example.com" -#: src/views/website/EditModal.vue:1808 +#: src/views/website/EditModal.vue:1818 msgid "Keep URI" msgstr "保持 URI" -#: src/views/website/EditModal.vue:1811 +#: src/views/website/EditModal.vue:1821 msgid "Keep the original request path and query parameters" msgstr "保持原始請求路徑和查詢參數" -#: src/views/website/EditModal.vue:1822 +#: src/views/website/EditModal.vue:1832 msgid "No redirect rules configured" msgstr "未配置重定向規則" -#: src/views/website/EditModal.vue:1827 +#: src/views/website/EditModal.vue:1837 msgid "Add Redirect Rule" msgstr "新增重定向規則" -#: src/views/website/EditModal.vue:1836 +#: src/views/website/EditModal.vue:1846 msgid "Access Statistics" msgstr "訪問統計" -#: src/views/website/EditModal.vue:1840 +#: src/views/website/EditModal.vue:1850 msgid "Enable Statistics" msgstr "啟用統計" -#: src/views/website/EditModal.vue:1847 +#: src/views/website/EditModal.vue:1857 msgid "Log Settings" msgstr "日誌設置" -#: src/views/website/EditModal.vue:1849 -#: src/views/website/EditModal.vue:2066 +#: src/views/website/EditModal.vue:1859 src/views/website/EditModal.vue:2076 msgid "Access Log" msgstr "訪問日誌" -#: src/views/website/EditModal.vue:1858 -#: src/views/website/EditModal.vue:2082 +#: src/views/website/EditModal.vue:1868 src/views/website/EditModal.vue:2092 msgid "Error Log" msgstr "錯誤日誌" -#: src/views/website/EditModal.vue:1871 +#: src/views/website/EditModal.vue:1881 msgid "Rate Limiting" msgstr "速率限制" -#: src/views/website/EditModal.vue:1873 +#: src/views/website/EditModal.vue:1883 msgid "Enable Rate Limiting" msgstr "啟用速率限制" -#: src/views/website/EditModal.vue:1877 +#: src/views/website/EditModal.vue:1887 msgid "Concurrent Limit" msgstr "並發限制" -#: src/views/website/EditModal.vue:1887 +#: src/views/website/EditModal.vue:1897 msgid "Limit the maximum concurrent connections for this site" msgstr "限制此站點的最大並發連線數" -#: src/views/website/EditModal.vue:1890 +#: src/views/website/EditModal.vue:1900 msgid "Per IP Limit" msgstr "單 IP 限制" -#: src/views/website/EditModal.vue:1900 +#: src/views/website/EditModal.vue:1910 msgid "Limit the maximum concurrent connections per IP" msgstr "限制單個 IP 的最大並發連線數" -#: src/views/website/EditModal.vue:1903 +#: src/views/website/EditModal.vue:1913 msgid "Rate Limit" msgstr "速率限制" -#: src/views/website/EditModal.vue:1913 +#: src/views/website/EditModal.vue:1923 msgid "Limit the rate of each request (unit: KB)" msgstr "限制每個請求的速率(單位:KB)" -#: src/views/website/EditModal.vue:1921 +#: src/views/website/EditModal.vue:1931 msgid "Real IP" msgstr "真實 IP" -#: src/views/website/EditModal.vue:1924 -msgid "Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." +#: src/views/website/EditModal.vue:1934 +msgid "" +"Configure trusted proxy IPs (e.g., CDN or Frp) to identify real visitor IPs." msgstr "配置可信的代理 IP(例如 CDN 或 Frp)以識別真實的訪客 IP。" -#: src/views/website/EditModal.vue:1931 -msgid "If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) or ::/0 (ipv6) [insecure]." -msgstr "如果使用 Frp,請填寫 Frp IP 地址(例如 127.0.0.1)。如果使用 CDN,請填寫 CDN IP 範圍。如果不確定,可以填寫 0.0.0.0/0(ipv4)或 ::/0(ipv6)[不安全]。" +#: src/views/website/EditModal.vue:1941 +msgid "" +"If using Frp, fill in the Frp IP address (e.g., 127.0.0.1). If using CDN, " +"fill in the CDN IP ranges. If unsure, you can fill in 0.0.0.0/0 (ipv4) " +"or ::/0 (ipv6) [insecure]." +msgstr "" +"如果使用 Frp,請填寫 Frp IP 地址(例如 127.0.0.1)。如果使用 CDN,請填寫 CDN " +"IP 範圍。如果不確定,可以填寫 0.0.0.0/0(ipv4)或 ::/0(ipv6)[不安全]。" -#: src/views/website/EditModal.vue:1937 +#: src/views/website/EditModal.vue:1947 msgid "Enable" msgstr "啟用" -#: src/views/website/EditModal.vue:1941 +#: src/views/website/EditModal.vue:1951 msgid "IP Sources" msgstr "IP 來源" -#: src/views/website/EditModal.vue:1945 +#: src/views/website/EditModal.vue:1955 msgid "One per line, e.g., 127.0.0.1 or 10.0.0.0/8" msgstr "每行一個,例如 127.0.0.1 或 10.0.0.0/8" -#: src/views/website/EditModal.vue:1949 +#: src/views/website/EditModal.vue:1959 msgid "IP Header" msgstr "IP 標頭" -#: src/views/website/EditModal.vue:1964 +#: src/views/website/EditModal.vue:1974 msgid "Recursive" msgstr "遞迴" -#: src/views/website/EditModal.vue:1967 +#: src/views/website/EditModal.vue:1977 msgid "Recursively search for real IP in X-Forwarded-For header" msgstr "遞迴地搜尋 X-Forwarded-For 標頭中的真實 IP" -#: src/views/website/EditModal.vue:1975 +#: src/views/website/EditModal.vue:1985 msgid "Basic Authentication" msgstr "基本身份驗證" -#: src/views/website/EditModal.vue:1977 +#: src/views/website/EditModal.vue:1987 msgid "User Credentials" msgstr "使用者憑據" -#: src/views/website/EditModal.vue:1991 -msgid "Visitors will need to enter a username and password to access this website." +#: src/views/website/EditModal.vue:2001 +msgid "" +"Visitors will need to enter a username and password to access this website." msgstr "訪客需要輸入使用者名稱和密碼才能存取此網站。" -#: src/views/website/EditModal.vue:1999 +#: src/views/website/EditModal.vue:2009 msgid "Custom Configs" msgstr "自定義配置" -#: src/views/website/EditModal.vue:2026 +#: src/views/website/EditModal.vue:2036 msgid "Config name (letters, numbers, underscore, hyphen)" msgstr "配置名(字母、數字、下劃線、破折號)" -#: src/views/website/EditModal.vue:2034 +#: src/views/website/EditModal.vue:2044 msgid "This Website" msgstr "此網站" -#: src/views/website/EditModal.vue:2035 +#: src/views/website/EditModal.vue:2045 msgid "Global" msgstr "全局" -#: src/views/website/EditModal.vue:2040 +#: src/views/website/EditModal.vue:2050 msgid "Content" msgstr "內容" -#: src/views/website/EditModal.vue:2054 +#: src/views/website/EditModal.vue:2064 msgid "No custom configs" msgstr "沒有自定義配置" -#: src/views/website/EditModal.vue:2059 +#: src/views/website/EditModal.vue:2069 msgid "Add Custom Config" msgstr "添加自定義配置" -#: src/views/website/EditModal.vue:2071 -#: src/views/website/EditModal.vue:2087 +#: src/views/website/EditModal.vue:2081 src/views/website/EditModal.vue:2097 msgid "All logs can be viewed by downloading the file" msgstr "所有日誌可通過下載文件查看" -#: src/views/website/EditModal.vue:2073 -#: src/views/website/EditModal.vue:2089 +#: src/views/website/EditModal.vue:2083 src/views/website/EditModal.vue:2099 msgid "view" msgstr "查看" -#: src/views/website/EditModal.vue:2106 -msgid "Clear Logs" -msgstr "清除日誌" - -#: src/views/website/EditModal.vue:2117 +#: src/views/website/EditModal.vue:2127 msgid "One-click Certificate Issuance" msgstr "一鍵簽發證書" -#: src/views/website/EditModal.vue:2121 +#: src/views/website/EditModal.vue:2131 msgid "Are you sure you want to reset the configuration?" msgstr "您確定要重置配置嗎?" -#: src/views/website/EditModal.vue:2126 +#: src/views/website/EditModal.vue:2136 msgid "Reset Configuration" msgstr "重置配置" -#: src/views/website/EditModal.vue:2148 +#: src/views/website/EditModal.vue:2158 msgid "Select DNS Provider" msgstr "選擇 DNS 提供商" -#: src/views/website/EditModal.vue:2156 -msgid "Your website contains wildcard domains (e.g. *.example.com), which require DNS verification to issue certificates." -msgstr "您網站包含萬用字元域名(例如 *.example.com),這需要 DNS 驗證才能簽發憑證。" +#: src/views/website/EditModal.vue:2166 +msgid "" +"Your website contains wildcard domains (e.g. *.example.com), which require " +"DNS verification to issue certificates." +msgstr "" +"您網站包含萬用字元域名(例如 *.example.com),這需要 DNS 驗證才能簽發憑證。" #: src/views/website/IndexView.vue:29 msgid "Stats" @@ -11829,78 +11946,90 @@ msgid "Delete local database with the same name" msgstr "刪除同名的本地數據庫" #: src/views/website/ListView.vue:415 -msgid "This will delete the website directory but not the database with the same name. Are you sure you want to delete the selected websites?" +msgid "" +"This will delete the website directory but not the database with the same " +"name. Are you sure you want to delete the selected websites?" msgstr "這將刪除網站目錄,但不會刪除同名的數據庫。您確定要刪除所選網站嗎?" -#: src/views/website/SettingView.vue:67 +#: src/views/website/SettingView.vue:80 +#, fuzzy +msgid "Built-in default page" +msgstr "默認頁面" + +#: src/views/website/SettingView.vue:98 msgid "Default Page" msgstr "默認頁面" -#: src/views/website/SettingView.vue:77 -#: src/views/website/SettingView.vue:92 -#: src/views/website/SettingView.vue:107 -#: src/views/website/SettingView.vue:150 -#: src/views/website/SettingView.vue:213 -msgid "Save Changes" -msgstr "保存更改" - -#: src/views/website/SettingView.vue:82 +#: src/views/website/SettingView.vue:113 msgid "Stop Page" msgstr "停止頁面" -#: src/views/website/SettingView.vue:97 +#: src/views/website/SettingView.vue:128 msgid "404 Page" msgstr "404 頁面" -#: src/views/website/SettingView.vue:112 +#: src/views/website/SettingView.vue:143 src/views/website/SettingView.vue:153 msgid "Default Site" msgstr "預設網站" -#: src/views/website/SettingView.vue:115 +#: src/views/website/SettingView.vue:147 +msgid "" +"The default site handles requests that do not match any website domain, such " +"as direct access via IP address. By default, the panel built-in page is " +"displayed." +msgstr "" + +#: src/views/website/SettingView.vue:167 msgid "Default Settings" msgstr "預設設置" -#: src/views/website/SettingView.vue:119 -msgid "Modifying the default TLS version will affect all newly created websites. Existing websites will not be affected." +#: src/views/website/SettingView.vue:171 +msgid "" +"Modifying the default TLS version will affect all newly created websites. " +"Existing websites will not be affected." msgstr "修改預設 TLS 版本將影響所有新建立的網站。現有網站不受影響。" -#: src/views/website/SettingView.vue:126 -msgid "Please adjust the settings carefully, improper configuration may lead to website inaccessible." +#: src/views/website/SettingView.vue:178 +msgid "" +"Please adjust the settings carefully, improper configuration may lead to " +"website inaccessible." msgstr "請小心調整設置,配置不當可能導致網站無法訪問。" -#: src/views/website/SettingView.vue:132 +#: src/views/website/SettingView.vue:184 msgid "Default TLS Version" msgstr "預設 TLS 版本" -#: src/views/website/SettingView.vue:155 +#: src/views/website/SettingView.vue:207 msgid "Statistics" msgstr "統計" -#: src/views/website/SettingView.vue:159 -msgid "Modifications to the limits below will take effect after restarting the panel." +#: src/views/website/SettingView.vue:211 +msgid "" +"Modifications to the limits below will take effect after restarting the " +"panel." msgstr "下面的限制修改將在重啟面板後生效。" -#: src/views/website/SettingView.vue:165 +#: src/views/website/SettingView.vue:217 msgid "Data Retention Days" msgstr "數據保留天數" -#: src/views/website/SettingView.vue:168 +#: src/views/website/SettingView.vue:220 msgid "Error Buffer Max Size" msgstr "錯誤緩衝區最大大小" -#: src/views/website/SettingView.vue:177 +#: src/views/website/SettingView.vue:229 msgid "UV Max Keys" msgstr "UV 鍵最大值" -#: src/views/website/SettingView.vue:186 +#: src/views/website/SettingView.vue:238 msgid "IP Max Keys" msgstr "IP 鍵最大值" -#: src/views/website/SettingView.vue:195 +#: src/views/website/SettingView.vue:247 msgid "Detail Max Keys" msgstr "詳情鍵最大值" -#: src/views/website/SettingView.vue:204 +#: src/views/website/SettingView.vue:256 msgid "Record Request Body" msgstr "記錄請求體" @@ -11916,8 +12045,7 @@ msgstr "操作系統" #: src/views/website/stats/ClientsTab.vue:95 #: src/views/website/stats/GeoTab.vue:108 #: src/views/website/stats/GeoTab.vue:165 -#: src/views/website/stats/GeoTab.vue:218 -#: src/views/website/stats/IPsTab.vue:91 +#: src/views/website/stats/GeoTab.vue:218 src/views/website/stats/IPsTab.vue:91 #: src/views/website/stats/IPsTab.vue:134 #: src/views/website/stats/OverviewTab.vue:141 #: src/views/website/stats/SitesTab.vue:53 @@ -11941,15 +12069,13 @@ msgstr "沒有請求體" msgid "Site" msgstr "站點" -#: src/views/website/stats/GeoTab.vue:92 -#: src/views/website/stats/GeoTab.vue:247 +#: src/views/website/stats/GeoTab.vue:92 src/views/website/stats/GeoTab.vue:247 msgid "Country" msgstr "國家" #: src/views/website/stats/GeoTab.vue:113 #: src/views/website/stats/GeoTab.vue:165 -#: src/views/website/stats/GeoTab.vue:218 -#: src/views/website/stats/IPsTab.vue:91 +#: src/views/website/stats/GeoTab.vue:218 src/views/website/stats/IPsTab.vue:91 #: src/views/website/stats/IPsTab.vue:139 #: src/views/website/stats/OverviewTab.vue:140 #: src/views/website/stats/SlowURIsTab.vue:76 @@ -11972,14 +12098,12 @@ msgstr "ISP 分佈" #: src/views/website/stats/OverviewTab.vue:142 #: src/views/website/stats/SitesTab.vue:57 #: src/views/website/stats/SlowURIsTab.vue:81 -#: src/views/website/stats/URIsTab.vue:59 -#: src/views/website/StatsView.vue:221 +#: src/views/website/stats/URIsTab.vue:59 src/views/website/StatsView.vue:221 msgid "Errors" msgstr "錯誤" #: src/views/website/stats/OverviewTab.vue:143 -#: src/views/website/stats/SitesTab.vue:59 -#: src/views/website/StatsView.vue:200 +#: src/views/website/stats/SitesTab.vue:59 src/views/website/StatsView.vue:200 msgid "Spiders" msgstr "蜘蛛" @@ -12056,3 +12180,11 @@ msgstr "URIs" msgid "Slow Requests" msgstr "慢請求" +#~ msgid "Failed to save file" +#~ msgstr "儲存檔案失敗" + +#~ msgid "Failed to load file" +#~ msgstr "加載文件失敗" + +#~ msgid "N/A" +#~ msgstr "不適用"