diff --git a/cmd/ace/wire_gen.go b/cmd/ace/wire_gen.go
index b83d2901..e9f378d7 100644
--- a/cmd/ace/wire_gen.go
+++ b/cmd/ace/wire_gen.go
@@ -119,6 +119,7 @@ func initWeb() (*app.Web, error) {
toolboxSystemService := service.NewToolboxSystemService(locale)
toolboxBenchmarkService := service.NewToolboxBenchmarkService(locale)
toolboxSSHService := service.NewToolboxSSHService(locale)
+ toolboxDiskService := service.NewToolboxDiskService(locale)
webHookRepo := data.NewWebHookRepo(locale, db)
webHookService := service.NewWebHookService(webHookRepo)
codeserverApp := codeserver.NewApp()
@@ -142,7 +143,7 @@ func initWeb() (*app.Web, error) {
s3fsApp := s3fs.NewApp(locale)
supervisorApp := supervisor.NewApp(locale)
loader := bootstrap.NewLoader(codeserverApp, dockerApp, fail2banApp, frpApp, giteaApp, mariadbApp, memcachedApp, minioApp, mysqlApp, nginxApp, openrestyApp, perconaApp, phpmyadminApp, podmanApp, postgresqlApp, pureftpdApp, redisApp, rsyncApp, s3fsApp, supervisorApp)
- http := route.NewHttp(config, userService, userTokenService, homeService, taskService, websiteService, databaseService, databaseServerService, databaseUserService, backupService, certService, certDNSService, certAccountService, appService, environmentService, environmentPHPService, cronService, processService, safeService, firewallService, sshService, containerService, containerComposeService, containerNetworkService, containerImageService, containerVolumeService, fileService, monitorService, settingService, systemctlService, toolboxSystemService, toolboxBenchmarkService, toolboxSSHService, webHookService, loader)
+ http := route.NewHttp(config, userService, userTokenService, homeService, taskService, websiteService, databaseService, databaseServerService, databaseUserService, backupService, certService, certDNSService, certAccountService, appService, environmentService, environmentPHPService, cronService, processService, safeService, firewallService, sshService, containerService, containerComposeService, containerNetworkService, containerImageService, containerVolumeService, fileService, monitorService, settingService, systemctlService, toolboxSystemService, toolboxBenchmarkService, toolboxSSHService, toolboxDiskService, webHookService, loader)
wsService := service.NewWsService(locale, config, logger, sshRepo)
ws := route.NewWs(wsService)
mux, err := bootstrap.NewRouter(locale, middlewares, http, ws)
diff --git a/internal/http/request/toolbox_disk.go b/internal/http/request/toolbox_disk.go
new file mode 100644
index 00000000..be260a49
--- /dev/null
+++ b/internal/http/request/toolbox_disk.go
@@ -0,0 +1,76 @@
+package request
+
+// ToolboxDiskDevice 磁盘设备请求
+type ToolboxDiskDevice struct {
+ Device string `form:"device" json:"device" validate:"required"`
+}
+
+// ToolboxDiskMount 挂载请求
+type ToolboxDiskMount struct {
+ Device string `form:"device" json:"device" validate:"required"`
+ Path string `form:"path" json:"path" validate:"required"`
+ WriteFstab bool `form:"write_fstab" json:"write_fstab"`
+ MountOption string `form:"mount_option" json:"mount_option"`
+}
+
+// ToolboxDiskUmount 卸载请求
+type ToolboxDiskUmount struct {
+ Path string `form:"path" json:"path" validate:"required"`
+}
+
+// ToolboxDiskFormat 格式化请求
+type ToolboxDiskFormat struct {
+ Device string `form:"device" json:"device" validate:"required"`
+ FsType string `form:"fs_type" json:"fs_type" validate:"required|in:ext4,ext3,xfs,btrfs"`
+}
+
+// ToolboxDiskVG 卷组请求
+type ToolboxDiskVG struct {
+ Name string `form:"name" json:"name" validate:"required"`
+ Devices []string `form:"devices" json:"devices" validate:"required"`
+}
+
+// ToolboxDiskLV 逻辑卷请求
+type ToolboxDiskLV struct {
+ Name string `form:"name" json:"name" validate:"required"`
+ VGName string `form:"vg_name" json:"vg_name" validate:"required"`
+ Size int `form:"size" json:"size" validate:"required|min:1"`
+}
+
+// ToolboxDiskVGName 卷组名称请求
+type ToolboxDiskVGName struct {
+ Name string `form:"name" json:"name" validate:"required"`
+}
+
+// ToolboxDiskLVPath 逻辑卷路径请求
+type ToolboxDiskLVPath struct {
+ Path string `form:"path" json:"path" validate:"required"`
+}
+
+// ToolboxDiskExtendLV 扩容逻辑卷请求
+type ToolboxDiskExtendLV struct {
+ Path string `form:"path" json:"path" validate:"required"`
+ Size int `form:"size" json:"size" validate:"required|min:1"`
+ Resize bool `form:"resize" json:"resize"`
+}
+
+// ToolboxDiskInit 初始化磁盘请求
+type ToolboxDiskInit struct {
+ Device string `form:"device" json:"device" validate:"required"`
+ FsType string `form:"fs_type" json:"fs_type" validate:"required|in:ext4,ext3,xfs,btrfs"`
+}
+
+// ToolboxDiskFstabEntry fstab 条目结构
+type ToolboxDiskFstabEntry struct {
+ Device string `json:"device"` // 设备(UUID=xxx 或 /dev/xxx)
+ MountPoint string `json:"mount_point"` // 挂载点
+ FsType string `json:"fs_type"` // 文件系统类型
+ Options string `json:"options"` // 挂载选项
+ Dump string `json:"dump"` // 备份标志
+ Pass string `json:"pass"` // 检查顺序
+}
+
+// ToolboxDiskFstabDelete 删除 fstab 条目请求
+type ToolboxDiskFstabDelete struct {
+ MountPoint string `form:"mount_point" json:"mount_point" validate:"required"`
+}
diff --git a/internal/route/http.go b/internal/route/http.go
index f6c4b643..77cb5c92 100644
--- a/internal/route/http.go
+++ b/internal/route/http.go
@@ -49,6 +49,7 @@ type Http struct {
toolboxSystem *service.ToolboxSystemService
toolboxBenchmark *service.ToolboxBenchmarkService
toolboxSSH *service.ToolboxSSHService
+ toolboxDisk *service.ToolboxDiskService
webhook *service.WebHookService
apps *apploader.Loader
}
@@ -87,6 +88,7 @@ func NewHttp(
toolboxSystem *service.ToolboxSystemService,
toolboxBenchmark *service.ToolboxBenchmarkService,
toolboxSSH *service.ToolboxSSHService,
+ toolboxDisk *service.ToolboxDiskService,
webhook *service.WebHookService,
apps *apploader.Loader,
) *Http {
@@ -124,6 +126,7 @@ func NewHttp(
toolboxSystem: toolboxSystem,
toolboxBenchmark: toolboxBenchmark,
toolboxSSH: toolboxSSH,
+ toolboxDisk: toolboxDisk,
webhook: webhook,
apps: apps,
}
@@ -463,6 +466,25 @@ func (route *Http) Register(r *chi.Mux) {
r.Post("/root_key", route.toolboxSSH.GenerateRootKey)
})
+ r.Route("/toolbox_disk", func(r chi.Router) {
+ r.Get("/list", route.toolboxDisk.List)
+ r.Post("/partitions", route.toolboxDisk.GetPartitions)
+ r.Post("/mount", route.toolboxDisk.Mount)
+ r.Post("/umount", route.toolboxDisk.Umount)
+ r.Post("/format", route.toolboxDisk.Format)
+ r.Post("/init", route.toolboxDisk.Init)
+ r.Get("/fstab", route.toolboxDisk.GetFstab)
+ r.Delete("/fstab", route.toolboxDisk.DeleteFstab)
+ r.Get("/lvm", route.toolboxDisk.GetLVMInfo)
+ r.Post("/lvm/pv", route.toolboxDisk.CreatePV)
+ r.Delete("/lvm/pv", route.toolboxDisk.RemovePV)
+ r.Post("/lvm/vg", route.toolboxDisk.CreateVG)
+ r.Delete("/lvm/vg", route.toolboxDisk.RemoveVG)
+ r.Post("/lvm/lv", route.toolboxDisk.CreateLV)
+ r.Delete("/lvm/lv", route.toolboxDisk.RemoveLV)
+ r.Post("/lvm/lv/extend", route.toolboxDisk.ExtendLV)
+ })
+
r.Route("/webhook", func(r chi.Router) {
r.Get("/", route.webhook.List)
r.Post("/", route.webhook.Create)
diff --git a/internal/service/service.go b/internal/service/service.go
index 756e74c9..065972ba 100644
--- a/internal/service/service.go
+++ b/internal/service/service.go
@@ -38,5 +38,6 @@ var ProviderSet = wire.NewSet(
NewToolboxSystemService,
NewToolboxBenchmarkService,
NewToolboxSSHService,
+ NewToolboxDiskService,
NewWsService,
)
diff --git a/internal/service/toolbox_disk.go b/internal/service/toolbox_disk.go
new file mode 100644
index 00000000..b9924464
--- /dev/null
+++ b/internal/service/toolbox_disk.go
@@ -0,0 +1,567 @@
+package service
+
+import (
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "regexp"
+ "strings"
+
+ "github.com/leonelquinteros/gotext"
+ "github.com/libtnb/chix"
+
+ "github.com/acepanel/panel/internal/http/request"
+ "github.com/acepanel/panel/pkg/shell"
+)
+
+type ToolboxDiskService struct {
+ t *gotext.Locale
+}
+
+func NewToolboxDiskService(t *gotext.Locale) *ToolboxDiskService {
+ return &ToolboxDiskService{
+ t: t,
+ }
+}
+
+// List 获取磁盘列表
+func (s *ToolboxDiskService) List(w http.ResponseWriter, r *http.Request) {
+ // 获取磁盘基本信息
+ lsblkOutput, err := shell.Execf("lsblk -J -b -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE,UUID,LABEL,MODEL")
+ if err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to get disk list: %v", err))
+ return
+ }
+
+ // 解析 lsblk JSON
+ var lsblkData struct {
+ BlockDevices []any `json:"blockdevices"`
+ }
+ if err = json.Unmarshal([]byte(lsblkOutput), &lsblkData); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to parse disk list: %v", err))
+ return
+ }
+
+ // 获取磁盘使用情况
+ dfOutput, _ := shell.Execf("df -B1 --output=source,size,used,avail,pcent,target 2>/dev/null | tail -n +2")
+
+ // 解析 df 输出为 map
+ dfMap := make(map[string]map[string]string)
+ lines := strings.Split(strings.TrimSpace(dfOutput), "\n")
+ for _, line := range lines {
+ line = strings.TrimSpace(line)
+ if line == "" {
+ continue
+ }
+ fields := strings.Fields(line)
+ if len(fields) >= 6 {
+ mountpoint := fields[5]
+ dfMap[mountpoint] = map[string]string{
+ "size": fields[1],
+ "used": fields[2],
+ "avail": fields[3],
+ "percent": strings.TrimSuffix(fields[4], "%"),
+ }
+ }
+ }
+
+ Success(w, chix.M{
+ "disks": lsblkData.BlockDevices,
+ "df": dfMap,
+ })
+}
+
+// GetPartitions 获取分区列表
+func (s *ToolboxDiskService) GetPartitions(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskDevice](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ output, err := shell.Execf("lsblk -J -b -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE,UUID,LABEL '/dev/%s'", req.Device)
+ if err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to get partitions: %v", err))
+ return
+ }
+
+ Success(w, output)
+}
+
+// Mount 挂载分区
+func (s *ToolboxDiskService) Mount(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskMount](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ if _, err = shell.Execf("test -d '%s' || mkdir -p '%s'", req.Path, req.Path); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to create mount point: %v", err))
+ return
+ }
+
+ if _, err = shell.Execf("mount '/dev/%s' '%s'", req.Device, req.Path); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to mount partition: %v", err))
+ return
+ }
+
+ // 如果需要写入 fstab
+ if req.WriteFstab {
+ // 获取分区的 UUID
+ uuid, err := shell.Execf("blkid -s UUID -o value '/dev/%s'", req.Device)
+ if err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to get partition UUID: %v", err))
+ return
+ }
+ uuid = strings.TrimSpace(uuid)
+ if uuid == "" {
+ Error(w, http.StatusInternalServerError, s.t.Get("partition has no UUID"))
+ return
+ }
+
+ // 获取文件系统类型
+ fsType, err := shell.Execf("blkid -s TYPE -o value '/dev/%s'", req.Device)
+ if err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to get filesystem type: %v", err))
+ return
+ }
+ fsType = strings.TrimSpace(fsType)
+ if fsType == "" {
+ fsType = "auto"
+ }
+
+ // 挂载选项
+ mountOption := req.MountOption
+ if mountOption == "" {
+ mountOption = "defaults"
+ }
+
+ // 检查 fstab 中是否已存在该挂载点
+ existCheck, _ := shell.Execf("grep -E '^[^#].*\\s+%s\\s+' /etc/fstab", req.Path)
+ if strings.TrimSpace(existCheck) != "" {
+ Error(w, http.StatusBadRequest, s.t.Get("mount point %s already exists in fstab", req.Path))
+ return
+ }
+
+ // 写入 fstab
+ fstabEntry := fmt.Sprintf("UUID=%s %s %s %s 0 2", uuid, req.Path, fsType, mountOption)
+ if _, err = shell.Execf("echo '%s' >> /etc/fstab", fstabEntry); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to write fstab: %v", err))
+ return
+ }
+ }
+
+ Success(w, nil)
+}
+
+// Umount 卸载分区
+func (s *ToolboxDiskService) Umount(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskUmount](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ if _, err = shell.Execf("umount '%s'", req.Path); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to umount partition: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
+
+// Format 格式化分区
+func (s *ToolboxDiskService) Format(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskFormat](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ var formatCmd string
+ switch req.FsType {
+ case "ext4":
+ formatCmd = fmt.Sprintf("mkfs.ext4 -F '/dev/%s'", req.Device)
+ case "ext3":
+ formatCmd = fmt.Sprintf("mkfs.ext3 -F '/dev/%s'", req.Device)
+ case "xfs":
+ formatCmd = fmt.Sprintf("mkfs.xfs -f '/dev/%s'", req.Device)
+ case "btrfs":
+ formatCmd = fmt.Sprintf("mkfs.btrfs -f '/dev/%s'", req.Device)
+ default:
+ Error(w, http.StatusUnprocessableEntity, s.t.Get("unsupported filesystem type: %s", req.FsType))
+ return
+ }
+
+ if _, err = shell.Execf(formatCmd); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to format partition: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
+
+// Init 初始化磁盘(删除所有分区,创建单个分区并格式化)
+func (s *ToolboxDiskService) Init(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskInit](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ device := "/dev/" + req.Device
+
+ // 检查设备是否存在
+ if _, err = shell.Execf("test -b '%s'", device); err != nil {
+ Error(w, http.StatusBadRequest, s.t.Get("device not found: %s", device))
+ return
+ }
+
+ // 检查是否为系统盘(检查是否有分区挂载在 /)
+ mountInfo, _ := shell.Execf("lsblk -no MOUNTPOINT '%s' 2>/dev/null", device)
+ if strings.Contains(mountInfo, "/\n") || strings.TrimSpace(mountInfo) == "/" {
+ Error(w, http.StatusBadRequest, s.t.Get("cannot initialize system disk"))
+ return
+ }
+
+ // 卸载该磁盘的所有分区
+ _, _ = shell.Execf("umount '%s'* 2>/dev/null || true", device)
+
+ // 先清除分区表
+ if _, err = shell.Execf("wipefs -a '%s'", device); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to wipe disk: %v", err))
+ return
+ }
+
+ // sfdisk 创建 GPT 分区表和单个分区
+ if _, err = shell.Execf("echo 'type=linux' | sfdisk '%s'", device); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to create partition: %v", err))
+ return
+ }
+
+ // 等待内核更新分区表
+ _, _ = shell.Execf("partprobe '%s' 2>/dev/null || true", device)
+ _, _ = shell.Execf("sleep 1")
+
+ // 确定新分区的设备名(device + "1",如 sdb1 或 nvme0n1p1)
+ var partDevice string
+ if strings.Contains(req.Device, "nvme") || strings.Contains(req.Device, "loop") {
+ partDevice = device + "p1"
+ } else {
+ partDevice = device + "1"
+ }
+
+ // 格式化新分区
+ var formatCmd string
+ switch req.FsType {
+ case "ext4":
+ formatCmd = fmt.Sprintf("mkfs.ext4 -F '%s'", partDevice)
+ case "ext3":
+ formatCmd = fmt.Sprintf("mkfs.ext3 -F '%s'", partDevice)
+ case "xfs":
+ formatCmd = fmt.Sprintf("mkfs.xfs -f '%s'", partDevice)
+ case "btrfs":
+ formatCmd = fmt.Sprintf("mkfs.btrfs -f '%s'", partDevice)
+ default:
+ Error(w, http.StatusUnprocessableEntity, s.t.Get("unsupported filesystem type: %s", req.FsType))
+ return
+ }
+
+ if _, err = shell.Execf(formatCmd); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to format partition: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
+
+// GetLVMInfo 获取LVM信息
+func (s *ToolboxDiskService) GetLVMInfo(w http.ResponseWriter, r *http.Request) {
+ // 获取物理卷信息
+ pvOutput, _ := shell.Execf("pvdisplay -C --noheadings --separator '|' -o pv_name,vg_name,pv_size,pv_free 2>/dev/null || echo ''")
+ // 获取卷组信息
+ vgOutput, _ := shell.Execf("vgdisplay -C --noheadings --separator '|' -o vg_name,pv_count,lv_count,vg_size,vg_free 2>/dev/null || echo ''")
+ // 获取逻辑卷信息
+ lvOutput, _ := shell.Execf("lvdisplay -C --noheadings --separator '|' -o lv_name,vg_name,lv_size,lv_path 2>/dev/null || echo ''")
+
+ pvs := s.parseLVMOutput(pvOutput)
+ vgs := s.parseLVMOutput(vgOutput)
+ lvs := s.parseLVMOutput(lvOutput)
+
+ Success(w, chix.M{
+ "pvs": pvs,
+ "vgs": vgs,
+ "lvs": lvs,
+ })
+}
+
+// CreatePV 创建物理卷
+func (s *ToolboxDiskService) CreatePV(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskDevice](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ if _, err = shell.Execf("pvcreate '/dev/%s'", req.Device); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to create physical volume: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
+
+// CreateVG 创建卷组
+func (s *ToolboxDiskService) CreateVG(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskVG](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ // 构建设备列表,每个设备单独引用
+ var deviceArgs []string
+ for _, dev := range req.Devices {
+ deviceArgs = append(deviceArgs, fmt.Sprintf("'%s'", dev))
+ }
+
+ if _, err = shell.Execf("vgcreate '%s' %s", req.Name, strings.Join(deviceArgs, " ")); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to create volume group: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
+
+// CreateLV 创建逻辑卷
+func (s *ToolboxDiskService) CreateLV(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskLV](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ // 验证逻辑卷大小(必须为正数)
+ if req.Size <= 0 {
+ Error(w, http.StatusUnprocessableEntity, s.t.Get("invalid logical volume size"))
+ return
+ }
+
+ // 创建逻辑卷
+ if _, err = shell.Execf("lvcreate -L '%dG' -n '%s' '%s'", req.Size, req.Name, req.VGName); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to create logical volume: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
+
+// RemovePV 删除物理卷
+func (s *ToolboxDiskService) RemovePV(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskDevice](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ if _, err = shell.Execf("pvremove '%s'", req.Device); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to remove physical volume: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
+
+// RemoveVG 删除卷组
+func (s *ToolboxDiskService) RemoveVG(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskVGName](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ if _, err = shell.Execf("vgremove -f '%s'", req.Name); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to remove volume group: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
+
+// RemoveLV 删除逻辑卷
+func (s *ToolboxDiskService) RemoveLV(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskLVPath](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ if _, err = shell.Execf("lvremove -f '%s'", req.Path); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to remove logical volume: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
+
+// ExtendLV 扩容逻辑卷
+func (s *ToolboxDiskService) ExtendLV(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskExtendLV](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ // 验证扩容大小为正整数
+ if req.Size <= 0 {
+ Error(w, http.StatusUnprocessableEntity, s.t.Get("invalid size"))
+ return
+ }
+
+ // 扩容逻辑卷
+ if _, err = shell.Execf("lvextend -L +%dG '%s'", req.Size, req.Path); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to extend logical volume: %v", err))
+ return
+ }
+
+ // 扩展文件系统
+ if req.Resize {
+ // 检测文件系统类型并扩展
+ fsType, _ := shell.Execf("blkid -o value -s TYPE '%s'", req.Path)
+ fsType = strings.TrimSpace(fsType)
+
+ switch fsType {
+ case "ext4", "ext3":
+ if _, err = shell.Execf("resize2fs '%s'", req.Path); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to resize filesystem: %v", err))
+ return
+ }
+ case "xfs":
+ // XFS需要挂载后才能扩展
+ mountPoint, _ := shell.Execf("findmnt -n -o TARGET '%s'", req.Path)
+ mountPoint = strings.TrimSpace(mountPoint)
+ if mountPoint != "" {
+ if _, err = shell.Execf("xfs_growfs '%s'", mountPoint); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to resize filesystem: %v", err))
+ return
+ }
+ } else {
+ // XFS未挂载时,返回错误信息
+ Error(w, http.StatusInternalServerError, s.t.Get("xfs filesystem is not mounted, logical volume has been extended but filesystem was not resized"))
+ return
+ }
+ case "btrfs":
+ // btrfs需要挂载后才能扩展
+ mountPoint, _ := shell.Execf("findmnt -n -o TARGET '%s'", req.Path)
+ mountPoint = strings.TrimSpace(mountPoint)
+ if mountPoint != "" {
+ // 扩展到当前可用的最大空间
+ if _, err = shell.Execf("btrfs filesystem resize max '%s'", mountPoint); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to resize filesystem: %v", err))
+ return
+ }
+ } else {
+ // btrfs未挂载时,返回错误信息
+ Error(w, http.StatusInternalServerError, s.t.Get("btrfs filesystem is not mounted, logical volume has been extended but filesystem was not resized"))
+ return
+ }
+ }
+ }
+
+ Success(w, nil)
+}
+
+// parseLVMOutput 解析LVM命令输出
+// 将LVM命令的表格输出解析为map数组,每行数据的字段以field_0, field_1...命名
+var spaceRegex = regexp.MustCompile(`\s+`)
+
+func (s *ToolboxDiskService) parseLVMOutput(output string) []map[string]string {
+ lines := strings.Split(strings.TrimSpace(output), "\n")
+ var result []map[string]string
+
+ for _, line := range lines {
+ line = strings.TrimSpace(line)
+ if line == "" {
+ continue
+ }
+
+ line = spaceRegex.ReplaceAllString(line, " ")
+
+ fields := strings.Split(line, "|")
+ item := make(map[string]string)
+
+ for i, field := range fields {
+ item[fmt.Sprintf("field_%d", i)] = strings.TrimSpace(field)
+ }
+
+ result = append(result, item)
+ }
+
+ return result
+}
+
+// GetFstab 获取 fstab 列表
+func (s *ToolboxDiskService) GetFstab(w http.ResponseWriter, r *http.Request) {
+ content, err := shell.Execf("cat /etc/fstab")
+ if err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to read fstab: %v", err))
+ return
+ }
+
+ var entries []request.ToolboxDiskFstabEntry
+ lines := strings.Split(content, "\n")
+ for _, line := range lines {
+ line = strings.TrimSpace(line)
+ // 跳过空行和注释
+ if line == "" || strings.HasPrefix(line, "#") {
+ continue
+ }
+
+ fields := strings.Fields(line)
+ if len(fields) >= 4 {
+ entry := request.ToolboxDiskFstabEntry{
+ Device: fields[0],
+ MountPoint: fields[1],
+ FsType: fields[2],
+ Options: fields[3],
+ }
+ if len(fields) >= 5 {
+ entry.Dump = fields[4]
+ }
+ if len(fields) >= 6 {
+ entry.Pass = fields[5]
+ }
+ entries = append(entries, entry)
+ }
+ }
+
+ Success(w, entries)
+}
+
+// DeleteFstab 删除 fstab 条目
+func (s *ToolboxDiskService) DeleteFstab(w http.ResponseWriter, r *http.Request) {
+ req, err := Bind[request.ToolboxDiskFstabDelete](r)
+ if err != nil {
+ Error(w, http.StatusUnprocessableEntity, "%v", err)
+ return
+ }
+
+ // 不允许删除根目录挂载
+ if req.MountPoint == "/" {
+ Error(w, http.StatusBadRequest, s.t.Get("cannot delete root mount point"))
+ return
+ }
+
+ if _, err = shell.Execf(`sed -i 's@^[^#].*\s%s\s.*$@@g' /etc/fstab`, req.MountPoint); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to delete fstab entry: %v", err))
+ return
+ }
+
+ if _, err = shell.Execf("mount -a"); err != nil {
+ Error(w, http.StatusInternalServerError, s.t.Get("failed to remount filesystems: %v", err))
+ return
+ }
+
+ Success(w, nil)
+}
diff --git a/pkg/embed/locales/backend.pot b/pkg/embed/locales/backend.pot
index 1643a249..87e6acfc 100644
--- a/pkg/embed/locales/backend.pot
+++ b/pkg/embed/locales/backend.pot
@@ -7,11 +7,11 @@ msgstr ""
"Language: \n"
"X-Generator: xgotext\n"
-#: internal/service/cli.go:288
+#: internal/service/cli.go:290
msgid "2FA disabled for user %s"
msgstr ""
-#: internal/service/cli.go:296
+#: internal/service/cli.go:298
msgid "2FA url: %s"
msgstr ""
@@ -55,7 +55,7 @@ msgstr ""
msgid "Aliyun"
msgstr ""
-#: internal/service/cli.go:868
+#: internal/service/cli.go:895
msgid "Already initialized"
msgstr ""
@@ -63,27 +63,27 @@ msgstr ""
msgid "App %s %s"
msgstr ""
-#: internal/service/cli.go:717
+#: internal/service/cli.go:744
msgid "App %s installed successfully"
msgstr ""
-#: internal/service/cli.go:731
+#: internal/service/cli.go:758
msgid "App %s uninstalled successfully"
msgstr ""
-#: internal/service/cli.go:745
+#: internal/service/cli.go:772
msgid "App %s updated successfully"
msgstr ""
-#: internal/service/cli.go:714
+#: internal/service/cli.go:741
msgid "App install failed: %v"
msgstr ""
-#: internal/service/cli.go:728
+#: internal/service/cli.go:755
msgid "App uninstall failed: %v"
msgstr ""
-#: internal/service/cli.go:742
+#: internal/service/cli.go:769
msgid "App update failed: %v"
msgstr ""
@@ -103,9 +103,9 @@ msgstr ""
msgid "Backup directory (default path if not filled)"
msgstr ""
-#: internal/service/cli.go:596
-#: internal/service/cli.go:612
-#: internal/service/cli.go:626
+#: internal/service/cli.go:623
+#: internal/service/cli.go:639
+#: internal/service/cli.go:653
msgid "Backup failed: %v"
msgstr ""
@@ -125,15 +125,15 @@ msgstr ""
msgid "Backup website"
msgstr ""
-#: internal/service/cli.go:434
+#: internal/service/cli.go:461
msgid "Bind IP disabled"
msgstr ""
-#: internal/service/cli.go:450
+#: internal/service/cli.go:477
msgid "Bind UA disabled"
msgstr ""
-#: internal/service/cli.go:418
+#: internal/service/cli.go:445
msgid "Bind domain disabled"
msgstr ""
@@ -184,7 +184,7 @@ msgstr ""
msgid "Change username"
msgstr ""
-#: internal/service/cli.go:650
+#: internal/service/cli.go:677
msgid "Cleaning failed: %v"
msgstr ""
@@ -232,7 +232,7 @@ msgstr ""
msgid "Create new website"
msgstr ""
-#: internal/service/cli.go:684
+#: internal/service/cli.go:711
msgid "Currently only website log rotation is supported"
msgstr ""
@@ -245,7 +245,7 @@ msgstr ""
msgid "Data backup"
msgstr ""
-#: internal/service/cli.go:123
+#: internal/service/cli.go:128
msgid "Data synchronized successfully"
msgstr ""
@@ -257,11 +257,11 @@ msgstr ""
msgid "Database name"
msgstr ""
-#: internal/service/cli.go:571
+#: internal/service/cli.go:598
msgid "Database server %s added successfully"
msgstr ""
-#: internal/service/cli.go:585
+#: internal/service/cli.go:612
msgid "Database server %s deleted successfully"
msgstr ""
@@ -297,7 +297,7 @@ msgstr ""
msgid "Disable domain binding"
msgstr ""
-#: internal/service/cli.go:106
+#: internal/service/cli.go:111
msgid "Download URL is empty"
msgstr ""
@@ -326,16 +326,16 @@ msgstr ""
msgid "Enchant is a spell-checking library"
msgstr ""
-#: internal/service/cli.go:402
+#: internal/service/cli.go:429
msgid "Entrance disabled"
msgstr ""
-#: internal/service/cli.go:385
+#: internal/service/cli.go:412
msgid "Entrance enabled"
msgstr ""
-#: internal/service/cli.go:167
-#: internal/service/cli.go:386
+#: internal/service/cli.go:172
+#: internal/service/cli.go:413
msgid "Entrance: %s"
msgstr ""
@@ -347,103 +347,115 @@ msgstr ""
msgid "Exif is a library for reading and writing image metadata"
msgstr ""
-#: internal/service/cli.go:286
+#: internal/service/cli.go:288
msgid "Failed to change 2FA status: %v"
msgstr ""
-#: internal/service/cli.go:260
+#: internal/service/cli.go:263
msgid "Failed to change password: %v"
msgstr ""
-#: internal/service/cli.go:228
+#: internal/service/cli.go:232
msgid "Failed to change username: %v"
msgstr ""
-#: internal/service/cli.go:805
+#: internal/service/cli.go:832
msgid "Failed to clear tasks: %v"
msgstr ""
-#: internal/service/cli.go:780
+#: internal/service/cli.go:807
msgid "Failed to delete app: %v"
msgstr ""
-#: internal/service/cli.go:859
+#: internal/service/cli.go:886
msgid "Failed to delete setting: %v"
msgstr ""
-#: internal/service/cli.go:294
+#: internal/service/cli.go:296
msgid "Failed to generate 2FA: %v"
msgstr ""
-#: internal/service/cli.go:141
-#: internal/service/cli.go:256
+#: internal/service/cli.go:146
+#: internal/service/cli.go:259
msgid "Failed to generate password: %v"
msgstr ""
-#: internal/service/cli.go:760
+#: internal/service/cli.go:380
+msgid "Failed to get ACME account: %v"
+msgstr ""
+
+#: internal/service/cli.go:376
+msgid "Failed to get a panel user: %v"
+msgstr ""
+
+#: internal/service/cli.go:787
msgid "Failed to get app: %v"
msgstr ""
-#: internal/service/cli.go:161
+#: internal/service/cli.go:166
msgid "Failed to get entrance"
msgstr ""
-#: internal/service/cli.go:101
+#: internal/service/cli.go:106
msgid "Failed to get latest version: %v"
msgstr ""
-#: internal/service/cli.go:157
+#: internal/service/cli.go:162
msgid "Failed to get port"
msgstr ""
-#: internal/service/cli.go:823
-#: internal/service/cli.go:840
+#: internal/service/cli.go:850
+#: internal/service/cli.go:867
msgid "Failed to get setting: %v"
msgstr ""
-#: internal/service/cli.go:135
+#: internal/service/cli.go:140
msgid "Failed to get user info: %v"
msgstr ""
-#: internal/service/cli.go:197
+#: internal/service/cli.go:202
msgid "Failed to get user list: %v"
msgstr ""
-#: internal/service/cli.go:222
-#: internal/service/cli.go:250
-#: internal/service/cli.go:278
+#: internal/service/cli.go:227
+#: internal/service/cli.go:254
+#: internal/service/cli.go:281
msgid "Failed to get user: %v"
msgstr ""
-#: internal/service/cli.go:301
+#: internal/service/cli.go:384
+msgid "Failed to obtain ACME certificate: %v"
+msgstr ""
+
+#: internal/service/cli.go:303
msgid "Failed to read input: %v"
msgstr ""
-#: internal/service/cli.go:767
+#: internal/service/cli.go:794
msgid "Failed to save app: %v"
msgstr ""
-#: internal/service/cli.go:846
+#: internal/service/cli.go:873
msgid "Failed to save setting: %v"
msgstr ""
-#: internal/service/cli.go:147
+#: internal/service/cli.go:152
msgid "Failed to save user info: %v"
msgstr ""
-#: internal/service/cli.go:117
+#: internal/service/cli.go:122
msgid "Failed to synchronize app data: %v"
msgstr ""
-#: internal/service/cli.go:114
+#: internal/service/cli.go:119
msgid "Failed to synchronize categories data: %v"
msgstr ""
-#: internal/service/cli.go:120
+#: internal/service/cli.go:125
msgid "Failed to synchronize rewrite rules: %v"
msgstr ""
-#: internal/service/cli.go:304
+#: internal/service/cli.go:306
msgid "Failed to update 2FA: %v"
msgstr ""
@@ -495,15 +507,15 @@ msgstr ""
msgid "Gettext is a library for handling multilingual support"
msgstr ""
-#: internal/service/cli.go:369
+#: internal/service/cli.go:396
msgid "HTTPS certificate generated"
msgstr ""
-#: internal/service/cli.go:338
+#: internal/service/cli.go:340
msgid "HTTPS disabled"
msgstr ""
-#: internal/service/cli.go:322
+#: internal/service/cli.go:324
msgid "HTTPS enabled"
msgstr ""
@@ -511,7 +523,7 @@ msgstr ""
msgid "Huawei Cloud"
msgstr ""
-#: internal/service/cli.go:201
+#: internal/service/cli.go:206
msgid "ID: %d, Username: %s, Email: %s, Created At: %s"
msgstr ""
@@ -523,11 +535,11 @@ msgstr ""
msgid "Idle Processes"
msgstr ""
-#: internal/service/cli.go:187
+#: internal/service/cli.go:192
msgid "If you cannot access, please check whether the server's security group and firewall allow port %d"
msgstr ""
-#: internal/service/cli.go:188
+#: internal/service/cli.go:193
msgid "If you still cannot access, try running panel-cli https off to turn off panel HTTPS"
msgstr ""
@@ -543,10 +555,10 @@ msgstr ""
msgid "Index Hit Rate"
msgstr ""
-#: internal/service/cli.go:883
-#: internal/service/cli.go:888
-#: internal/service/cli.go:893
-#: internal/service/cli.go:897
+#: internal/service/cli.go:929
+#: internal/service/cli.go:934
+#: internal/service/cli.go:939
+#: internal/service/cli.go:978
msgid "Initialization failed: %v"
msgstr ""
@@ -619,11 +631,11 @@ msgstr ""
msgid "Listen Queue Length"
msgstr ""
-#: internal/service/cli.go:171
+#: internal/service/cli.go:176
msgid "Local IPv4: %s://%s:%d%s"
msgstr ""
-#: internal/service/cli.go:175
+#: internal/service/cli.go:180
msgid "Local IPv6: %s://[%s]:%d%s"
msgstr ""
@@ -681,7 +693,7 @@ msgstr ""
msgid "NameSilo"
msgstr ""
-#: internal/service/cli.go:215
+#: internal/service/cli.go:220
msgid "New username cannot be empty"
msgstr ""
@@ -689,7 +701,7 @@ msgstr ""
msgid "No backup file found, unable to automatically repair"
msgstr ""
-#: internal/service/cli.go:552
+#: internal/service/cli.go:579
msgid "Not supported"
msgstr ""
@@ -715,7 +727,7 @@ msgstr ""
msgid "OPcache stores precompiled PHP script bytecode in shared memory to improve PHP performance"
msgstr ""
-#: internal/service/cli.go:212
+#: internal/service/cli.go:217
msgid "Old username cannot be empty"
msgstr ""
@@ -771,38 +783,38 @@ msgstr ""
msgid "PHP-%d is not installed"
msgstr ""
-#: internal/service/cli.go:75
+#: internal/service/cli.go:80
msgid "Panel service restarted"
msgstr ""
-#: internal/service/cli.go:93
+#: internal/service/cli.go:98
msgid "Panel service started"
msgstr ""
-#: internal/service/cli.go:84
+#: internal/service/cli.go:89
msgid "Panel service stopped"
msgstr ""
-#: internal/service/cli.go:710
-#: internal/service/cli.go:724
-#: internal/service/cli.go:738
-#: internal/service/cli.go:754
-#: internal/service/cli.go:776
-#: internal/service/cli.go:815
-#: internal/service/cli.go:834
-#: internal/service/cli.go:855
+#: internal/service/cli.go:737
+#: internal/service/cli.go:751
+#: internal/service/cli.go:765
+#: internal/service/cli.go:781
+#: internal/service/cli.go:803
+#: internal/service/cli.go:842
+#: internal/service/cli.go:861
+#: internal/service/cli.go:882
msgid "Parameters cannot be empty"
msgstr ""
-#: internal/service/cli.go:263
+#: internal/service/cli.go:266
msgid "Password for user %s changed successfully"
msgstr ""
-#: internal/service/cli.go:243
+#: internal/service/cli.go:247
msgid "Password length cannot be less than 6"
msgstr ""
-#: internal/service/cli.go:165
+#: internal/service/cli.go:170
msgid "Password: %s"
msgstr ""
@@ -822,31 +834,35 @@ msgstr ""
msgid "PhpRedis connects to and operates on data in Redis databases (requires the igbinary module installed above)"
msgstr ""
-#: internal/service/cli.go:186
+#: internal/service/cli.go:191
msgid "Please choose the appropriate address to access the panel based on your network situation"
msgstr ""
-#: internal/service/cli.go:298
+#: internal/service/cli.go:300
msgid "Please enter the 2FA code: "
msgstr ""
+#: internal/service/cli.go:371
+msgid "Please set the panel IP in settings first for ACME certificate generation"
+msgstr ""
+
#: internal/service/cert.go:84
msgid "Porkbun"
msgstr ""
-#: internal/service/cli.go:467
+#: internal/service/cli.go:494
msgid "Port already in use"
msgstr ""
-#: internal/service/cli.go:492
+#: internal/service/cli.go:519
msgid "Port changed to %d"
msgstr ""
-#: internal/service/cli.go:457
+#: internal/service/cli.go:484
msgid "Port range error"
msgstr ""
-#: internal/service/cli.go:166
+#: internal/service/cli.go:171
msgid "Port: %d"
msgstr ""
@@ -866,11 +882,11 @@ msgstr ""
msgid "Pspell is a spell-checking library"
msgstr ""
-#: internal/service/cli.go:179
+#: internal/service/cli.go:184
msgid "Public IPv4: %s://%s:%d%s"
msgstr ""
-#: internal/service/cli.go:183
+#: internal/service/cli.go:188
msgid "Public IPv6: %s://[%s]:%d%s"
msgstr ""
@@ -878,6 +894,22 @@ msgstr ""
msgid "QQ Group:12370907"
msgstr ""
+#: internal/apps/mysql/app.go:189
+msgid "Query Cache Hit Rate"
+msgstr ""
+
+#: internal/apps/mysql/app.go:177
+msgid "Query Cache Hits"
+msgstr ""
+
+#: internal/apps/mysql/app.go:181
+msgid "Query Cache Inserts"
+msgstr ""
+
+#: internal/apps/mysql/app.go:185
+msgid "Query Cache Not Cached"
+msgstr ""
+
#: internal/apps/nginx/app.go:144
msgid "Reading"
msgstr ""
@@ -970,7 +1002,7 @@ msgstr ""
msgid "Setting management"
msgstr ""
-#: internal/service/cli.go:821
+#: internal/service/cli.go:848
msgid "Setting not exists"
msgstr ""
@@ -1003,6 +1035,10 @@ msgstr ""
msgid "Subqueries without Index"
msgstr ""
+#: internal/service/cli.go:386
+msgid "Successfully obtained ACME certificate"
+msgstr ""
+
#: internal/service/environment_php.go:562
msgid "Swoole is a PHP module for building high-performance asynchronous concurrent servers"
msgstr ""
@@ -1039,7 +1075,7 @@ msgstr ""
msgid "Table Locks Waited"
msgstr ""
-#: internal/service/cli.go:808
+#: internal/service/cli.go:835
msgid "Tasks cleared successfully"
msgstr ""
@@ -1059,7 +1095,7 @@ msgstr ""
msgid "The number of files contained in the compressed file is not 1, actual %d"
msgstr ""
-#: internal/service/cli.go:796
+#: internal/service/cli.go:823
msgid "Time synchronized successfully"
msgstr ""
@@ -1167,25 +1203,25 @@ msgstr ""
msgid "Uptime in Days"
msgstr ""
-#: internal/service/cli.go:220
-#: internal/service/cli.go:248
-#: internal/service/cli.go:276
+#: internal/service/cli.go:225
+#: internal/service/cli.go:252
+#: internal/service/cli.go:279
msgid "User not exists"
msgstr ""
-#: internal/service/cli.go:231
+#: internal/service/cli.go:235
msgid "Username %s changed to %s successfully"
msgstr ""
-#: internal/service/cli.go:240
+#: internal/service/cli.go:244
msgid "Username and password cannot be empty"
msgstr ""
-#: internal/service/cli.go:271
+#: internal/service/cli.go:274
msgid "Username cannot be empty"
msgstr ""
-#: internal/service/cli.go:164
+#: internal/service/cli.go:169
msgid "Username: %s"
msgstr ""
@@ -1201,7 +1237,7 @@ msgstr ""
msgid "Waiting"
msgstr ""
-#: internal/service/cli.go:189
+#: internal/service/cli.go:194
msgid "Warning: After turning off panel HTTPS, the security of the panel will be greatly reduced, please operate with caution"
msgstr ""
@@ -1209,15 +1245,15 @@ msgstr ""
msgid "Website"
msgstr ""
-#: internal/service/cli.go:511
+#: internal/service/cli.go:538
msgid "Website %s created successfully"
msgstr ""
-#: internal/service/cli.go:547
+#: internal/service/cli.go:574
msgid "Website %s deleted successfully"
msgstr ""
-#: internal/service/cli.go:528
+#: internal/service/cli.go:555
msgid "Website %s removed successfully"
msgstr ""
@@ -1298,9 +1334,9 @@ msgstr ""
msgid "app not found"
msgstr ""
-#: internal/data/setting.go:282
-#: internal/data/setting.go:338
-#: internal/data/setting.go:351
+#: internal/data/setting.go:299
+#: internal/data/setting.go:356
+#: internal/data/setting.go:369
msgid "background task is running, modifying some settings is prohibited, please try again later"
msgstr ""
@@ -1318,6 +1354,10 @@ msgstr ""
msgid "backup file %s not exists"
msgstr ""
+#: internal/service/toolbox_disk.go:466
+msgid "btrfs filesystem is not mounted, logical volume has been extended but filesystem was not resized"
+msgstr ""
+
#: internal/service/file.go:276
msgid "can't download a directory"
msgstr ""
@@ -1326,6 +1366,14 @@ msgstr ""
msgid "can't find %s database server, please add it first"
msgstr ""
+#: internal/service/toolbox_disk.go:552
+msgid "cannot delete root mount point"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:224
+msgid "cannot initialize system disk"
+msgstr ""
+
#: internal/data/database_server.go:106
#: internal/data/database_server.go:86
msgid "check server connection failed"
@@ -1350,6 +1398,10 @@ msgstr ""
msgid "database does not exist: %s"
msgstr ""
+#: internal/service/toolbox_disk.go:217
+msgid "device not found: %s"
+msgstr ""
+
#: internal/apps/pureftpd/app.go:84
msgid "directory %s does not exist"
msgstr ""
@@ -1385,8 +1437,8 @@ msgstr ""
msgid "expiration time must be less than 10 years"
msgstr ""
-#: internal/data/ssh.go:53
-#: internal/data/ssh.go:77
+#: internal/data/ssh.go:55
+#: internal/data/ssh.go:81
msgid "failed to check ssh connection: %v"
msgstr ""
@@ -1394,14 +1446,46 @@ msgstr ""
msgid "failed to clean temporary files: %v"
msgstr ""
+#: internal/service/toolbox_ssh.go:253
+msgid "failed to create .ssh directory: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:353
+msgid "failed to create logical volume: %v"
+msgstr ""
+
#: internal/apps/s3fs/app.go:69
msgid "failed to create mount path: %v"
msgstr ""
+#: internal/service/toolbox_disk.go:100
+msgid "failed to create mount point: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:239
+msgid "failed to create partition: %v"
+msgstr ""
+
#: internal/apps/s3fs/app.go:94
msgid "failed to create passwd file: %v"
msgstr ""
+#: internal/service/toolbox_disk.go:308
+msgid "failed to create physical volume: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:330
+msgid "failed to create volume group: %v"
+msgstr ""
+
+#: internal/data/webhook.go:58
+msgid "failed to create webhook directory: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:557
+msgid "failed to delete fstab entry: %v"
+msgstr ""
+
#: internal/service/systemctl.go:77
msgid "failed to disable %s service: %v"
msgstr ""
@@ -1410,6 +1494,19 @@ msgstr ""
msgid "failed to enable %s service: %v"
msgstr ""
+#: internal/service/toolbox_disk.go:424
+msgid "failed to extend logical volume: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:198
+#: internal/service/toolbox_disk.go:272
+msgid "failed to format partition: %v"
+msgstr ""
+
+#: internal/service/toolbox_ssh.go:263
+msgid "failed to generate SSH key: %v"
+msgstr ""
+
#: internal/service/systemctl.go:47
msgid "failed to get %s service enable status: %v"
msgstr ""
@@ -1483,10 +1580,18 @@ msgstr ""
msgid "failed to get current banned list"
msgstr ""
+#: internal/service/toolbox_disk.go:32
+msgid "failed to get disk list: %v"
+msgstr ""
+
#: internal/service/toolbox_system.go:135
msgid "failed to get disk space: %v"
msgstr ""
+#: internal/service/toolbox_disk.go:126
+msgid "failed to get filesystem type: %v"
+msgstr ""
+
#: internal/service/home.go:70
msgid "failed to get home apps: %v"
msgstr ""
@@ -1507,6 +1612,14 @@ msgstr ""
msgid "failed to get nginx workers: %v"
msgstr ""
+#: internal/service/toolbox_disk.go:114
+msgid "failed to get partition UUID: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:84
+msgid "failed to get partitions: %v"
+msgstr ""
+
#: internal/apps/pureftpd/app.go:144
msgid "failed to get port: %v"
msgstr ""
@@ -1571,22 +1684,30 @@ msgstr ""
msgid "failed to get uninstall script for app %s"
msgstr ""
-#: internal/apps/mysql/app.go:191
+#: internal/apps/mysql/app.go:226
#: internal/apps/mysql/app.go:83
msgid "failed to load MySQL root password: %v"
msgstr ""
-#: internal/data/cert.go:92
-#: internal/data/setting.go:287
-#: internal/data/setting.go:354
+#: internal/service/toolbox_disk.go:105
+msgid "failed to mount partition: %v"
+msgstr ""
+
+#: internal/data/cert.go:94
+#: internal/data/setting.go:304
+#: internal/data/setting.go:372
#: internal/data/website.go:478
#: internal/data/website.go:704
msgid "failed to parse certificate: %v"
msgstr ""
-#: internal/data/cert.go:95
-#: internal/data/setting.go:290
-#: internal/data/setting.go:357
+#: internal/service/toolbox_disk.go:41
+msgid "failed to parse disk list: %v"
+msgstr ""
+
+#: internal/data/cert.go:97
+#: internal/data/setting.go:307
+#: internal/data/setting.go:375
#: internal/data/website.go:481
#: internal/data/website.go:707
msgid "failed to parse private key: %v"
@@ -1616,6 +1737,18 @@ msgstr ""
msgid "failed to read from Memcached: %v"
msgstr ""
+#: internal/service/toolbox_disk.go:508
+msgid "failed to read fstab: %v"
+msgstr ""
+
+#: internal/service/toolbox_ssh.go:284
+msgid "failed to read generated key: %v"
+msgstr ""
+
+#: internal/service/toolbox_ssh.go:33
+msgid "failed to read sshd_config: %v"
+msgstr ""
+
#: internal/data/cert_account.go:108
#: internal/data/cert_account.go:167
msgid "failed to register account: %v"
@@ -1636,6 +1769,28 @@ msgstr ""
msgid "failed to reload nginx: %v"
msgstr ""
+#: internal/service/toolbox_disk.go:562
+msgid "failed to remount filesystems: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:401
+msgid "failed to remove logical volume: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:369
+msgid "failed to remove physical volume: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:385
+msgid "failed to remove volume group: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:437
+#: internal/service/toolbox_disk.go:446
+#: internal/service/toolbox_disk.go:461
+msgid "failed to resize filesystem: %v"
+msgstr ""
+
#: internal/service/systemctl.go:92
msgid "failed to restart %s service: %v"
msgstr ""
@@ -1648,6 +1803,14 @@ msgstr ""
msgid "failed to restart MySQL: %v"
msgstr ""
+#: internal/service/toolbox_ssh.go:116
+#: internal/service/toolbox_ssh.go:138
+#: internal/service/toolbox_ssh.go:164
+#: internal/service/toolbox_ssh.go:190
+#: internal/service/toolbox_ssh.go:211
+msgid "failed to restart SSH service: %v"
+msgstr ""
+
#: internal/service/ws.go:99
msgid "failed to run command: %v"
msgstr ""
@@ -1668,18 +1831,26 @@ msgstr ""
msgid "failed to set hosts: %v"
msgstr ""
-#: internal/service/toolbox_system.go:319
-msgid "failed to set root password: %v"
-msgstr ""
-
#: internal/service/systemctl.go:122
msgid "failed to start %s service: %v"
msgstr ""
+#: internal/service/toolbox_ssh.go:90
+msgid "failed to start SSH service: %v"
+msgstr ""
+
#: internal/service/systemctl.go:137
msgid "failed to stop %s service: %v"
msgstr ""
+#: internal/service/toolbox_ssh.go:103
+msgid "failed to stop SSH service: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:167
+msgid "failed to umount partition: %v"
+msgstr ""
+
#: internal/apps/s3fs/app.go:145
msgid "failed to unmount: %v"
msgstr ""
@@ -1692,10 +1863,47 @@ msgstr ""
msgid "failed to update DNS: %v"
msgstr ""
+#: internal/service/toolbox_ssh.go:132
+msgid "failed to update SSH port: %v"
+msgstr ""
+
+#: internal/service/toolbox_ssh.go:301
+msgid "failed to update authorized_keys: %v"
+msgstr ""
+
+#: internal/service/toolbox_ssh.go:159
+msgid "failed to update password authentication: %v"
+msgstr ""
+
+#: internal/service/toolbox_ssh.go:185
+msgid "failed to update pubkey authentication: %v"
+msgstr ""
+
+#: internal/service/toolbox_ssh.go:206
+msgid "failed to update root login setting: %v"
+msgstr ""
+
+#: internal/service/toolbox_ssh.go:228
+msgid "failed to update root password: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:233
+msgid "failed to wipe disk: %v"
+msgstr ""
+
+#: internal/service/toolbox_disk.go:150
+msgid "failed to write fstab: %v"
+msgstr ""
+
#: internal/apps/memcached/app.go:56
msgid "failed to write to Memcached: %v"
msgstr ""
+#: internal/data/webhook.go:64
+#: internal/data/webhook.go:92
+msgid "failed to write webhook script: %v"
+msgstr ""
+
#: internal/service/file.go:83
msgid "file is too large, please download it to view"
msgstr ""
@@ -1714,7 +1922,7 @@ msgstr ""
msgid "invalid 2FA code"
msgstr ""
-#: internal/http/middleware/entrance.go:119
+#: internal/http/middleware/entrance.go:125
msgid "invalid access entrance"
msgstr ""
@@ -1726,6 +1934,10 @@ msgstr ""
msgid "invalid key, please refresh the page"
msgstr ""
+#: internal/service/toolbox_disk.go:347
+msgid "invalid logical volume size"
+msgstr ""
+
#: internal/http/middleware/entrance.go:44
msgid "invalid request domain: %s"
msgstr ""
@@ -1745,6 +1957,10 @@ msgstr ""
msgid "invalid signature"
msgstr ""
+#: internal/service/toolbox_disk.go:418
+msgid "invalid size"
+msgstr ""
+
#: internal/http/middleware/must_login.go:104
msgid "invalid user id, please login again"
msgstr ""
@@ -1784,6 +2000,10 @@ msgstr ""
msgid "mount path is not empty"
msgstr ""
+#: internal/service/toolbox_disk.go:143
+msgid "mount point %s already exists in fstab"
+msgstr ""
+
#: internal/data/database.go:156
msgid "mysql not support database comment"
msgstr ""
@@ -1812,6 +2032,10 @@ msgstr ""
msgid "panel run error, please check or contact support"
msgstr ""
+#: internal/service/toolbox_disk.go:119
+msgid "partition has no UUID"
+msgstr ""
+
#: internal/service/environment_php.go:412
msgid "pdo_pgsql is a PDO driver for connecting to PostgreSQL (requires PostgreSQL installed)"
msgstr ""
@@ -1840,11 +2064,15 @@ msgstr ""
msgid "please don't do this"
msgstr ""
-#: internal/data/cert.go:210
+#: internal/data/cert.go:213
msgid "please retry the manual obtain operation"
msgstr ""
-#: internal/data/setting.go:307
+#: internal/service/setting.go:78
+msgid "please set public ips first"
+msgstr ""
+
+#: internal/data/setting.go:324
msgid "port is already in use"
msgstr ""
@@ -1901,20 +2129,20 @@ msgstr ""
msgid "the current version is the latest version"
msgstr ""
-#: internal/data/cert.go:351
+#: internal/data/cert.go:399
msgid "this certificate has not been obtained successfully and cannot be deployed"
msgstr ""
-#: internal/data/cert.go:276
+#: internal/data/cert.go:295
msgid "this certificate has not been obtained successfully and cannot be renewed"
msgstr ""
-#: internal/data/cert.go:168
-#: internal/data/cert.go:283
+#: internal/data/cert.go:170
+#: internal/data/cert.go:302
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:406
+#: internal/data/cert.go:452
msgid "this certificate is not associated with an ACME account and cannot be obtained"
msgstr ""
@@ -1954,6 +2182,11 @@ msgstr ""
msgid "unsupported file type"
msgstr ""
+#: internal/service/toolbox_disk.go:193
+#: internal/service/toolbox_disk.go:267
+msgid "unsupported filesystem type: %s"
+msgstr ""
+
#: internal/data/cron.go:212
msgid "unsupported system"
msgstr ""
@@ -1966,7 +2199,7 @@ msgstr ""
msgid "unsupported website type: %s"
msgstr ""
-#: internal/data/cert.go:132
+#: internal/data/cert.go:134
msgid "upload certificate cannot be set to auto renew"
msgstr ""
@@ -1980,6 +2213,18 @@ msgstr ""
msgid "username or password error"
msgstr ""
+#: internal/data/webhook.go:123
+msgid "webhook is disabled"
+msgstr ""
+
+#: internal/data/webhook.go:119
+msgid "webhook not found"
+msgstr ""
+
+#: internal/data/webhook.go:128
+msgid "webhook script not found"
+msgstr ""
+
#: internal/data/website.go:566
msgid "website %s has bound certificates, please delete the certificate first"
msgstr ""
@@ -1988,8 +2233,8 @@ msgstr ""
msgid "website directory does not exist"
msgstr ""
-#: internal/data/cert.go:172
-#: internal/data/cert.go:287
+#: internal/data/cert.go:174
+#: internal/data/cert.go:306
msgid "wildcard domains cannot use HTTP verification"
msgstr ""
@@ -2005,6 +2250,10 @@ msgstr ""
msgid "xdebug is a library for debugging and profiling PHP code"
msgstr ""
+#: internal/service/toolbox_disk.go:451
+msgid "xfs filesystem is not mounted, logical volume has been extended but filesystem was not resized"
+msgstr ""
+
#: internal/service/environment_php.go:522
msgid "xhprof is a library for performance profiling"
msgstr ""
@@ -2051,8 +2300,8 @@ msgstr ""
msgid "|-Backup panel data..."
msgstr ""
-#: internal/service/cli.go:594
-#: internal/service/cli.go:610
+#: internal/service/cli.go:621
+#: internal/service/cli.go:637
msgid "|-Backup target: %s"
msgstr ""
@@ -2063,15 +2312,15 @@ msgstr ""
msgid "|-Backup time: %s"
msgstr ""
-#: internal/service/cli.go:608
+#: internal/service/cli.go:635
msgid "|-Backup type: database"
msgstr ""
-#: internal/service/cli.go:624
+#: internal/service/cli.go:651
msgid "|-Backup type: panel"
msgstr ""
-#: internal/service/cli.go:593
+#: internal/service/cli.go:620
msgid "|-Backup type: website"
msgstr ""
@@ -2099,17 +2348,17 @@ msgstr ""
msgid "|-Cleaning old version..."
msgstr ""
-#: internal/service/cli.go:647
-#: internal/service/cli.go:695
+#: internal/service/cli.go:674
+#: internal/service/cli.go:722
msgid "|-Cleaning target: %s"
msgstr ""
-#: internal/service/cli.go:646
-#: internal/service/cli.go:694
+#: internal/service/cli.go:673
+#: internal/service/cli.go:721
msgid "|-Cleaning type: %s"
msgstr ""
-#: internal/service/cli.go:609
+#: internal/service/cli.go:636
msgid "|-Database: %s"
msgstr ""
@@ -2133,8 +2382,8 @@ msgstr ""
msgid "|-Fix completed"
msgstr ""
-#: internal/service/cli.go:648
-#: internal/service/cli.go:696
+#: internal/service/cli.go:675
+#: internal/service/cli.go:723
msgid "|-Keep count: %d"
msgstr ""
@@ -2159,11 +2408,11 @@ msgstr ""
msgid "|-Restore panel data..."
msgstr ""
-#: internal/service/cli.go:672
+#: internal/service/cli.go:699
msgid "|-Rotation target: %s"
msgstr ""
-#: internal/service/cli.go:671
+#: internal/service/cli.go:698
msgid "|-Rotation type: website"
msgstr ""
@@ -2225,35 +2474,35 @@ msgstr ""
msgid "|-Write new panel version failed: %v"
msgstr ""
-#: internal/service/cli.go:591
-#: internal/service/cli.go:606
-#: internal/service/cli.go:622
+#: internal/service/cli.go:618
+#: internal/service/cli.go:633
+#: internal/service/cli.go:649
msgid "★ Start backup [%s]"
msgstr ""
-#: internal/service/cli.go:644
+#: internal/service/cli.go:671
msgid "★ Start cleaning [%s]"
msgstr ""
-#: internal/service/cli.go:692
+#: internal/service/cli.go:719
msgid "★ Start cleaning rotated logs [%s]"
msgstr ""
-#: internal/service/cli.go:669
+#: internal/service/cli.go:696
msgid "★ Start log rotation [%s]"
msgstr ""
-#: internal/service/cli.go:599
-#: internal/service/cli.go:615
-#: internal/service/cli.go:629
+#: internal/service/cli.go:626
+#: internal/service/cli.go:642
+#: internal/service/cli.go:656
msgid "☆ Backup successful [%s]"
msgstr ""
-#: internal/service/cli.go:653
-#: internal/service/cli.go:701
+#: internal/service/cli.go:680
+#: internal/service/cli.go:728
msgid "☆ Cleaning successful [%s]"
msgstr ""
-#: internal/service/cli.go:677
+#: internal/service/cli.go:704
msgid "☆ Rotation successful [%s]"
msgstr ""
\ No newline at end of file
diff --git a/web/src/api/panel/toolbox-disk/index.ts b/web/src/api/panel/toolbox-disk/index.ts
new file mode 100644
index 00000000..7ca84e7e
--- /dev/null
+++ b/web/src/api/panel/toolbox-disk/index.ts
@@ -0,0 +1,46 @@
+import { http } from '@/utils'
+
+export default {
+ // 获取磁盘列表
+ list: (): any => http.Get('/toolbox_disk/list'),
+ // 获取分区列表
+ partitions: (device: string): any => http.Post('/toolbox_disk/partitions', { device }),
+ // 挂载分区
+ mount: (
+ device: string,
+ path: string,
+ write_fstab: boolean = false,
+ mount_option: string = ''
+ ): any => http.Post('/toolbox_disk/mount', { device, path, write_fstab, mount_option }),
+ // 卸载分区
+ umount: (path: string): any => http.Post('/toolbox_disk/umount', { path }),
+ // 格式化分区
+ format: (device: string, fs_type: string): any =>
+ http.Post('/toolbox_disk/format', { device, fs_type }),
+ // 初始化磁盘
+ init: (device: string, fs_type: string): any =>
+ http.Post('/toolbox_disk/init', { device, fs_type }),
+ // 获取 fstab 列表
+ fstabList: (): any => http.Get('/toolbox_disk/fstab'),
+ // 删除 fstab 条目
+ fstabDelete: (mount_point: string): any => http.Delete('/toolbox_disk/fstab', { mount_point }),
+ // 获取LVM信息
+ lvmInfo: (): any => http.Get('/toolbox_disk/lvm'),
+ // 创建物理卷
+ createPV: (device: string): any => http.Post('/toolbox_disk/lvm/pv', { device }),
+ // 删除物理卷
+ removePV: (device: string): any => http.Delete('/toolbox_disk/lvm/pv', { device }),
+ // 创建卷组
+ createVG: (name: string, devices: string[]): any =>
+ http.Post('/toolbox_disk/lvm/vg', { name, devices }),
+ // 删除卷组
+ removeVG: (name: string): any => http.Delete('/toolbox_disk/lvm/vg', { name }),
+ // 创建逻辑卷
+ createLV: (name: string, vg_name: string, size: number): any =>
+ http.Post('/toolbox_disk/lvm/lv', { name, vg_name, size }),
+ // 删除逻辑卷
+ removeLV: (path: string): any => http.Delete('/toolbox_disk/lvm/lv', { path }),
+ // 扩容逻辑卷
+ extendLV: (path: string, size: number, resize: boolean): any =>
+ http.Post('/toolbox_disk/lvm/lv/extend', { path, size, resize })
+}
diff --git a/web/src/locales/en.po b/web/src/locales/en.po
index c6e5960c..acf2faeb 100644
--- a/web/src/locales/en.po
+++ b/web/src/locales/en.po
@@ -9,7 +9,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/components/common/AppFooter.vue:13 src/views/home/IndexView.vue:440
+#: src/components/common/AppFooter.vue:13 src/views/home/IndexView.vue:442
msgid "AcePanel"
msgstr "AcePanel"
@@ -197,11 +197,14 @@ msgstr "Cannot save in current state"
#: src/views/apps/codeserver/IndexView.vue:23
#: src/views/apps/docker/IndexView.vue:23
#: src/views/apps/fail2ban/IndexView.vue:160
-#: src/views/apps/frp/IndexView.vue:27 src/views/apps/gitea/IndexView.vue:21
+#: src/views/apps/frp/IndexView.vue:36 src/views/apps/frp/IndexView.vue:44
+#: src/views/apps/gitea/IndexView.vue:21
+#: src/views/apps/mariadb/IndexView.vue:46
#: src/views/apps/memcached/IndexView.vue:43
#: src/views/apps/minio/IndexView.vue:21 src/views/apps/mysql/IndexView.vue:46
-#: src/views/apps/nginx/IndexView.vue:43 src/views/apps/php/PhpView.vue:142
-#: src/views/apps/php/PhpView.vue:148
+#: src/views/apps/nginx/IndexView.vue:43
+#: src/views/apps/openresty/IndexView.vue:43
+#: src/views/apps/percona/IndexView.vue:46
#: src/views/apps/phpmyadmin/IndexView.vue:36
#: src/views/apps/phpmyadmin/IndexView.vue:43
#: src/views/apps/podman/IndexView.vue:25
@@ -213,10 +216,10 @@ msgstr "Cannot save in current state"
#: src/views/apps/rsync/IndexView.vue:177
#: src/views/apps/supervisor/IndexView.vue:219
#: src/views/apps/supervisor/IndexView.vue:284
-#: src/views/setting/IndexView.vue:48 src/views/toolbox/SystemView.vue:49
-#: src/views/toolbox/SystemView.vue:55 src/views/toolbox/SystemView.vue:64
-#: src/views/toolbox/SystemView.vue:70 src/views/toolbox/SystemView.vue:79
-#: src/views/website/EditView.vue:114
+#: src/views/environment/PHPView.vue:137 src/views/environment/PHPView.vue:143
+#: src/views/setting/IndexView.vue:50 src/views/toolbox/SystemView.vue:48
+#: src/views/toolbox/SystemView.vue:54 src/views/toolbox/SystemView.vue:63
+#: src/views/toolbox/SystemView.vue:72 src/views/website/EditView.vue:114
msgid "Saved successfully"
msgstr "Saved successfully"
@@ -230,7 +233,7 @@ msgstr "Select File"
#: src/components/common/PathSelector.vue:42
#: src/components/common/PathSelector.vue:332
-#: src/views/app/EnvironmentView.vue:26
+#: src/views/app/EnvironmentView.vue:27
#: src/views/apps/fail2ban/IndexView.vue:37
#: src/views/apps/rsync/IndexView.vue:39 src/views/apps/rsync/IndexView.vue:256
#: src/views/apps/supervisor/IndexView.vue:46
@@ -240,9 +243,11 @@ msgstr "Select File"
#: src/views/database/CreateServerModal.vue:55
#: src/views/database/ServerList.vue:39
#: src/views/database/UpdateServerModal.vue:55 src/views/file/ListTable.vue:105
-#: src/views/file/ToolBar.vue:257 src/views/ssh/CreateModal.vue:57
-#: src/views/ssh/UpdateModal.vue:63 src/views/task/SystemView.vue:18
-#: src/views/toolbox/ProcessView.vue:18 src/views/website/CreateModal.vue:106
+#: src/views/file/ToolBar.vue:257 src/views/ssh/CreateModal.vue:59
+#: src/views/ssh/UpdateModal.vue:65 src/views/toolbox/ProcessView.vue:107
+#: src/views/toolbox/ProcessView.vue:386 src/views/toolbox/WebHookView.vue:32
+#: src/views/toolbox/WebHookView.vue:331 src/views/toolbox/WebHookView.vue:366
+#: src/views/website/CreateModal.vue:106
msgid "Name"
msgstr "Name"
@@ -256,6 +261,7 @@ msgstr "Owner / Group"
#: src/components/common/PathSelector.vue:107 src/views/backup/ListView.vue:42
#: src/views/container/ImageView.vue:53 src/views/file/ListTable.vue:171
+#: src/views/toolbox/DiskView.vue:275 src/views/toolbox/DiskView.vue:692
msgid "Size"
msgstr "Size"
@@ -285,7 +291,8 @@ msgstr "Invalid name"
#: src/views/database/CreateUserModal.vue:28 src/views/file/ToolBar.vue:45
#: src/views/firewall/CreateForwardModal.vue:41
#: src/views/setting/CreateModal.vue:19 src/views/setting/TokenModal.vue:125
-#: src/views/ssh/CreateModal.vue:38 src/views/task/CreateModal.vue:50
+#: src/views/ssh/CreateModal.vue:40 src/views/task/CreateModal.vue:50
+#: src/views/toolbox/WebHookView.vue:257
msgid "Created successfully"
msgstr "Created successfully"
@@ -299,7 +306,7 @@ msgstr "Folder"
#: src/components/common/PathSelector.vue:261
#: src/components/common/PathSelector.vue:324
-#: src/views/setting/TokenModal.vue:266
+#: src/views/setting/TokenModal.vue:266 src/views/toolbox/WebHookView.vue:351
#: src/views/website/BulkCreateModal.vue:129
#: src/views/website/CreateModal.vue:240
msgid "Create"
@@ -337,7 +344,7 @@ msgstr "Root Directory"
#: src/views/firewall/CreateIpModal.vue:121
#: src/views/firewall/CreateModal.vue:145 src/views/setting/CreateModal.vue:64
#: src/views/setting/PasswordModal.vue:44 src/views/setting/TwoFaModal.vue:87
-#: src/views/ssh/CreateModal.vue:99 src/views/ssh/UpdateModal.vue:105
+#: src/views/ssh/CreateModal.vue:109 src/views/ssh/UpdateModal.vue:115
#: src/views/task/CreateModal.vue:157
#: src/views/website/ProxyBuilderModal.vue:201
msgid "Submit"
@@ -360,21 +367,21 @@ msgstr "Failed to get log stream"
msgid "Logs"
msgstr "Logs"
-#: src/components/common/ServiceStatus.vue:25 src/views/home/IndexView.vue:739
-#: src/views/home/IndexView.vue:747 src/views/home/IndexView.vue:754
-#: src/views/home/IndexView.vue:760 src/views/home/IndexView.vue:771
-#: src/views/home/IndexView.vue:783
+#: src/components/common/ServiceStatus.vue:25 src/views/home/IndexView.vue:741
+#: src/views/home/IndexView.vue:749 src/views/home/IndexView.vue:756
+#: src/views/home/IndexView.vue:762 src/views/home/IndexView.vue:773
+#: src/views/home/IndexView.vue:785
msgid "Loading..."
msgstr "Loading..."
-#: src/components/common/ServiceStatus.vue:26 src/views/task/SystemView.vue:50
-#: src/views/task/TaskView.vue:33 src/views/toolbox/ProcessView.vue:50
+#: src/components/common/ServiceStatus.vue:26 src/views/task/TaskView.vue:33
+#: src/views/toolbox/ProcessView.vue:48 src/views/toolbox/ProcessView.vue:80
#: src/views/website/ListView.vue:28
msgid "Running"
msgstr "Running"
-#: src/components/common/ServiceStatus.vue:26 src/views/task/SystemView.vue:54
-#: src/views/toolbox/ProcessView.vue:54
+#: src/components/common/ServiceStatus.vue:26
+#: src/views/toolbox/ProcessView.vue:50 src/views/toolbox/ProcessView.vue:84
msgid "Stopped"
msgstr "Stopped"
@@ -434,15 +441,19 @@ msgstr "Autostart disabled successfully"
#: src/views/apps/docker/IndexView.vue:31
#: src/views/apps/fail2ban/IndexView.vue:228
#: src/views/apps/gitea/IndexView.vue:29
+#: src/views/apps/mariadb/IndexView.vue:71
#: src/views/apps/memcached/IndexView.vue:51
#: src/views/apps/minio/IndexView.vue:29 src/views/apps/mysql/IndexView.vue:71
-#: src/views/apps/nginx/IndexView.vue:57 src/views/apps/php/PhpView.vue:180
+#: src/views/apps/nginx/IndexView.vue:57
+#: src/views/apps/openresty/IndexView.vue:57
+#: src/views/apps/percona/IndexView.vue:71
#: src/views/apps/podman/IndexView.vue:39
#: src/views/apps/postgresql/IndexView.vue:63
#: src/views/apps/pureftpd/IndexView.vue:158
#: src/views/apps/redis/IndexView.vue:48 src/views/apps/rsync/IndexView.vue:191
#: src/views/apps/supervisor/IndexView.vue:298
#: src/views/container/ContainerView.vue:83
+#: src/views/environment/PHPView.vue:175
msgid "Running Status"
msgstr "Running Status"
@@ -477,7 +488,8 @@ msgstr "Are you sure you want to stop %{ service }?"
#: src/components/common/ServiceStatus.vue:162
#: src/views/apps/supervisor/IndexView.vue:168
#: src/views/container/ContainerView.vue:139
-#: src/views/container/ContainerView.vue:413 src/views/home/IndexView.vue:448
+#: src/views/container/ContainerView.vue:413 src/views/home/IndexView.vue:450
+#: src/views/toolbox/SshView.vue:234
msgid "Restart"
msgstr "Restart"
@@ -523,13 +535,28 @@ msgstr "Prompt"
#: src/layout/header/components/UserAvatar.vue:29
#: src/views/home/UpdateView.vue:26 src/views/monitor/IndexView.vue:460
+#: src/views/toolbox/DiskView.vue:403 src/views/toolbox/DiskView.vue:405
+#: src/views/toolbox/DiskView.vue:428 src/views/toolbox/DiskView.vue:430
+#: src/views/toolbox/DiskView.vue:500 src/views/toolbox/DiskView.vue:504
+#: src/views/toolbox/DiskView.vue:523 src/views/toolbox/DiskView.vue:542
+#: src/views/toolbox/DiskView.vue:546 src/views/toolbox/DiskView.vue:567
+#: src/views/toolbox/DiskView.vue:586 src/views/toolbox/DiskView.vue:594
+#: src/views/toolbox/DiskView.vue:616 src/views/toolbox/DiskView.vue:635
+#: src/views/toolbox/DiskView.vue:640 src/views/toolbox/DiskView.vue:663
+#: src/views/toolbox/ProcessView.vue:234 src/views/toolbox/ProcessView.vue:239
msgid "Confirm"
msgstr "Confirm"
#: src/layout/header/components/UserAvatar.vue:30
#: src/views/file/ListTable.vue:418 src/views/file/ListTable.vue:513
#: src/views/file/ToolBar.vue:139 src/views/file/ToolBar.vue:226
-#: src/views/home/UpdateView.vue:27
+#: src/views/home/UpdateView.vue:27 src/views/toolbox/DiskView.vue:406
+#: src/views/toolbox/DiskView.vue:431 src/views/toolbox/DiskView.vue:454
+#: src/views/toolbox/DiskView.vue:480 src/views/toolbox/DiskView.vue:505
+#: src/views/toolbox/DiskView.vue:524 src/views/toolbox/DiskView.vue:547
+#: src/views/toolbox/DiskView.vue:568 src/views/toolbox/DiskView.vue:595
+#: src/views/toolbox/DiskView.vue:617 src/views/toolbox/DiskView.vue:641
+#: src/views/toolbox/DiskView.vue:664 src/views/toolbox/ProcessView.vue:240
msgid "Cancel"
msgstr "Cancel"
@@ -540,6 +567,7 @@ msgstr "Logged out successfully!"
#: src/layout/header/components/UserAvatar.vue:48 src/views/cert/DnsView.vue:56
#: src/views/firewall/IpRuleView.vue:76 src/views/firewall/IpRuleView.vue:101
#: src/views/firewall/RuleView.vue:110 src/views/firewall/RuleView.vue:135
+#: src/views/toolbox/DiskView.vue:172
msgid "Unknown"
msgstr "Unknown"
@@ -602,7 +630,7 @@ msgstr "Backup"
#: src/locales/menu.ts:9 src/views/cert/CertView.vue:496
#: src/views/cert/CertView.vue:573 src/views/cert/IndexView.vue:96
-#: src/views/cert/UploadCertModal.vue:38 src/views/setting/SettingSafe.vue:192
+#: src/views/cert/UploadCertModal.vue:38 src/views/setting/SettingSafe.vue:248
#: src/views/website/EditView.vue:326
msgid "Certificate"
msgstr "Certificate"
@@ -612,7 +640,7 @@ msgid "Container"
msgstr "Container"
#: src/locales/menu.ts:11 src/views/backup/ListView.vue:276
-#: src/views/database/IndexView.vue:27 src/views/home/IndexView.vue:426
+#: src/views/database/IndexView.vue:27 src/views/home/IndexView.vue:428
#: src/views/website/CreateModal.vue:153
msgid "Database"
msgstr "Database"
@@ -657,7 +685,7 @@ msgid "Toolbox"
msgstr "Toolbox"
#: src/locales/menu.ts:21 src/views/app/AppView.vue:93
-#: src/views/app/EnvironmentView.vue:77 src/views/home/IndexView.vue:452
+#: src/views/app/EnvironmentView.vue:78 src/views/home/IndexView.vue:454
#: src/views/setting/TokenModal.vue:299
msgid "Update"
msgstr "Update"
@@ -666,7 +694,7 @@ msgstr "Update"
#: src/views/backup/IndexView.vue:37 src/views/backup/ListView.vue:232
#: src/views/backup/ListView.vue:269 src/views/cert/CertView.vue:465
#: src/views/cert/CertView.vue:548 src/views/cert/CreateCertModal.vue:90
-#: src/views/home/IndexView.vue:422 src/views/task/CreateModal.vue:118
+#: src/views/home/IndexView.vue:424 src/views/task/CreateModal.vue:118
msgid "Website"
msgstr "Website"
@@ -699,8 +727,8 @@ msgid "Login"
msgstr "Login"
#: src/views/app/AppView.vue:17 src/views/app/AppView.vue:152
-#: src/views/app/AppView.vue:157 src/views/app/EnvironmentView.vue:144
-#: src/views/apps/php/PhpView.vue:79
+#: src/views/app/AppView.vue:157 src/views/app/EnvironmentView.vue:145
+#: src/views/environment/PHPView.vue:74
msgid "Install"
msgstr "Install"
@@ -708,12 +736,12 @@ msgstr "Install"
msgid "App Name"
msgstr "App Name"
-#: src/views/app/AppView.vue:40 src/views/app/EnvironmentView.vue:32
-#: src/views/apps/php/PhpView.vue:48
+#: src/views/app/AppView.vue:40 src/views/app/EnvironmentView.vue:33
+#: src/views/environment/PHPView.vue:43
msgid "Description"
msgstr "Description"
-#: src/views/app/AppView.vue:46 src/views/app/EnvironmentView.vue:44
+#: src/views/app/AppView.vue:46 src/views/app/EnvironmentView.vue:45
msgid "Installed Version"
msgstr "Installed Version"
@@ -721,9 +749,9 @@ msgstr "Installed Version"
msgid "Show in Home"
msgstr "Show in Home"
-#: src/views/app/AppView.vue:65 src/views/app/EnvironmentView.vue:50
+#: src/views/app/AppView.vue:65 src/views/app/EnvironmentView.vue:51
#: src/views/apps/fail2ban/IndexView.vue:59
-#: src/views/apps/fail2ban/IndexView.vue:118 src/views/apps/php/PhpView.vue:55
+#: src/views/apps/fail2ban/IndexView.vue:118
#: src/views/apps/pureftpd/IndexView.vue:46
#: src/views/apps/rsync/IndexView.vue:68 src/views/apps/s3fs/IndexView.vue:32
#: src/views/apps/supervisor/IndexView.vue:74 src/views/backup/ListView.vue:57
@@ -735,11 +763,12 @@ msgstr "Show in Home"
#: src/views/container/ImageView.vue:69 src/views/container/NetworkView.vue:109
#: src/views/container/VolumeView.vue:63 src/views/database/DatabaseList.vue:73
#: src/views/database/ServerList.vue:134 src/views/database/UserList.vue:151
-#: src/views/file/ListTable.vue:191 src/views/firewall/ForwardView.vue:79
-#: src/views/firewall/IpRuleView.vue:121 src/views/firewall/RuleView.vue:158
-#: src/views/setting/SettingUser.vue:85 src/views/setting/TokenModal.vue:52
-#: src/views/task/CronView.vue:98 src/views/task/SystemView.vue:96
-#: src/views/task/TaskView.vue:55 src/views/toolbox/ProcessView.vue:96
+#: src/views/environment/PHPView.vue:50 src/views/file/ListTable.vue:191
+#: src/views/firewall/ForwardView.vue:79 src/views/firewall/IpRuleView.vue:121
+#: src/views/firewall/RuleView.vue:158 src/views/setting/SettingUser.vue:85
+#: src/views/setting/TokenModal.vue:52 src/views/task/CronView.vue:98
+#: src/views/task/TaskView.vue:55 src/views/toolbox/DiskView.vue:340
+#: src/views/toolbox/DiskView.vue:831 src/views/toolbox/WebHookView.vue:130
#: src/views/website/ListView.vue:123
msgid "Actions"
msgstr "Actions"
@@ -752,7 +781,7 @@ msgstr ""
"Updating app %{ app } may reset related configurations to default state, are "
"you sure to continue?"
-#: src/views/app/AppView.vue:109 src/views/app/EnvironmentView.vue:93
+#: src/views/app/AppView.vue:109 src/views/app/EnvironmentView.vue:94
msgid "Manage"
msgstr "Manage"
@@ -769,7 +798,7 @@ msgstr ""
msgid "Are you sure to uninstall app %{ app }?"
msgstr "Are you sure to uninstall app %{ app }?"
-#: src/views/app/AppView.vue:137 src/views/app/EnvironmentView.vue:117
+#: src/views/app/AppView.vue:137 src/views/app/EnvironmentView.vue:118
msgid "Uninstall"
msgstr "Uninstall"
@@ -778,55 +807,55 @@ msgid "Setup successfully"
msgstr "Setup successfully"
#: src/views/app/AppView.vue:198 src/views/app/AppView.vue:206
-#: src/views/app/EnvironmentView.vue:177 src/views/app/EnvironmentView.vue:185
-#: src/views/app/EnvironmentView.vue:193 src/views/app/VersionModal.vue:33
+#: src/views/app/EnvironmentView.vue:178 src/views/app/EnvironmentView.vue:186
+#: src/views/app/EnvironmentView.vue:194 src/views/app/VersionModal.vue:33
msgid "Task submitted, please check the progress in background tasks"
msgstr "Task submitted, please check the progress in background tasks"
-#: src/views/app/AppView.vue:229 src/views/app/EnvironmentView.vue:212
+#: src/views/app/AppView.vue:229 src/views/app/EnvironmentView.vue:217
#: src/views/firewall/RuleView.vue:150
msgid "All"
msgstr "All"
-#: src/views/app/EnvironmentView.vue:38
+#: src/views/app/EnvironmentView.vue:39
#, fuzzy
msgid "Latest Version"
msgstr "System Version"
-#: src/views/app/EnvironmentView.vue:65
+#: src/views/app/EnvironmentView.vue:66
#, fuzzy
msgid "Are you sure to update environment %{ environment }?"
msgstr "Are you sure you want to delete user %{ username }?"
-#: src/views/app/EnvironmentView.vue:105
+#: src/views/app/EnvironmentView.vue:106
#, fuzzy
msgid "Are you sure to uninstall environment %{ environment }?"
msgstr "Are you sure to uninstall app %{ app }?"
-#: src/views/app/EnvironmentView.vue:132
+#: src/views/app/EnvironmentView.vue:133
#, fuzzy
msgid "Are you sure to install environment %{ environment }?"
msgstr "Are you sure you want to install %{ name }?"
-#: src/views/app/IndexView.vue:20
+#: src/views/app/IndexView.vue:23
msgid "Cache updated successfully"
msgstr "Cache updated successfully"
-#: src/views/app/IndexView.vue:30
+#: src/views/app/IndexView.vue:34
msgid "Native App"
msgstr ""
-#: src/views/app/IndexView.vue:31
+#: src/views/app/IndexView.vue:35
#, fuzzy
msgid "Operating Environment"
msgstr "Environment Variables"
-#: src/views/app/IndexView.vue:32
+#: src/views/app/IndexView.vue:36
#, fuzzy
msgid "Container Template"
msgstr "Container Name"
-#: src/views/app/IndexView.vue:35
+#: src/views/app/IndexView.vue:39
msgid "Update Cache"
msgstr "Update Cache"
@@ -848,9 +877,12 @@ msgid "Release Log"
msgstr "Clear Log"
#: src/views/apps/codeserver/IndexView.vue:34
-#: src/views/apps/frp/IndexView.vue:43 src/views/apps/frp/IndexView.vue:56
-#: src/views/apps/gitea/IndexView.vue:32 src/views/apps/mysql/IndexView.vue:84
-#: src/views/apps/nginx/IndexView.vue:60
+#: src/views/apps/frp/IndexView.vue:75 src/views/apps/frp/IndexView.vue:103
+#: src/views/apps/gitea/IndexView.vue:32
+#: src/views/apps/mariadb/IndexView.vue:84
+#: src/views/apps/mysql/IndexView.vue:84 src/views/apps/nginx/IndexView.vue:60
+#: src/views/apps/openresty/IndexView.vue:60
+#: src/views/apps/percona/IndexView.vue:84
#: src/views/apps/phpmyadmin/IndexView.vue:73
msgid "Modify Configuration"
msgstr "Modify Configuration"
@@ -864,12 +896,15 @@ msgstr ""
"the meaning of each parameter, please do not modify it randomly!"
#: src/views/apps/codeserver/IndexView.vue:46
-#: src/views/apps/docker/IndexView.vue:42 src/views/apps/frp/IndexView.vue:46
-#: src/views/apps/frp/IndexView.vue:59 src/views/apps/gitea/IndexView.vue:44
+#: src/views/apps/docker/IndexView.vue:42 src/views/apps/frp/IndexView.vue:63
+#: src/views/apps/frp/IndexView.vue:78 src/views/apps/frp/IndexView.vue:91
+#: src/views/apps/frp/IndexView.vue:106 src/views/apps/gitea/IndexView.vue:44
+#: src/views/apps/mariadb/IndexView.vue:96
#: src/views/apps/memcached/IndexView.vue:59
#: src/views/apps/minio/IndexView.vue:44 src/views/apps/mysql/IndexView.vue:96
-#: src/views/apps/nginx/IndexView.vue:72 src/views/apps/php/PhpView.vue:214
-#: src/views/apps/php/PhpView.vue:232
+#: src/views/apps/nginx/IndexView.vue:72
+#: src/views/apps/openresty/IndexView.vue:72
+#: src/views/apps/percona/IndexView.vue:96
#: src/views/apps/phpmyadmin/IndexView.vue:66
#: src/views/apps/phpmyadmin/IndexView.vue:85
#: src/views/apps/podman/IndexView.vue:63
@@ -878,11 +913,13 @@ msgstr ""
#: src/views/apps/postgresql/IndexView.vue:95
#: src/views/apps/pureftpd/IndexView.vue:165
#: src/views/apps/redis/IndexView.vue:63 src/views/apps/rsync/IndexView.vue:235
-#: src/views/apps/supervisor/IndexView.vue:342 src/views/file/EditModal.vue:32
-#: src/views/file/ListTable.vue:746 src/views/setting/IndexView.vue:84
-#: src/views/task/CronView.vue:259 src/views/toolbox/SystemView.vue:107
-#: src/views/toolbox/SystemView.vue:131 src/views/toolbox/SystemView.vue:149
-#: src/views/toolbox/SystemView.vue:175 src/views/toolbox/SystemView.vue:190
+#: src/views/apps/supervisor/IndexView.vue:342
+#: src/views/environment/PHPView.vue:210 src/views/environment/PHPView.vue:228
+#: src/views/file/EditModal.vue:32 src/views/file/ListTable.vue:746
+#: src/views/setting/IndexView.vue:97 src/views/task/CronView.vue:259
+#: src/views/toolbox/SshView.vue:274 src/views/toolbox/SystemView.vue:100
+#: src/views/toolbox/SystemView.vue:124 src/views/toolbox/SystemView.vue:142
+#: src/views/toolbox/SystemView.vue:168 src/views/toolbox/WebHookView.vue:389
#: src/views/website/EditView.vue:413
msgid "Save"
msgstr "Save"
@@ -891,13 +928,17 @@ msgstr "Save"
#: src/views/apps/docker/IndexView.vue:47
#: src/views/apps/fail2ban/IndexView.vue:282
#: src/views/apps/gitea/IndexView.vue:49
+#: src/views/apps/mariadb/IndexView.vue:111
#: src/views/apps/memcached/IndexView.vue:74
#: src/views/apps/minio/IndexView.vue:49 src/views/apps/mysql/IndexView.vue:111
-#: src/views/apps/nginx/IndexView.vue:87 src/views/apps/php/PhpView.vue:247
+#: src/views/apps/nginx/IndexView.vue:87
+#: src/views/apps/openresty/IndexView.vue:87
+#: src/views/apps/percona/IndexView.vue:111
#: src/views/apps/podman/IndexView.vue:85
#: src/views/apps/postgresql/IndexView.vue:110
#: src/views/apps/redis/IndexView.vue:78 src/views/apps/rsync/IndexView.vue:240
#: src/views/apps/supervisor/IndexView.vue:347
+#: src/views/environment/PHPView.vue:243
msgid "Runtime Logs"
msgstr "Runtime Logs"
@@ -915,8 +956,8 @@ msgstr "This modifies the Docker configuration file (/etc/docker/daemon.json)"
#: src/views/container/ComposeView.vue:58
#: src/views/container/ContainerView.vue:31
#: src/views/database/ServerList.vue:113 src/views/database/UserList.vue:130
-#: src/views/firewall/RuleView.vue:61 src/views/task/SystemView.vue:43
-#: src/views/task/TaskView.vue:22 src/views/toolbox/ProcessView.vue:43
+#: src/views/firewall/RuleView.vue:61 src/views/task/TaskView.vue:22
+#: src/views/toolbox/ProcessView.vue:135 src/views/toolbox/ProcessView.vue:392
msgid "Status"
msgstr "Status"
@@ -943,7 +984,7 @@ msgstr "View"
msgid "Are you sure you want to delete rule %{ name }?"
msgstr "Are you sure you want to delete rule %{ name }?"
-#: src/views/apps/fail2ban/IndexView.vue:98 src/views/apps/php/PhpView.vue:106
+#: src/views/apps/fail2ban/IndexView.vue:98
#: src/views/apps/pureftpd/IndexView.vue:88
#: src/views/apps/rsync/IndexView.vue:105
#: src/views/apps/supervisor/IndexView.vue:195 src/views/backup/ListView.vue:96
@@ -956,12 +997,13 @@ msgstr "Are you sure you want to delete rule %{ name }?"
#: src/views/container/ImageView.vue:94 src/views/container/NetworkView.vue:134
#: src/views/container/VolumeView.vue:88 src/views/database/DatabaseList.vue:97
#: src/views/database/ServerList.vue:214 src/views/database/UserList.vue:189
-#: src/views/file/ListTable.vue:87 src/views/file/ListTable.vue:291
-#: src/views/file/ToolBar.vue:238 src/views/firewall/ForwardView.vue:103
-#: src/views/firewall/IpRuleView.vue:145 src/views/firewall/RuleView.vue:182
-#: src/views/setting/SettingUser.vue:139 src/views/setting/TokenModal.vue:91
-#: src/views/ssh/IndexView.vue:92 src/views/task/CronView.vue:149
-#: src/views/task/TaskView.vue:97 src/views/website/ListView.vue:195
+#: src/views/environment/PHPView.vue:101 src/views/file/ListTable.vue:87
+#: src/views/file/ListTable.vue:291 src/views/file/ToolBar.vue:238
+#: src/views/firewall/ForwardView.vue:103 src/views/firewall/IpRuleView.vue:145
+#: src/views/firewall/RuleView.vue:182 src/views/setting/SettingUser.vue:139
+#: src/views/setting/TokenModal.vue:91 src/views/ssh/IndexView.vue:92
+#: src/views/task/CronView.vue:149 src/views/task/TaskView.vue:97
+#: src/views/toolbox/WebHookView.vue:178 src/views/website/ListView.vue:195
msgid "Delete"
msgstr "Delete"
@@ -993,8 +1035,8 @@ msgstr "Added successfully"
#: src/views/firewall/IpRuleView.vue:189 src/views/firewall/RuleView.vue:208
#: src/views/firewall/RuleView.vue:226 src/views/setting/SettingUser.vue:174
#: src/views/setting/TokenModal.vue:114 src/views/task/CronView.vue:191
-#: src/views/task/TaskView.vue:122 src/views/website/ListView.vue:254
-#: src/views/website/ListView.vue:269
+#: src/views/task/TaskView.vue:122 src/views/toolbox/WebHookView.vue:235
+#: src/views/website/ListView.vue:254 src/views/website/ListView.vue:269
msgid "Deleted successfully"
msgstr "Deleted successfully"
@@ -1100,6 +1142,27 @@ msgstr "Total Bans"
msgid "Ban List"
msgstr "Ban List"
+#: src/views/apps/frp/IndexView.vue:60 src/views/apps/frp/IndexView.vue:88
+#, fuzzy
+msgid "Run User"
+msgstr "Run As User"
+
+#: src/views/apps/frp/IndexView.vue:67 src/views/apps/frp/IndexView.vue:68
+#: src/views/apps/frp/IndexView.vue:95 src/views/apps/frp/IndexView.vue:96
+#: src/views/apps/rsync/IndexView.vue:53 src/views/apps/rsync/IndexView.vue:272
+#: src/views/apps/rsync/IndexView.vue:326 src/views/database/IndexView.vue:28
+#: src/views/setting/IndexView.vue:83 src/views/toolbox/ProcessView.vue:129
+#: src/views/toolbox/ProcessView.vue:389 src/views/toolbox/WebHookView.vue:334
+#: src/views/toolbox/WebHookView.vue:369
+msgid "User"
+msgstr "User"
+
+#: src/views/apps/frp/IndexView.vue:70 src/views/apps/frp/IndexView.vue:71
+#: src/views/apps/frp/IndexView.vue:98 src/views/apps/frp/IndexView.vue:99
+#: src/views/file/PermissionModal.vue:95 src/views/file/PermissionModal.vue:119
+msgid "Group"
+msgstr "Group"
+
#: src/views/apps/gitea/IndexView.vue:36
msgid ""
"This modifies the Gitea configuration file. If you do not understand the "
@@ -1108,38 +1171,122 @@ msgstr ""
"This modifies the Gitea configuration file. If you do not understand the "
"meaning of each parameter, please do not modify it randomly!"
+#: src/views/apps/mariadb/IndexView.vue:30
#: src/views/apps/memcached/IndexView.vue:17
#: src/views/apps/mysql/IndexView.vue:30 src/views/apps/nginx/IndexView.vue:27
-#: src/views/apps/php/PhpView.vue:120
+#: src/views/apps/openresty/IndexView.vue:27
+#: src/views/apps/percona/IndexView.vue:30
#: src/views/apps/postgresql/IndexView.vue:30
-#: src/views/apps/redis/IndexView.vue:24
+#: src/views/apps/redis/IndexView.vue:24 src/views/environment/PHPView.vue:115
msgid "Property"
msgstr "Property"
+#: src/views/apps/mariadb/IndexView.vue:37
#: src/views/apps/memcached/IndexView.vue:24
#: src/views/apps/mysql/IndexView.vue:37 src/views/apps/nginx/IndexView.vue:34
-#: src/views/apps/php/PhpView.vue:127
+#: src/views/apps/openresty/IndexView.vue:34
+#: src/views/apps/percona/IndexView.vue:37
#: src/views/apps/postgresql/IndexView.vue:37
-#: src/views/apps/redis/IndexView.vue:31
+#: src/views/apps/redis/IndexView.vue:31 src/views/environment/PHPView.vue:122
msgid "Current Value"
msgstr "Current Value"
+#: src/views/apps/mariadb/IndexView.vue:52
+#: src/views/apps/mariadb/IndexView.vue:58
+#: src/views/apps/mysql/IndexView.vue:52 src/views/apps/mysql/IndexView.vue:58
+#: src/views/apps/nginx/IndexView.vue:49
+#: src/views/apps/openresty/IndexView.vue:49
+#: src/views/apps/percona/IndexView.vue:52
+#: src/views/apps/percona/IndexView.vue:58
+#: src/views/apps/postgresql/IndexView.vue:56
+#: src/views/apps/supervisor/IndexView.vue:225
+#: src/views/environment/PHPView.vue:149 src/views/environment/PHPView.vue:155
+#: src/views/website/EditView.vue:159
+msgid "Cleared successfully"
+msgstr "Cleared successfully"
+
+#: src/views/apps/mariadb/IndexView.vue:64
+#: src/views/apps/mysql/IndexView.vue:64
+#: src/views/apps/percona/IndexView.vue:64
+#: src/views/apps/pureftpd/IndexView.vue:138
+#: src/views/database/DatabaseList.vue:127
+#: src/views/database/ServerList.vue:244
+#: src/views/database/UpdateServerModal.vue:21
+#: src/views/database/UpdateUserModal.vue:18
+#: src/views/database/UserList.vue:219 src/views/file/PermissionModal.vue:29
+#: src/views/setting/SettingUser.vue:162 src/views/setting/SettingUser.vue:168
+#: src/views/task/CronView.vue:173 src/views/task/CronView.vue:201
+#: src/views/toolbox/WebHookView.vue:210 src/views/toolbox/WebHookView.vue:281
+#: src/views/website/ListView.vue:237 src/views/website/SettingView.vue:28
+msgid "Modified successfully"
+msgstr "Modified successfully"
+
+#: src/views/apps/mariadb/IndexView.vue:74
+#: src/views/apps/mysql/IndexView.vue:74
+#: src/views/apps/percona/IndexView.vue:74 src/views/toolbox/SshView.vue:298
+msgid "Root Password"
+msgstr "Root Password"
+
+#: src/views/apps/mariadb/IndexView.vue:78
+#: src/views/apps/mysql/IndexView.vue:78
+#: src/views/apps/percona/IndexView.vue:78 src/views/website/SettingView.vue:44
+#: src/views/website/SettingView.vue:54 src/views/website/SettingView.vue:64
+#: src/views/website/SettingView.vue:97
+msgid "Save Changes"
+msgstr "Save Changes"
+
+#: src/views/apps/mariadb/IndexView.vue:88
+#, fuzzy
+msgid ""
+"This modifies the MariaDB main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+"This modifies the MySQL main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
+
+#: src/views/apps/mariadb/IndexView.vue:101
+#: src/views/apps/memcached/IndexView.vue:64
+#: src/views/apps/mysql/IndexView.vue:101 src/views/apps/nginx/IndexView.vue:77
+#: src/views/apps/openresty/IndexView.vue:77
+#: src/views/apps/percona/IndexView.vue:101
+#: src/views/apps/postgresql/IndexView.vue:100
+#: src/views/apps/redis/IndexView.vue:68 src/views/environment/PHPView.vue:233
+#: src/views/home/IndexView.vue:465
+msgid "Load Status"
+msgstr "Load Status"
+
+#: src/views/apps/mariadb/IndexView.vue:113
+#: src/views/apps/mysql/IndexView.vue:113 src/views/apps/nginx/IndexView.vue:94
+#: src/views/apps/openresty/IndexView.vue:94
+#: src/views/apps/percona/IndexView.vue:113
+#: src/views/apps/postgresql/IndexView.vue:114
+#: src/views/apps/supervisor/IndexView.vue:354
+#: src/views/environment/PHPView.vue:250
+msgid "Clear Log"
+msgstr "Clear Log"
+
+#: src/views/apps/mariadb/IndexView.vue:117
+#: src/views/apps/mysql/IndexView.vue:117
+#: src/views/apps/percona/IndexView.vue:117
+msgid "Slow Query Log"
+msgstr "Slow Query Log"
+
+#: src/views/apps/mariadb/IndexView.vue:119
+#: src/views/apps/mysql/IndexView.vue:119
+#: src/views/apps/percona/IndexView.vue:119
+#: src/views/environment/PHPView.vue:260
+msgid "Clear Slow Log"
+msgstr "Clear Slow Log"
+
#: src/views/apps/memcached/IndexView.vue:54
msgid "Service Configuration"
msgstr "Service Configuration"
-#: src/views/apps/memcached/IndexView.vue:64
-#: src/views/apps/mysql/IndexView.vue:101 src/views/apps/nginx/IndexView.vue:77
-#: src/views/apps/php/PhpView.vue:237
-#: src/views/apps/postgresql/IndexView.vue:100
-#: src/views/apps/redis/IndexView.vue:68 src/views/home/IndexView.vue:463
-msgid "Load Status"
-msgstr "Load Status"
-
#: src/views/apps/minio/IndexView.vue:32
#: src/views/container/ComposeView.vue:338
#: src/views/container/ComposeView.vue:368
#: src/views/container/ContainerCreate.vue:353
+#: src/views/toolbox/ProcessView.vue:438
msgid "Environment Variables"
msgstr "Environment Variables"
@@ -1153,39 +1300,6 @@ msgstr ""
"you do not understand the meaning of each parameter, please do not modify it "
"arbitrarily!"
-#: src/views/apps/mysql/IndexView.vue:52 src/views/apps/mysql/IndexView.vue:58
-#: src/views/apps/nginx/IndexView.vue:49 src/views/apps/php/PhpView.vue:154
-#: src/views/apps/php/PhpView.vue:160
-#: src/views/apps/postgresql/IndexView.vue:56
-#: src/views/apps/supervisor/IndexView.vue:225
-#: src/views/website/EditView.vue:159
-msgid "Cleared successfully"
-msgstr "Cleared successfully"
-
-#: src/views/apps/mysql/IndexView.vue:64
-#: src/views/apps/pureftpd/IndexView.vue:138
-#: src/views/database/DatabaseList.vue:127
-#: src/views/database/ServerList.vue:244
-#: src/views/database/UpdateServerModal.vue:21
-#: src/views/database/UpdateUserModal.vue:18
-#: src/views/database/UserList.vue:219 src/views/file/PermissionModal.vue:29
-#: src/views/setting/SettingUser.vue:162 src/views/setting/SettingUser.vue:168
-#: src/views/task/CronView.vue:173 src/views/task/CronView.vue:201
-#: src/views/website/ListView.vue:237 src/views/website/SettingView.vue:28
-msgid "Modified successfully"
-msgstr "Modified successfully"
-
-#: src/views/apps/mysql/IndexView.vue:74 src/views/toolbox/SystemView.vue:183
-#: src/views/toolbox/SystemView.vue:185
-msgid "Root Password"
-msgstr "Root Password"
-
-#: src/views/apps/mysql/IndexView.vue:78 src/views/website/SettingView.vue:44
-#: src/views/website/SettingView.vue:54 src/views/website/SettingView.vue:64
-#: src/views/website/SettingView.vue:97
-msgid "Save Changes"
-msgstr "Save Changes"
-
#: src/views/apps/mysql/IndexView.vue:88
msgid ""
"This modifies the MySQL main configuration file. If you do not understand "
@@ -1194,22 +1308,8 @@ msgstr ""
"This modifies the MySQL main configuration file. If you do not understand "
"the meaning of each parameter, please do not modify it randomly!"
-#: src/views/apps/mysql/IndexView.vue:113 src/views/apps/nginx/IndexView.vue:94
-#: src/views/apps/php/PhpView.vue:254
-#: src/views/apps/postgresql/IndexView.vue:114
-#: src/views/apps/supervisor/IndexView.vue:354
-msgid "Clear Log"
-msgstr "Clear Log"
-
-#: src/views/apps/mysql/IndexView.vue:117
-msgid "Slow Query Log"
-msgstr "Slow Query Log"
-
-#: src/views/apps/mysql/IndexView.vue:119 src/views/apps/php/PhpView.vue:264
-msgid "Clear Slow Log"
-msgstr "Clear Slow Log"
-
#: src/views/apps/nginx/IndexView.vue:64
+#: src/views/apps/openresty/IndexView.vue:64
msgid ""
"This modifies the OpenResty main configuration file. If you do not "
"understand the meaning of each parameter, please do not modify it randomly!"
@@ -1217,69 +1317,20 @@ msgstr ""
"This modifies the OpenResty main configuration file. If you do not "
"understand the meaning of each parameter, please do not modify it randomly!"
-#: src/views/apps/nginx/IndexView.vue:90 src/views/apps/php/PhpView.vue:250
+#: src/views/apps/nginx/IndexView.vue:90
+#: src/views/apps/openresty/IndexView.vue:90
+#: src/views/environment/PHPView.vue:246
msgid "Error Logs"
msgstr "Error Logs"
-#: src/views/apps/php/PhpView.vue:41
-msgid "Extension Name"
-msgstr "Extension Name"
-
-#: src/views/apps/php/PhpView.vue:69
-msgid "Are you sure you want to install %{ name }?"
-msgstr "Are you sure you want to install %{ name }?"
-
-#: src/views/apps/php/PhpView.vue:94
-msgid "Are you sure you want to uninstall %{ name }?"
-msgstr "Are you sure you want to uninstall %{ name }?"
-
-#: src/views/apps/php/PhpView.vue:136
-msgid "Set successfully"
-msgstr "Set successfully"
-
-#: src/views/apps/php/PhpView.vue:166 src/views/apps/php/PhpView.vue:172
-msgid "Task submitted, please check progress in background tasks"
-msgstr "Task submitted, please check progress in background tasks"
-
-#: src/views/apps/php/PhpView.vue:184
-msgid "Set as CLI Default Version"
-msgstr "Set as CLI Default Version"
-
-#: src/views/apps/php/PhpView.vue:188
-msgid "Extension Management"
-msgstr "Extension Management"
-
-#: src/views/apps/php/PhpView.vue:201
-#: src/views/apps/postgresql/IndexView.vue:66
-#: src/views/apps/redis/IndexView.vue:51 src/views/apps/rsync/IndexView.vue:223
-#: src/views/apps/supervisor/IndexView.vue:330
-msgid "Main Configuration"
-msgstr "Main Configuration"
-
-#: src/views/apps/php/PhpView.vue:205
+#: src/views/apps/percona/IndexView.vue:88
+#, fuzzy
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!"
+"This modifies the Percona main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
msgstr ""
-"This modifies the PHP %{ version } main configuration file. If you do not "
-"understand the meaning of each parameter, please do not modify it randomly!"
-
-#: src/views/apps/php/PhpView.vue:219
-msgid "FPM Configuration"
-msgstr "FPM Configuration"
-
-#: src/views/apps/php/PhpView.vue:223
-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 ""
-"This modifies the PHP %{ version } FPM configuration file. If you do not "
-"understand the meaning of each parameter, please do not modify it randomly!"
-
-#: src/views/apps/php/PhpView.vue:260
-#: src/views/apps/postgresql/IndexView.vue:120
-msgid "Slow Logs"
-msgstr "Slow Logs"
+"This modifies the Redis main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
#: src/views/apps/phpmyadmin/IndexView.vue:57
msgid "Access Information"
@@ -1337,6 +1388,13 @@ msgstr ""
"This modifies the Podman storage configuration file (/etc/containers/storage."
"conf)"
+#: src/views/apps/postgresql/IndexView.vue:66
+#: src/views/apps/redis/IndexView.vue:51 src/views/apps/rsync/IndexView.vue:223
+#: src/views/apps/supervisor/IndexView.vue:330
+#: src/views/environment/PHPView.vue:197
+msgid "Main Configuration"
+msgstr "Main Configuration"
+
#: src/views/apps/postgresql/IndexView.vue:70
msgid ""
"This modifies the PostgreSQL main configuration file. If you do not "
@@ -1357,6 +1415,11 @@ msgstr ""
"This modifies the PostgreSQL user configuration file. If you do not "
"understand the meaning of each parameter, please do not modify it randomly!"
+#: src/views/apps/postgresql/IndexView.vue:120
+#: src/views/environment/PHPView.vue:256
+msgid "Slow Logs"
+msgstr "Slow Logs"
+
#: src/views/apps/pureftpd/IndexView.vue:32
#: src/views/apps/pureftpd/IndexView.vue:214
#: src/views/container/ImageView.vue:198
@@ -1367,7 +1430,7 @@ msgstr ""
#: src/views/database/UpdateServerModal.vue:86
#: src/views/database/UserList.vue:39 src/views/login/IndexView.vue:133
#: src/views/setting/CreateModal.vue:40 src/views/setting/SettingUser.vue:19
-#: src/views/ssh/CreateModal.vue:83 src/views/ssh/UpdateModal.vue:89
+#: src/views/ssh/CreateModal.vue:85 src/views/ssh/UpdateModal.vue:91
msgid "Username"
msgstr "Username"
@@ -1400,7 +1463,7 @@ msgstr "Run Log"
#: src/views/database/CreateDatabaseModal.vue:79
#: src/views/database/CreateUserModal.vue:55
#: src/views/database/IndexView.vue:42 src/views/setting/CreateModal.vue:32
-#: src/views/setting/IndexView.vue:76
+#: src/views/setting/IndexView.vue:89
msgid "Create User"
msgstr "Create User"
@@ -1422,9 +1485,9 @@ msgstr "Enter username"
#: src/views/database/UpdateServerModal.vue:94
#: src/views/database/UpdateUserModal.vue:55 src/views/database/UserList.vue:49
#: src/views/login/IndexView.vue:142 src/views/setting/CreateModal.vue:47
-#: src/views/setting/PasswordModal.vue:34 src/views/ssh/CreateModal.vue:77
-#: src/views/ssh/CreateModal.vue:86 src/views/ssh/UpdateModal.vue:83
-#: src/views/ssh/UpdateModal.vue:92
+#: src/views/setting/PasswordModal.vue:34 src/views/ssh/CreateModal.vue:79
+#: src/views/ssh/CreateModal.vue:88 src/views/ssh/UpdateModal.vue:85
+#: src/views/ssh/UpdateModal.vue:94
msgid "Password"
msgstr "Password"
@@ -1453,21 +1516,14 @@ msgstr ""
"This modifies the Redis main configuration file. If you do not understand "
"the meaning of each parameter, please do not modify it randomly!"
-#: src/views/apps/rsync/IndexView.vue:53 src/views/apps/rsync/IndexView.vue:272
-#: src/views/apps/rsync/IndexView.vue:326 src/views/database/IndexView.vue:28
-#: src/views/setting/IndexView.vue:70 src/views/task/SystemView.vue:37
-#: src/views/toolbox/ProcessView.vue:37
-msgid "User"
-msgstr "User"
-
#: src/views/apps/rsync/IndexView.vue:60 src/views/apps/rsync/IndexView.vue:288
#: src/views/apps/rsync/IndexView.vue:343
#: src/views/database/CreateDatabaseModal.vue:111
#: src/views/database/CreateServerModal.vue:73
#: src/views/database/ServerList.vue:86
#: src/views/database/UpdateServerModal.vue:65
-#: src/views/database/UserList.vue:80 src/views/ssh/CreateModal.vue:62
-#: src/views/ssh/UpdateModal.vue:68 src/views/toolbox/SystemView.vue:136
+#: src/views/database/UserList.vue:80 src/views/ssh/CreateModal.vue:64
+#: src/views/ssh/UpdateModal.vue:70 src/views/toolbox/SystemView.vue:129
msgid "Host"
msgstr "Host"
@@ -1491,7 +1547,7 @@ msgstr "Configure"
msgid "Are you sure you want to delete module %{ name }?"
msgstr "Are you sure you want to delete module %{ name }?"
-#: src/views/apps/rsync/IndexView.vue:194
+#: src/views/apps/rsync/IndexView.vue:194 src/views/environment/PHPView.vue:184
msgid "Module Management"
msgstr "Module Management"
@@ -1542,7 +1598,7 @@ msgstr "Enter comments"
msgid "Module Configuration"
msgstr "Module Configuration"
-#: src/views/apps/s3fs/IndexView.vue:24
+#: src/views/apps/s3fs/IndexView.vue:24 src/views/toolbox/DiskView.vue:734
msgid "Mount Path"
msgstr "Mount Path"
@@ -1550,7 +1606,7 @@ msgstr "Mount Path"
msgid "Are you sure you want to delete mount %{ path }?"
msgstr "Are you sure you want to delete mount %{ path }?"
-#: src/views/apps/s3fs/IndexView.vue:57
+#: src/views/apps/s3fs/IndexView.vue:57 src/views/toolbox/DiskView.vue:354
msgid "Unmount"
msgstr "Unmount"
@@ -1637,6 +1693,7 @@ msgid "Please enter absolute path for files in start command"
msgstr "Please enter absolute path for files in start command"
#: src/views/apps/supervisor/IndexView.vue:389
+#: src/views/toolbox/ProcessView.vue:424
msgid "Working Directory"
msgstr "Working Directory"
@@ -1645,6 +1702,7 @@ msgid "Please enter absolute path for working directory"
msgstr "Please enter absolute path for working directory"
#: src/views/apps/supervisor/IndexView.vue:397
+#: src/views/toolbox/WebHookView.vue:58
msgid "Run As User"
msgstr "Run As User"
@@ -1936,9 +1994,9 @@ msgid "Enter the content of the PEM certificate file"
msgstr "Enter the content of the PEM certificate file"
#: src/views/cert/CertView.vue:508 src/views/cert/CertView.vue:576
-#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingSafe.vue:199
-#: src/views/ssh/CreateModal.vue:78 src/views/ssh/CreateModal.vue:89
-#: src/views/ssh/UpdateModal.vue:84 src/views/ssh/UpdateModal.vue:95
+#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingSafe.vue:255
+#: src/views/ssh/CreateModal.vue:80 src/views/ssh/CreateModal.vue:91
+#: src/views/ssh/UpdateModal.vue:86 src/views/ssh/UpdateModal.vue:97
#: src/views/website/EditView.vue:334
msgid "Private Key"
msgstr "Private Key"
@@ -2135,13 +2193,14 @@ msgstr "Issuance Mode"
#: src/views/container/NetworkView.vue:100
#: src/views/container/VolumeView.vue:54 src/views/setting/SettingUser.vue:76
#: src/views/setting/TokenModal.vue:34 src/views/task/CronView.vue:79
-#: src/views/task/TaskView.vue:37
+#: src/views/task/TaskView.vue:37 src/views/toolbox/WebHookView.vue:120
msgid "Creation Time"
msgstr "Creation Time"
#: src/views/container/ComposeView.vue:96 src/views/file/ListTable.vue:70
#: src/views/file/ListTable.vue:222 src/views/ssh/IndexView.vue:70
-#: src/views/task/CronView.vue:128 src/views/website/ListView.vue:138
+#: src/views/task/CronView.vue:128 src/views/toolbox/WebHookView.vue:157
+#: src/views/website/ListView.vue:138
msgid "Edit"
msgstr "Edit"
@@ -2285,12 +2344,13 @@ msgstr "Optional"
msgid "Add"
msgstr "Add"
-#: src/views/container/ContainerCreate.vue:245 src/views/home/IndexView.vue:142
-#: src/views/home/IndexView.vue:803 src/views/monitor/IndexView.vue:286
+#: src/views/container/ContainerCreate.vue:245 src/views/home/IndexView.vue:144
+#: src/views/home/IndexView.vue:805 src/views/monitor/IndexView.vue:286
msgid "Network"
msgstr "Network"
#: src/views/container/ContainerCreate.vue:248
+#: src/views/toolbox/DiskView.vue:752
msgid "Mount"
msgstr "Mount"
@@ -2326,10 +2386,10 @@ msgstr "Command"
msgid "Entrypoint"
msgstr "Entrypoint"
-#: src/views/container/ContainerCreate.vue:307 src/views/home/IndexView.vue:538
+#: src/views/container/ContainerCreate.vue:307 src/views/home/IndexView.vue:540
#: src/views/monitor/IndexView.vue:205 src/views/monitor/IndexView.vue:216
-#: src/views/monitor/IndexView.vue:238 src/views/task/SystemView.vue:78
-#: src/views/toolbox/BenchmarkView.vue:177 src/views/toolbox/ProcessView.vue:78
+#: src/views/monitor/IndexView.vue:238 src/views/toolbox/BenchmarkView.vue:177
+#: src/views/toolbox/ProcessView.vue:153
msgid "Memory"
msgstr "Memory"
@@ -2600,7 +2660,7 @@ msgid "2408:400e::/64"
msgstr "2408:400e::/64"
#: src/views/container/NetworkView.vue:303
-#: src/views/container/VolumeView.vue:203
+#: src/views/container/VolumeView.vue:203 src/views/toolbox/DiskView.vue:829
msgid "Options"
msgstr "Options"
@@ -2614,7 +2674,8 @@ msgstr "Option Name"
msgid "Option Value"
msgstr "Option Value"
-#: src/views/container/VolumeView.vue:47 src/views/home/IndexView.vue:653
+#: src/views/container/VolumeView.vue:47 src/views/home/IndexView.vue:655
+#: src/views/toolbox/DiskView.vue:324 src/views/toolbox/DiskView.vue:827
msgid "Mount Point"
msgstr "Mount Point"
@@ -2708,8 +2769,8 @@ msgstr "Enter database server host"
#: src/views/database/CreateServerModal.vue:84
#: src/views/database/UpdateServerModal.vue:76
#: src/views/firewall/ForwardView.vue:31 src/views/firewall/RuleView.vue:48
-#: src/views/setting/SettingBase.vue:49 src/views/ssh/CreateModal.vue:68
-#: src/views/ssh/UpdateModal.vue:74 src/views/website/CreateModal.vue:129
+#: src/views/setting/SettingBase.vue:42 src/views/ssh/CreateModal.vue:70
+#: src/views/ssh/UpdateModal.vue:76 src/views/website/CreateModal.vue:129
msgid "Port"
msgstr "Port"
@@ -2783,7 +2844,7 @@ msgstr "Valid"
msgid "Invalid"
msgstr "Invalid"
-#: src/views/database/ServerList.vue:146 src/views/toolbox/SystemView.vue:85
+#: src/views/database/ServerList.vue:146 src/views/toolbox/SystemView.vue:78
msgid "Synchronized successfully"
msgstr "Synchronized successfully"
@@ -2827,6 +2888,51 @@ msgstr "Not saved"
msgid "Are you sure you want to delete the user?"
msgstr "Are you sure you want to delete the user?"
+#: src/views/environment/PHPView.vue:36
+#, fuzzy
+msgid "Module Name"
+msgstr "Volume Name"
+
+#: src/views/environment/PHPView.vue:64
+msgid "Are you sure you want to install %{ name }?"
+msgstr "Are you sure you want to install %{ name }?"
+
+#: src/views/environment/PHPView.vue:89
+msgid "Are you sure you want to uninstall %{ name }?"
+msgstr "Are you sure you want to uninstall %{ name }?"
+
+#: src/views/environment/PHPView.vue:131
+msgid "Set successfully"
+msgstr "Set successfully"
+
+#: src/views/environment/PHPView.vue:161 src/views/environment/PHPView.vue:167
+msgid "Task submitted, please check progress in background tasks"
+msgstr "Task submitted, please check progress in background tasks"
+
+#: src/views/environment/PHPView.vue:180
+msgid "Set as CLI Default Version"
+msgstr "Set as CLI Default Version"
+
+#: src/views/environment/PHPView.vue:201
+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 ""
+"This modifies the PHP %{ version } main configuration file. If you do not "
+"understand the meaning of each parameter, please do not modify it randomly!"
+
+#: src/views/environment/PHPView.vue:215
+msgid "FPM Configuration"
+msgstr "FPM Configuration"
+
+#: src/views/environment/PHPView.vue:219
+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 ""
+"This modifies the PHP %{ version } FPM configuration file. If you do not "
+"understand the meaning of each parameter, please do not modify it randomly!"
+
#: src/views/error-page/NotFound.vue:11
msgid "Sorry, the page you visited does not exist."
msgstr "Sorry, the page you visited does not exist."
@@ -2865,7 +2971,7 @@ msgstr "Format"
msgid "Edit - %{ file }"
msgstr "Edit - %{ file }"
-#: src/views/file/EditModal.vue:31
+#: src/views/file/EditModal.vue:31 src/views/toolbox/ProcessView.vue:327
msgid "Refresh"
msgstr "Refresh"
@@ -2883,6 +2989,7 @@ msgid "Move"
msgstr "Move"
#: src/views/file/ListTable.vue:77 src/views/file/ListTable.vue:249
+#: src/views/toolbox/SshView.vue:336
msgid "Download"
msgstr "Download"
@@ -2983,14 +3090,14 @@ msgid "Owner"
msgstr "Owner"
#: src/views/file/PermissionModal.vue:88 src/views/file/PermissionModal.vue:97
-#: src/views/file/PermissionModal.vue:106 src/views/home/IndexView.vue:166
-#: src/views/home/IndexView.vue:182 src/views/home/IndexView.vue:848
+#: src/views/file/PermissionModal.vue:106 src/views/home/IndexView.vue:168
+#: src/views/home/IndexView.vue:184 src/views/home/IndexView.vue:850
msgid "Read"
msgstr "Read"
#: src/views/file/PermissionModal.vue:89 src/views/file/PermissionModal.vue:98
-#: src/views/file/PermissionModal.vue:107 src/views/home/IndexView.vue:166
-#: src/views/home/IndexView.vue:206 src/views/home/IndexView.vue:849
+#: src/views/file/PermissionModal.vue:107 src/views/home/IndexView.vue:168
+#: src/views/home/IndexView.vue:208 src/views/home/IndexView.vue:851
msgid "Write"
msgstr "Write"
@@ -2999,10 +3106,6 @@ msgstr "Write"
msgid "Execute"
msgstr "Execute"
-#: src/views/file/PermissionModal.vue:95 src/views/file/PermissionModal.vue:119
-msgid "Group"
-msgstr "Group"
-
#: src/views/file/PermissionModal.vue:104
msgid "Others"
msgstr "Others"
@@ -3224,44 +3327,45 @@ msgstr "SSH Switch"
msgid "Allow Ping"
msgstr "Allow Ping"
-#: src/views/firewall/SettingView.vue:55
+#: src/views/firewall/SettingView.vue:55 src/views/toolbox/SshView.vue:266
msgid "SSH Port"
msgstr "SSH Port"
-#: src/views/home/IndexView.vue:130
+#: src/views/home/IndexView.vue:132
msgid "Running blocked"
msgstr "Running blocked"
-#: src/views/home/IndexView.vue:132
+#: src/views/home/IndexView.vue:134
msgid "Running slowly"
msgstr "Running slowly"
-#: src/views/home/IndexView.vue:134
+#: src/views/home/IndexView.vue:136
msgid "Running normally"
msgstr "Running normally"
-#: src/views/home/IndexView.vue:136
+#: src/views/home/IndexView.vue:138
msgid "Running smoothly"
msgstr "Running smoothly"
-#: src/views/home/IndexView.vue:142 src/views/home/IndexView.vue:804
-#: src/views/home/IndexView.vue:824 src/views/toolbox/BenchmarkView.vue:203
+#: src/views/home/IndexView.vue:144 src/views/home/IndexView.vue:806
+#: src/views/home/IndexView.vue:826 src/views/toolbox/BenchmarkView.vue:203
+#: src/views/toolbox/DiskView.vue:803 src/views/toolbox/IndexView.vue:25
msgid "Disk"
msgstr "Disk"
-#: src/views/home/IndexView.vue:165 src/views/home/IndexView.vue:182
+#: src/views/home/IndexView.vue:167 src/views/home/IndexView.vue:184
msgid "Send"
msgstr "Send"
-#: src/views/home/IndexView.vue:165 src/views/home/IndexView.vue:206
+#: src/views/home/IndexView.vue:167 src/views/home/IndexView.vue:208
msgid "Receive"
msgstr "Receive"
-#: src/views/home/IndexView.vue:174
+#: src/views/home/IndexView.vue:176
msgid "Unit %{unit}"
msgstr "Unit %{unit}"
-#: src/views/home/IndexView.vue:188 src/views/home/IndexView.vue:212
+#: src/views/home/IndexView.vue:190 src/views/home/IndexView.vue:214
#: src/views/monitor/IndexView.vue:93 src/views/monitor/IndexView.vue:115
#: src/views/monitor/IndexView.vue:137 src/views/monitor/IndexView.vue:192
#: src/views/monitor/IndexView.vue:251 src/views/monitor/IndexView.vue:273
@@ -3270,7 +3374,7 @@ msgstr "Unit %{unit}"
msgid "Maximum"
msgstr "Maximum"
-#: src/views/home/IndexView.vue:189 src/views/home/IndexView.vue:213
+#: src/views/home/IndexView.vue:191 src/views/home/IndexView.vue:215
#: src/views/monitor/IndexView.vue:94 src/views/monitor/IndexView.vue:116
#: src/views/monitor/IndexView.vue:138 src/views/monitor/IndexView.vue:193
#: src/views/monitor/IndexView.vue:252 src/views/monitor/IndexView.vue:274
@@ -3279,7 +3383,7 @@ msgstr "Maximum"
msgid "Minimum"
msgstr "Minimum"
-#: src/views/home/IndexView.vue:193 src/views/home/IndexView.vue:217
+#: src/views/home/IndexView.vue:195 src/views/home/IndexView.vue:219
#: src/views/monitor/IndexView.vue:98 src/views/monitor/IndexView.vue:120
#: src/views/monitor/IndexView.vue:142 src/views/monitor/IndexView.vue:197
#: src/views/monitor/IndexView.vue:256 src/views/monitor/IndexView.vue:278
@@ -3288,207 +3392,208 @@ msgstr "Minimum"
msgid "Average"
msgstr "Average"
-#: src/views/home/IndexView.vue:325
+#: src/views/home/IndexView.vue:327
msgid "Panel restarting..."
msgstr "Panel restarting..."
-#: src/views/home/IndexView.vue:327
+#: src/views/home/IndexView.vue:329
msgid "Panel restarted successfully"
msgstr "Panel restarted successfully"
-#: src/views/home/IndexView.vue:339
+#: src/views/home/IndexView.vue:341
msgid "Current version is the latest"
msgstr "Current version is the latest"
-#: src/views/home/IndexView.vue:435 src/views/task/IndexView.vue:22
+#: src/views/home/IndexView.vue:437 src/views/task/IndexView.vue:22
msgid "Scheduled Tasks"
msgstr "Scheduled Tasks"
-#: src/views/home/IndexView.vue:444
+#: src/views/home/IndexView.vue:446
msgid "Sponsor Support"
msgstr "Sponsor Support"
-#: src/views/home/IndexView.vue:450
+#: src/views/home/IndexView.vue:452
msgid "Are you sure you want to restart the panel?"
msgstr "Are you sure you want to restart the panel?"
-#: src/views/home/IndexView.vue:458
+#: src/views/home/IndexView.vue:460
msgid "Resource Overview"
msgstr "Resource Overview"
-#: src/views/home/IndexView.vue:476
+#: src/views/home/IndexView.vue:478
msgid "Last 1 minute"
msgstr "Last 1 minute"
-#: src/views/home/IndexView.vue:483
+#: src/views/home/IndexView.vue:485
msgid "Last 5 minutes"
msgstr "Last 5 minutes"
-#: src/views/home/IndexView.vue:490
+#: src/views/home/IndexView.vue:492
msgid "Last 15 minutes"
msgstr "Last 15 minutes"
-#: src/views/home/IndexView.vue:509 src/views/home/IndexView.vue:521
+#: src/views/home/IndexView.vue:511 src/views/home/IndexView.vue:523
msgid "cores"
msgstr "cores"
-#: src/views/home/IndexView.vue:515
+#: src/views/home/IndexView.vue:517
msgid "Model"
msgstr "Model"
-#: src/views/home/IndexView.vue:519
+#: src/views/home/IndexView.vue:521
msgid "Parameters"
msgstr "Parameters"
-#: src/views/home/IndexView.vue:522
+#: src/views/home/IndexView.vue:524
msgid "cache"
msgstr "cache"
-#: src/views/home/IndexView.vue:528 src/views/monitor/IndexView.vue:179
+#: src/views/home/IndexView.vue:530 src/views/monitor/IndexView.vue:179
+#: src/views/toolbox/DiskView.vue:301
msgid "Usage"
msgstr "Usage"
-#: src/views/home/IndexView.vue:529
+#: src/views/home/IndexView.vue:531
msgid "Frequency"
msgstr "Frequency"
-#: src/views/home/IndexView.vue:551
+#: src/views/home/IndexView.vue:553
msgid "Active"
msgstr "Active"
-#: src/views/home/IndexView.vue:557
+#: src/views/home/IndexView.vue:559
msgid "Inactive"
msgstr "Inactive"
-#: src/views/home/IndexView.vue:563
+#: src/views/home/IndexView.vue:565 src/views/toolbox/DiskView.vue:254
msgid "Free"
msgstr "Free"
-#: src/views/home/IndexView.vue:569
+#: src/views/home/IndexView.vue:571
msgid "Shared"
msgstr "Shared"
-#: src/views/home/IndexView.vue:575
+#: src/views/home/IndexView.vue:577
msgid "Committed"
msgstr "Committed"
-#: src/views/home/IndexView.vue:581
+#: src/views/home/IndexView.vue:583
msgid "Commit Limit"
msgstr "Commit Limit"
-#: src/views/home/IndexView.vue:587 src/views/toolbox/SystemView.vue:124
+#: src/views/home/IndexView.vue:589 src/views/toolbox/SystemView.vue:117
msgid "SWAP Size"
msgstr "SWAP Size"
-#: src/views/home/IndexView.vue:593
+#: src/views/home/IndexView.vue:595
msgid "SWAP Used"
msgstr "SWAP Used"
-#: src/views/home/IndexView.vue:599
+#: src/views/home/IndexView.vue:601
msgid "SWAP Available"
msgstr "SWAP Available"
-#: src/views/home/IndexView.vue:605
+#: src/views/home/IndexView.vue:607
msgid "Physical Memory Size"
msgstr "Physical Memory Size"
-#: src/views/home/IndexView.vue:611
+#: src/views/home/IndexView.vue:613
msgid "Physical Memory Used"
msgstr "Physical Memory Used"
-#: src/views/home/IndexView.vue:617
+#: src/views/home/IndexView.vue:619
msgid "Physical Memory Available"
msgstr "Physical Memory Available"
-#: src/views/home/IndexView.vue:657
+#: src/views/home/IndexView.vue:659
msgid "File System"
msgstr "File System"
-#: src/views/home/IndexView.vue:661
+#: src/views/home/IndexView.vue:663
msgid "Inodes Usage"
msgstr "Inodes Usage"
-#: src/views/home/IndexView.vue:665
+#: src/views/home/IndexView.vue:667
msgid "Inodes Total"
msgstr "Inodes Total"
-#: src/views/home/IndexView.vue:669
+#: src/views/home/IndexView.vue:671
msgid "Inodes Used"
msgstr "Inodes Used"
-#: src/views/home/IndexView.vue:673
+#: src/views/home/IndexView.vue:675
msgid "Inodes Available"
msgstr "Inodes Available"
-#: src/views/home/IndexView.vue:691
+#: src/views/home/IndexView.vue:693
msgid "Quick Apps"
msgstr "Quick Apps"
-#: src/views/home/IndexView.vue:730
+#: src/views/home/IndexView.vue:732
msgid "You have not set any apps to display here!"
msgstr "You have not set any apps to display here!"
-#: src/views/home/IndexView.vue:734
+#: src/views/home/IndexView.vue:736
msgid "Environment Information"
msgstr "Environment Information"
-#: src/views/home/IndexView.vue:737 src/views/toolbox/SystemView.vue:138
+#: src/views/home/IndexView.vue:739 src/views/toolbox/SystemView.vue:131
msgid "System Hostname"
msgstr "System Hostname"
-#: src/views/home/IndexView.vue:743
+#: src/views/home/IndexView.vue:745
msgid "System Version"
msgstr "System Version"
-#: src/views/home/IndexView.vue:752
+#: src/views/home/IndexView.vue:754
msgid "System Kernel Version"
msgstr "System Kernel Version"
-#: src/views/home/IndexView.vue:758
+#: src/views/home/IndexView.vue:760
msgid "System Uptime"
msgstr "System Uptime"
-#: src/views/home/IndexView.vue:764
+#: src/views/home/IndexView.vue:766
msgid "Panel Internal Version"
msgstr "Panel Internal Version"
-#: src/views/home/IndexView.vue:776
+#: src/views/home/IndexView.vue:778
msgid "Panel Compile Information"
msgstr "Panel Compile Information"
-#: src/views/home/IndexView.vue:793
+#: src/views/home/IndexView.vue:795
msgid "Real-time Monitoring"
msgstr "Real-time Monitoring"
-#: src/views/home/IndexView.vue:807
+#: src/views/home/IndexView.vue:809
msgid "Unit"
msgstr "Unit"
-#: src/views/home/IndexView.vue:815
+#: src/views/home/IndexView.vue:817
msgid "Network Card"
msgstr "Network Card"
-#: src/views/home/IndexView.vue:835
+#: src/views/home/IndexView.vue:837
msgid "Total Sent"
msgstr "Total Sent"
-#: src/views/home/IndexView.vue:837
+#: src/views/home/IndexView.vue:839
msgid "Total Received"
msgstr "Total Received"
-#: src/views/home/IndexView.vue:840
+#: src/views/home/IndexView.vue:842
msgid "Real-time Sent"
msgstr "Real-time Sent"
-#: src/views/home/IndexView.vue:844
+#: src/views/home/IndexView.vue:846
msgid "Real-time Received"
msgstr "Real-time Received"
-#: src/views/home/IndexView.vue:851
+#: src/views/home/IndexView.vue:853
msgid "Real-time Read/Write"
msgstr "Real-time Read/Write"
-#: src/views/home/IndexView.vue:854
+#: src/views/home/IndexView.vue:856
msgid "Read/Write Latency"
msgstr "Read/Write Latency"
@@ -3646,20 +3751,21 @@ msgstr "Enter user password"
msgid "Enter user email"
msgstr "Enter user email"
-#: src/views/setting/IndexView.vue:51
-msgid "Panel is restarting, page will refresh in 3 seconds"
+#: src/views/setting/IndexView.vue:59
+#, fuzzy
+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:68
+#: src/views/setting/IndexView.vue:81
msgid "Basic"
msgstr "Basic"
-#: src/views/setting/IndexView.vue:69
+#: src/views/setting/IndexView.vue:82
msgid "Safe"
msgstr "Safe"
#: src/views/setting/PasswordModal.vue:16 src/views/setting/TokenModal.vue:181
-#: src/views/setting/TwoFaModal.vue:24 src/views/ssh/UpdateModal.vue:30
+#: src/views/setting/TwoFaModal.vue:24 src/views/ssh/UpdateModal.vue:31
msgid "Updated successfully"
msgstr "Updated successfully"
@@ -3671,148 +3777,166 @@ msgstr "Stable"
msgid "Beta"
msgstr "Beta"
-#: src/views/setting/SettingBase.vue:34
-msgid ""
-"Modifying panel port/entrance requires corresponding changes in the browser "
-"address bar to access the panel!"
-msgstr ""
-"Modifying panel port/entrance requires corresponding changes in the browser "
-"address bar to access the panel!"
-
-#: src/views/setting/SettingBase.vue:40 src/views/setting/SettingBase.vue:41
+#: src/views/setting/SettingBase.vue:33 src/views/setting/SettingBase.vue:34
msgid "Panel Name"
msgstr "Panel Name"
-#: src/views/setting/SettingBase.vue:43
+#: src/views/setting/SettingBase.vue:36
msgid "Language"
msgstr "Language"
-#: src/views/setting/SettingBase.vue:46
+#: src/views/setting/SettingBase.vue:39
msgid "Update Channel"
msgstr "Update Channel"
-#: src/views/setting/SettingBase.vue:50
+#: src/views/setting/SettingBase.vue:43
msgid "8888"
msgstr "8888"
-#: src/views/setting/SettingBase.vue:52
+#: src/views/setting/SettingBase.vue:45
msgid "Default Website Directory"
msgstr "Default Website Directory"
-#: src/views/setting/SettingBase.vue:53
-msgid "/www/wwwroot"
-msgstr "/www/wwwroot"
+#: src/views/setting/SettingBase.vue:46
+msgid "/opt/ace/sites"
+msgstr ""
-#: src/views/setting/SettingBase.vue:55
+#: src/views/setting/SettingBase.vue:48
msgid "Default Backup Directory"
msgstr "Default Backup Directory"
-#: src/views/setting/SettingBase.vue:56
-msgid "/www/backup"
+#: src/views/setting/SettingBase.vue:49
+#, fuzzy
+msgid "/opt/ace/backup"
msgstr "/www/backup"
-#: src/views/setting/SettingSafe.vue:17
+#: src/views/setting/SettingSafe.vue:34
+#, fuzzy
+msgid "Disabled"
+msgstr "Enabled"
+
+#: src/views/setting/SettingSafe.vue:35
+msgid "ACME (Auto)"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:36
+#, fuzzy
+msgid "Custom Certificate"
+msgstr "Create Certificate"
+
+#: src/views/setting/SettingSafe.vue:48
msgid "Login Timeout"
msgstr "Login Timeout"
-#: src/views/setting/SettingSafe.vue:22
+#: src/views/setting/SettingSafe.vue:53
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:30
+#: src/views/setting/SettingSafe.vue:61
msgid "120"
msgstr "120"
-#: src/views/setting/SettingSafe.vue:36
+#: src/views/setting/SettingSafe.vue:67
#: src/views/website/ProxyBuilderModal.vue:188
msgid "minutes"
msgstr "minutes"
-#: src/views/setting/SettingSafe.vue:45
+#: src/views/setting/SettingSafe.vue:76
msgid "Access Entrance"
msgstr "Access Entrance"
-#: src/views/setting/SettingSafe.vue:50
+#: src/views/setting/SettingSafe.vue:81
msgid ""
"Set the access entrance of the panel (e.g. /mypanel) to prevent some "
"malicious access. Leave blank to disable (not recommended)"
msgstr ""
-#: src/views/setting/SettingSafe.vue:63
+#: src/views/setting/SettingSafe.vue:94
msgid "Request IP Header"
msgstr ""
-#: src/views/setting/SettingSafe.vue:68
+#: src/views/setting/SettingSafe.vue:99
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 ""
-#: src/views/setting/SettingSafe.vue:74
+#: src/views/setting/SettingSafe.vue:105
msgid "X-Real-IP"
msgstr ""
-#: src/views/setting/SettingSafe.vue:81
+#: src/views/setting/SettingSafe.vue:112
msgid "Bind Domain"
msgstr "Bind Domain"
-#: src/views/setting/SettingSafe.vue:86
+#: src/views/setting/SettingSafe.vue:117
msgid ""
"Restrict panel access to the specified domain names. Leave blank to allow "
"access from any domain"
msgstr ""
-#: src/views/setting/SettingSafe.vue:103
+#: src/views/setting/SettingSafe.vue:134
msgid "Bind IP"
msgstr "Bind IP"
-#: src/views/setting/SettingSafe.vue:108
+#: src/views/setting/SettingSafe.vue:139
msgid ""
"Restrict panel access to the specified IP addresses. Leave blank to allow "
"access from any IP"
msgstr ""
-#: src/views/setting/SettingSafe.vue:121
+#: src/views/setting/SettingSafe.vue:152
msgid "Bind UA"
msgstr "Bind UA"
-#: src/views/setting/SettingSafe.vue:126
+#: src/views/setting/SettingSafe.vue:157
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:143
+#: src/views/setting/SettingSafe.vue:174
msgid "Offline Mode"
msgstr "Offline Mode"
-#: src/views/setting/SettingSafe.vue:148
+#: src/views/setting/SettingSafe.vue:179
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:161
+#: src/views/setting/SettingSafe.vue:192
msgid "Auto Update"
msgstr "Auto Update"
-#: src/views/setting/SettingSafe.vue:166
+#: src/views/setting/SettingSafe.vue:197
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:179
+#: src/views/setting/SettingSafe.vue:210
msgid "Panel HTTPS"
msgstr "Panel HTTPS"
-#: src/views/setting/SettingSafe.vue:184
+#: src/views/setting/SettingSafe.vue:215
msgid ""
-"Enable HTTPS for the panel to ensure secure communication. You need to "
-"provide a valid SSL certificate and private key"
+"Enable HTTPS for the panel. ACME will automatically obtain and renew "
+"certificates (requires panel accessible via public IP). Custom allows you to "
+"provide your own certificate"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:230 src/views/setting/SettingSafe.vue:235
+msgid "Panel Public IP"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:240
+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 ""
#: src/views/setting/SettingUser.vue:53
@@ -3898,15 +4022,23 @@ msgstr "Code"
msgid "Enter the code"
msgstr "Enter the code"
-#: src/views/ssh/CreateModal.vue:50 src/views/ssh/IndexView.vue:245
+#: src/views/ssh/CreateModal.vue:52 src/views/ssh/IndexView.vue:245
msgid "Create Host"
msgstr "Create Host"
-#: src/views/ssh/CreateModal.vue:73 src/views/ssh/UpdateModal.vue:79
+#: src/views/ssh/CreateModal.vue:75 src/views/ssh/UpdateModal.vue:81
msgid "Authentication Method"
msgstr "Authentication Method"
-#: src/views/ssh/CreateModal.vue:92 src/views/ssh/UpdateModal.vue:98
+#: src/views/ssh/CreateModal.vue:94 src/views/ssh/UpdateModal.vue:100
+msgid "Key Passphrase"
+msgstr ""
+
+#: src/views/ssh/CreateModal.vue:99 src/views/ssh/UpdateModal.vue:105
+msgid "Leave empty if key has no passphrase"
+msgstr ""
+
+#: src/views/ssh/CreateModal.vue:102 src/views/ssh/UpdateModal.vue:108
msgid "Remarks"
msgstr "Remarks"
@@ -3926,7 +4058,7 @@ msgstr "Connection closed. Please refresh."
msgid "Connection error. Please refresh."
msgstr "Connection error. Please refresh."
-#: src/views/ssh/UpdateModal.vue:56
+#: src/views/ssh/UpdateModal.vue:58
msgid "Update Host"
msgstr "Update Host"
@@ -3985,7 +4117,8 @@ msgstr "PostgreSQL Database"
msgid "Retention Count"
msgstr "Retention Count"
-#: src/views/task/CronView.vue:55
+#: src/views/task/CronView.vue:55 src/views/toolbox/WebHookView.vue:86
+#: src/views/toolbox/WebHookView.vue:381
msgid "Enabled"
msgstr "Enabled"
@@ -4009,55 +4142,15 @@ msgstr "Panel Tasks"
msgid "Create Task"
msgstr "Create Task"
-#: src/views/task/SystemView.vue:25 src/views/toolbox/ProcessView.vue:25
-msgid "Parent PID"
-msgstr "Parent PID"
-
-#: src/views/task/SystemView.vue:31 src/views/toolbox/ProcessView.vue:31
-msgid "Threads"
-msgstr "Threads"
-
-#: src/views/task/SystemView.vue:52 src/views/toolbox/ProcessView.vue:52
-msgid "Sleeping"
-msgstr "Sleeping"
-
-#: src/views/task/SystemView.vue:56 src/views/toolbox/ProcessView.vue:56
-msgid "Idle"
-msgstr "Idle"
-
-#: src/views/task/SystemView.vue:58 src/views/toolbox/ProcessView.vue:58
-msgid "Zombie"
-msgstr "Zombie"
-
-#: src/views/task/SystemView.vue:60 src/views/task/TaskView.vue:30
-#: src/views/toolbox/ProcessView.vue:60
-msgid "Waiting"
-msgstr "Waiting"
-
-#: src/views/task/SystemView.vue:62 src/views/toolbox/ProcessView.vue:62
-msgid "Locked"
-msgstr "Locked"
-
-#: src/views/task/SystemView.vue:87 src/views/toolbox/ProcessView.vue:87
-msgid "Start Time"
-msgstr "Start Time"
-
-#: src/views/task/SystemView.vue:108 src/views/toolbox/ProcessView.vue:108
-msgid "Process %{ pid } has been terminated"
-msgstr "Process %{ pid } has been terminated"
-
-#: src/views/task/SystemView.vue:115 src/views/toolbox/ProcessView.vue:115
-msgid "Are you sure you want to terminate process %{ pid }?"
-msgstr "Are you sure you want to terminate process %{ pid }?"
-
-#: src/views/task/SystemView.vue:127 src/views/toolbox/ProcessView.vue:127
-msgid "Terminate"
-msgstr "Terminate"
-
#: src/views/task/TaskView.vue:28
msgid "Completed"
msgstr "Completed"
+#: src/views/task/TaskView.vue:30 src/views/toolbox/ProcessView.vue:53
+#: src/views/toolbox/ProcessView.vue:90
+msgid "Waiting"
+msgstr "Waiting"
+
#: src/views/task/TaskView.vue:32
msgid "Failed"
msgstr "Failed"
@@ -4173,49 +4266,797 @@ msgstr "Benchmarking..."
msgid "Start Benchmark"
msgstr "Start Benchmark"
-#: src/views/toolbox/IndexView.vue:19
+#: src/views/toolbox/DiskView.vue:109
+#, fuzzy
+msgid "Failed to parse disk data, please refresh and try again"
+msgstr ""
+"Failed to get encryption public key, please refresh the page and try again"
+
+#: src/views/toolbox/DiskView.vue:270
+#, fuzzy
+msgid "Partition Name"
+msgstr "Option Name"
+
+#: src/views/toolbox/DiskView.vue:283
+#, fuzzy
+msgid "Used"
+msgstr "Not Used"
+
+#: src/views/toolbox/DiskView.vue:292
+#, fuzzy
+msgid "Available"
+msgstr "SWAP Available"
+
+#: src/views/toolbox/DiskView.vue:309
+#, fuzzy
+msgid "Not Mounted"
+msgstr "Not used"
+
+#: src/views/toolbox/DiskView.vue:332 src/views/toolbox/DiskView.vue:828
+#, fuzzy
+msgid "Filesystem"
+msgstr "File System"
+
+#: src/views/toolbox/DiskView.vue:385 src/views/toolbox/DiskView.vue:537
+#: src/views/toolbox/DiskView.vue:581 src/views/toolbox/DiskView.vue:630
+msgid "Please fill in all fields"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:390
+msgid ""
+"Are you sure you want to mount %{ device } to %{ path } and write to fstab "
+"for auto-mount on boot?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:397
+#, fuzzy
+msgid "Are you sure you want to mount %{ device } to %{ path }?"
+msgstr "Are you sure you want to delete mount %{ path }?"
+
+#: src/views/toolbox/DiskView.vue:411
+#, fuzzy
+msgid "Mounted successfully"
+msgstr "Moved successfully"
+
+#: src/views/toolbox/DiskView.vue:429
+#, fuzzy
+msgid "Are you sure you want to unmount this partition?"
+msgstr "Are you sure you want to update the panel?"
+
+#: src/views/toolbox/DiskView.vue:434
+#, fuzzy
+msgid "Unmounted successfully"
+msgstr "Unbanned successfully"
+
+#: src/views/toolbox/DiskView.vue:444 src/views/toolbox/DiskView.vue:495
+#, fuzzy
+msgid "Please select a device"
+msgstr "Please select a channel"
+
+#: src/views/toolbox/DiskView.vue:449 src/views/toolbox/DiskView.vue:474
+#: src/views/toolbox/DiskView.vue:519 src/views/toolbox/DiskView.vue:562
+#: src/views/toolbox/DiskView.vue:611 src/views/toolbox/DiskView.vue:658
+msgid "Dangerous Operation"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:450
+msgid ""
+"Formatting will erase all data on the partition. This operation is "
+"irreversible. Are you sure?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:453
+#, fuzzy
+msgid "Confirm Format"
+msgstr "Confirm logout?"
+
+#: src/views/toolbox/DiskView.vue:457
+#, fuzzy
+msgid "Formatted successfully"
+msgstr "Created successfully"
+
+#: src/views/toolbox/DiskView.vue:469
+#, fuzzy
+msgid "Please enter disk name"
+msgstr "Please enter absolute path"
+
+#: src/views/toolbox/DiskView.vue:475
+msgid ""
+"This will delete all partitions on %{ device } and create a single "
+"partition. All data will be permanently lost. Are you absolutely sure?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:479
+msgid "Confirm Initialize"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:483
+#, fuzzy
+msgid "Disk initialized successfully"
+msgstr "Disabled successfully"
+
+#: src/views/toolbox/DiskView.vue:501
+#, fuzzy
+msgid "Are you sure you want to create a physical volume on %{ device }?"
+msgstr "Are you sure you want to stop %{ service }?"
+
+#: src/views/toolbox/DiskView.vue:508
+#, fuzzy
+msgid "Physical volume created successfully"
+msgstr "Panel restarted successfully"
+
+#: src/views/toolbox/DiskView.vue:520
+#, fuzzy
+msgid "Are you sure you want to remove the physical volume %{ device }?"
+msgstr "Are you sure you want to delete compose %{ name }?"
+
+#: src/views/toolbox/DiskView.vue:527
+#, fuzzy
+msgid "Physical volume removed successfully"
+msgstr "Panel restarted successfully"
+
+#: src/views/toolbox/DiskView.vue:543
+#, fuzzy
+msgid "Are you sure you want to create volume group %{ name }?"
+msgstr "Are you sure you want to delete module %{ name }?"
+
+#: src/views/toolbox/DiskView.vue:550
+#, fuzzy
+msgid "Volume group created successfully"
+msgstr "Created successfully"
+
+#: src/views/toolbox/DiskView.vue:563
+msgid ""
+"Are you sure you want to remove the volume group %{ name }? All logical "
+"volumes in this group will be deleted!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:571
+#, fuzzy
+msgid "Volume group removed successfully"
+msgstr "Compressed successfully"
+
+#: src/views/toolbox/DiskView.vue:587
+#, fuzzy
+msgid ""
+"Are you sure you want to create logical volume %{ name } with %{ size }GB?"
+msgstr "Are you sure you want to delete compose %{ name }?"
+
+#: src/views/toolbox/DiskView.vue:598
+#, fuzzy
+msgid "Logical volume created successfully"
+msgstr "Panel restarted successfully"
+
+#: src/views/toolbox/DiskView.vue:612
+msgid ""
+"Are you sure you want to remove the logical volume %{ path }? All data on "
+"this volume will be lost!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:620
+#, fuzzy
+msgid "Logical volume removed successfully"
+msgstr "Retrieved successfully"
+
+#: src/views/toolbox/DiskView.vue:636
+#, fuzzy
+msgid "Are you sure you want to extend %{ path } by %{ size }GB?"
+msgstr "Are you sure you want to delete mount %{ path }?"
+
+#: src/views/toolbox/DiskView.vue:645
+#, fuzzy
+msgid "Logical volume extended successfully"
+msgstr "Logged out successfully!"
+
+#: src/views/toolbox/DiskView.vue:659
+msgid ""
+"Are you sure you want to remove the fstab entry for %{ mountPoint }? This "
+"will prevent auto-mount on boot."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:667
+#, fuzzy
+msgid "Fstab entry removed successfully"
+msgstr "Retrieved successfully"
+
+#: src/views/toolbox/DiskView.vue:678
+#, fuzzy
+msgid "Disk Management"
+msgstr "User Management"
+
+#: src/views/toolbox/DiskView.vue:684
+#, fuzzy
+msgid "Disk Name"
+msgstr "Task Name"
+
+#: src/views/toolbox/DiskView.vue:686
+#, fuzzy
+msgid "System Disk"
+msgstr "System"
+
+#: src/views/toolbox/DiskView.vue:693
+#, fuzzy
+msgid "Partitions"
+msgstr "Permissions"
+
+#: src/views/toolbox/DiskView.vue:694
+#, fuzzy
+msgid "Disk Type"
+msgstr "Task Type"
+
+#: src/views/toolbox/DiskView.vue:714
+msgid "Note: This is the system disk and cannot be operated on."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:719
+msgid "No disks found"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:722
+#, fuzzy
+msgid "Mount Partition"
+msgstr "Mount Path"
+
+#: src/views/toolbox/DiskView.vue:725 src/views/toolbox/DiskView.vue:770
+#, fuzzy
+msgid "Partition"
+msgstr "Description"
+
+#: src/views/toolbox/DiskView.vue:729 src/views/toolbox/DiskView.vue:774
+#, fuzzy
+msgid "Select partition"
+msgstr "Select PHP Version"
+
+#: src/views/toolbox/DiskView.vue:737
+msgid "e.g., /mnt/data"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:741
+#, fuzzy
+msgid "Mount Options"
+msgstr "Options"
+
+#: src/views/toolbox/DiskView.vue:744
+msgid "e.g., defaults,noatime"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:748
+msgid "Auto-mount on boot"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:758
+msgid ""
+"When enabled, the partition UUID will be written to /etc/fstab for automatic "
+"mounting on system boot."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:765
+msgid "Format Partition"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:767
+msgid "Warning: Formatting will erase all data!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:779 src/views/toolbox/DiskView.vue:812
+#, fuzzy
+msgid "Filesystem Type"
+msgstr "File System"
+
+#: src/views/toolbox/DiskView.vue:788
+#, fuzzy
+msgctxt "disk action"
+msgid "Format"
+msgstr "Format"
+
+#: src/views/toolbox/DiskView.vue:794
+msgid "Initialize Disk"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:797
+msgid ""
+"Warning: This will delete all partitions and create a single partition. All "
+"data will be lost!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:807
+#, fuzzy
+msgid "Select disk"
+msgstr "Select File"
+
+#: src/views/toolbox/DiskView.vue:816
+msgid "Initialize"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:821
+#, fuzzy
+msgid "Auto-mount Configuration (fstab)"
+msgstr "Module Configuration"
+
+#: src/views/toolbox/DiskView.vue:826 src/views/toolbox/DiskView.vue:884
+#, fuzzy
+msgid "Device"
+msgstr "Service"
+
+#: src/views/toolbox/DiskView.vue:844 src/views/toolbox/DiskView.vue:874
+#: src/views/toolbox/DiskView.vue:912 src/views/toolbox/DiskView.vue:957
+#, fuzzy
+msgid "Remove"
+msgstr "Auto Remove"
+
+#: src/views/toolbox/DiskView.vue:854
+msgid "No fstab entries"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:861
+#, fuzzy
+msgid "LVM Management"
+msgstr "Module Management"
+
+#: src/views/toolbox/DiskView.vue:863 src/views/toolbox/DiskView.vue:929
+#, fuzzy
+msgid "Physical Volumes"
+msgstr "Physical Memory Size"
+
+#: src/views/toolbox/DiskView.vue:880
+msgid "No physical volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:888
+#, fuzzy
+msgid "Select device"
+msgstr "Select server"
+
+#: src/views/toolbox/DiskView.vue:894
+#, fuzzy
+msgid "Create PV"
+msgstr "Create"
+
+#: src/views/toolbox/DiskView.vue:900
+#, fuzzy
+msgid "Volume Groups"
+msgstr "Volumes"
+
+#: src/views/toolbox/DiskView.vue:918
+msgid "No volume groups"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:922
+#, fuzzy
+msgid "VG Name"
+msgstr "Name"
+
+#: src/views/toolbox/DiskView.vue:925
+#, fuzzy
+msgid "Enter VG name"
+msgstr "Enter new name"
+
+#: src/views/toolbox/DiskView.vue:933
+#, fuzzy
+msgid "Select PVs"
+msgstr "Select host"
+
+#: src/views/toolbox/DiskView.vue:940
+#, fuzzy
+msgid "Create VG"
+msgstr "Create"
+
+#: src/views/toolbox/DiskView.vue:946
+#, fuzzy
+msgid "Logical Volumes"
+msgstr "Volumes"
+
+#: src/views/toolbox/DiskView.vue:963
+msgid "No logical volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:967
+#, fuzzy
+msgid "LV Name"
+msgstr "Name"
+
+#: src/views/toolbox/DiskView.vue:970
+#, fuzzy
+msgid "Enter LV name"
+msgstr "Enter new name"
+
+#: src/views/toolbox/DiskView.vue:974
+#, fuzzy
+msgid "Volume Group"
+msgstr "Volumes"
+
+#: src/views/toolbox/DiskView.vue:978
+#, fuzzy
+msgid "Select VG"
+msgstr "Select CA"
+
+#: src/views/toolbox/DiskView.vue:983
+#, fuzzy
+msgid "Size (GB)"
+msgstr "Size"
+
+#: src/views/toolbox/DiskView.vue:987
+#, fuzzy
+msgid "Create LV"
+msgstr "Create"
+
+#: src/views/toolbox/DiskView.vue:993
+msgid "Extend Logical Volume"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:995
+msgid "Logical Volume"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:999
+#, fuzzy
+msgid "Select LV"
+msgstr "Select CA"
+
+#: src/views/toolbox/DiskView.vue:1004
+msgid "Extend Size (GB)"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:1007
+msgid "Auto Resize Filesystem"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:1011
+msgid "Extend LV"
+msgstr ""
+
+#: src/views/toolbox/IndexView.vue:22
#, fuzzy
msgid "Process"
msgstr "Add Process"
-#: src/views/toolbox/IndexView.vue:20
+#: src/views/toolbox/IndexView.vue:23
msgid "System"
msgstr "System"
-#: src/views/toolbox/IndexView.vue:21
+#: src/views/toolbox/IndexView.vue:26
+msgid "WebHook"
+msgstr ""
+
+#: src/views/toolbox/IndexView.vue:27
msgid "Benchmark"
msgstr "Benchmark"
-#: src/views/toolbox/SystemView.vue:95
+#: src/views/toolbox/ProcessView.vue:47
+#, fuzzy
+msgid "All Status"
+msgstr "Status"
+
+#: src/views/toolbox/ProcessView.vue:49 src/views/toolbox/ProcessView.vue:82
+msgid "Sleeping"
+msgstr "Sleeping"
+
+#: src/views/toolbox/ProcessView.vue:51 src/views/toolbox/ProcessView.vue:86
+msgid "Idle"
+msgstr "Idle"
+
+#: src/views/toolbox/ProcessView.vue:52 src/views/toolbox/ProcessView.vue:88
+msgid "Zombie"
+msgstr "Zombie"
+
+#: src/views/toolbox/ProcessView.vue:54 src/views/toolbox/ProcessView.vue:92
+msgid "Locked"
+msgstr "Locked"
+
+#: src/views/toolbox/ProcessView.vue:61
+msgid "View Details"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:63
+#, fuzzy
+msgid "Terminate (SIGTERM)"
+msgstr "Terminate"
+
+#: src/views/toolbox/ProcessView.vue:64
+msgid "Kill (SIGKILL)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:66
+msgid "Stop (SIGSTOP)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:67
+#, fuzzy
+msgid "Continue (SIGCONT)"
+msgstr "Container (Start)"
+
+#: src/views/toolbox/ProcessView.vue:69
+msgid "Interrupt (SIGINT)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:70
+msgid "Hang Up (SIGHUP)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:71
+msgid "User Signal 1 (SIGUSR1)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:72
+msgid "User Signal 2 (SIGUSR2)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:115 src/views/toolbox/ProcessView.vue:383
+msgid "Parent PID"
+msgstr "Parent PID"
+
+#: src/views/toolbox/ProcessView.vue:122 src/views/toolbox/ProcessView.vue:395
+msgid "Threads"
+msgstr "Threads"
+
+#: src/views/toolbox/ProcessView.vue:163 src/views/toolbox/ProcessView.vue:416
+msgid "Start Time"
+msgstr "Start Time"
+
+#: src/views/toolbox/ProcessView.vue:235
+#, fuzzy
+msgid "Are you sure you want to send %{ signal } to process %{ pid }?"
+msgstr "Are you sure you want to terminate process %{ pid }?"
+
+#: src/views/toolbox/ProcessView.vue:245
+msgid "Signal %{ signal } has been sent to process %{ pid }"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:313
+msgid "Search by PID or name"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:372
+#, fuzzy
+msgid "Process Details"
+msgstr "Add Process"
+
+#: src/views/toolbox/ProcessView.vue:401
+#, fuzzy
+msgid "Memory (RSS)"
+msgstr "Memory"
+
+#: src/views/toolbox/ProcessView.vue:404
+#, fuzzy
+msgid "Virtual Memory"
+msgstr "Memory"
+
+#: src/views/toolbox/ProcessView.vue:407
+msgid "Swap"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:410
+#, fuzzy
+msgid "Disk Read"
+msgstr "Read"
+
+#: src/views/toolbox/ProcessView.vue:413
+#, fuzzy
+msgid "Disk Write"
+msgstr "Write"
+
+#: src/views/toolbox/ProcessView.vue:419
+#, fuzzy
+msgid "Executable Path"
+msgstr "Execute"
+
+#: src/views/toolbox/ProcessView.vue:429
+#, fuzzy
+msgid "Command Line"
+msgstr "Command"
+
+#: src/views/toolbox/ProcessView.vue:446
+#, fuzzy
+msgid "No environment variables"
+msgstr "Environment Variables"
+
+#: src/views/toolbox/ProcessView.vue:454
+#, fuzzy
+msgid "Open Files"
+msgstr "Files"
+
+#: src/views/toolbox/ProcessView.vue:462
+msgid "No open files"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:470
+#, fuzzy
+msgid "Network Connections"
+msgstr "Network Protocol"
+
+#: src/views/toolbox/ProcessView.vue:483
+msgid "No network connections"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:35
+msgid "Allow password and key login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:36
+msgid "Disable root login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:38
+msgid "Only allow key login (recommended)"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:42
+msgid "Only allow key login with forced commands"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:72
+msgid "SSH service stopped"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:75
+msgid "SSH service started"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:88
+msgid "SSH service restarted"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:99
+msgid "SSH port updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:117
+#, fuzzy
+msgid "Password authentication updated"
+msgstr "Authentication Method"
+
+#: src/views/toolbox/SshView.vue:129
+#, fuzzy
+msgid "Key authentication updated"
+msgstr "Authentication Method"
+
+#: src/views/toolbox/SshView.vue:141
+msgid "Root login setting updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:150
+#, fuzzy
+msgid "Please enter a password"
+msgstr "Please enter username and password"
+
+#: src/views/toolbox/SshView.vue:157
+#, fuzzy
+msgid "Root password updated"
+msgstr "Root Password"
+
+#: src/views/toolbox/SshView.vue:177 src/views/toolbox/SshView.vue:191
+msgid "SSH key generated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:200
+msgid "No SSH key found"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:228
+#, fuzzy
+msgid "SSH Service"
+msgstr "Service"
+
+#: src/views/toolbox/SshView.vue:231
+msgid "SSH Service Status"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:240
+#, fuzzy
+msgid "SSH Password Login"
+msgstr "Password"
+
+#: src/views/toolbox/SshView.vue:247
+msgid "Allow password authentication for SSH login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:252
+#, fuzzy
+msgid "SSH Key Login"
+msgstr "Safe Login"
+
+#: src/views/toolbox/SshView.vue:260
+msgid "Allow public key authentication for SSH login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:277
+msgid "Current SSH port, default is 22"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:283
+#, fuzzy
+msgid "Root Settings"
+msgstr "Port Settings"
+
+#: src/views/toolbox/SshView.vue:287
+#, fuzzy
+msgid "Root Password Login Setting"
+msgstr "Root Password"
+
+#: src/views/toolbox/SshView.vue:304
+#, fuzzy
+msgid "Enter new password"
+msgstr "Enter password"
+
+#: src/views/toolbox/SshView.vue:317
+#, fuzzy
+msgid "Reset"
+msgstr "Presets"
+
+#: src/views/toolbox/SshView.vue:322
+msgid ""
+"It is recommended to use a complex password. Save after modification. "
+"Refresh will clear the password field."
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:331
+#, fuzzy
+msgid "Root Key"
+msgstr "Root Directory"
+
+#: src/views/toolbox/SshView.vue:333
+#, fuzzy
+msgid "View Key"
+msgstr "View Rule"
+
+#: src/views/toolbox/SshView.vue:341
+msgid "Recommended to use key login with password disabled for higher security"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:354
+#, fuzzy
+msgid "Root Private Key"
+msgstr "Private Key"
+
+#: src/views/toolbox/SshView.vue:361
+msgid ""
+"This is the private key of the root user. Keep it safe and use it to login "
+"to this server."
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:371
+msgid "No private key generated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:375
+msgid "Regenerate"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:378
+#, fuzzy
+msgid "Download Private Key"
+msgstr "Private Key"
+
+#: src/views/toolbox/SystemView.vue:88
msgid "DNS modifications will revert to default after system restart."
msgstr "DNS modifications will revert to default after system restart."
-#: src/views/toolbox/SystemView.vue:99
+#: src/views/toolbox/SystemView.vue:92
msgid "Enter primary DNS server"
msgstr ""
-#: src/views/toolbox/SystemView.vue:102
+#: src/views/toolbox/SystemView.vue:95
msgid "Enter secondary DNS server"
msgstr ""
-#: src/views/toolbox/SystemView.vue:116
+#: src/views/toolbox/SystemView.vue:109
msgid "Total %{ total }, used %{ used }, free %{ free }"
msgstr "Total %{ total }, used %{ used }, free %{ free }"
-#: src/views/toolbox/SystemView.vue:141
+#: src/views/toolbox/SystemView.vue:134
msgid "Enter hostname, e.g. myserver"
msgstr ""
-#: src/views/toolbox/SystemView.vue:144
+#: src/views/toolbox/SystemView.vue:137
#, fuzzy
msgid "Hosts"
msgstr "Host"
-#: src/views/toolbox/SystemView.vue:152
+#: src/views/toolbox/SystemView.vue:145
msgid "Time"
msgstr "Time"
-#: src/views/toolbox/SystemView.vue:156
+#: src/views/toolbox/SystemView.vue:149
msgid ""
"After manually changing the time, it may still be overwritten by system "
"automatic time synchronization."
@@ -4223,22 +5064,97 @@ msgstr ""
"After manually changing the time, it may still be overwritten by system "
"automatic time synchronization."
-#: src/views/toolbox/SystemView.vue:162
+#: src/views/toolbox/SystemView.vue:155
msgid "Select Timezone"
msgstr "Select Timezone"
-#: src/views/toolbox/SystemView.vue:165
+#: src/views/toolbox/SystemView.vue:158
msgid "Please select a timezone"
msgstr "Please select a timezone"
-#: src/views/toolbox/SystemView.vue:169
+#: src/views/toolbox/SystemView.vue:162
msgid "Modify Time"
msgstr "Modify Time"
-#: src/views/toolbox/SystemView.vue:178
+#: src/views/toolbox/SystemView.vue:171
msgid "Synchronize Time"
msgstr "Synchronize Time"
+#: src/views/toolbox/WebHookView.vue:68 src/views/toolbox/WebHookView.vue:340
+#: src/views/toolbox/WebHookView.vue:375
+msgid "Raw Output"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:80
+msgid "Yes"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:80
+#, fuzzy
+msgid "No"
+msgstr "None"
+
+#: src/views/toolbox/WebHookView.vue:100
+#, fuzzy
+msgid "Call Count"
+msgstr "Container Count"
+
+#: src/views/toolbox/WebHookView.vue:107
+msgid "Last Call"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:145
+#, fuzzy
+msgid "Copy URL"
+msgstr "Copy"
+
+#: src/views/toolbox/WebHookView.vue:167
+#, fuzzy
+msgid "Are you sure you want to delete this WebHook?"
+msgstr "Are you sure you want to delete this backup?"
+
+#: src/views/toolbox/WebHookView.vue:217
+msgid "URL copied to clipboard"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:242 src/views/toolbox/WebHookView.vue:264
+#, fuzzy
+msgid "Please enter a name"
+msgstr "Please enter absolute path"
+
+#: src/views/toolbox/WebHookView.vue:246 src/views/toolbox/WebHookView.vue:268
+#, fuzzy
+msgid "Please enter a script"
+msgstr "Please enter absolute path"
+
+#: src/views/toolbox/WebHookView.vue:295 src/views/toolbox/WebHookView.vue:324
+#, fuzzy
+msgid "Create WebHook"
+msgstr "Create Host"
+
+#: src/views/toolbox/WebHookView.vue:332 src/views/toolbox/WebHookView.vue:367
+#, fuzzy
+msgid "Enter WebHook name"
+msgstr "Enter new name"
+
+#: src/views/toolbox/WebHookView.vue:337 src/views/toolbox/WebHookView.vue:372
+msgid "User to run the script (default: root)"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:343 src/views/toolbox/WebHookView.vue:378
+msgid "Return script output as raw text instead of JSON"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:346 src/views/toolbox/WebHookView.vue:384
+#, fuzzy
+msgid "Script"
+msgstr "Run Script"
+
+#: src/views/toolbox/WebHookView.vue:359
+#, fuzzy
+msgid "Edit WebHook"
+msgstr "Edit Website"
+
#: src/views/website/BulkCreateModal.vue:23
msgid "The format is incorrect, please check"
msgstr "The format is incorrect, please check"
@@ -4708,6 +5624,25 @@ msgstr ""
msgid "Enter the default cipher suite, leave blank to reset to default"
msgstr ""
+#~ msgid "Extension Name"
+#~ msgstr "Extension Name"
+
+#~ msgid "Extension Management"
+#~ msgstr "Extension Management"
+
+#~ msgid ""
+#~ "Modifying panel port/entrance requires corresponding changes in the "
+#~ "browser address bar to access the panel!"
+#~ msgstr ""
+#~ "Modifying panel port/entrance requires corresponding changes in the "
+#~ "browser address bar to access the panel!"
+
+#~ msgid "/www/wwwroot"
+#~ msgstr "/www/wwwroot"
+
+#~ msgid "Process %{ pid } has been terminated"
+#~ msgstr "Process %{ pid } has been terminated"
+
#~ msgid ""
#~ "Before updating apps, it is strongly recommended to backup/snapshot "
#~ "first, so you can roll back immediately if there are any issues!"
diff --git a/web/src/locales/frontend.pot b/web/src/locales/frontend.pot
index 68cf1a07..3a39464f 100644
--- a/web/src/locales/frontend.pot
+++ b/web/src/locales/frontend.pot
@@ -3,7 +3,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
#: src/components/common/AppFooter.vue:13
-#: src/views/home/IndexView.vue:440
+#: src/views/home/IndexView.vue:442
msgid "AcePanel"
msgstr ""
@@ -185,14 +185,16 @@ msgstr ""
#: src/views/apps/codeserver/IndexView.vue:23
#: src/views/apps/docker/IndexView.vue:23
#: src/views/apps/fail2ban/IndexView.vue:160
-#: src/views/apps/frp/IndexView.vue:27
+#: src/views/apps/frp/IndexView.vue:36
+#: src/views/apps/frp/IndexView.vue:44
#: src/views/apps/gitea/IndexView.vue:21
+#: src/views/apps/mariadb/IndexView.vue:46
#: src/views/apps/memcached/IndexView.vue:43
#: src/views/apps/minio/IndexView.vue:21
#: src/views/apps/mysql/IndexView.vue:46
#: src/views/apps/nginx/IndexView.vue:43
-#: src/views/apps/php/PhpView.vue:142
-#: src/views/apps/php/PhpView.vue:148
+#: src/views/apps/openresty/IndexView.vue:43
+#: src/views/apps/percona/IndexView.vue:46
#: src/views/apps/phpmyadmin/IndexView.vue:36
#: src/views/apps/phpmyadmin/IndexView.vue:43
#: src/views/apps/podman/IndexView.vue:25
@@ -205,12 +207,13 @@ msgstr ""
#: src/views/apps/rsync/IndexView.vue:177
#: src/views/apps/supervisor/IndexView.vue:219
#: src/views/apps/supervisor/IndexView.vue:284
-#: src/views/setting/IndexView.vue:48
-#: src/views/toolbox/SystemView.vue:49
-#: src/views/toolbox/SystemView.vue:55
-#: src/views/toolbox/SystemView.vue:64
-#: src/views/toolbox/SystemView.vue:70
-#: src/views/toolbox/SystemView.vue:79
+#: src/views/environment/PHPView.vue:137
+#: src/views/environment/PHPView.vue:143
+#: src/views/setting/IndexView.vue:50
+#: src/views/toolbox/SystemView.vue:48
+#: src/views/toolbox/SystemView.vue:54
+#: src/views/toolbox/SystemView.vue:63
+#: src/views/toolbox/SystemView.vue:72
#: src/views/website/EditView.vue:114
msgid "Saved successfully"
msgstr ""
@@ -225,7 +228,7 @@ msgstr ""
#: src/components/common/PathSelector.vue:42
#: src/components/common/PathSelector.vue:332
-#: src/views/app/EnvironmentView.vue:26
+#: src/views/app/EnvironmentView.vue:27
#: src/views/apps/fail2ban/IndexView.vue:37
#: src/views/apps/rsync/IndexView.vue:39
#: src/views/apps/rsync/IndexView.vue:256
@@ -239,10 +242,13 @@ msgstr ""
#: src/views/database/UpdateServerModal.vue:55
#: src/views/file/ListTable.vue:105
#: src/views/file/ToolBar.vue:257
-#: src/views/ssh/CreateModal.vue:57
-#: src/views/ssh/UpdateModal.vue:63
-#: src/views/task/SystemView.vue:18
-#: src/views/toolbox/ProcessView.vue:18
+#: src/views/ssh/CreateModal.vue:59
+#: src/views/ssh/UpdateModal.vue:65
+#: src/views/toolbox/ProcessView.vue:107
+#: src/views/toolbox/ProcessView.vue:386
+#: src/views/toolbox/WebHookView.vue:32
+#: src/views/toolbox/WebHookView.vue:331
+#: src/views/toolbox/WebHookView.vue:366
#: src/views/website/CreateModal.vue:106
msgid "Name"
msgstr ""
@@ -260,6 +266,8 @@ msgstr ""
#: src/views/backup/ListView.vue:42
#: src/views/container/ImageView.vue:53
#: src/views/file/ListTable.vue:171
+#: src/views/toolbox/DiskView.vue:275
+#: src/views/toolbox/DiskView.vue:692
msgid "Size"
msgstr ""
@@ -297,8 +305,9 @@ msgstr ""
#: src/views/firewall/CreateForwardModal.vue:41
#: src/views/setting/CreateModal.vue:19
#: src/views/setting/TokenModal.vue:125
-#: src/views/ssh/CreateModal.vue:38
+#: src/views/ssh/CreateModal.vue:40
#: src/views/task/CreateModal.vue:50
+#: src/views/toolbox/WebHookView.vue:257
msgid "Created successfully"
msgstr ""
@@ -315,6 +324,7 @@ msgstr ""
#: src/components/common/PathSelector.vue:261
#: src/components/common/PathSelector.vue:324
#: src/views/setting/TokenModal.vue:266
+#: src/views/toolbox/WebHookView.vue:351
#: src/views/website/BulkCreateModal.vue:129
#: src/views/website/CreateModal.vue:240
msgid "Create"
@@ -363,8 +373,8 @@ msgstr ""
#: src/views/setting/CreateModal.vue:64
#: src/views/setting/PasswordModal.vue:44
#: src/views/setting/TwoFaModal.vue:87
-#: src/views/ssh/CreateModal.vue:99
-#: src/views/ssh/UpdateModal.vue:105
+#: src/views/ssh/CreateModal.vue:109
+#: src/views/ssh/UpdateModal.vue:115
#: src/views/task/CreateModal.vue:157
#: src/views/website/ProxyBuilderModal.vue:201
msgid "Submit"
@@ -389,26 +399,26 @@ msgid "Logs"
msgstr ""
#: src/components/common/ServiceStatus.vue:25
-#: src/views/home/IndexView.vue:739
-#: src/views/home/IndexView.vue:747
-#: src/views/home/IndexView.vue:754
-#: src/views/home/IndexView.vue:760
-#: src/views/home/IndexView.vue:771
-#: src/views/home/IndexView.vue:783
+#: src/views/home/IndexView.vue:741
+#: src/views/home/IndexView.vue:749
+#: src/views/home/IndexView.vue:756
+#: src/views/home/IndexView.vue:762
+#: src/views/home/IndexView.vue:773
+#: src/views/home/IndexView.vue:785
msgid "Loading..."
msgstr ""
#: src/components/common/ServiceStatus.vue:26
-#: src/views/task/SystemView.vue:50
#: src/views/task/TaskView.vue:33
-#: src/views/toolbox/ProcessView.vue:50
+#: src/views/toolbox/ProcessView.vue:48
+#: src/views/toolbox/ProcessView.vue:80
#: src/views/website/ListView.vue:28
msgid "Running"
msgstr ""
#: src/components/common/ServiceStatus.vue:26
-#: src/views/task/SystemView.vue:54
-#: src/views/toolbox/ProcessView.vue:54
+#: src/views/toolbox/ProcessView.vue:50
+#: src/views/toolbox/ProcessView.vue:84
msgid "Stopped"
msgstr ""
@@ -468,11 +478,13 @@ msgstr ""
#: src/views/apps/docker/IndexView.vue:31
#: src/views/apps/fail2ban/IndexView.vue:228
#: src/views/apps/gitea/IndexView.vue:29
+#: src/views/apps/mariadb/IndexView.vue:71
#: src/views/apps/memcached/IndexView.vue:51
#: src/views/apps/minio/IndexView.vue:29
#: src/views/apps/mysql/IndexView.vue:71
#: src/views/apps/nginx/IndexView.vue:57
-#: src/views/apps/php/PhpView.vue:180
+#: src/views/apps/openresty/IndexView.vue:57
+#: src/views/apps/percona/IndexView.vue:71
#: src/views/apps/podman/IndexView.vue:39
#: src/views/apps/postgresql/IndexView.vue:63
#: src/views/apps/pureftpd/IndexView.vue:158
@@ -480,6 +492,7 @@ msgstr ""
#: src/views/apps/rsync/IndexView.vue:191
#: src/views/apps/supervisor/IndexView.vue:298
#: src/views/container/ContainerView.vue:83
+#: src/views/environment/PHPView.vue:175
msgid "Running Status"
msgstr ""
@@ -515,7 +528,8 @@ msgstr ""
#: src/views/apps/supervisor/IndexView.vue:168
#: src/views/container/ContainerView.vue:139
#: src/views/container/ContainerView.vue:413
-#: src/views/home/IndexView.vue:448
+#: src/views/home/IndexView.vue:450
+#: src/views/toolbox/SshView.vue:234
msgid "Restart"
msgstr ""
@@ -563,6 +577,24 @@ msgstr ""
#: src/layout/header/components/UserAvatar.vue:29
#: src/views/home/UpdateView.vue:26
#: src/views/monitor/IndexView.vue:460
+#: src/views/toolbox/DiskView.vue:403
+#: src/views/toolbox/DiskView.vue:405
+#: src/views/toolbox/DiskView.vue:428
+#: src/views/toolbox/DiskView.vue:430
+#: src/views/toolbox/DiskView.vue:500
+#: src/views/toolbox/DiskView.vue:504
+#: src/views/toolbox/DiskView.vue:523
+#: src/views/toolbox/DiskView.vue:542
+#: src/views/toolbox/DiskView.vue:546
+#: src/views/toolbox/DiskView.vue:567
+#: src/views/toolbox/DiskView.vue:586
+#: src/views/toolbox/DiskView.vue:594
+#: src/views/toolbox/DiskView.vue:616
+#: src/views/toolbox/DiskView.vue:635
+#: src/views/toolbox/DiskView.vue:640
+#: src/views/toolbox/DiskView.vue:663
+#: src/views/toolbox/ProcessView.vue:234
+#: src/views/toolbox/ProcessView.vue:239
msgid "Confirm"
msgstr ""
@@ -572,6 +604,19 @@ msgstr ""
#: src/views/file/ToolBar.vue:139
#: src/views/file/ToolBar.vue:226
#: src/views/home/UpdateView.vue:27
+#: src/views/toolbox/DiskView.vue:406
+#: src/views/toolbox/DiskView.vue:431
+#: src/views/toolbox/DiskView.vue:454
+#: src/views/toolbox/DiskView.vue:480
+#: src/views/toolbox/DiskView.vue:505
+#: src/views/toolbox/DiskView.vue:524
+#: src/views/toolbox/DiskView.vue:547
+#: src/views/toolbox/DiskView.vue:568
+#: src/views/toolbox/DiskView.vue:595
+#: src/views/toolbox/DiskView.vue:617
+#: src/views/toolbox/DiskView.vue:641
+#: src/views/toolbox/DiskView.vue:664
+#: src/views/toolbox/ProcessView.vue:240
msgid "Cancel"
msgstr ""
@@ -585,6 +630,7 @@ msgstr ""
#: src/views/firewall/IpRuleView.vue:101
#: src/views/firewall/RuleView.vue:110
#: src/views/firewall/RuleView.vue:135
+#: src/views/toolbox/DiskView.vue:172
msgid "Unknown"
msgstr ""
@@ -646,7 +692,7 @@ msgstr ""
#: src/views/cert/CertView.vue:573
#: src/views/cert/IndexView.vue:96
#: src/views/cert/UploadCertModal.vue:38
-#: src/views/setting/SettingSafe.vue:192
+#: src/views/setting/SettingSafe.vue:248
#: src/views/website/EditView.vue:326
msgid "Certificate"
msgstr ""
@@ -658,7 +704,7 @@ msgstr ""
#: src/locales/menu.ts:11
#: src/views/backup/ListView.vue:276
#: src/views/database/IndexView.vue:27
-#: src/views/home/IndexView.vue:426
+#: src/views/home/IndexView.vue:428
#: src/views/website/CreateModal.vue:153
msgid "Database"
msgstr ""
@@ -701,8 +747,8 @@ msgstr ""
#: src/locales/menu.ts:21
#: src/views/app/AppView.vue:93
-#: src/views/app/EnvironmentView.vue:77
-#: src/views/home/IndexView.vue:452
+#: src/views/app/EnvironmentView.vue:78
+#: src/views/home/IndexView.vue:454
#: src/views/setting/TokenModal.vue:299
msgid "Update"
msgstr ""
@@ -715,7 +761,7 @@ msgstr ""
#: src/views/cert/CertView.vue:465
#: src/views/cert/CertView.vue:548
#: src/views/cert/CreateCertModal.vue:90
-#: src/views/home/IndexView.vue:422
+#: src/views/home/IndexView.vue:424
#: src/views/task/CreateModal.vue:118
msgid "Website"
msgstr ""
@@ -752,8 +798,8 @@ msgstr ""
#: src/views/app/AppView.vue:17
#: src/views/app/AppView.vue:152
#: src/views/app/AppView.vue:157
-#: src/views/app/EnvironmentView.vue:144
-#: src/views/apps/php/PhpView.vue:79
+#: src/views/app/EnvironmentView.vue:145
+#: src/views/environment/PHPView.vue:74
msgid "Install"
msgstr ""
@@ -762,13 +808,13 @@ msgid "App Name"
msgstr ""
#: src/views/app/AppView.vue:40
-#: src/views/app/EnvironmentView.vue:32
-#: src/views/apps/php/PhpView.vue:48
+#: src/views/app/EnvironmentView.vue:33
+#: src/views/environment/PHPView.vue:43
msgid "Description"
msgstr ""
#: src/views/app/AppView.vue:46
-#: src/views/app/EnvironmentView.vue:44
+#: src/views/app/EnvironmentView.vue:45
msgid "Installed Version"
msgstr ""
@@ -777,10 +823,9 @@ msgid "Show in Home"
msgstr ""
#: src/views/app/AppView.vue:65
-#: src/views/app/EnvironmentView.vue:50
+#: src/views/app/EnvironmentView.vue:51
#: src/views/apps/fail2ban/IndexView.vue:59
#: src/views/apps/fail2ban/IndexView.vue:118
-#: src/views/apps/php/PhpView.vue:55
#: src/views/apps/pureftpd/IndexView.vue:46
#: src/views/apps/rsync/IndexView.vue:68
#: src/views/apps/s3fs/IndexView.vue:32
@@ -799,6 +844,7 @@ msgstr ""
#: src/views/database/DatabaseList.vue:73
#: src/views/database/ServerList.vue:134
#: src/views/database/UserList.vue:151
+#: src/views/environment/PHPView.vue:50
#: src/views/file/ListTable.vue:191
#: src/views/firewall/ForwardView.vue:79
#: src/views/firewall/IpRuleView.vue:121
@@ -806,9 +852,10 @@ msgstr ""
#: src/views/setting/SettingUser.vue:85
#: src/views/setting/TokenModal.vue:52
#: src/views/task/CronView.vue:98
-#: src/views/task/SystemView.vue:96
#: src/views/task/TaskView.vue:55
-#: src/views/toolbox/ProcessView.vue:96
+#: src/views/toolbox/DiskView.vue:340
+#: src/views/toolbox/DiskView.vue:831
+#: src/views/toolbox/WebHookView.vue:130
#: src/views/website/ListView.vue:123
msgid "Actions"
msgstr ""
@@ -818,7 +865,7 @@ msgid "Updating app %{ app } may reset related configurations to default state,
msgstr ""
#: src/views/app/AppView.vue:109
-#: src/views/app/EnvironmentView.vue:93
+#: src/views/app/EnvironmentView.vue:94
msgid "Manage"
msgstr ""
@@ -831,7 +878,7 @@ msgid "Are you sure to uninstall app %{ app }?"
msgstr ""
#: src/views/app/AppView.vue:137
-#: src/views/app/EnvironmentView.vue:117
+#: src/views/app/EnvironmentView.vue:118
msgid "Uninstall"
msgstr ""
@@ -841,52 +888,52 @@ msgstr ""
#: src/views/app/AppView.vue:198
#: src/views/app/AppView.vue:206
-#: src/views/app/EnvironmentView.vue:177
-#: src/views/app/EnvironmentView.vue:185
-#: src/views/app/EnvironmentView.vue:193
+#: src/views/app/EnvironmentView.vue:178
+#: src/views/app/EnvironmentView.vue:186
+#: src/views/app/EnvironmentView.vue:194
#: src/views/app/VersionModal.vue:33
msgid "Task submitted, please check the progress in background tasks"
msgstr ""
#: src/views/app/AppView.vue:229
-#: src/views/app/EnvironmentView.vue:212
+#: src/views/app/EnvironmentView.vue:217
#: src/views/firewall/RuleView.vue:150
msgid "All"
msgstr ""
-#: src/views/app/EnvironmentView.vue:38
+#: src/views/app/EnvironmentView.vue:39
msgid "Latest Version"
msgstr ""
-#: src/views/app/EnvironmentView.vue:65
+#: src/views/app/EnvironmentView.vue:66
msgid "Are you sure to update environment %{ environment }?"
msgstr ""
-#: src/views/app/EnvironmentView.vue:105
+#: src/views/app/EnvironmentView.vue:106
msgid "Are you sure to uninstall environment %{ environment }?"
msgstr ""
-#: src/views/app/EnvironmentView.vue:132
+#: src/views/app/EnvironmentView.vue:133
msgid "Are you sure to install environment %{ environment }?"
msgstr ""
-#: src/views/app/IndexView.vue:20
+#: src/views/app/IndexView.vue:23
msgid "Cache updated successfully"
msgstr ""
-#: src/views/app/IndexView.vue:30
+#: src/views/app/IndexView.vue:34
msgid "Native App"
msgstr ""
-#: src/views/app/IndexView.vue:31
+#: src/views/app/IndexView.vue:35
msgid "Operating Environment"
msgstr ""
-#: src/views/app/IndexView.vue:32
+#: src/views/app/IndexView.vue:36
msgid "Container Template"
msgstr ""
-#: src/views/app/IndexView.vue:35
+#: src/views/app/IndexView.vue:39
msgid "Update Cache"
msgstr ""
@@ -907,11 +954,14 @@ msgid "Release Log"
msgstr ""
#: src/views/apps/codeserver/IndexView.vue:34
-#: src/views/apps/frp/IndexView.vue:43
-#: src/views/apps/frp/IndexView.vue:56
+#: src/views/apps/frp/IndexView.vue:75
+#: src/views/apps/frp/IndexView.vue:103
#: src/views/apps/gitea/IndexView.vue:32
+#: src/views/apps/mariadb/IndexView.vue:84
#: src/views/apps/mysql/IndexView.vue:84
#: src/views/apps/nginx/IndexView.vue:60
+#: src/views/apps/openresty/IndexView.vue:60
+#: src/views/apps/percona/IndexView.vue:84
#: src/views/apps/phpmyadmin/IndexView.vue:73
msgid "Modify Configuration"
msgstr ""
@@ -922,15 +972,18 @@ msgstr ""
#: src/views/apps/codeserver/IndexView.vue:46
#: src/views/apps/docker/IndexView.vue:42
-#: src/views/apps/frp/IndexView.vue:46
-#: src/views/apps/frp/IndexView.vue:59
+#: src/views/apps/frp/IndexView.vue:63
+#: src/views/apps/frp/IndexView.vue:78
+#: src/views/apps/frp/IndexView.vue:91
+#: src/views/apps/frp/IndexView.vue:106
#: src/views/apps/gitea/IndexView.vue:44
+#: src/views/apps/mariadb/IndexView.vue:96
#: src/views/apps/memcached/IndexView.vue:59
#: src/views/apps/minio/IndexView.vue:44
#: src/views/apps/mysql/IndexView.vue:96
#: src/views/apps/nginx/IndexView.vue:72
-#: src/views/apps/php/PhpView.vue:214
-#: src/views/apps/php/PhpView.vue:232
+#: src/views/apps/openresty/IndexView.vue:72
+#: src/views/apps/percona/IndexView.vue:96
#: src/views/apps/phpmyadmin/IndexView.vue:66
#: src/views/apps/phpmyadmin/IndexView.vue:85
#: src/views/apps/podman/IndexView.vue:63
@@ -941,15 +994,18 @@ msgstr ""
#: src/views/apps/redis/IndexView.vue:63
#: src/views/apps/rsync/IndexView.vue:235
#: src/views/apps/supervisor/IndexView.vue:342
+#: src/views/environment/PHPView.vue:210
+#: src/views/environment/PHPView.vue:228
#: src/views/file/EditModal.vue:32
#: src/views/file/ListTable.vue:746
-#: src/views/setting/IndexView.vue:84
+#: src/views/setting/IndexView.vue:97
#: src/views/task/CronView.vue:259
-#: src/views/toolbox/SystemView.vue:107
-#: src/views/toolbox/SystemView.vue:131
-#: src/views/toolbox/SystemView.vue:149
-#: src/views/toolbox/SystemView.vue:175
-#: src/views/toolbox/SystemView.vue:190
+#: src/views/toolbox/SshView.vue:274
+#: src/views/toolbox/SystemView.vue:100
+#: src/views/toolbox/SystemView.vue:124
+#: src/views/toolbox/SystemView.vue:142
+#: src/views/toolbox/SystemView.vue:168
+#: src/views/toolbox/WebHookView.vue:389
#: src/views/website/EditView.vue:413
msgid "Save"
msgstr ""
@@ -958,16 +1014,19 @@ msgstr ""
#: src/views/apps/docker/IndexView.vue:47
#: src/views/apps/fail2ban/IndexView.vue:282
#: src/views/apps/gitea/IndexView.vue:49
+#: src/views/apps/mariadb/IndexView.vue:111
#: src/views/apps/memcached/IndexView.vue:74
#: src/views/apps/minio/IndexView.vue:49
#: src/views/apps/mysql/IndexView.vue:111
#: src/views/apps/nginx/IndexView.vue:87
-#: src/views/apps/php/PhpView.vue:247
+#: src/views/apps/openresty/IndexView.vue:87
+#: src/views/apps/percona/IndexView.vue:111
#: src/views/apps/podman/IndexView.vue:85
#: src/views/apps/postgresql/IndexView.vue:110
#: src/views/apps/redis/IndexView.vue:78
#: src/views/apps/rsync/IndexView.vue:240
#: src/views/apps/supervisor/IndexView.vue:347
+#: src/views/environment/PHPView.vue:243
msgid "Runtime Logs"
msgstr ""
@@ -988,9 +1047,9 @@ msgstr ""
#: src/views/database/ServerList.vue:113
#: src/views/database/UserList.vue:130
#: src/views/firewall/RuleView.vue:61
-#: src/views/task/SystemView.vue:43
#: src/views/task/TaskView.vue:22
-#: src/views/toolbox/ProcessView.vue:43
+#: src/views/toolbox/ProcessView.vue:135
+#: src/views/toolbox/ProcessView.vue:392
msgid "Status"
msgstr ""
@@ -1019,7 +1078,6 @@ msgid "Are you sure you want to delete rule %{ name }?"
msgstr ""
#: src/views/apps/fail2ban/IndexView.vue:98
-#: src/views/apps/php/PhpView.vue:106
#: src/views/apps/pureftpd/IndexView.vue:88
#: src/views/apps/rsync/IndexView.vue:105
#: src/views/apps/supervisor/IndexView.vue:195
@@ -1038,6 +1096,7 @@ msgstr ""
#: src/views/database/DatabaseList.vue:97
#: src/views/database/ServerList.vue:214
#: src/views/database/UserList.vue:189
+#: src/views/environment/PHPView.vue:101
#: src/views/file/ListTable.vue:87
#: src/views/file/ListTable.vue:291
#: src/views/file/ToolBar.vue:238
@@ -1049,6 +1108,7 @@ msgstr ""
#: src/views/ssh/IndexView.vue:92
#: src/views/task/CronView.vue:149
#: src/views/task/TaskView.vue:97
+#: src/views/toolbox/WebHookView.vue:178
#: src/views/website/ListView.vue:195
msgid "Delete"
msgstr ""
@@ -1092,6 +1152,7 @@ msgstr ""
#: src/views/setting/TokenModal.vue:114
#: src/views/task/CronView.vue:191
#: src/views/task/TaskView.vue:122
+#: src/views/toolbox/WebHookView.vue:235
#: src/views/website/ListView.vue:254
#: src/views/website/ListView.vue:269
msgid "Deleted successfully"
@@ -1193,65 +1254,83 @@ msgstr ""
msgid "Ban List"
msgstr ""
+#: src/views/apps/frp/IndexView.vue:60
+#: src/views/apps/frp/IndexView.vue:88
+msgid "Run User"
+msgstr ""
+
+#: src/views/apps/frp/IndexView.vue:67
+#: src/views/apps/frp/IndexView.vue:68
+#: src/views/apps/frp/IndexView.vue:95
+#: src/views/apps/frp/IndexView.vue:96
+#: src/views/apps/rsync/IndexView.vue:53
+#: src/views/apps/rsync/IndexView.vue:272
+#: src/views/apps/rsync/IndexView.vue:326
+#: src/views/database/IndexView.vue:28
+#: src/views/setting/IndexView.vue:83
+#: src/views/toolbox/ProcessView.vue:129
+#: src/views/toolbox/ProcessView.vue:389
+#: src/views/toolbox/WebHookView.vue:334
+#: src/views/toolbox/WebHookView.vue:369
+msgid "User"
+msgstr ""
+
+#: src/views/apps/frp/IndexView.vue:70
+#: src/views/apps/frp/IndexView.vue:71
+#: src/views/apps/frp/IndexView.vue:98
+#: src/views/apps/frp/IndexView.vue:99
+#: src/views/file/PermissionModal.vue:95
+#: src/views/file/PermissionModal.vue:119
+msgid "Group"
+msgstr ""
+
#: src/views/apps/gitea/IndexView.vue:36
msgid "This modifies the Gitea configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!"
msgstr ""
+#: src/views/apps/mariadb/IndexView.vue:30
#: src/views/apps/memcached/IndexView.vue:17
#: src/views/apps/mysql/IndexView.vue:30
#: src/views/apps/nginx/IndexView.vue:27
-#: src/views/apps/php/PhpView.vue:120
+#: src/views/apps/openresty/IndexView.vue:27
+#: src/views/apps/percona/IndexView.vue:30
#: src/views/apps/postgresql/IndexView.vue:30
#: src/views/apps/redis/IndexView.vue:24
+#: src/views/environment/PHPView.vue:115
msgid "Property"
msgstr ""
+#: src/views/apps/mariadb/IndexView.vue:37
#: src/views/apps/memcached/IndexView.vue:24
#: src/views/apps/mysql/IndexView.vue:37
#: src/views/apps/nginx/IndexView.vue:34
-#: src/views/apps/php/PhpView.vue:127
+#: src/views/apps/openresty/IndexView.vue:34
+#: src/views/apps/percona/IndexView.vue:37
#: src/views/apps/postgresql/IndexView.vue:37
#: src/views/apps/redis/IndexView.vue:31
+#: src/views/environment/PHPView.vue:122
msgid "Current Value"
msgstr ""
-#: src/views/apps/memcached/IndexView.vue:54
-msgid "Service Configuration"
-msgstr ""
-
-#: src/views/apps/memcached/IndexView.vue:64
-#: src/views/apps/mysql/IndexView.vue:101
-#: src/views/apps/nginx/IndexView.vue:77
-#: src/views/apps/php/PhpView.vue:237
-#: src/views/apps/postgresql/IndexView.vue:100
-#: src/views/apps/redis/IndexView.vue:68
-#: src/views/home/IndexView.vue:463
-msgid "Load Status"
-msgstr ""
-
-#: src/views/apps/minio/IndexView.vue:32
-#: src/views/container/ComposeView.vue:338
-#: src/views/container/ComposeView.vue:368
-#: src/views/container/ContainerCreate.vue:353
-msgid "Environment Variables"
-msgstr ""
-
-#: src/views/apps/minio/IndexView.vue:36
-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 ""
-
+#: src/views/apps/mariadb/IndexView.vue:52
+#: src/views/apps/mariadb/IndexView.vue:58
#: src/views/apps/mysql/IndexView.vue:52
#: src/views/apps/mysql/IndexView.vue:58
#: src/views/apps/nginx/IndexView.vue:49
-#: src/views/apps/php/PhpView.vue:154
-#: src/views/apps/php/PhpView.vue:160
+#: src/views/apps/openresty/IndexView.vue:49
+#: src/views/apps/percona/IndexView.vue:52
+#: src/views/apps/percona/IndexView.vue:58
#: src/views/apps/postgresql/IndexView.vue:56
#: src/views/apps/supervisor/IndexView.vue:225
+#: src/views/environment/PHPView.vue:149
+#: src/views/environment/PHPView.vue:155
#: src/views/website/EditView.vue:159
msgid "Cleared successfully"
msgstr ""
+#: src/views/apps/mariadb/IndexView.vue:64
#: src/views/apps/mysql/IndexView.vue:64
+#: src/views/apps/percona/IndexView.vue:64
#: src/views/apps/pureftpd/IndexView.vue:138
#: src/views/database/DatabaseList.vue:127
#: src/views/database/ServerList.vue:244
@@ -1263,18 +1342,23 @@ msgstr ""
#: src/views/setting/SettingUser.vue:168
#: src/views/task/CronView.vue:173
#: src/views/task/CronView.vue:201
+#: src/views/toolbox/WebHookView.vue:210
+#: src/views/toolbox/WebHookView.vue:281
#: src/views/website/ListView.vue:237
#: src/views/website/SettingView.vue:28
msgid "Modified successfully"
msgstr ""
+#: src/views/apps/mariadb/IndexView.vue:74
#: src/views/apps/mysql/IndexView.vue:74
-#: src/views/toolbox/SystemView.vue:183
-#: src/views/toolbox/SystemView.vue:185
+#: src/views/apps/percona/IndexView.vue:74
+#: src/views/toolbox/SshView.vue:298
msgid "Root Password"
msgstr ""
+#: src/views/apps/mariadb/IndexView.vue:78
#: src/views/apps/mysql/IndexView.vue:78
+#: src/views/apps/percona/IndexView.vue:78
#: src/views/website/SettingView.vue:44
#: src/views/website/SettingView.vue:54
#: src/views/website/SettingView.vue:64
@@ -1282,88 +1366,80 @@ msgstr ""
msgid "Save Changes"
msgstr ""
+#: src/views/apps/mariadb/IndexView.vue:88
+msgid "This modifies the MariaDB main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+
+#: src/views/apps/mariadb/IndexView.vue:101
+#: src/views/apps/memcached/IndexView.vue:64
+#: src/views/apps/mysql/IndexView.vue:101
+#: src/views/apps/nginx/IndexView.vue:77
+#: src/views/apps/openresty/IndexView.vue:77
+#: src/views/apps/percona/IndexView.vue:101
+#: src/views/apps/postgresql/IndexView.vue:100
+#: src/views/apps/redis/IndexView.vue:68
+#: src/views/environment/PHPView.vue:233
+#: src/views/home/IndexView.vue:465
+msgid "Load Status"
+msgstr ""
+
+#: src/views/apps/mariadb/IndexView.vue:113
+#: src/views/apps/mysql/IndexView.vue:113
+#: src/views/apps/nginx/IndexView.vue:94
+#: src/views/apps/openresty/IndexView.vue:94
+#: src/views/apps/percona/IndexView.vue:113
+#: src/views/apps/postgresql/IndexView.vue:114
+#: src/views/apps/supervisor/IndexView.vue:354
+#: src/views/environment/PHPView.vue:250
+msgid "Clear Log"
+msgstr ""
+
+#: src/views/apps/mariadb/IndexView.vue:117
+#: src/views/apps/mysql/IndexView.vue:117
+#: src/views/apps/percona/IndexView.vue:117
+msgid "Slow Query Log"
+msgstr ""
+
+#: src/views/apps/mariadb/IndexView.vue:119
+#: src/views/apps/mysql/IndexView.vue:119
+#: src/views/apps/percona/IndexView.vue:119
+#: src/views/environment/PHPView.vue:260
+msgid "Clear Slow Log"
+msgstr ""
+
+#: src/views/apps/memcached/IndexView.vue:54
+msgid "Service Configuration"
+msgstr ""
+
+#: src/views/apps/minio/IndexView.vue:32
+#: src/views/container/ComposeView.vue:338
+#: src/views/container/ComposeView.vue:368
+#: src/views/container/ContainerCreate.vue:353
+#: src/views/toolbox/ProcessView.vue:438
+msgid "Environment Variables"
+msgstr ""
+
+#: src/views/apps/minio/IndexView.vue:36
+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 ""
+
#: src/views/apps/mysql/IndexView.vue:88
msgid "This modifies the MySQL main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!"
msgstr ""
-#: src/views/apps/mysql/IndexView.vue:113
-#: src/views/apps/nginx/IndexView.vue:94
-#: src/views/apps/php/PhpView.vue:254
-#: src/views/apps/postgresql/IndexView.vue:114
-#: src/views/apps/supervisor/IndexView.vue:354
-msgid "Clear Log"
-msgstr ""
-
-#: src/views/apps/mysql/IndexView.vue:117
-msgid "Slow Query Log"
-msgstr ""
-
-#: src/views/apps/mysql/IndexView.vue:119
-#: src/views/apps/php/PhpView.vue:264
-msgid "Clear Slow Log"
-msgstr ""
-
#: src/views/apps/nginx/IndexView.vue:64
+#: src/views/apps/openresty/IndexView.vue:64
msgid "This modifies the OpenResty main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!"
msgstr ""
#: src/views/apps/nginx/IndexView.vue:90
-#: src/views/apps/php/PhpView.vue:250
+#: src/views/apps/openresty/IndexView.vue:90
+#: src/views/environment/PHPView.vue:246
msgid "Error Logs"
msgstr ""
-#: src/views/apps/php/PhpView.vue:41
-msgid "Extension Name"
-msgstr ""
-
-#: src/views/apps/php/PhpView.vue:69
-msgid "Are you sure you want to install %{ name }?"
-msgstr ""
-
-#: src/views/apps/php/PhpView.vue:94
-msgid "Are you sure you want to uninstall %{ name }?"
-msgstr ""
-
-#: src/views/apps/php/PhpView.vue:136
-msgid "Set successfully"
-msgstr ""
-
-#: src/views/apps/php/PhpView.vue:166
-#: src/views/apps/php/PhpView.vue:172
-msgid "Task submitted, please check progress in background tasks"
-msgstr ""
-
-#: src/views/apps/php/PhpView.vue:184
-msgid "Set as CLI Default Version"
-msgstr ""
-
-#: src/views/apps/php/PhpView.vue:188
-msgid "Extension Management"
-msgstr ""
-
-#: src/views/apps/php/PhpView.vue:201
-#: src/views/apps/postgresql/IndexView.vue:66
-#: src/views/apps/redis/IndexView.vue:51
-#: src/views/apps/rsync/IndexView.vue:223
-#: src/views/apps/supervisor/IndexView.vue:330
-msgid "Main Configuration"
-msgstr ""
-
-#: src/views/apps/php/PhpView.vue:205
-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 ""
-
-#: src/views/apps/php/PhpView.vue:219
-msgid "FPM Configuration"
-msgstr ""
-
-#: src/views/apps/php/PhpView.vue:223
-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 ""
-
-#: src/views/apps/php/PhpView.vue:260
-#: src/views/apps/postgresql/IndexView.vue:120
-msgid "Slow Logs"
+#: src/views/apps/percona/IndexView.vue:88
+msgid "This modifies the Percona main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!"
msgstr ""
#: src/views/apps/phpmyadmin/IndexView.vue:57
@@ -1406,6 +1482,14 @@ msgstr ""
msgid "This modifies the Podman storage configuration file (/etc/containers/storage.conf)"
msgstr ""
+#: src/views/apps/postgresql/IndexView.vue:66
+#: src/views/apps/redis/IndexView.vue:51
+#: src/views/apps/rsync/IndexView.vue:223
+#: src/views/apps/supervisor/IndexView.vue:330
+#: src/views/environment/PHPView.vue:197
+msgid "Main Configuration"
+msgstr ""
+
#: src/views/apps/postgresql/IndexView.vue:70
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 ""
@@ -1418,6 +1502,11 @@ msgstr ""
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 ""
+#: src/views/apps/postgresql/IndexView.vue:120
+#: src/views/environment/PHPView.vue:256
+msgid "Slow Logs"
+msgstr ""
+
#: src/views/apps/pureftpd/IndexView.vue:32
#: src/views/apps/pureftpd/IndexView.vue:214
#: src/views/container/ImageView.vue:198
@@ -1430,8 +1519,8 @@ msgstr ""
#: src/views/login/IndexView.vue:133
#: src/views/setting/CreateModal.vue:40
#: src/views/setting/SettingUser.vue:19
-#: src/views/ssh/CreateModal.vue:83
-#: src/views/ssh/UpdateModal.vue:89
+#: src/views/ssh/CreateModal.vue:85
+#: src/views/ssh/UpdateModal.vue:91
msgid "Username"
msgstr ""
@@ -1465,7 +1554,7 @@ msgstr ""
#: src/views/database/CreateUserModal.vue:55
#: src/views/database/IndexView.vue:42
#: src/views/setting/CreateModal.vue:32
-#: src/views/setting/IndexView.vue:76
+#: src/views/setting/IndexView.vue:89
msgid "Create User"
msgstr ""
@@ -1491,10 +1580,10 @@ msgstr ""
#: src/views/login/IndexView.vue:142
#: src/views/setting/CreateModal.vue:47
#: src/views/setting/PasswordModal.vue:34
-#: src/views/ssh/CreateModal.vue:77
-#: src/views/ssh/CreateModal.vue:86
-#: src/views/ssh/UpdateModal.vue:83
-#: src/views/ssh/UpdateModal.vue:92
+#: src/views/ssh/CreateModal.vue:79
+#: src/views/ssh/CreateModal.vue:88
+#: src/views/ssh/UpdateModal.vue:85
+#: src/views/ssh/UpdateModal.vue:94
msgid "Password"
msgstr ""
@@ -1521,16 +1610,6 @@ msgstr ""
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 ""
-#: src/views/apps/rsync/IndexView.vue:53
-#: src/views/apps/rsync/IndexView.vue:272
-#: src/views/apps/rsync/IndexView.vue:326
-#: src/views/database/IndexView.vue:28
-#: src/views/setting/IndexView.vue:70
-#: src/views/task/SystemView.vue:37
-#: src/views/toolbox/ProcessView.vue:37
-msgid "User"
-msgstr ""
-
#: src/views/apps/rsync/IndexView.vue:60
#: src/views/apps/rsync/IndexView.vue:288
#: src/views/apps/rsync/IndexView.vue:343
@@ -1539,9 +1618,9 @@ msgstr ""
#: src/views/database/ServerList.vue:86
#: src/views/database/UpdateServerModal.vue:65
#: src/views/database/UserList.vue:80
-#: src/views/ssh/CreateModal.vue:62
-#: src/views/ssh/UpdateModal.vue:68
-#: src/views/toolbox/SystemView.vue:136
+#: src/views/ssh/CreateModal.vue:64
+#: src/views/ssh/UpdateModal.vue:70
+#: src/views/toolbox/SystemView.vue:129
msgid "Host"
msgstr ""
@@ -1568,6 +1647,7 @@ msgid "Are you sure you want to delete module %{ name }?"
msgstr ""
#: src/views/apps/rsync/IndexView.vue:194
+#: src/views/environment/PHPView.vue:184
msgid "Module Management"
msgstr ""
@@ -1615,6 +1695,7 @@ msgid "Module Configuration"
msgstr ""
#: src/views/apps/s3fs/IndexView.vue:24
+#: src/views/toolbox/DiskView.vue:734
msgid "Mount Path"
msgstr ""
@@ -1623,6 +1704,7 @@ msgid "Are you sure you want to delete mount %{ path }?"
msgstr ""
#: src/views/apps/s3fs/IndexView.vue:57
+#: src/views/toolbox/DiskView.vue:354
msgid "Unmount"
msgstr ""
@@ -1702,6 +1784,7 @@ msgid "Please enter absolute path for files in start command"
msgstr ""
#: src/views/apps/supervisor/IndexView.vue:389
+#: src/views/toolbox/ProcessView.vue:424
msgid "Working Directory"
msgstr ""
@@ -1710,6 +1793,7 @@ msgid "Please enter absolute path for working directory"
msgstr ""
#: src/views/apps/supervisor/IndexView.vue:397
+#: src/views/toolbox/WebHookView.vue:58
msgid "Run As User"
msgstr ""
@@ -2035,11 +2119,11 @@ msgstr ""
#: src/views/cert/CertView.vue:508
#: src/views/cert/CertView.vue:576
#: src/views/cert/UploadCertModal.vue:46
-#: src/views/setting/SettingSafe.vue:199
-#: src/views/ssh/CreateModal.vue:78
-#: src/views/ssh/CreateModal.vue:89
-#: src/views/ssh/UpdateModal.vue:84
-#: src/views/ssh/UpdateModal.vue:95
+#: src/views/setting/SettingSafe.vue:255
+#: src/views/ssh/CreateModal.vue:80
+#: src/views/ssh/CreateModal.vue:91
+#: src/views/ssh/UpdateModal.vue:86
+#: src/views/ssh/UpdateModal.vue:97
#: src/views/website/EditView.vue:334
msgid "Private Key"
msgstr ""
@@ -2249,6 +2333,7 @@ msgstr ""
#: src/views/setting/TokenModal.vue:34
#: src/views/task/CronView.vue:79
#: src/views/task/TaskView.vue:37
+#: src/views/toolbox/WebHookView.vue:120
msgid "Creation Time"
msgstr ""
@@ -2257,6 +2342,7 @@ msgstr ""
#: src/views/file/ListTable.vue:222
#: src/views/ssh/IndexView.vue:70
#: src/views/task/CronView.vue:128
+#: src/views/toolbox/WebHookView.vue:157
#: src/views/website/ListView.vue:138
msgid "Edit"
msgstr ""
@@ -2403,13 +2489,14 @@ msgid "Add"
msgstr ""
#: src/views/container/ContainerCreate.vue:245
-#: src/views/home/IndexView.vue:142
-#: src/views/home/IndexView.vue:803
+#: src/views/home/IndexView.vue:144
+#: src/views/home/IndexView.vue:805
#: src/views/monitor/IndexView.vue:286
msgid "Network"
msgstr ""
#: src/views/container/ContainerCreate.vue:248
+#: src/views/toolbox/DiskView.vue:752
msgid "Mount"
msgstr ""
@@ -2449,13 +2536,12 @@ msgid "Entrypoint"
msgstr ""
#: src/views/container/ContainerCreate.vue:307
-#: src/views/home/IndexView.vue:538
+#: src/views/home/IndexView.vue:540
#: src/views/monitor/IndexView.vue:205
#: src/views/monitor/IndexView.vue:216
#: src/views/monitor/IndexView.vue:238
-#: src/views/task/SystemView.vue:78
#: src/views/toolbox/BenchmarkView.vue:177
-#: src/views/toolbox/ProcessView.vue:78
+#: src/views/toolbox/ProcessView.vue:153
msgid "Memory"
msgstr ""
@@ -2736,6 +2822,7 @@ msgstr ""
#: src/views/container/NetworkView.vue:303
#: src/views/container/VolumeView.vue:203
+#: src/views/toolbox/DiskView.vue:829
msgid "Options"
msgstr ""
@@ -2750,7 +2837,9 @@ msgid "Option Value"
msgstr ""
#: src/views/container/VolumeView.vue:47
-#: src/views/home/IndexView.vue:653
+#: src/views/home/IndexView.vue:655
+#: src/views/toolbox/DiskView.vue:324
+#: src/views/toolbox/DiskView.vue:827
msgid "Mount Point"
msgstr ""
@@ -2846,9 +2935,9 @@ msgstr ""
#: src/views/database/UpdateServerModal.vue:76
#: src/views/firewall/ForwardView.vue:31
#: src/views/firewall/RuleView.vue:48
-#: src/views/setting/SettingBase.vue:49
-#: src/views/ssh/CreateModal.vue:68
-#: src/views/ssh/UpdateModal.vue:74
+#: src/views/setting/SettingBase.vue:42
+#: src/views/ssh/CreateModal.vue:70
+#: src/views/ssh/UpdateModal.vue:76
#: src/views/website/CreateModal.vue:129
msgid "Port"
msgstr ""
@@ -2930,7 +3019,7 @@ msgid "Invalid"
msgstr ""
#: src/views/database/ServerList.vue:146
-#: src/views/toolbox/SystemView.vue:85
+#: src/views/toolbox/SystemView.vue:78
msgid "Synchronized successfully"
msgstr ""
@@ -2966,6 +3055,43 @@ msgstr ""
msgid "Are you sure you want to delete the user?"
msgstr ""
+#: src/views/environment/PHPView.vue:36
+msgid "Module Name"
+msgstr ""
+
+#: src/views/environment/PHPView.vue:64
+msgid "Are you sure you want to install %{ name }?"
+msgstr ""
+
+#: src/views/environment/PHPView.vue:89
+msgid "Are you sure you want to uninstall %{ name }?"
+msgstr ""
+
+#: src/views/environment/PHPView.vue:131
+msgid "Set successfully"
+msgstr ""
+
+#: src/views/environment/PHPView.vue:161
+#: src/views/environment/PHPView.vue:167
+msgid "Task submitted, please check progress in background tasks"
+msgstr ""
+
+#: src/views/environment/PHPView.vue:180
+msgid "Set as CLI Default Version"
+msgstr ""
+
+#: src/views/environment/PHPView.vue:201
+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 ""
+
+#: src/views/environment/PHPView.vue:215
+msgid "FPM Configuration"
+msgstr ""
+
+#: src/views/environment/PHPView.vue:219
+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 ""
+
#: src/views/error-page/NotFound.vue:11
msgid "Sorry, the page you visited does not exist."
msgstr ""
@@ -3008,6 +3134,7 @@ msgid "Edit - %{ file }"
msgstr ""
#: src/views/file/EditModal.vue:31
+#: src/views/toolbox/ProcessView.vue:327
msgid "Refresh"
msgstr ""
@@ -3029,6 +3156,7 @@ msgstr ""
#: src/views/file/ListTable.vue:77
#: src/views/file/ListTable.vue:249
+#: src/views/toolbox/SshView.vue:336
msgid "Download"
msgstr ""
@@ -3143,18 +3271,18 @@ msgstr ""
#: src/views/file/PermissionModal.vue:88
#: src/views/file/PermissionModal.vue:97
#: src/views/file/PermissionModal.vue:106
-#: src/views/home/IndexView.vue:166
-#: src/views/home/IndexView.vue:182
-#: src/views/home/IndexView.vue:848
+#: src/views/home/IndexView.vue:168
+#: src/views/home/IndexView.vue:184
+#: src/views/home/IndexView.vue:850
msgid "Read"
msgstr ""
#: src/views/file/PermissionModal.vue:89
#: src/views/file/PermissionModal.vue:98
#: src/views/file/PermissionModal.vue:107
-#: src/views/home/IndexView.vue:166
-#: src/views/home/IndexView.vue:206
-#: src/views/home/IndexView.vue:849
+#: src/views/home/IndexView.vue:168
+#: src/views/home/IndexView.vue:208
+#: src/views/home/IndexView.vue:851
msgid "Write"
msgstr ""
@@ -3164,11 +3292,6 @@ msgstr ""
msgid "Execute"
msgstr ""
-#: src/views/file/PermissionModal.vue:95
-#: src/views/file/PermissionModal.vue:119
-msgid "Group"
-msgstr ""
-
#: src/views/file/PermissionModal.vue:104
msgid "Others"
msgstr ""
@@ -3410,48 +3533,51 @@ msgid "Allow Ping"
msgstr ""
#: src/views/firewall/SettingView.vue:55
+#: src/views/toolbox/SshView.vue:266
msgid "SSH Port"
msgstr ""
-#: src/views/home/IndexView.vue:130
+#: src/views/home/IndexView.vue:132
msgid "Running blocked"
msgstr ""
-#: src/views/home/IndexView.vue:132
+#: src/views/home/IndexView.vue:134
msgid "Running slowly"
msgstr ""
-#: src/views/home/IndexView.vue:134
+#: src/views/home/IndexView.vue:136
msgid "Running normally"
msgstr ""
-#: src/views/home/IndexView.vue:136
+#: src/views/home/IndexView.vue:138
msgid "Running smoothly"
msgstr ""
-#: src/views/home/IndexView.vue:142
-#: src/views/home/IndexView.vue:804
-#: src/views/home/IndexView.vue:824
+#: src/views/home/IndexView.vue:144
+#: src/views/home/IndexView.vue:806
+#: src/views/home/IndexView.vue:826
#: src/views/toolbox/BenchmarkView.vue:203
+#: src/views/toolbox/DiskView.vue:803
+#: src/views/toolbox/IndexView.vue:25
msgid "Disk"
msgstr ""
-#: src/views/home/IndexView.vue:165
-#: src/views/home/IndexView.vue:182
+#: src/views/home/IndexView.vue:167
+#: src/views/home/IndexView.vue:184
msgid "Send"
msgstr ""
-#: src/views/home/IndexView.vue:165
-#: src/views/home/IndexView.vue:206
+#: src/views/home/IndexView.vue:167
+#: src/views/home/IndexView.vue:208
msgid "Receive"
msgstr ""
-#: src/views/home/IndexView.vue:174
+#: src/views/home/IndexView.vue:176
msgid "Unit %{unit}"
msgstr ""
-#: src/views/home/IndexView.vue:188
-#: src/views/home/IndexView.vue:212
+#: src/views/home/IndexView.vue:190
+#: src/views/home/IndexView.vue:214
#: src/views/monitor/IndexView.vue:93
#: src/views/monitor/IndexView.vue:115
#: src/views/monitor/IndexView.vue:137
@@ -3465,8 +3591,8 @@ msgstr ""
msgid "Maximum"
msgstr ""
-#: src/views/home/IndexView.vue:189
-#: src/views/home/IndexView.vue:213
+#: src/views/home/IndexView.vue:191
+#: src/views/home/IndexView.vue:215
#: src/views/monitor/IndexView.vue:94
#: src/views/monitor/IndexView.vue:116
#: src/views/monitor/IndexView.vue:138
@@ -3480,8 +3606,8 @@ msgstr ""
msgid "Minimum"
msgstr ""
-#: src/views/home/IndexView.vue:193
-#: src/views/home/IndexView.vue:217
+#: src/views/home/IndexView.vue:195
+#: src/views/home/IndexView.vue:219
#: src/views/monitor/IndexView.vue:98
#: src/views/monitor/IndexView.vue:120
#: src/views/monitor/IndexView.vue:142
@@ -3495,212 +3621,214 @@ msgstr ""
msgid "Average"
msgstr ""
-#: src/views/home/IndexView.vue:325
+#: src/views/home/IndexView.vue:327
msgid "Panel restarting..."
msgstr ""
-#: src/views/home/IndexView.vue:327
+#: src/views/home/IndexView.vue:329
msgid "Panel restarted successfully"
msgstr ""
-#: src/views/home/IndexView.vue:339
+#: src/views/home/IndexView.vue:341
msgid "Current version is the latest"
msgstr ""
-#: src/views/home/IndexView.vue:435
+#: src/views/home/IndexView.vue:437
#: src/views/task/IndexView.vue:22
msgid "Scheduled Tasks"
msgstr ""
-#: src/views/home/IndexView.vue:444
+#: src/views/home/IndexView.vue:446
msgid "Sponsor Support"
msgstr ""
-#: src/views/home/IndexView.vue:450
+#: src/views/home/IndexView.vue:452
msgid "Are you sure you want to restart the panel?"
msgstr ""
-#: src/views/home/IndexView.vue:458
+#: src/views/home/IndexView.vue:460
msgid "Resource Overview"
msgstr ""
-#: src/views/home/IndexView.vue:476
+#: src/views/home/IndexView.vue:478
msgid "Last 1 minute"
msgstr ""
-#: src/views/home/IndexView.vue:483
+#: src/views/home/IndexView.vue:485
msgid "Last 5 minutes"
msgstr ""
-#: src/views/home/IndexView.vue:490
+#: src/views/home/IndexView.vue:492
msgid "Last 15 minutes"
msgstr ""
-#: src/views/home/IndexView.vue:509
-#: src/views/home/IndexView.vue:521
+#: src/views/home/IndexView.vue:511
+#: src/views/home/IndexView.vue:523
msgid "cores"
msgstr ""
-#: src/views/home/IndexView.vue:515
+#: src/views/home/IndexView.vue:517
msgid "Model"
msgstr ""
-#: src/views/home/IndexView.vue:519
+#: src/views/home/IndexView.vue:521
msgid "Parameters"
msgstr ""
-#: src/views/home/IndexView.vue:522
+#: src/views/home/IndexView.vue:524
msgid "cache"
msgstr ""
-#: src/views/home/IndexView.vue:528
+#: src/views/home/IndexView.vue:530
#: src/views/monitor/IndexView.vue:179
+#: src/views/toolbox/DiskView.vue:301
msgid "Usage"
msgstr ""
-#: src/views/home/IndexView.vue:529
+#: src/views/home/IndexView.vue:531
msgid "Frequency"
msgstr ""
-#: src/views/home/IndexView.vue:551
+#: src/views/home/IndexView.vue:553
msgid "Active"
msgstr ""
-#: src/views/home/IndexView.vue:557
+#: src/views/home/IndexView.vue:559
msgid "Inactive"
msgstr ""
-#: src/views/home/IndexView.vue:563
+#: src/views/home/IndexView.vue:565
+#: src/views/toolbox/DiskView.vue:254
msgid "Free"
msgstr ""
-#: src/views/home/IndexView.vue:569
+#: src/views/home/IndexView.vue:571
msgid "Shared"
msgstr ""
-#: src/views/home/IndexView.vue:575
+#: src/views/home/IndexView.vue:577
msgid "Committed"
msgstr ""
-#: src/views/home/IndexView.vue:581
+#: src/views/home/IndexView.vue:583
msgid "Commit Limit"
msgstr ""
-#: src/views/home/IndexView.vue:587
-#: src/views/toolbox/SystemView.vue:124
+#: src/views/home/IndexView.vue:589
+#: src/views/toolbox/SystemView.vue:117
msgid "SWAP Size"
msgstr ""
-#: src/views/home/IndexView.vue:593
+#: src/views/home/IndexView.vue:595
msgid "SWAP Used"
msgstr ""
-#: src/views/home/IndexView.vue:599
+#: src/views/home/IndexView.vue:601
msgid "SWAP Available"
msgstr ""
-#: src/views/home/IndexView.vue:605
+#: src/views/home/IndexView.vue:607
msgid "Physical Memory Size"
msgstr ""
-#: src/views/home/IndexView.vue:611
+#: src/views/home/IndexView.vue:613
msgid "Physical Memory Used"
msgstr ""
-#: src/views/home/IndexView.vue:617
+#: src/views/home/IndexView.vue:619
msgid "Physical Memory Available"
msgstr ""
-#: src/views/home/IndexView.vue:657
+#: src/views/home/IndexView.vue:659
msgid "File System"
msgstr ""
-#: src/views/home/IndexView.vue:661
+#: src/views/home/IndexView.vue:663
msgid "Inodes Usage"
msgstr ""
-#: src/views/home/IndexView.vue:665
+#: src/views/home/IndexView.vue:667
msgid "Inodes Total"
msgstr ""
-#: src/views/home/IndexView.vue:669
+#: src/views/home/IndexView.vue:671
msgid "Inodes Used"
msgstr ""
-#: src/views/home/IndexView.vue:673
+#: src/views/home/IndexView.vue:675
msgid "Inodes Available"
msgstr ""
-#: src/views/home/IndexView.vue:691
+#: src/views/home/IndexView.vue:693
msgid "Quick Apps"
msgstr ""
-#: src/views/home/IndexView.vue:730
+#: src/views/home/IndexView.vue:732
msgid "You have not set any apps to display here!"
msgstr ""
-#: src/views/home/IndexView.vue:734
+#: src/views/home/IndexView.vue:736
msgid "Environment Information"
msgstr ""
-#: src/views/home/IndexView.vue:737
-#: src/views/toolbox/SystemView.vue:138
+#: src/views/home/IndexView.vue:739
+#: src/views/toolbox/SystemView.vue:131
msgid "System Hostname"
msgstr ""
-#: src/views/home/IndexView.vue:743
+#: src/views/home/IndexView.vue:745
msgid "System Version"
msgstr ""
-#: src/views/home/IndexView.vue:752
+#: src/views/home/IndexView.vue:754
msgid "System Kernel Version"
msgstr ""
-#: src/views/home/IndexView.vue:758
+#: src/views/home/IndexView.vue:760
msgid "System Uptime"
msgstr ""
-#: src/views/home/IndexView.vue:764
+#: src/views/home/IndexView.vue:766
msgid "Panel Internal Version"
msgstr ""
-#: src/views/home/IndexView.vue:776
+#: src/views/home/IndexView.vue:778
msgid "Panel Compile Information"
msgstr ""
-#: src/views/home/IndexView.vue:793
+#: src/views/home/IndexView.vue:795
msgid "Real-time Monitoring"
msgstr ""
-#: src/views/home/IndexView.vue:807
+#: src/views/home/IndexView.vue:809
msgid "Unit"
msgstr ""
-#: src/views/home/IndexView.vue:815
+#: src/views/home/IndexView.vue:817
msgid "Network Card"
msgstr ""
-#: src/views/home/IndexView.vue:835
+#: src/views/home/IndexView.vue:837
msgid "Total Sent"
msgstr ""
-#: src/views/home/IndexView.vue:837
+#: src/views/home/IndexView.vue:839
msgid "Total Received"
msgstr ""
-#: src/views/home/IndexView.vue:840
+#: src/views/home/IndexView.vue:842
msgid "Real-time Sent"
msgstr ""
-#: src/views/home/IndexView.vue:844
+#: src/views/home/IndexView.vue:846
msgid "Real-time Received"
msgstr ""
-#: src/views/home/IndexView.vue:851
+#: src/views/home/IndexView.vue:853
msgid "Real-time Read/Write"
msgstr ""
-#: src/views/home/IndexView.vue:854
+#: src/views/home/IndexView.vue:856
msgid "Read/Write Latency"
msgstr ""
@@ -3868,22 +3996,22 @@ msgstr ""
msgid "Enter user email"
msgstr ""
-#: src/views/setting/IndexView.vue:51
-msgid "Panel is restarting, page will refresh in 3 seconds"
+#: src/views/setting/IndexView.vue:59
+msgid "Panel is restarting, page will refresh in 5 seconds"
msgstr ""
-#: src/views/setting/IndexView.vue:68
+#: src/views/setting/IndexView.vue:81
msgid "Basic"
msgstr ""
-#: src/views/setting/IndexView.vue:69
+#: src/views/setting/IndexView.vue:82
msgid "Safe"
msgstr ""
#: src/views/setting/PasswordModal.vue:16
#: src/views/setting/TokenModal.vue:181
#: src/views/setting/TwoFaModal.vue:24
-#: src/views/ssh/UpdateModal.vue:30
+#: src/views/ssh/UpdateModal.vue:31
msgid "Updated successfully"
msgstr ""
@@ -3895,126 +4023,143 @@ msgstr ""
msgid "Beta"
msgstr ""
+#: src/views/setting/SettingBase.vue:33
#: src/views/setting/SettingBase.vue:34
-msgid "Modifying panel port/entrance requires corresponding changes in the browser address bar to access the panel!"
-msgstr ""
-
-#: src/views/setting/SettingBase.vue:40
-#: src/views/setting/SettingBase.vue:41
msgid "Panel Name"
msgstr ""
-#: src/views/setting/SettingBase.vue:43
+#: src/views/setting/SettingBase.vue:36
msgid "Language"
msgstr ""
-#: src/views/setting/SettingBase.vue:46
+#: src/views/setting/SettingBase.vue:39
msgid "Update Channel"
msgstr ""
-#: src/views/setting/SettingBase.vue:50
+#: src/views/setting/SettingBase.vue:43
msgid "8888"
msgstr ""
-#: src/views/setting/SettingBase.vue:52
+#: src/views/setting/SettingBase.vue:45
msgid "Default Website Directory"
msgstr ""
-#: src/views/setting/SettingBase.vue:53
-msgid "/www/wwwroot"
+#: src/views/setting/SettingBase.vue:46
+msgid "/opt/ace/sites"
msgstr ""
-#: src/views/setting/SettingBase.vue:55
+#: src/views/setting/SettingBase.vue:48
msgid "Default Backup Directory"
msgstr ""
-#: src/views/setting/SettingBase.vue:56
-msgid "/www/backup"
+#: src/views/setting/SettingBase.vue:49
+msgid "/opt/ace/backup"
msgstr ""
-#: src/views/setting/SettingSafe.vue:17
-msgid "Login Timeout"
+#: src/views/setting/SettingSafe.vue:34
+msgid "Disabled"
msgstr ""
-#: src/views/setting/SettingSafe.vue:22
-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:30
-msgid "120"
+#: src/views/setting/SettingSafe.vue:35
+msgid "ACME (Auto)"
msgstr ""
#: src/views/setting/SettingSafe.vue:36
+msgid "Custom Certificate"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:48
+msgid "Login Timeout"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:53
+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:61
+msgid "120"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:67
#: src/views/website/ProxyBuilderModal.vue:188
msgid "minutes"
msgstr ""
-#: src/views/setting/SettingSafe.vue:45
+#: src/views/setting/SettingSafe.vue:76
msgid "Access Entrance"
msgstr ""
-#: src/views/setting/SettingSafe.vue:50
+#: src/views/setting/SettingSafe.vue:81
msgid "Set the access entrance of the panel (e.g. /mypanel) to prevent some malicious access. Leave blank to disable (not recommended)"
msgstr ""
-#: src/views/setting/SettingSafe.vue:63
+#: src/views/setting/SettingSafe.vue:94
msgid "Request IP Header"
msgstr ""
-#: src/views/setting/SettingSafe.vue:68
+#: src/views/setting/SettingSafe.vue:99
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 ""
-#: src/views/setting/SettingSafe.vue:74
+#: src/views/setting/SettingSafe.vue:105
msgid "X-Real-IP"
msgstr ""
-#: src/views/setting/SettingSafe.vue:81
+#: src/views/setting/SettingSafe.vue:112
msgid "Bind Domain"
msgstr ""
-#: src/views/setting/SettingSafe.vue:86
+#: src/views/setting/SettingSafe.vue:117
msgid "Restrict panel access to the specified domain names. Leave blank to allow access from any domain"
msgstr ""
-#: src/views/setting/SettingSafe.vue:103
+#: src/views/setting/SettingSafe.vue:134
msgid "Bind IP"
msgstr ""
-#: src/views/setting/SettingSafe.vue:108
+#: src/views/setting/SettingSafe.vue:139
msgid "Restrict panel access to the specified IP addresses. Leave blank to allow access from any IP"
msgstr ""
-#: src/views/setting/SettingSafe.vue:121
+#: src/views/setting/SettingSafe.vue:152
msgid "Bind UA"
msgstr ""
-#: src/views/setting/SettingSafe.vue:126
+#: src/views/setting/SettingSafe.vue:157
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:143
+#: src/views/setting/SettingSafe.vue:174
msgid "Offline Mode"
msgstr ""
-#: src/views/setting/SettingSafe.vue:148
+#: src/views/setting/SettingSafe.vue:179
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:161
+#: src/views/setting/SettingSafe.vue:192
msgid "Auto Update"
msgstr ""
-#: src/views/setting/SettingSafe.vue:166
+#: src/views/setting/SettingSafe.vue:197
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:179
+#: src/views/setting/SettingSafe.vue:210
msgid "Panel HTTPS"
msgstr ""
-#: src/views/setting/SettingSafe.vue:184
-msgid "Enable HTTPS for the panel to ensure secure communication. You need to provide a valid SSL certificate and private key"
+#: src/views/setting/SettingSafe.vue:215
+msgid "Enable HTTPS for the panel. ACME will automatically obtain and renew certificates (requires panel accessible via public IP). Custom allows you to provide your own certificate"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:230
+#: src/views/setting/SettingSafe.vue:235
+msgid "Panel Public IP"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:240
+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 ""
#: src/views/setting/SettingUser.vue:53
@@ -4102,18 +4247,28 @@ msgstr ""
msgid "Enter the code"
msgstr ""
-#: src/views/ssh/CreateModal.vue:50
+#: src/views/ssh/CreateModal.vue:52
#: src/views/ssh/IndexView.vue:245
msgid "Create Host"
msgstr ""
-#: src/views/ssh/CreateModal.vue:73
-#: src/views/ssh/UpdateModal.vue:79
+#: src/views/ssh/CreateModal.vue:75
+#: src/views/ssh/UpdateModal.vue:81
msgid "Authentication Method"
msgstr ""
-#: src/views/ssh/CreateModal.vue:92
-#: src/views/ssh/UpdateModal.vue:98
+#: src/views/ssh/CreateModal.vue:94
+#: src/views/ssh/UpdateModal.vue:100
+msgid "Key Passphrase"
+msgstr ""
+
+#: src/views/ssh/CreateModal.vue:99
+#: src/views/ssh/UpdateModal.vue:105
+msgid "Leave empty if key has no passphrase"
+msgstr ""
+
+#: src/views/ssh/CreateModal.vue:102
+#: src/views/ssh/UpdateModal.vue:108
msgid "Remarks"
msgstr ""
@@ -4133,7 +4288,7 @@ msgstr ""
msgid "Connection error. Please refresh."
msgstr ""
-#: src/views/ssh/UpdateModal.vue:56
+#: src/views/ssh/UpdateModal.vue:58
msgid "Update Host"
msgstr ""
@@ -4201,6 +4356,8 @@ msgid "Retention Count"
msgstr ""
#: src/views/task/CronView.vue:55
+#: src/views/toolbox/WebHookView.vue:86
+#: src/views/toolbox/WebHookView.vue:381
msgid "Enabled"
msgstr ""
@@ -4224,66 +4381,16 @@ msgstr ""
msgid "Create Task"
msgstr ""
-#: src/views/task/SystemView.vue:25
-#: src/views/toolbox/ProcessView.vue:25
-msgid "Parent PID"
-msgstr ""
-
-#: src/views/task/SystemView.vue:31
-#: src/views/toolbox/ProcessView.vue:31
-msgid "Threads"
-msgstr ""
-
-#: src/views/task/SystemView.vue:52
-#: src/views/toolbox/ProcessView.vue:52
-msgid "Sleeping"
-msgstr ""
-
-#: src/views/task/SystemView.vue:56
-#: src/views/toolbox/ProcessView.vue:56
-msgid "Idle"
-msgstr ""
-
-#: src/views/task/SystemView.vue:58
-#: src/views/toolbox/ProcessView.vue:58
-msgid "Zombie"
-msgstr ""
-
-#: src/views/task/SystemView.vue:60
-#: src/views/task/TaskView.vue:30
-#: src/views/toolbox/ProcessView.vue:60
-msgid "Waiting"
-msgstr ""
-
-#: src/views/task/SystemView.vue:62
-#: src/views/toolbox/ProcessView.vue:62
-msgid "Locked"
-msgstr ""
-
-#: src/views/task/SystemView.vue:87
-#: src/views/toolbox/ProcessView.vue:87
-msgid "Start Time"
-msgstr ""
-
-#: src/views/task/SystemView.vue:108
-#: src/views/toolbox/ProcessView.vue:108
-msgid "Process %{ pid } has been terminated"
-msgstr ""
-
-#: src/views/task/SystemView.vue:115
-#: src/views/toolbox/ProcessView.vue:115
-msgid "Are you sure you want to terminate process %{ pid }?"
-msgstr ""
-
-#: src/views/task/SystemView.vue:127
-#: src/views/toolbox/ProcessView.vue:127
-msgid "Terminate"
-msgstr ""
-
#: src/views/task/TaskView.vue:28
msgid "Completed"
msgstr ""
+#: src/views/task/TaskView.vue:30
+#: src/views/toolbox/ProcessView.vue:53
+#: src/views/toolbox/ProcessView.vue:90
+msgid "Waiting"
+msgstr ""
+
#: src/views/task/TaskView.vue:32
msgid "Failed"
msgstr ""
@@ -4395,66 +4502,798 @@ msgstr ""
msgid "Start Benchmark"
msgstr ""
-#: src/views/toolbox/IndexView.vue:19
+#: src/views/toolbox/DiskView.vue:109
+msgid "Failed to parse disk data, please refresh and try again"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:270
+msgid "Partition Name"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:283
+msgid "Used"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:292
+msgid "Available"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:309
+msgid "Not Mounted"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:332
+#: src/views/toolbox/DiskView.vue:828
+msgid "Filesystem"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:385
+#: src/views/toolbox/DiskView.vue:537
+#: src/views/toolbox/DiskView.vue:581
+#: src/views/toolbox/DiskView.vue:630
+msgid "Please fill in all fields"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:390
+msgid "Are you sure you want to mount %{ device } to %{ path } and write to fstab for auto-mount on boot?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:397
+msgid "Are you sure you want to mount %{ device } to %{ path }?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:411
+msgid "Mounted successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:429
+msgid "Are you sure you want to unmount this partition?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:434
+msgid "Unmounted successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:444
+#: src/views/toolbox/DiskView.vue:495
+msgid "Please select a device"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:449
+#: src/views/toolbox/DiskView.vue:474
+#: src/views/toolbox/DiskView.vue:519
+#: src/views/toolbox/DiskView.vue:562
+#: src/views/toolbox/DiskView.vue:611
+#: src/views/toolbox/DiskView.vue:658
+msgid "Dangerous Operation"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:450
+msgid "Formatting will erase all data on the partition. This operation is irreversible. Are you sure?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:453
+msgid "Confirm Format"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:457
+msgid "Formatted successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:469
+msgid "Please enter disk name"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:475
+msgid "This will delete all partitions on %{ device } and create a single partition. All data will be permanently lost. Are you absolutely sure?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:479
+msgid "Confirm Initialize"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:483
+msgid "Disk initialized successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:501
+msgid "Are you sure you want to create a physical volume on %{ device }?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:508
+msgid "Physical volume created successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:520
+msgid "Are you sure you want to remove the physical volume %{ device }?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:527
+msgid "Physical volume removed successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:543
+msgid "Are you sure you want to create volume group %{ name }?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:550
+msgid "Volume group created successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:563
+msgid "Are you sure you want to remove the volume group %{ name }? All logical volumes in this group will be deleted!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:571
+msgid "Volume group removed successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:587
+msgid "Are you sure you want to create logical volume %{ name } with %{ size }GB?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:598
+msgid "Logical volume created successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:612
+msgid "Are you sure you want to remove the logical volume %{ path }? All data on this volume will be lost!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:620
+msgid "Logical volume removed successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:636
+msgid "Are you sure you want to extend %{ path } by %{ size }GB?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:645
+msgid "Logical volume extended successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:659
+msgid "Are you sure you want to remove the fstab entry for %{ mountPoint }? This will prevent auto-mount on boot."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:667
+msgid "Fstab entry removed successfully"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:678
+msgid "Disk Management"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:684
+msgid "Disk Name"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:686
+msgid "System Disk"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:693
+msgid "Partitions"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:694
+msgid "Disk Type"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:714
+msgid "Note: This is the system disk and cannot be operated on."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:719
+msgid "No disks found"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:722
+msgid "Mount Partition"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:725
+#: src/views/toolbox/DiskView.vue:770
+msgid "Partition"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:729
+#: src/views/toolbox/DiskView.vue:774
+msgid "Select partition"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:737
+msgid "e.g., /mnt/data"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:741
+msgid "Mount Options"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:744
+msgid "e.g., defaults,noatime"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:748
+msgid "Auto-mount on boot"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:758
+msgid "When enabled, the partition UUID will be written to /etc/fstab for automatic mounting on system boot."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:765
+msgid "Format Partition"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:767
+msgid "Warning: Formatting will erase all data!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:779
+#: src/views/toolbox/DiskView.vue:812
+msgid "Filesystem Type"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:788
+msgctxt "disk action"
+msgid "Format"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:794
+msgid "Initialize Disk"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:797
+msgid "Warning: This will delete all partitions and create a single partition. All data will be lost!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:807
+msgid "Select disk"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:816
+msgid "Initialize"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:821
+msgid "Auto-mount Configuration (fstab)"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:826
+#: src/views/toolbox/DiskView.vue:884
+msgid "Device"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:844
+#: src/views/toolbox/DiskView.vue:874
+#: src/views/toolbox/DiskView.vue:912
+#: src/views/toolbox/DiskView.vue:957
+msgid "Remove"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:854
+msgid "No fstab entries"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:861
+msgid "LVM Management"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:863
+#: src/views/toolbox/DiskView.vue:929
+msgid "Physical Volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:880
+msgid "No physical volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:888
+msgid "Select device"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:894
+msgid "Create PV"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:900
+msgid "Volume Groups"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:918
+msgid "No volume groups"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:922
+msgid "VG Name"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:925
+msgid "Enter VG name"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:933
+msgid "Select PVs"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:940
+msgid "Create VG"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:946
+msgid "Logical Volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:963
+msgid "No logical volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:967
+msgid "LV Name"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:970
+msgid "Enter LV name"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:974
+msgid "Volume Group"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:978
+msgid "Select VG"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:983
+msgid "Size (GB)"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:987
+msgid "Create LV"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:993
+msgid "Extend Logical Volume"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:995
+msgid "Logical Volume"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:999
+msgid "Select LV"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:1004
+msgid "Extend Size (GB)"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:1007
+msgid "Auto Resize Filesystem"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:1011
+msgid "Extend LV"
+msgstr ""
+
+#: src/views/toolbox/IndexView.vue:22
msgid "Process"
msgstr ""
-#: src/views/toolbox/IndexView.vue:20
+#: src/views/toolbox/IndexView.vue:23
msgid "System"
msgstr ""
-#: src/views/toolbox/IndexView.vue:21
+#: src/views/toolbox/IndexView.vue:26
+msgid "WebHook"
+msgstr ""
+
+#: src/views/toolbox/IndexView.vue:27
msgid "Benchmark"
msgstr ""
-#: src/views/toolbox/SystemView.vue:95
+#: src/views/toolbox/ProcessView.vue:47
+msgid "All Status"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:49
+#: src/views/toolbox/ProcessView.vue:82
+msgid "Sleeping"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:51
+#: src/views/toolbox/ProcessView.vue:86
+msgid "Idle"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:52
+#: src/views/toolbox/ProcessView.vue:88
+msgid "Zombie"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:54
+#: src/views/toolbox/ProcessView.vue:92
+msgid "Locked"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:61
+msgid "View Details"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:63
+msgid "Terminate (SIGTERM)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:64
+msgid "Kill (SIGKILL)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:66
+msgid "Stop (SIGSTOP)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:67
+msgid "Continue (SIGCONT)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:69
+msgid "Interrupt (SIGINT)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:70
+msgid "Hang Up (SIGHUP)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:71
+msgid "User Signal 1 (SIGUSR1)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:72
+msgid "User Signal 2 (SIGUSR2)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:115
+#: src/views/toolbox/ProcessView.vue:383
+msgid "Parent PID"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:122
+#: src/views/toolbox/ProcessView.vue:395
+msgid "Threads"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:163
+#: src/views/toolbox/ProcessView.vue:416
+msgid "Start Time"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:235
+msgid "Are you sure you want to send %{ signal } to process %{ pid }?"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:245
+msgid "Signal %{ signal } has been sent to process %{ pid }"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:313
+msgid "Search by PID or name"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:372
+msgid "Process Details"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:401
+msgid "Memory (RSS)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:404
+msgid "Virtual Memory"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:407
+msgid "Swap"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:410
+msgid "Disk Read"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:413
+msgid "Disk Write"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:419
+msgid "Executable Path"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:429
+msgid "Command Line"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:446
+msgid "No environment variables"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:454
+msgid "Open Files"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:462
+msgid "No open files"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:470
+msgid "Network Connections"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:483
+msgid "No network connections"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:35
+msgid "Allow password and key login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:36
+msgid "Disable root login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:38
+msgid "Only allow key login (recommended)"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:42
+msgid "Only allow key login with forced commands"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:72
+msgid "SSH service stopped"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:75
+msgid "SSH service started"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:88
+msgid "SSH service restarted"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:99
+msgid "SSH port updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:117
+msgid "Password authentication updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:129
+msgid "Key authentication updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:141
+msgid "Root login setting updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:150
+msgid "Please enter a password"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:157
+msgid "Root password updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:177
+#: src/views/toolbox/SshView.vue:191
+msgid "SSH key generated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:200
+msgid "No SSH key found"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:228
+msgid "SSH Service"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:231
+msgid "SSH Service Status"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:240
+msgid "SSH Password Login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:247
+msgid "Allow password authentication for SSH login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:252
+msgid "SSH Key Login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:260
+msgid "Allow public key authentication for SSH login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:277
+msgid "Current SSH port, default is 22"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:283
+msgid "Root Settings"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:287
+msgid "Root Password Login Setting"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:304
+msgid "Enter new password"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:317
+msgid "Reset"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:322
+msgid "It is recommended to use a complex password. Save after modification. Refresh will clear the password field."
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:331
+msgid "Root Key"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:333
+msgid "View Key"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:341
+msgid "Recommended to use key login with password disabled for higher security"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:354
+msgid "Root Private Key"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:361
+msgid "This is the private key of the root user. Keep it safe and use it to login to this server."
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:371
+msgid "No private key generated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:375
+msgid "Regenerate"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:378
+msgid "Download Private Key"
+msgstr ""
+
+#: src/views/toolbox/SystemView.vue:88
msgid "DNS modifications will revert to default after system restart."
msgstr ""
-#: src/views/toolbox/SystemView.vue:99
+#: src/views/toolbox/SystemView.vue:92
msgid "Enter primary DNS server"
msgstr ""
-#: src/views/toolbox/SystemView.vue:102
+#: src/views/toolbox/SystemView.vue:95
msgid "Enter secondary DNS server"
msgstr ""
-#: src/views/toolbox/SystemView.vue:116
+#: src/views/toolbox/SystemView.vue:109
msgid "Total %{ total }, used %{ used }, free %{ free }"
msgstr ""
-#: src/views/toolbox/SystemView.vue:141
+#: src/views/toolbox/SystemView.vue:134
msgid "Enter hostname, e.g. myserver"
msgstr ""
-#: src/views/toolbox/SystemView.vue:144
+#: src/views/toolbox/SystemView.vue:137
msgid "Hosts"
msgstr ""
-#: src/views/toolbox/SystemView.vue:152
+#: src/views/toolbox/SystemView.vue:145
msgid "Time"
msgstr ""
-#: src/views/toolbox/SystemView.vue:156
+#: src/views/toolbox/SystemView.vue:149
msgid "After manually changing the time, it may still be overwritten by system automatic time synchronization."
msgstr ""
-#: src/views/toolbox/SystemView.vue:162
+#: src/views/toolbox/SystemView.vue:155
msgid "Select Timezone"
msgstr ""
-#: src/views/toolbox/SystemView.vue:165
+#: src/views/toolbox/SystemView.vue:158
msgid "Please select a timezone"
msgstr ""
-#: src/views/toolbox/SystemView.vue:169
+#: src/views/toolbox/SystemView.vue:162
msgid "Modify Time"
msgstr ""
-#: src/views/toolbox/SystemView.vue:178
+#: src/views/toolbox/SystemView.vue:171
msgid "Synchronize Time"
msgstr ""
+#: src/views/toolbox/WebHookView.vue:68
+#: src/views/toolbox/WebHookView.vue:340
+#: src/views/toolbox/WebHookView.vue:375
+msgid "Raw Output"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:80
+msgid "Yes"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:80
+msgid "No"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:100
+msgid "Call Count"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:107
+msgid "Last Call"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:145
+msgid "Copy URL"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:167
+msgid "Are you sure you want to delete this WebHook?"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:217
+msgid "URL copied to clipboard"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:242
+#: src/views/toolbox/WebHookView.vue:264
+msgid "Please enter a name"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:246
+#: src/views/toolbox/WebHookView.vue:268
+msgid "Please enter a script"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:295
+#: src/views/toolbox/WebHookView.vue:324
+msgid "Create WebHook"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:332
+#: src/views/toolbox/WebHookView.vue:367
+msgid "Enter WebHook name"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:337
+#: src/views/toolbox/WebHookView.vue:372
+msgid "User to run the script (default: root)"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:343
+#: src/views/toolbox/WebHookView.vue:378
+msgid "Return script output as raw text instead of JSON"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:346
+#: src/views/toolbox/WebHookView.vue:384
+msgid "Script"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:359
+msgid "Edit WebHook"
+msgstr ""
+
#: src/views/website/BulkCreateModal.vue:23
msgid "The format is incorrect, please check"
msgstr ""
diff --git a/web/src/locales/zh_CN.po b/web/src/locales/zh_CN.po
index b8f68968..d5e2cdb5 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-01-06 19:46\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-01-06 19:46\n"
-#: src/components/common/AppFooter.vue:13
-#: src/views/home/IndexView.vue:440
+#: src/components/common/AppFooter.vue:13 src/views/home/IndexView.vue:442
msgid "AcePanel"
msgstr "AcePanel"
@@ -195,14 +194,14 @@ msgstr "当前状态无法保存"
#: src/views/apps/codeserver/IndexView.vue:23
#: src/views/apps/docker/IndexView.vue:23
#: src/views/apps/fail2ban/IndexView.vue:160
-#: src/views/apps/frp/IndexView.vue:27
+#: src/views/apps/frp/IndexView.vue:36 src/views/apps/frp/IndexView.vue:44
#: src/views/apps/gitea/IndexView.vue:21
+#: src/views/apps/mariadb/IndexView.vue:46
#: src/views/apps/memcached/IndexView.vue:43
-#: src/views/apps/minio/IndexView.vue:21
-#: src/views/apps/mysql/IndexView.vue:46
+#: src/views/apps/minio/IndexView.vue:21 src/views/apps/mysql/IndexView.vue:46
#: src/views/apps/nginx/IndexView.vue:43
-#: src/views/apps/php/PhpView.vue:142
-#: src/views/apps/php/PhpView.vue:148
+#: src/views/apps/openresty/IndexView.vue:43
+#: src/views/apps/percona/IndexView.vue:46
#: src/views/apps/phpmyadmin/IndexView.vue:36
#: src/views/apps/phpmyadmin/IndexView.vue:43
#: src/views/apps/podman/IndexView.vue:25
@@ -210,18 +209,14 @@ msgstr "当前状态无法保存"
#: src/views/apps/postgresql/IndexView.vue:46
#: src/views/apps/postgresql/IndexView.vue:51
#: src/views/apps/pureftpd/IndexView.vue:115
-#: src/views/apps/redis/IndexView.vue:40
-#: src/views/apps/rsync/IndexView.vue:133
+#: src/views/apps/redis/IndexView.vue:40 src/views/apps/rsync/IndexView.vue:133
#: src/views/apps/rsync/IndexView.vue:177
#: src/views/apps/supervisor/IndexView.vue:219
#: src/views/apps/supervisor/IndexView.vue:284
-#: src/views/setting/IndexView.vue:48
-#: src/views/toolbox/SystemView.vue:49
-#: src/views/toolbox/SystemView.vue:55
-#: src/views/toolbox/SystemView.vue:64
-#: src/views/toolbox/SystemView.vue:70
-#: src/views/toolbox/SystemView.vue:79
-#: src/views/website/EditView.vue:114
+#: src/views/environment/PHPView.vue:137 src/views/environment/PHPView.vue:143
+#: src/views/setting/IndexView.vue:50 src/views/toolbox/SystemView.vue:48
+#: src/views/toolbox/SystemView.vue:54 src/views/toolbox/SystemView.vue:63
+#: src/views/toolbox/SystemView.vue:72 src/views/website/EditView.vue:114
msgid "Saved successfully"
msgstr "保存成功"
@@ -235,24 +230,20 @@ msgstr "选择文件"
#: src/components/common/PathSelector.vue:42
#: src/components/common/PathSelector.vue:332
-#: src/views/app/EnvironmentView.vue:26
+#: src/views/app/EnvironmentView.vue:27
#: src/views/apps/fail2ban/IndexView.vue:37
-#: src/views/apps/rsync/IndexView.vue:39
-#: src/views/apps/rsync/IndexView.vue:256
+#: src/views/apps/rsync/IndexView.vue:39 src/views/apps/rsync/IndexView.vue:256
#: src/views/apps/supervisor/IndexView.vue:46
#: src/views/apps/supervisor/IndexView.vue:373
#: src/views/container/ComposeView.vue:31
-#: src/views/container/NetworkView.vue:45
-#: src/views/container/VolumeView.vue:26
+#: src/views/container/NetworkView.vue:45 src/views/container/VolumeView.vue:26
#: src/views/database/CreateServerModal.vue:55
#: src/views/database/ServerList.vue:39
-#: src/views/database/UpdateServerModal.vue:55
-#: src/views/file/ListTable.vue:105
-#: src/views/file/ToolBar.vue:257
-#: src/views/ssh/CreateModal.vue:57
-#: src/views/ssh/UpdateModal.vue:63
-#: src/views/task/SystemView.vue:18
-#: src/views/toolbox/ProcessView.vue:18
+#: src/views/database/UpdateServerModal.vue:55 src/views/file/ListTable.vue:105
+#: src/views/file/ToolBar.vue:257 src/views/ssh/CreateModal.vue:59
+#: src/views/ssh/UpdateModal.vue:65 src/views/toolbox/ProcessView.vue:107
+#: src/views/toolbox/ProcessView.vue:386 src/views/toolbox/WebHookView.vue:32
+#: src/views/toolbox/WebHookView.vue:331 src/views/toolbox/WebHookView.vue:366
#: src/views/website/CreateModal.vue:106
msgid "Name"
msgstr "名称"
@@ -261,77 +252,64 @@ msgstr "名称"
msgid "Permissions"
msgstr "权限"
-#: src/components/common/PathSelector.vue:95
-#: src/views/file/ListTable.vue:159
+#: src/components/common/PathSelector.vue:95 src/views/file/ListTable.vue:159
msgid "Owner / Group"
msgstr "所有者 / 组"
-#: src/components/common/PathSelector.vue:107
-#: src/views/backup/ListView.vue:42
-#: src/views/container/ImageView.vue:53
-#: src/views/file/ListTable.vue:171
+#: src/components/common/PathSelector.vue:107 src/views/backup/ListView.vue:42
+#: src/views/container/ImageView.vue:53 src/views/file/ListTable.vue:171
+#: src/views/toolbox/DiskView.vue:275 src/views/toolbox/DiskView.vue:692
msgid "Size"
msgstr "大小"
-#: src/components/common/PathSelector.vue:115
-#: src/views/file/ListTable.vue:179
+#: src/components/common/PathSelector.vue:115 src/views/file/ListTable.vue:179
msgid "Modification Time"
msgstr "修改时间"
-#: src/components/common/PathSelector.vue:149
-#: src/views/file/ListTable.vue:459
+#: src/components/common/PathSelector.vue:149 src/views/file/ListTable.vue:459
#: src/views/file/PathInput.vue:28
msgid "Invalid path"
msgstr "无效路径"
-#: src/components/common/PathSelector.vue:209
-#: src/views/file/ListTable.vue:408
-#: src/views/file/ToolBar.vue:37
-#: src/views/file/ToolBar.vue:51
+#: src/components/common/PathSelector.vue:209 src/views/file/ListTable.vue:408
+#: src/views/file/ToolBar.vue:37 src/views/file/ToolBar.vue:51
msgid "Invalid name"
msgstr "无效的名称"
-#: src/components/common/PathSelector.vue:217
-#: src/views/backup/ListView.vue:122
+#: src/components/common/PathSelector.vue:217 src/views/backup/ListView.vue:122
#: src/views/cert/CreateAccountModal.vue:52
-#: src/views/cert/CreateCertModal.vue:50
-#: src/views/cert/CreateDnsModal.vue:35
+#: src/views/cert/CreateCertModal.vue:50 src/views/cert/CreateDnsModal.vue:35
#: src/views/cert/UploadCertModal.vue:21
#: src/views/container/ComposeView.vue:254
#: src/views/container/ContainerCreate.vue:106
#: src/views/container/NetworkView.vue:174
#: src/views/container/VolumeView.vue:128
#: src/views/database/CreateDatabaseModal.vue:28
-#: src/views/database/CreateUserModal.vue:28
-#: src/views/file/ToolBar.vue:45
+#: src/views/database/CreateUserModal.vue:28 src/views/file/ToolBar.vue:45
#: src/views/firewall/CreateForwardModal.vue:41
-#: src/views/setting/CreateModal.vue:19
-#: src/views/setting/TokenModal.vue:125
-#: src/views/ssh/CreateModal.vue:38
-#: src/views/task/CreateModal.vue:50
+#: src/views/setting/CreateModal.vue:19 src/views/setting/TokenModal.vue:125
+#: src/views/ssh/CreateModal.vue:40 src/views/task/CreateModal.vue:50
+#: src/views/toolbox/WebHookView.vue:257
msgid "Created successfully"
msgstr "创建成功"
-#: src/components/common/PathSelector.vue:256
-#: src/views/file/ToolBar.vue:214
+#: src/components/common/PathSelector.vue:256 src/views/file/ToolBar.vue:214
msgid "File"
msgstr "文件"
-#: src/components/common/PathSelector.vue:257
-#: src/views/file/ToolBar.vue:215
+#: src/components/common/PathSelector.vue:257 src/views/file/ToolBar.vue:215
msgid "Folder"
msgstr "文件夹"
#: src/components/common/PathSelector.vue:261
#: src/components/common/PathSelector.vue:324
-#: src/views/setting/TokenModal.vue:266
+#: src/views/setting/TokenModal.vue:266 src/views/toolbox/WebHookView.vue:351
#: src/views/website/BulkCreateModal.vue:129
#: src/views/website/CreateModal.vue:240
msgid "Create"
msgstr "创建"
-#: src/components/common/PathSelector.vue:270
-#: src/views/file/PathInput.vue:128
+#: src/components/common/PathSelector.vue:270 src/views/file/PathInput.vue:128
msgid "Root Directory"
msgstr "根目录"
@@ -339,19 +317,13 @@ msgstr "根目录"
#: src/views/apps/fail2ban/IndexView.vue:368
#: src/views/apps/pureftpd/IndexView.vue:242
#: src/views/apps/pureftpd/IndexView.vue:264
-#: src/views/apps/rsync/IndexView.vue:305
-#: src/views/apps/s3fs/IndexView.vue:181
+#: src/views/apps/rsync/IndexView.vue:305 src/views/apps/s3fs/IndexView.vue:181
#: src/views/apps/supervisor/IndexView.vue:409
-#: src/views/backup/ListView.vue:256
-#: src/views/backup/ListView.vue:280
-#: src/views/cert/AccountView.vue:268
-#: src/views/cert/CertView.vue:534
-#: src/views/cert/CertView.vue:558
-#: src/views/cert/CreateAccountModal.vue:125
-#: src/views/cert/CreateCertModal.vue:115
-#: src/views/cert/CreateDnsModal.vue:173
-#: src/views/cert/DnsView.vue:310
-#: src/views/cert/ObtainModal.vue:130
+#: src/views/backup/ListView.vue:256 src/views/backup/ListView.vue:280
+#: src/views/cert/AccountView.vue:268 src/views/cert/CertView.vue:534
+#: src/views/cert/CertView.vue:558 src/views/cert/CreateAccountModal.vue:125
+#: src/views/cert/CreateCertModal.vue:115 src/views/cert/CreateDnsModal.vue:173
+#: src/views/cert/DnsView.vue:310 src/views/cert/ObtainModal.vue:130
#: src/views/cert/UploadCertModal.vue:55
#: src/views/container/ComposeView.vue:348
#: src/views/container/ComposeView.vue:378
@@ -364,17 +336,12 @@ msgstr "根目录"
#: src/views/database/CreateServerModal.vue:120
#: src/views/database/CreateUserModal.vue:125
#: src/views/database/UpdateServerModal.vue:112
-#: src/views/database/UpdateUserModal.vue:79
-#: src/views/file/ToolBar.vue:261
-#: src/views/file/ToolBar.vue:282
-#: src/views/firewall/CreateForwardModal.vue:88
+#: src/views/database/UpdateUserModal.vue:79 src/views/file/ToolBar.vue:261
+#: src/views/file/ToolBar.vue:282 src/views/firewall/CreateForwardModal.vue:88
#: src/views/firewall/CreateIpModal.vue:121
-#: src/views/firewall/CreateModal.vue:145
-#: src/views/setting/CreateModal.vue:64
-#: src/views/setting/PasswordModal.vue:44
-#: src/views/setting/TwoFaModal.vue:87
-#: src/views/ssh/CreateModal.vue:99
-#: src/views/ssh/UpdateModal.vue:105
+#: src/views/firewall/CreateModal.vue:145 src/views/setting/CreateModal.vue:64
+#: src/views/setting/PasswordModal.vue:44 src/views/setting/TwoFaModal.vue:87
+#: src/views/ssh/CreateModal.vue:109 src/views/ssh/UpdateModal.vue:115
#: src/views/task/CreateModal.vue:157
#: src/views/website/ProxyBuilderModal.vue:201
msgid "Submit"
@@ -392,33 +359,26 @@ msgstr "获取日志流失败"
#: src/components/common/RealtimeLogModal.vue:67
#: src/views/apps/supervisor/IndexView.vue:89
#: src/views/container/ContainerView.vue:105
-#: src/views/container/ContainerView.vue:445
-#: src/views/task/CronView.vue:116
+#: src/views/container/ContainerView.vue:445 src/views/task/CronView.vue:116
#: src/views/task/TaskView.vue:74
msgid "Logs"
msgstr "日志"
-#: src/components/common/ServiceStatus.vue:25
-#: src/views/home/IndexView.vue:739
-#: src/views/home/IndexView.vue:747
-#: src/views/home/IndexView.vue:754
-#: src/views/home/IndexView.vue:760
-#: src/views/home/IndexView.vue:771
-#: src/views/home/IndexView.vue:783
+#: src/components/common/ServiceStatus.vue:25 src/views/home/IndexView.vue:741
+#: src/views/home/IndexView.vue:749 src/views/home/IndexView.vue:756
+#: src/views/home/IndexView.vue:762 src/views/home/IndexView.vue:773
+#: src/views/home/IndexView.vue:785
msgid "Loading..."
msgstr "加载中……"
-#: src/components/common/ServiceStatus.vue:26
-#: src/views/task/SystemView.vue:50
-#: src/views/task/TaskView.vue:33
-#: src/views/toolbox/ProcessView.vue:50
+#: src/components/common/ServiceStatus.vue:26 src/views/task/TaskView.vue:33
+#: src/views/toolbox/ProcessView.vue:48 src/views/toolbox/ProcessView.vue:80
#: src/views/website/ListView.vue:28
msgid "Running"
msgstr "运行中"
#: src/components/common/ServiceStatus.vue:26
-#: src/views/task/SystemView.vue:54
-#: src/views/toolbox/ProcessView.vue:54
+#: src/views/toolbox/ProcessView.vue:50 src/views/toolbox/ProcessView.vue:84
msgid "Stopped"
msgstr "已停止"
@@ -478,18 +438,19 @@ msgstr "自启动已成功禁用"
#: src/views/apps/docker/IndexView.vue:31
#: src/views/apps/fail2ban/IndexView.vue:228
#: src/views/apps/gitea/IndexView.vue:29
+#: src/views/apps/mariadb/IndexView.vue:71
#: src/views/apps/memcached/IndexView.vue:51
-#: src/views/apps/minio/IndexView.vue:29
-#: src/views/apps/mysql/IndexView.vue:71
+#: src/views/apps/minio/IndexView.vue:29 src/views/apps/mysql/IndexView.vue:71
#: src/views/apps/nginx/IndexView.vue:57
-#: src/views/apps/php/PhpView.vue:180
+#: src/views/apps/openresty/IndexView.vue:57
+#: src/views/apps/percona/IndexView.vue:71
#: src/views/apps/podman/IndexView.vue:39
#: src/views/apps/postgresql/IndexView.vue:63
#: src/views/apps/pureftpd/IndexView.vue:158
-#: src/views/apps/redis/IndexView.vue:48
-#: src/views/apps/rsync/IndexView.vue:191
+#: src/views/apps/redis/IndexView.vue:48 src/views/apps/rsync/IndexView.vue:191
#: src/views/apps/supervisor/IndexView.vue:298
#: src/views/container/ContainerView.vue:83
+#: src/views/environment/PHPView.vue:175
msgid "Running Status"
msgstr "运行状态"
@@ -524,8 +485,8 @@ msgstr "您确定要停止 %{ service } 吗?"
#: src/components/common/ServiceStatus.vue:162
#: src/views/apps/supervisor/IndexView.vue:168
#: src/views/container/ContainerView.vue:139
-#: src/views/container/ContainerView.vue:413
-#: src/views/home/IndexView.vue:448
+#: src/views/container/ContainerView.vue:413 src/views/home/IndexView.vue:450
+#: src/views/toolbox/SshView.vue:234
msgid "Restart"
msgstr "重启"
@@ -553,8 +514,7 @@ msgstr "切换主题"
#: src/layout/header/components/UserAvatar.vue:13
#: src/views/apps/pureftpd/IndexView.vue:65
#: src/views/apps/pureftpd/IndexView.vue:249
-#: src/views/setting/PasswordModal.vue:26
-#: src/views/setting/SettingUser.vue:117
+#: src/views/setting/PasswordModal.vue:26 src/views/setting/SettingUser.vue:117
msgid "Change Password"
msgstr "更改密码"
@@ -571,17 +531,29 @@ msgid "Prompt"
msgstr "提示"
#: src/layout/header/components/UserAvatar.vue:29
-#: src/views/home/UpdateView.vue:26
-#: src/views/monitor/IndexView.vue:460
+#: src/views/home/UpdateView.vue:26 src/views/monitor/IndexView.vue:460
+#: src/views/toolbox/DiskView.vue:403 src/views/toolbox/DiskView.vue:405
+#: src/views/toolbox/DiskView.vue:428 src/views/toolbox/DiskView.vue:430
+#: src/views/toolbox/DiskView.vue:500 src/views/toolbox/DiskView.vue:504
+#: src/views/toolbox/DiskView.vue:523 src/views/toolbox/DiskView.vue:542
+#: src/views/toolbox/DiskView.vue:546 src/views/toolbox/DiskView.vue:567
+#: src/views/toolbox/DiskView.vue:586 src/views/toolbox/DiskView.vue:594
+#: src/views/toolbox/DiskView.vue:616 src/views/toolbox/DiskView.vue:635
+#: src/views/toolbox/DiskView.vue:640 src/views/toolbox/DiskView.vue:663
+#: src/views/toolbox/ProcessView.vue:234 src/views/toolbox/ProcessView.vue:239
msgid "Confirm"
msgstr "确认"
#: src/layout/header/components/UserAvatar.vue:30
-#: src/views/file/ListTable.vue:418
-#: src/views/file/ListTable.vue:513
-#: src/views/file/ToolBar.vue:139
-#: src/views/file/ToolBar.vue:226
-#: src/views/home/UpdateView.vue:27
+#: src/views/file/ListTable.vue:418 src/views/file/ListTable.vue:513
+#: src/views/file/ToolBar.vue:139 src/views/file/ToolBar.vue:226
+#: src/views/home/UpdateView.vue:27 src/views/toolbox/DiskView.vue:406
+#: src/views/toolbox/DiskView.vue:431 src/views/toolbox/DiskView.vue:454
+#: src/views/toolbox/DiskView.vue:480 src/views/toolbox/DiskView.vue:505
+#: src/views/toolbox/DiskView.vue:524 src/views/toolbox/DiskView.vue:547
+#: src/views/toolbox/DiskView.vue:568 src/views/toolbox/DiskView.vue:595
+#: src/views/toolbox/DiskView.vue:617 src/views/toolbox/DiskView.vue:641
+#: src/views/toolbox/DiskView.vue:664 src/views/toolbox/ProcessView.vue:240
msgid "Cancel"
msgstr "取消"
@@ -589,12 +561,10 @@ msgstr "取消"
msgid "Logged out successfully!"
msgstr "退出登录成功!"
-#: src/layout/header/components/UserAvatar.vue:48
-#: src/views/cert/DnsView.vue:56
-#: src/views/firewall/IpRuleView.vue:76
-#: src/views/firewall/IpRuleView.vue:101
-#: src/views/firewall/RuleView.vue:110
-#: src/views/firewall/RuleView.vue:135
+#: src/layout/header/components/UserAvatar.vue:48 src/views/cert/DnsView.vue:56
+#: src/views/firewall/IpRuleView.vue:76 src/views/firewall/IpRuleView.vue:101
+#: src/views/firewall/RuleView.vue:110 src/views/firewall/RuleView.vue:135
+#: src/views/toolbox/DiskView.vue:172
msgid "Unknown"
msgstr "未知"
@@ -604,7 +574,9 @@ msgid "Menu Settings"
msgstr "菜单设置"
#: src/layout/sidebar/components/SideSetting.vue:83
-msgid "Settings are saved in the browser and will be reset after clearing the browser cache"
+msgid ""
+"Settings are saved in the browser and will be reset after clearing the "
+"browser cache"
msgstr "设置保存在浏览器中,清除浏览器缓存后将重置"
#: src/layout/sidebar/components/SideSetting.vue:88
@@ -651,12 +623,9 @@ msgstr "应用"
msgid "Backup"
msgstr "备份"
-#: src/locales/menu.ts:9
-#: src/views/cert/CertView.vue:496
-#: src/views/cert/CertView.vue:573
-#: src/views/cert/IndexView.vue:96
-#: src/views/cert/UploadCertModal.vue:38
-#: src/views/setting/SettingSafe.vue:192
+#: src/locales/menu.ts:9 src/views/cert/CertView.vue:496
+#: src/views/cert/CertView.vue:573 src/views/cert/IndexView.vue:96
+#: src/views/cert/UploadCertModal.vue:38 src/views/setting/SettingSafe.vue:248
#: src/views/website/EditView.vue:326
msgid "Certificate"
msgstr "证书"
@@ -665,10 +634,8 @@ msgstr "证书"
msgid "Container"
msgstr "容器"
-#: src/locales/menu.ts:11
-#: src/views/backup/ListView.vue:276
-#: src/views/database/IndexView.vue:27
-#: src/views/home/IndexView.vue:426
+#: src/locales/menu.ts:11 src/views/backup/ListView.vue:276
+#: src/views/database/IndexView.vue:27 src/views/home/IndexView.vue:428
#: src/views/website/CreateModal.vue:153
msgid "Database"
msgstr "数据库"
@@ -709,24 +676,17 @@ msgstr "任务"
msgid "Toolbox"
msgstr "工具箱"
-#: src/locales/menu.ts:21
-#: src/views/app/AppView.vue:93
-#: src/views/app/EnvironmentView.vue:77
-#: src/views/home/IndexView.vue:452
+#: src/locales/menu.ts:21 src/views/app/AppView.vue:93
+#: src/views/app/EnvironmentView.vue:78 src/views/home/IndexView.vue:454
#: src/views/setting/TokenModal.vue:299
msgid "Update"
msgstr "更新"
-#: src/locales/menu.ts:22
-#: src/views/apps/fail2ban/IndexView.vue:315
-#: src/views/backup/IndexView.vue:37
-#: src/views/backup/ListView.vue:232
-#: src/views/backup/ListView.vue:269
-#: src/views/cert/CertView.vue:465
-#: src/views/cert/CertView.vue:548
-#: src/views/cert/CreateCertModal.vue:90
-#: src/views/home/IndexView.vue:422
-#: src/views/task/CreateModal.vue:118
+#: src/locales/menu.ts:22 src/views/apps/fail2ban/IndexView.vue:315
+#: src/views/backup/IndexView.vue:37 src/views/backup/ListView.vue:232
+#: src/views/backup/ListView.vue:269 src/views/cert/CertView.vue:465
+#: src/views/cert/CertView.vue:548 src/views/cert/CreateCertModal.vue:90
+#: src/views/home/IndexView.vue:424 src/views/task/CreateModal.vue:118
msgid "Website"
msgstr "网站"
@@ -754,16 +714,13 @@ msgstr "Rsync 管理器"
msgid "Frp Manager"
msgstr "Frp 管理器"
-#: src/router/routes/index.ts:18
-#: src/views/login/IndexView.vue:176
+#: src/router/routes/index.ts:18 src/views/login/IndexView.vue:176
msgid "Login"
msgstr "登录"
-#: src/views/app/AppView.vue:17
-#: src/views/app/AppView.vue:152
-#: src/views/app/AppView.vue:157
-#: src/views/app/EnvironmentView.vue:144
-#: src/views/apps/php/PhpView.vue:79
+#: src/views/app/AppView.vue:17 src/views/app/AppView.vue:152
+#: src/views/app/AppView.vue:157 src/views/app/EnvironmentView.vue:145
+#: src/views/environment/PHPView.vue:74
msgid "Install"
msgstr "安装"
@@ -771,14 +728,12 @@ msgstr "安装"
msgid "App Name"
msgstr "应用名称"
-#: src/views/app/AppView.vue:40
-#: src/views/app/EnvironmentView.vue:32
-#: src/views/apps/php/PhpView.vue:48
+#: src/views/app/AppView.vue:40 src/views/app/EnvironmentView.vue:33
+#: src/views/environment/PHPView.vue:43
msgid "Description"
msgstr "描述"
-#: src/views/app/AppView.vue:46
-#: src/views/app/EnvironmentView.vue:44
+#: src/views/app/AppView.vue:46 src/views/app/EnvironmentView.vue:45
msgid "Installed Version"
msgstr "已安装版本"
@@ -786,62 +741,51 @@ msgstr "已安装版本"
msgid "Show in Home"
msgstr "在主页显示"
-#: src/views/app/AppView.vue:65
-#: src/views/app/EnvironmentView.vue:50
+#: src/views/app/AppView.vue:65 src/views/app/EnvironmentView.vue:51
#: src/views/apps/fail2ban/IndexView.vue:59
#: src/views/apps/fail2ban/IndexView.vue:118
-#: src/views/apps/php/PhpView.vue:55
#: src/views/apps/pureftpd/IndexView.vue:46
-#: src/views/apps/rsync/IndexView.vue:68
-#: src/views/apps/s3fs/IndexView.vue:32
-#: src/views/apps/supervisor/IndexView.vue:74
-#: src/views/backup/ListView.vue:57
-#: src/views/cert/AccountView.vue:79
-#: src/views/cert/CertView.vue:180
-#: src/views/cert/DnsView.vue:64
-#: src/views/container/ComposeView.vue:74
+#: src/views/apps/rsync/IndexView.vue:68 src/views/apps/s3fs/IndexView.vue:32
+#: src/views/apps/supervisor/IndexView.vue:74 src/views/backup/ListView.vue:57
+#: src/views/cert/AccountView.vue:79 src/views/cert/CertView.vue:180
+#: src/views/cert/DnsView.vue:64 src/views/container/ComposeView.vue:74
#: src/views/container/ContainerCreate.vue:175
#: src/views/container/ContainerCreate.vue:256
#: src/views/container/ContainerView.vue:90
-#: src/views/container/ImageView.vue:69
-#: src/views/container/NetworkView.vue:109
-#: src/views/container/VolumeView.vue:63
-#: src/views/database/DatabaseList.vue:73
-#: src/views/database/ServerList.vue:134
-#: src/views/database/UserList.vue:151
-#: src/views/file/ListTable.vue:191
-#: src/views/firewall/ForwardView.vue:79
-#: src/views/firewall/IpRuleView.vue:121
-#: src/views/firewall/RuleView.vue:158
-#: src/views/setting/SettingUser.vue:85
-#: src/views/setting/TokenModal.vue:52
-#: src/views/task/CronView.vue:98
-#: src/views/task/SystemView.vue:96
-#: src/views/task/TaskView.vue:55
-#: src/views/toolbox/ProcessView.vue:96
+#: src/views/container/ImageView.vue:69 src/views/container/NetworkView.vue:109
+#: src/views/container/VolumeView.vue:63 src/views/database/DatabaseList.vue:73
+#: src/views/database/ServerList.vue:134 src/views/database/UserList.vue:151
+#: src/views/environment/PHPView.vue:50 src/views/file/ListTable.vue:191
+#: src/views/firewall/ForwardView.vue:79 src/views/firewall/IpRuleView.vue:121
+#: src/views/firewall/RuleView.vue:158 src/views/setting/SettingUser.vue:85
+#: src/views/setting/TokenModal.vue:52 src/views/task/CronView.vue:98
+#: src/views/task/TaskView.vue:55 src/views/toolbox/DiskView.vue:340
+#: src/views/toolbox/DiskView.vue:831 src/views/toolbox/WebHookView.vue:130
#: src/views/website/ListView.vue:123
msgid "Actions"
msgstr "操作"
#: src/views/app/AppView.vue:80
-msgid "Updating app %{ app } may reset related configurations to default state, are you sure to continue?"
+msgid ""
+"Updating app %{ app } may reset related configurations to default state, are "
+"you sure to continue?"
msgstr "更新应用 %{ app } 可能会将相关配置重置为默认状态,您确定要继续吗?"
-#: src/views/app/AppView.vue:109
-#: src/views/app/EnvironmentView.vue:93
+#: src/views/app/AppView.vue:109 src/views/app/EnvironmentView.vue:94
msgid "Manage"
msgstr "管理"
#: src/views/app/AppView.vue:123
-msgid "Reinstalling/Switching to a different web server will reset the configuration of all websites, are you sure to continue?"
+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:127
msgid "Are you sure to uninstall app %{ app }?"
msgstr "您确定要卸载应用 %{ app } 吗?"
-#: src/views/app/AppView.vue:137
-#: src/views/app/EnvironmentView.vue:117
+#: src/views/app/AppView.vue:137 src/views/app/EnvironmentView.vue:118
msgid "Uninstall"
msgstr "卸载"
@@ -849,54 +793,50 @@ msgstr "卸载"
msgid "Setup successfully"
msgstr "设置成功"
-#: src/views/app/AppView.vue:198
-#: src/views/app/AppView.vue:206
-#: src/views/app/EnvironmentView.vue:177
-#: src/views/app/EnvironmentView.vue:185
-#: src/views/app/EnvironmentView.vue:193
-#: src/views/app/VersionModal.vue:33
+#: src/views/app/AppView.vue:198 src/views/app/AppView.vue:206
+#: src/views/app/EnvironmentView.vue:178 src/views/app/EnvironmentView.vue:186
+#: src/views/app/EnvironmentView.vue:194 src/views/app/VersionModal.vue:33
msgid "Task submitted, please check the progress in background tasks"
msgstr "任务已提交,请在后台任务中查看进度"
-#: src/views/app/AppView.vue:229
-#: src/views/app/EnvironmentView.vue:212
+#: src/views/app/AppView.vue:229 src/views/app/EnvironmentView.vue:217
#: src/views/firewall/RuleView.vue:150
msgid "All"
msgstr "全部"
-#: src/views/app/EnvironmentView.vue:38
+#: src/views/app/EnvironmentView.vue:39
msgid "Latest Version"
msgstr "最新版本"
-#: src/views/app/EnvironmentView.vue:65
+#: src/views/app/EnvironmentView.vue:66
msgid "Are you sure to update environment %{ environment }?"
msgstr "您确定要更新环境 %{ environment } 吗?"
-#: src/views/app/EnvironmentView.vue:105
+#: src/views/app/EnvironmentView.vue:106
msgid "Are you sure to uninstall environment %{ environment }?"
msgstr "您确定要卸载环境 %{ environment } 吗?"
-#: src/views/app/EnvironmentView.vue:132
+#: src/views/app/EnvironmentView.vue:133
msgid "Are you sure to install environment %{ environment }?"
msgstr "您确定要安装环境 %{ environment } 吗?"
-#: src/views/app/IndexView.vue:20
+#: src/views/app/IndexView.vue:23
msgid "Cache updated successfully"
msgstr "缓存更新成功"
-#: src/views/app/IndexView.vue:30
+#: src/views/app/IndexView.vue:34
msgid "Native App"
msgstr "原生应用"
-#: src/views/app/IndexView.vue:31
+#: src/views/app/IndexView.vue:35
msgid "Operating Environment"
msgstr "运行环境"
-#: src/views/app/IndexView.vue:32
+#: src/views/app/IndexView.vue:36
msgid "Container Template"
msgstr "容器模板"
-#: src/views/app/IndexView.vue:35
+#: src/views/app/IndexView.vue:39
msgid "Update Cache"
msgstr "更新缓存"
@@ -917,30 +857,33 @@ msgid "Release Log"
msgstr "发行日志"
#: src/views/apps/codeserver/IndexView.vue:34
-#: src/views/apps/frp/IndexView.vue:43
-#: src/views/apps/frp/IndexView.vue:56
+#: src/views/apps/frp/IndexView.vue:75 src/views/apps/frp/IndexView.vue:103
#: src/views/apps/gitea/IndexView.vue:32
-#: src/views/apps/mysql/IndexView.vue:84
-#: src/views/apps/nginx/IndexView.vue:60
+#: src/views/apps/mariadb/IndexView.vue:84
+#: src/views/apps/mysql/IndexView.vue:84 src/views/apps/nginx/IndexView.vue:60
+#: src/views/apps/openresty/IndexView.vue:60
+#: src/views/apps/percona/IndexView.vue:84
#: src/views/apps/phpmyadmin/IndexView.vue:73
msgid "Modify Configuration"
msgstr "修改配置"
#: src/views/apps/codeserver/IndexView.vue:38
-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/codeserver/IndexView.vue:46
-#: src/views/apps/docker/IndexView.vue:42
-#: src/views/apps/frp/IndexView.vue:46
-#: src/views/apps/frp/IndexView.vue:59
-#: src/views/apps/gitea/IndexView.vue:44
+#: src/views/apps/docker/IndexView.vue:42 src/views/apps/frp/IndexView.vue:63
+#: src/views/apps/frp/IndexView.vue:78 src/views/apps/frp/IndexView.vue:91
+#: src/views/apps/frp/IndexView.vue:106 src/views/apps/gitea/IndexView.vue:44
+#: src/views/apps/mariadb/IndexView.vue:96
#: src/views/apps/memcached/IndexView.vue:59
-#: src/views/apps/minio/IndexView.vue:44
-#: src/views/apps/mysql/IndexView.vue:96
+#: src/views/apps/minio/IndexView.vue:44 src/views/apps/mysql/IndexView.vue:96
#: src/views/apps/nginx/IndexView.vue:72
-#: src/views/apps/php/PhpView.vue:214
-#: src/views/apps/php/PhpView.vue:232
+#: src/views/apps/openresty/IndexView.vue:72
+#: src/views/apps/percona/IndexView.vue:96
#: src/views/apps/phpmyadmin/IndexView.vue:66
#: src/views/apps/phpmyadmin/IndexView.vue:85
#: src/views/apps/podman/IndexView.vue:63
@@ -948,18 +891,14 @@ msgstr "这将修改 Code Server 配置文件。如果您不理解每个参数
#: src/views/apps/postgresql/IndexView.vue:78
#: src/views/apps/postgresql/IndexView.vue:95
#: src/views/apps/pureftpd/IndexView.vue:165
-#: src/views/apps/redis/IndexView.vue:63
-#: src/views/apps/rsync/IndexView.vue:235
+#: src/views/apps/redis/IndexView.vue:63 src/views/apps/rsync/IndexView.vue:235
#: src/views/apps/supervisor/IndexView.vue:342
-#: src/views/file/EditModal.vue:32
-#: src/views/file/ListTable.vue:746
-#: src/views/setting/IndexView.vue:84
-#: src/views/task/CronView.vue:259
-#: src/views/toolbox/SystemView.vue:107
-#: src/views/toolbox/SystemView.vue:131
-#: src/views/toolbox/SystemView.vue:149
-#: src/views/toolbox/SystemView.vue:175
-#: src/views/toolbox/SystemView.vue:190
+#: src/views/environment/PHPView.vue:210 src/views/environment/PHPView.vue:228
+#: src/views/file/EditModal.vue:32 src/views/file/ListTable.vue:746
+#: src/views/setting/IndexView.vue:97 src/views/task/CronView.vue:259
+#: src/views/toolbox/SshView.vue:274 src/views/toolbox/SystemView.vue:100
+#: src/views/toolbox/SystemView.vue:124 src/views/toolbox/SystemView.vue:142
+#: src/views/toolbox/SystemView.vue:168 src/views/toolbox/WebHookView.vue:389
#: src/views/website/EditView.vue:413
msgid "Save"
msgstr "保存"
@@ -968,21 +907,21 @@ msgstr "保存"
#: src/views/apps/docker/IndexView.vue:47
#: src/views/apps/fail2ban/IndexView.vue:282
#: src/views/apps/gitea/IndexView.vue:49
+#: src/views/apps/mariadb/IndexView.vue:111
#: src/views/apps/memcached/IndexView.vue:74
-#: src/views/apps/minio/IndexView.vue:49
-#: src/views/apps/mysql/IndexView.vue:111
+#: src/views/apps/minio/IndexView.vue:49 src/views/apps/mysql/IndexView.vue:111
#: src/views/apps/nginx/IndexView.vue:87
-#: src/views/apps/php/PhpView.vue:247
+#: src/views/apps/openresty/IndexView.vue:87
+#: src/views/apps/percona/IndexView.vue:111
#: src/views/apps/podman/IndexView.vue:85
#: src/views/apps/postgresql/IndexView.vue:110
-#: src/views/apps/redis/IndexView.vue:78
-#: src/views/apps/rsync/IndexView.vue:240
+#: src/views/apps/redis/IndexView.vue:78 src/views/apps/rsync/IndexView.vue:240
#: src/views/apps/supervisor/IndexView.vue:347
+#: src/views/environment/PHPView.vue:243
msgid "Runtime Logs"
msgstr "运行日志"
-#: src/views/apps/docker/IndexView.vue:34
-#: src/views/website/EditView.vue:361
+#: src/views/apps/docker/IndexView.vue:34 src/views/website/EditView.vue:361
msgid "Configuration"
msgstr "配置"
@@ -995,12 +934,9 @@ msgstr "这将修改 Docker 配置文件 (/etc/docker/daemon.json)"
#: src/views/apps/supervisor/IndexView.vue:53
#: src/views/container/ComposeView.vue:58
#: src/views/container/ContainerView.vue:31
-#: src/views/database/ServerList.vue:113
-#: src/views/database/UserList.vue:130
-#: src/views/firewall/RuleView.vue:61
-#: src/views/task/SystemView.vue:43
-#: src/views/task/TaskView.vue:22
-#: src/views/toolbox/ProcessView.vue:43
+#: src/views/database/ServerList.vue:113 src/views/database/UserList.vue:130
+#: src/views/firewall/RuleView.vue:61 src/views/task/TaskView.vue:22
+#: src/views/toolbox/ProcessView.vue:135 src/views/toolbox/ProcessView.vue:392
msgid "Status"
msgstr "状态"
@@ -1019,8 +955,7 @@ msgstr "封禁时间"
msgid "Find Time"
msgstr "查找时间"
-#: src/views/apps/fail2ban/IndexView.vue:77
-#: src/views/cert/CertView.vue:262
+#: src/views/apps/fail2ban/IndexView.vue:77 src/views/cert/CertView.vue:262
msgid "View"
msgstr "查看"
@@ -1029,37 +964,25 @@ msgid "Are you sure you want to delete rule %{ name }?"
msgstr "您确定要删除规则 %{ name } 吗?"
#: src/views/apps/fail2ban/IndexView.vue:98
-#: src/views/apps/php/PhpView.vue:106
#: src/views/apps/pureftpd/IndexView.vue:88
#: src/views/apps/rsync/IndexView.vue:105
-#: src/views/apps/supervisor/IndexView.vue:195
-#: src/views/backup/ListView.vue:96
-#: src/views/cert/AccountView.vue:127
-#: src/views/cert/CertView.vue:313
-#: src/views/cert/DnsView.vue:111
-#: src/views/container/ComposeView.vue:228
+#: src/views/apps/supervisor/IndexView.vue:195 src/views/backup/ListView.vue:96
+#: src/views/cert/AccountView.vue:127 src/views/cert/CertView.vue:313
+#: src/views/cert/DnsView.vue:111 src/views/container/ComposeView.vue:228
#: src/views/container/ContainerCreate.vue:236
#: src/views/container/ContainerCreate.vue:287
#: src/views/container/ContainerView.vue:159
#: src/views/container/ContainerView.vue:417
-#: src/views/container/ImageView.vue:94
-#: src/views/container/NetworkView.vue:134
-#: src/views/container/VolumeView.vue:88
-#: src/views/database/DatabaseList.vue:97
-#: src/views/database/ServerList.vue:214
-#: src/views/database/UserList.vue:189
-#: src/views/file/ListTable.vue:87
-#: src/views/file/ListTable.vue:291
-#: src/views/file/ToolBar.vue:238
-#: src/views/firewall/ForwardView.vue:103
-#: src/views/firewall/IpRuleView.vue:145
-#: src/views/firewall/RuleView.vue:182
-#: src/views/setting/SettingUser.vue:139
-#: src/views/setting/TokenModal.vue:91
-#: src/views/ssh/IndexView.vue:92
-#: src/views/task/CronView.vue:149
-#: src/views/task/TaskView.vue:97
-#: src/views/website/ListView.vue:195
+#: src/views/container/ImageView.vue:94 src/views/container/NetworkView.vue:134
+#: src/views/container/VolumeView.vue:88 src/views/database/DatabaseList.vue:97
+#: src/views/database/ServerList.vue:214 src/views/database/UserList.vue:189
+#: src/views/environment/PHPView.vue:101 src/views/file/ListTable.vue:87
+#: src/views/file/ListTable.vue:291 src/views/file/ToolBar.vue:238
+#: src/views/firewall/ForwardView.vue:103 src/views/firewall/IpRuleView.vue:145
+#: src/views/firewall/RuleView.vue:182 src/views/setting/SettingUser.vue:139
+#: src/views/setting/TokenModal.vue:91 src/views/ssh/IndexView.vue:92
+#: src/views/task/CronView.vue:149 src/views/task/TaskView.vue:97
+#: src/views/toolbox/WebHookView.vue:178 src/views/website/ListView.vue:195
msgid "Delete"
msgstr "删除"
@@ -1073,8 +996,7 @@ msgstr "解封"
#: src/views/apps/fail2ban/IndexView.vue:188
#: src/views/apps/pureftpd/IndexView.vue:128
-#: src/views/apps/rsync/IndexView.vue:150
-#: src/views/apps/s3fs/IndexView.vue:82
+#: src/views/apps/rsync/IndexView.vue:150 src/views/apps/s3fs/IndexView.vue:82
#: src/views/apps/supervisor/IndexView.vue:233
#: src/views/database/CreateServerModal.vue:37
msgid "Added successfully"
@@ -1082,28 +1004,18 @@ msgstr "添加成功"
#: src/views/apps/fail2ban/IndexView.vue:196
#: src/views/apps/pureftpd/IndexView.vue:145
-#: src/views/apps/rsync/IndexView.vue:158
-#: src/views/apps/s3fs/IndexView.vue:89
+#: src/views/apps/rsync/IndexView.vue:158 src/views/apps/s3fs/IndexView.vue:89
#: src/views/apps/supervisor/IndexView.vue:261
-#: src/views/backup/ListView.vue:145
-#: src/views/database/DatabaseList.vue:121
-#: src/views/database/ServerList.vue:238
-#: src/views/database/UserList.vue:213
-#: src/views/file/ListTable.vue:274
-#: src/views/file/ListTable.vue:618
-#: src/views/file/ToolBar.vue:189
-#: src/views/firewall/ForwardView.vue:129
-#: src/views/firewall/ForwardView.vue:147
-#: src/views/firewall/IpRuleView.vue:171
-#: src/views/firewall/IpRuleView.vue:189
-#: src/views/firewall/RuleView.vue:208
-#: src/views/firewall/RuleView.vue:226
-#: src/views/setting/SettingUser.vue:174
-#: src/views/setting/TokenModal.vue:114
-#: src/views/task/CronView.vue:191
-#: src/views/task/TaskView.vue:122
-#: src/views/website/ListView.vue:254
-#: src/views/website/ListView.vue:269
+#: src/views/backup/ListView.vue:145 src/views/database/DatabaseList.vue:121
+#: src/views/database/ServerList.vue:238 src/views/database/UserList.vue:213
+#: src/views/file/ListTable.vue:274 src/views/file/ListTable.vue:618
+#: src/views/file/ToolBar.vue:189 src/views/firewall/ForwardView.vue:129
+#: src/views/firewall/ForwardView.vue:147 src/views/firewall/IpRuleView.vue:171
+#: src/views/firewall/IpRuleView.vue:189 src/views/firewall/RuleView.vue:208
+#: src/views/firewall/RuleView.vue:226 src/views/setting/SettingUser.vue:174
+#: src/views/setting/TokenModal.vue:114 src/views/task/CronView.vue:191
+#: src/views/task/TaskView.vue:122 src/views/toolbox/WebHookView.vue:235
+#: src/views/website/ListView.vue:254 src/views/website/ListView.vue:269
msgid "Deleted successfully"
msgstr "删除成功"
@@ -1138,20 +1050,26 @@ msgid "Add Rule"
msgstr "添加规则"
#: src/views/apps/fail2ban/IndexView.vue:297
-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:304
-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:311
-#: src/views/cert/CertView.vue:86
-#: src/views/cert/DnsView.vue:38
-#: src/views/cert/ObtainModal.vue:58
+#: src/views/apps/fail2ban/IndexView.vue:311 src/views/cert/CertView.vue:86
+#: src/views/cert/DnsView.vue:38 src/views/cert/ObtainModal.vue:58
#: src/views/database/CreateServerModal.vue:63
-#: src/views/database/DatabaseList.vue:11
-#: src/views/database/ServerList.vue:16
+#: src/views/database/DatabaseList.vue:11 src/views/database/ServerList.vue:16
#: src/views/database/UserList.vue:16
msgid "Type"
msgstr "类型"
@@ -1162,8 +1080,7 @@ msgid "Service"
msgstr "服务"
#: src/views/apps/fail2ban/IndexView.vue:321
-#: src/views/apps/fail2ban/IndexView.vue:325
-#: src/views/task/CreateModal.vue:132
+#: src/views/apps/fail2ban/IndexView.vue:325 src/views/task/CreateModal.vue:132
#: src/views/task/CreateModal.vue:137
msgid "Select Website"
msgstr "选择网站"
@@ -1203,178 +1120,188 @@ msgstr "总封禁次数"
msgid "Ban List"
msgstr "封禁列表"
+#: src/views/apps/frp/IndexView.vue:60 src/views/apps/frp/IndexView.vue:88
+#, fuzzy
+msgid "Run User"
+msgstr "运行用户"
+
+#: src/views/apps/frp/IndexView.vue:67 src/views/apps/frp/IndexView.vue:68
+#: src/views/apps/frp/IndexView.vue:95 src/views/apps/frp/IndexView.vue:96
+#: src/views/apps/rsync/IndexView.vue:53 src/views/apps/rsync/IndexView.vue:272
+#: src/views/apps/rsync/IndexView.vue:326 src/views/database/IndexView.vue:28
+#: src/views/setting/IndexView.vue:83 src/views/toolbox/ProcessView.vue:129
+#: src/views/toolbox/ProcessView.vue:389 src/views/toolbox/WebHookView.vue:334
+#: src/views/toolbox/WebHookView.vue:369
+msgid "User"
+msgstr "用户"
+
+#: src/views/apps/frp/IndexView.vue:70 src/views/apps/frp/IndexView.vue:71
+#: src/views/apps/frp/IndexView.vue:98 src/views/apps/frp/IndexView.vue:99
+#: src/views/file/PermissionModal.vue:95 src/views/file/PermissionModal.vue:119
+msgid "Group"
+msgstr "组"
+
#: src/views/apps/gitea/IndexView.vue:36
-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/mariadb/IndexView.vue:30
#: src/views/apps/memcached/IndexView.vue:17
-#: src/views/apps/mysql/IndexView.vue:30
-#: src/views/apps/nginx/IndexView.vue:27
-#: src/views/apps/php/PhpView.vue:120
+#: src/views/apps/mysql/IndexView.vue:30 src/views/apps/nginx/IndexView.vue:27
+#: src/views/apps/openresty/IndexView.vue:27
+#: src/views/apps/percona/IndexView.vue:30
#: src/views/apps/postgresql/IndexView.vue:30
-#: src/views/apps/redis/IndexView.vue:24
+#: src/views/apps/redis/IndexView.vue:24 src/views/environment/PHPView.vue:115
msgid "Property"
msgstr "属性"
+#: src/views/apps/mariadb/IndexView.vue:37
#: src/views/apps/memcached/IndexView.vue:24
-#: src/views/apps/mysql/IndexView.vue:37
-#: src/views/apps/nginx/IndexView.vue:34
-#: src/views/apps/php/PhpView.vue:127
+#: src/views/apps/mysql/IndexView.vue:37 src/views/apps/nginx/IndexView.vue:34
+#: src/views/apps/openresty/IndexView.vue:34
+#: src/views/apps/percona/IndexView.vue:37
#: src/views/apps/postgresql/IndexView.vue:37
-#: src/views/apps/redis/IndexView.vue:31
+#: src/views/apps/redis/IndexView.vue:31 src/views/environment/PHPView.vue:122
msgid "Current Value"
msgstr "当前值"
-#: src/views/apps/memcached/IndexView.vue:54
-msgid "Service Configuration"
-msgstr "服务配置"
-
-#: src/views/apps/memcached/IndexView.vue:64
-#: src/views/apps/mysql/IndexView.vue:101
-#: src/views/apps/nginx/IndexView.vue:77
-#: src/views/apps/php/PhpView.vue:237
-#: src/views/apps/postgresql/IndexView.vue:100
-#: src/views/apps/redis/IndexView.vue:68
-#: src/views/home/IndexView.vue:463
-msgid "Load Status"
-msgstr "负载状态"
-
-#: src/views/apps/minio/IndexView.vue:32
-#: src/views/container/ComposeView.vue:338
-#: src/views/container/ComposeView.vue:368
-#: src/views/container/ContainerCreate.vue:353
-msgid "Environment Variables"
-msgstr "环境变量"
-
-#: src/views/apps/minio/IndexView.vue:36
-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/mysql/IndexView.vue:52
-#: src/views/apps/mysql/IndexView.vue:58
+#: src/views/apps/mariadb/IndexView.vue:52
+#: src/views/apps/mariadb/IndexView.vue:58
+#: src/views/apps/mysql/IndexView.vue:52 src/views/apps/mysql/IndexView.vue:58
#: src/views/apps/nginx/IndexView.vue:49
-#: src/views/apps/php/PhpView.vue:154
-#: src/views/apps/php/PhpView.vue:160
+#: src/views/apps/openresty/IndexView.vue:49
+#: src/views/apps/percona/IndexView.vue:52
+#: src/views/apps/percona/IndexView.vue:58
#: src/views/apps/postgresql/IndexView.vue:56
#: src/views/apps/supervisor/IndexView.vue:225
+#: src/views/environment/PHPView.vue:149 src/views/environment/PHPView.vue:155
#: src/views/website/EditView.vue:159
msgid "Cleared successfully"
msgstr "清除成功"
+#: src/views/apps/mariadb/IndexView.vue:64
#: src/views/apps/mysql/IndexView.vue:64
+#: src/views/apps/percona/IndexView.vue:64
#: src/views/apps/pureftpd/IndexView.vue:138
#: src/views/database/DatabaseList.vue:127
#: src/views/database/ServerList.vue:244
#: src/views/database/UpdateServerModal.vue:21
#: src/views/database/UpdateUserModal.vue:18
-#: src/views/database/UserList.vue:219
-#: src/views/file/PermissionModal.vue:29
-#: src/views/setting/SettingUser.vue:162
-#: src/views/setting/SettingUser.vue:168
-#: src/views/task/CronView.vue:173
-#: src/views/task/CronView.vue:201
-#: src/views/website/ListView.vue:237
-#: src/views/website/SettingView.vue:28
+#: src/views/database/UserList.vue:219 src/views/file/PermissionModal.vue:29
+#: src/views/setting/SettingUser.vue:162 src/views/setting/SettingUser.vue:168
+#: src/views/task/CronView.vue:173 src/views/task/CronView.vue:201
+#: src/views/toolbox/WebHookView.vue:210 src/views/toolbox/WebHookView.vue:281
+#: src/views/website/ListView.vue:237 src/views/website/SettingView.vue:28
msgid "Modified successfully"
msgstr "修改成功"
+#: src/views/apps/mariadb/IndexView.vue:74
#: src/views/apps/mysql/IndexView.vue:74
-#: src/views/toolbox/SystemView.vue:183
-#: src/views/toolbox/SystemView.vue:185
+#: src/views/apps/percona/IndexView.vue:74 src/views/toolbox/SshView.vue:298
msgid "Root Password"
msgstr "Root 密码"
+#: src/views/apps/mariadb/IndexView.vue:78
#: src/views/apps/mysql/IndexView.vue:78
-#: src/views/website/SettingView.vue:44
-#: src/views/website/SettingView.vue:54
-#: src/views/website/SettingView.vue:64
+#: src/views/apps/percona/IndexView.vue:78 src/views/website/SettingView.vue:44
+#: src/views/website/SettingView.vue:54 src/views/website/SettingView.vue:64
#: src/views/website/SettingView.vue:97
msgid "Save Changes"
msgstr "保存更改"
-#: src/views/apps/mysql/IndexView.vue:88
-msgid "This modifies the MySQL main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!"
-msgstr "这将修改 MySQL 主配置文件。如果您不了解每个参数的含义,请不要随意修改!"
+#: src/views/apps/mariadb/IndexView.vue:88
+#, fuzzy
+msgid ""
+"This modifies the MariaDB main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+"这将修改 MySQL 主配置文件。如果您不了解每个参数的含义,请不要随意修改!"
-#: src/views/apps/mysql/IndexView.vue:113
-#: src/views/apps/nginx/IndexView.vue:94
-#: src/views/apps/php/PhpView.vue:254
+#: src/views/apps/mariadb/IndexView.vue:101
+#: src/views/apps/memcached/IndexView.vue:64
+#: src/views/apps/mysql/IndexView.vue:101 src/views/apps/nginx/IndexView.vue:77
+#: src/views/apps/openresty/IndexView.vue:77
+#: src/views/apps/percona/IndexView.vue:101
+#: src/views/apps/postgresql/IndexView.vue:100
+#: src/views/apps/redis/IndexView.vue:68 src/views/environment/PHPView.vue:233
+#: src/views/home/IndexView.vue:465
+msgid "Load Status"
+msgstr "负载状态"
+
+#: src/views/apps/mariadb/IndexView.vue:113
+#: src/views/apps/mysql/IndexView.vue:113 src/views/apps/nginx/IndexView.vue:94
+#: src/views/apps/openresty/IndexView.vue:94
+#: src/views/apps/percona/IndexView.vue:113
#: src/views/apps/postgresql/IndexView.vue:114
#: src/views/apps/supervisor/IndexView.vue:354
+#: src/views/environment/PHPView.vue:250
msgid "Clear Log"
msgstr "清除日志"
+#: src/views/apps/mariadb/IndexView.vue:117
#: src/views/apps/mysql/IndexView.vue:117
+#: src/views/apps/percona/IndexView.vue:117
msgid "Slow Query Log"
msgstr "慢查询日志"
+#: src/views/apps/mariadb/IndexView.vue:119
#: src/views/apps/mysql/IndexView.vue:119
-#: src/views/apps/php/PhpView.vue:264
+#: src/views/apps/percona/IndexView.vue:119
+#: src/views/environment/PHPView.vue:260
msgid "Clear Slow Log"
msgstr "清除慢日志"
+#: src/views/apps/memcached/IndexView.vue:54
+msgid "Service Configuration"
+msgstr "服务配置"
+
+#: src/views/apps/minio/IndexView.vue:32
+#: src/views/container/ComposeView.vue:338
+#: src/views/container/ComposeView.vue:368
+#: src/views/container/ContainerCreate.vue:353
+#: src/views/toolbox/ProcessView.vue:438
+msgid "Environment Variables"
+msgstr "环境变量"
+
+#: src/views/apps/minio/IndexView.vue:36
+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/mysql/IndexView.vue:88
+msgid ""
+"This modifies the MySQL main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+"这将修改 MySQL 主配置文件。如果您不了解每个参数的含义,请不要随意修改!"
+
#: src/views/apps/nginx/IndexView.vue:64
-msgid "This modifies the OpenResty main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!"
-msgstr "这将修改 OpenResty 主配置文件。如果您不理解每个参数的含义,请不要随意修改!"
+#: src/views/apps/openresty/IndexView.vue:64
+msgid ""
+"This modifies the OpenResty main configuration file. If you do not "
+"understand the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+"这将修改 OpenResty 主配置文件。如果您不理解每个参数的含义,请不要随意修改!"
#: src/views/apps/nginx/IndexView.vue:90
-#: src/views/apps/php/PhpView.vue:250
+#: src/views/apps/openresty/IndexView.vue:90
+#: src/views/environment/PHPView.vue:246
msgid "Error Logs"
msgstr "错误日志"
-#: src/views/apps/php/PhpView.vue:41
-msgid "Extension Name"
-msgstr "扩展名称"
-
-#: src/views/apps/php/PhpView.vue:69
-msgid "Are you sure you want to install %{ name }?"
-msgstr "您确定要安装 %{ name } 吗?"
-
-#: src/views/apps/php/PhpView.vue:94
-msgid "Are you sure you want to uninstall %{ name }?"
-msgstr "您确定要卸载 %{ name } 吗?"
-
-#: src/views/apps/php/PhpView.vue:136
-msgid "Set successfully"
-msgstr "设置成功"
-
-#: src/views/apps/php/PhpView.vue:166
-#: src/views/apps/php/PhpView.vue:172
-msgid "Task submitted, please check progress in background tasks"
-msgstr "任务已提交,请在后台任务中查看进度"
-
-#: src/views/apps/php/PhpView.vue:184
-msgid "Set as CLI Default Version"
-msgstr "设置为 CLI 默认版本"
-
-#: src/views/apps/php/PhpView.vue:188
-msgid "Extension Management"
-msgstr "扩展管理"
-
-#: src/views/apps/php/PhpView.vue:201
-#: src/views/apps/postgresql/IndexView.vue:66
-#: src/views/apps/redis/IndexView.vue:51
-#: src/views/apps/rsync/IndexView.vue:223
-#: src/views/apps/supervisor/IndexView.vue:330
-msgid "Main Configuration"
-msgstr "主要配置"
-
-#: src/views/apps/php/PhpView.vue:205
-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/apps/php/PhpView.vue:219
-msgid "FPM Configuration"
-msgstr "FPM 配置"
-
-#: src/views/apps/php/PhpView.vue:223
-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/apps/php/PhpView.vue:260
-#: src/views/apps/postgresql/IndexView.vue:120
-msgid "Slow Logs"
-msgstr "慢日志"
+#: src/views/apps/percona/IndexView.vue:88
+#, fuzzy
+msgid ""
+"This modifies the Percona main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+"这将修改 Redis 主配置文件。如果您不了解每个参数的含义,请不要随意修改!"
#: src/views/apps/phpmyadmin/IndexView.vue:57
msgid "Access Information"
@@ -1393,19 +1320,28 @@ msgid "Modify phpMyAdmin access port"
msgstr "修改 phpMyAdmin 访问端口"
#: src/views/apps/phpmyadmin/IndexView.vue:77
-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:43
-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:51
msgid "Registry Configuration"
msgstr "注册表配置"
#: src/views/apps/podman/IndexView.vue:55
-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:68
@@ -1413,20 +1349,41 @@ msgid "Storage Configuration"
msgstr "存储配置"
#: src/views/apps/podman/IndexView.vue:72
-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:66
+#: src/views/apps/redis/IndexView.vue:51 src/views/apps/rsync/IndexView.vue:223
+#: src/views/apps/supervisor/IndexView.vue:330
+#: src/views/environment/PHPView.vue:197
+msgid "Main Configuration"
+msgstr "主要配置"
+
#: src/views/apps/postgresql/IndexView.vue:70
-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:83
msgid "User Configuration"
msgstr "用户配置"
#: src/views/apps/postgresql/IndexView.vue:87
-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:120
+#: src/views/environment/PHPView.vue:256
+msgid "Slow Logs"
+msgstr "慢日志"
#: src/views/apps/pureftpd/IndexView.vue:32
#: src/views/apps/pureftpd/IndexView.vue:214
@@ -1436,12 +1393,9 @@ msgstr "这将修改 PostgreSQL 用户配置文件。如果您不了解每个参
#: src/views/database/CreateUserModal.vue:77
#: src/views/database/ServerList.vue:46
#: src/views/database/UpdateServerModal.vue:86
-#: src/views/database/UserList.vue:39
-#: src/views/login/IndexView.vue:133
-#: src/views/setting/CreateModal.vue:40
-#: src/views/setting/SettingUser.vue:19
-#: src/views/ssh/CreateModal.vue:83
-#: src/views/ssh/UpdateModal.vue:89
+#: src/views/database/UserList.vue:39 src/views/login/IndexView.vue:133
+#: src/views/setting/CreateModal.vue:40 src/views/setting/SettingUser.vue:19
+#: src/views/ssh/CreateModal.vue:85 src/views/ssh/UpdateModal.vue:91
msgid "Username"
msgstr "用户名"
@@ -1473,9 +1427,8 @@ msgstr "运行日志"
#: src/views/apps/pureftpd/IndexView.vue:210
#: src/views/database/CreateDatabaseModal.vue:79
#: src/views/database/CreateUserModal.vue:55
-#: src/views/database/IndexView.vue:42
-#: src/views/setting/CreateModal.vue:32
-#: src/views/setting/IndexView.vue:76
+#: src/views/database/IndexView.vue:42 src/views/setting/CreateModal.vue:32
+#: src/views/setting/IndexView.vue:89
msgid "Create User"
msgstr "创建用户"
@@ -1489,22 +1442,17 @@ msgstr "输入用户名"
#: src/views/apps/pureftpd/IndexView.vue:222
#: src/views/apps/pureftpd/IndexView.vue:253
#: src/views/apps/rsync/IndexView.vue:280
-#: src/views/apps/rsync/IndexView.vue:334
-#: src/views/container/ImageView.vue:206
+#: src/views/apps/rsync/IndexView.vue:334 src/views/container/ImageView.vue:206
#: src/views/database/CreateDatabaseModal.vue:102
#: src/views/database/CreateServerModal.vue:102
#: src/views/database/CreateUserModal.vue:85
#: src/views/database/ServerList.vue:55
#: src/views/database/UpdateServerModal.vue:94
-#: src/views/database/UpdateUserModal.vue:55
-#: src/views/database/UserList.vue:49
-#: src/views/login/IndexView.vue:142
-#: src/views/setting/CreateModal.vue:47
-#: src/views/setting/PasswordModal.vue:34
-#: src/views/ssh/CreateModal.vue:77
-#: src/views/ssh/CreateModal.vue:86
-#: src/views/ssh/UpdateModal.vue:83
-#: src/views/ssh/UpdateModal.vue:92
+#: src/views/database/UpdateUserModal.vue:55 src/views/database/UserList.vue:49
+#: src/views/login/IndexView.vue:142 src/views/setting/CreateModal.vue:47
+#: src/views/setting/PasswordModal.vue:34 src/views/ssh/CreateModal.vue:79
+#: src/views/ssh/CreateModal.vue:88 src/views/ssh/UpdateModal.vue:85
+#: src/views/ssh/UpdateModal.vue:94
msgid "Password"
msgstr "密码"
@@ -1514,11 +1462,9 @@ msgid "It is recommended to use the generator to generate a random password"
msgstr "建议使用生成器生成随机密码"
#: src/views/apps/pureftpd/IndexView.vue:233
-#: src/views/apps/rsync/IndexView.vue:46
-#: src/views/apps/rsync/IndexView.vue:264
+#: src/views/apps/rsync/IndexView.vue:46 src/views/apps/rsync/IndexView.vue:264
#: src/views/apps/rsync/IndexView.vue:318
-#: src/views/container/ComposeView.vue:38
-#: src/views/website/CreateModal.vue:210
+#: src/views/container/ComposeView.vue:38 src/views/website/CreateModal.vue:210
#: src/views/website/ListView.vue:41
msgid "Directory"
msgstr "目录"
@@ -1528,40 +1474,28 @@ msgid "Enter the directory authorized to the user"
msgstr "输入授权给用户的目录"
#: src/views/apps/redis/IndexView.vue:55
-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/rsync/IndexView.vue:53
-#: src/views/apps/rsync/IndexView.vue:272
-#: src/views/apps/rsync/IndexView.vue:326
-#: src/views/database/IndexView.vue:28
-#: src/views/setting/IndexView.vue:70
-#: src/views/task/SystemView.vue:37
-#: src/views/toolbox/ProcessView.vue:37
-msgid "User"
-msgstr "用户"
-
-#: src/views/apps/rsync/IndexView.vue:60
-#: src/views/apps/rsync/IndexView.vue:288
+#: src/views/apps/rsync/IndexView.vue:60 src/views/apps/rsync/IndexView.vue:288
#: src/views/apps/rsync/IndexView.vue:343
#: src/views/database/CreateDatabaseModal.vue:111
#: src/views/database/CreateServerModal.vue:73
#: src/views/database/ServerList.vue:86
#: src/views/database/UpdateServerModal.vue:65
-#: src/views/database/UserList.vue:80
-#: src/views/ssh/CreateModal.vue:62
-#: src/views/ssh/UpdateModal.vue:68
-#: src/views/toolbox/SystemView.vue:136
+#: src/views/database/UserList.vue:80 src/views/ssh/CreateModal.vue:64
+#: src/views/ssh/UpdateModal.vue:70 src/views/toolbox/SystemView.vue:129
msgid "Host"
msgstr "主机"
-#: src/views/apps/rsync/IndexView.vue:66
-#: src/views/apps/rsync/IndexView.vue:296
+#: src/views/apps/rsync/IndexView.vue:66 src/views/apps/rsync/IndexView.vue:296
#: src/views/apps/rsync/IndexView.vue:351
#: src/views/database/CreateServerModal.vue:111
#: src/views/database/CreateUserModal.vue:116
-#: src/views/database/DatabaseList.vue:56
-#: src/views/database/ServerList.vue:96
+#: src/views/database/DatabaseList.vue:56 src/views/database/ServerList.vue:96
#: src/views/database/UpdateServerModal.vue:103
#: src/views/database/UpdateUserModal.vue:70
#: src/views/database/UserList.vue:113
@@ -1577,7 +1511,7 @@ msgstr "配置"
msgid "Are you sure you want to delete module %{ name }?"
msgstr "确定要删除模块 %{ name } 吗?"
-#: src/views/apps/rsync/IndexView.vue:194
+#: src/views/apps/rsync/IndexView.vue:194 src/views/environment/PHPView.vue:184
msgid "Module Management"
msgstr "模块管理"
@@ -1587,8 +1521,11 @@ msgid "Add Module"
msgstr "添加模块"
#: src/views/apps/rsync/IndexView.vue:227
-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:261
#: src/views/apps/supervisor/IndexView.vue:378
@@ -1624,7 +1561,7 @@ msgstr "输入注释"
msgid "Module Configuration"
msgstr "模块配置"
-#: src/views/apps/s3fs/IndexView.vue:24
+#: src/views/apps/s3fs/IndexView.vue:24 src/views/toolbox/DiskView.vue:734
msgid "Mount Path"
msgstr "挂载路径"
@@ -1632,12 +1569,11 @@ msgstr "挂载路径"
msgid "Are you sure you want to delete mount %{ path }?"
msgstr "您确定要删除挂载 %{ path } 吗?"
-#: src/views/apps/s3fs/IndexView.vue:57
+#: src/views/apps/s3fs/IndexView.vue:57 src/views/toolbox/DiskView.vue:354
msgid "Unmount"
msgstr "卸载"
-#: src/views/apps/s3fs/IndexView.vue:103
-#: src/views/apps/s3fs/IndexView.vue:128
+#: src/views/apps/s3fs/IndexView.vue:103 src/views/apps/s3fs/IndexView.vue:128
#: src/views/apps/s3fs/IndexView.vue:132
msgid "Add Mount"
msgstr "添加挂载"
@@ -1659,7 +1595,9 @@ msgid "Region Endpoint"
msgstr "区域端点"
#: src/views/apps/s3fs/IndexView.vue:166
-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:172
@@ -1696,8 +1634,11 @@ msgid "Add Process"
msgstr "添加进程"
#: src/views/apps/supervisor/IndexView.vue:334
-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:350
msgid "Daemon Logs"
@@ -1712,6 +1653,7 @@ msgid "Please enter absolute path for files in start command"
msgstr "请在启动命令中输入文件的绝对路径"
#: src/views/apps/supervisor/IndexView.vue:389
+#: src/views/toolbox/ProcessView.vue:424
msgid "Working Directory"
msgstr "工作目录"
@@ -1720,6 +1662,7 @@ msgid "Please enter absolute path for working directory"
msgstr "请输入工作目录的绝对路径"
#: src/views/apps/supervisor/IndexView.vue:397
+#: src/views/toolbox/WebHookView.vue:58
msgid "Run As User"
msgstr "运行用户"
@@ -1739,8 +1682,7 @@ msgstr "进程配置"
msgid "Filename"
msgstr "文件名"
-#: src/views/backup/ListView.vue:48
-#: src/views/database/ServerList.vue:125
+#: src/views/backup/ListView.vue:48 src/views/database/ServerList.vue:125
#: src/views/database/UserList.vue:142
msgid "Update Date"
msgstr "更新日期"
@@ -1761,27 +1703,22 @@ msgstr "正在恢复……"
msgid "Restored successfully"
msgstr "恢复成功"
-#: src/views/backup/ListView.vue:194
-#: src/views/backup/ListView.vue:224
+#: src/views/backup/ListView.vue:194 src/views/backup/ListView.vue:224
msgid "Create Backup"
msgstr "创建备份"
-#: src/views/backup/ListView.vue:197
-#: src/views/backup/UploadModal.vue:39
+#: src/views/backup/ListView.vue:197 src/views/backup/UploadModal.vue:39
msgid "Upload Backup"
msgstr "上传备份"
-#: src/views/backup/ListView.vue:236
-#: src/views/backup/ListView.vue:273
+#: src/views/backup/ListView.vue:236 src/views/backup/ListView.vue:273
msgid "Select website"
msgstr "选择网站"
#: src/views/backup/ListView.vue:239
#: src/views/database/CreateDatabaseModal.vue:71
-#: src/views/database/DatabaseList.vue:34
-#: src/views/task/CreateModal.vue:142
-#: src/views/task/CreateModal.vue:144
-#: src/views/website/CreateModal.vue:174
+#: src/views/database/DatabaseList.vue:34 src/views/task/CreateModal.vue:142
+#: src/views/task/CreateModal.vue:144 src/views/website/CreateModal.vue:174
#: src/views/website/CreateModal.vue:179
msgid "Database Name"
msgstr "数据库名称"
@@ -1793,8 +1730,7 @@ msgstr "数据库名称"
msgid "Enter database name"
msgstr "输入数据库名称"
-#: src/views/backup/ListView.vue:247
-#: src/views/task/CreateModal.vue:146
+#: src/views/backup/ListView.vue:247 src/views/task/CreateModal.vue:146
#: src/views/task/CreateModal.vue:149
msgid "Save Directory"
msgstr "保存目录"
@@ -1811,43 +1747,35 @@ msgstr "恢复备份"
msgid "Upload %{ filename } successfully"
msgstr "上传 %{ filename } 成功"
-#: src/views/backup/UploadModal.vue:51
-#: src/views/file/UploadModal.vue:50
+#: src/views/backup/UploadModal.vue:51 src/views/file/UploadModal.vue:50
msgid "Click or drag files to this area to upload"
msgstr "点击或将文件拖到此区域上传"
#: src/views/backup/UploadModal.vue:53
-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:44
-#: src/views/cert/AccountView.vue:243
+#: src/views/cert/AccountView.vue:44 src/views/cert/AccountView.vue:243
#: src/views/cert/CreateAccountModal.vue:100
-#: src/views/setting/CreateModal.vue:56
-#: src/views/setting/SettingUser.vue:36
+#: src/views/setting/CreateModal.vue:56 src/views/setting/SettingUser.vue:36
msgid "Email"
msgstr "邮箱"
-#: src/views/cert/AccountView.vue:72
-#: src/views/cert/AccountView.vue:235
-#: src/views/cert/CertView.vue:457
-#: src/views/cert/CreateAccountModal.vue:92
+#: src/views/cert/AccountView.vue:72 src/views/cert/AccountView.vue:235
+#: src/views/cert/CertView.vue:457 src/views/cert/CreateAccountModal.vue:92
#: src/views/cert/CreateCertModal.vue:82
msgid "Key Type"
msgstr "密钥类型"
-#: src/views/cert/AccountView.vue:101
-#: src/views/cert/CertView.vue:287
-#: src/views/cert/DnsView.vue:85
-#: src/views/database/ServerList.vue:182
-#: src/views/database/UserList.vue:168
-#: src/views/file/PermissionModal.vue:123
+#: src/views/cert/AccountView.vue:101 src/views/cert/CertView.vue:287
+#: src/views/cert/DnsView.vue:85 src/views/database/ServerList.vue:182
+#: src/views/database/UserList.vue:168 src/views/file/PermissionModal.vue:123
#: src/views/setting/TokenModal.vue:69
msgid "Modify"
msgstr "修改"
-#: src/views/cert/AccountView.vue:109
-#: src/views/cert/CertView.vue:296
+#: src/views/cert/AccountView.vue:109 src/views/cert/CertView.vue:296
#: src/views/cert/DnsView.vue:94
msgid "Deletion successful"
msgstr "删除成功"
@@ -1856,15 +1784,12 @@ msgstr "删除成功"
msgid "Are you sure you want to delete the account?"
msgstr "您确定要删除该账户吗?"
-#: src/views/cert/AccountView.vue:150
-#: src/views/cert/CreateAccountModal.vue:39
+#: src/views/cert/AccountView.vue:150 src/views/cert/CreateAccountModal.vue:39
msgid "Registering account with CA, please wait patiently"
msgstr "正在向 CA 注册账户,请耐心等待"
-#: src/views/cert/AccountView.vue:162
-#: src/views/cert/CertView.vue:347
-#: src/views/cert/CertView.vue:364
-#: src/views/cert/DnsView.vue:139
+#: src/views/cert/AccountView.vue:162 src/views/cert/CertView.vue:347
+#: src/views/cert/CertView.vue:364 src/views/cert/DnsView.vue:139
#: src/views/container/ComposeView.vue:272
msgid "Update successful"
msgstr "更新成功"
@@ -1873,76 +1798,63 @@ msgstr "更新成功"
msgid "Modify Account"
msgstr "修改账户"
-#: src/views/cert/AccountView.vue:215
-#: src/views/cert/CreateAccountModal.vue:72
-msgid "Google and SSL.com require obtaining KID and HMAC from their official websites first"
+#: src/views/cert/AccountView.vue:215 src/views/cert/CreateAccountModal.vue:72
+msgid ""
+"Google and SSL.com require obtaining KID and HMAC from their official "
+"websites first"
msgstr "Google 和 SSL.com 需要先从其官网获取 KID 和 HMAC"
-#: src/views/cert/AccountView.vue:221
-#: src/views/cert/CreateAccountModal.vue:78
-msgid "Google is not accessible in mainland China, other CAs depend on network conditions, recommend using Let's Encrypt"
-msgstr "Google 在中国大陆无法访问,其他 CA 取决于网络条件,建议使用 Let's Encrypt"
+#: src/views/cert/AccountView.vue:221 src/views/cert/CreateAccountModal.vue:78
+msgid ""
+"Google is not accessible in mainland China, other CAs depend on network "
+"conditions, recommend using Let's Encrypt"
+msgstr ""
+"Google 在中国大陆无法访问,其他 CA 取决于网络条件,建议使用 Let's Encrypt"
-#: src/views/cert/AccountView.vue:227
-#: src/views/cert/CreateAccountModal.vue:84
+#: src/views/cert/AccountView.vue:227 src/views/cert/CreateAccountModal.vue:84
msgid "CA"
msgstr "CA"
-#: src/views/cert/AccountView.vue:230
-#: src/views/cert/CreateAccountModal.vue:87
+#: src/views/cert/AccountView.vue:230 src/views/cert/CreateAccountModal.vue:87
msgid "Select CA"
msgstr "选择 CA"
-#: src/views/cert/AccountView.vue:238
-#: src/views/cert/CertView.vue:460
+#: src/views/cert/AccountView.vue:238 src/views/cert/CertView.vue:460
#: src/views/cert/CreateAccountModal.vue:95
#: src/views/cert/CreateCertModal.vue:85
msgid "Select key type"
msgstr "选择密钥类型"
-#: src/views/cert/AccountView.vue:248
-#: src/views/cert/CreateAccountModal.vue:105
+#: src/views/cert/AccountView.vue:248 src/views/cert/CreateAccountModal.vue:105
msgid "Enter email address"
msgstr "输入电子邮件地址"
-#: src/views/cert/AccountView.vue:256
-#: src/views/cert/CreateAccountModal.vue:113
+#: src/views/cert/AccountView.vue:256 src/views/cert/CreateAccountModal.vue:113
msgid "Enter KID"
msgstr "输入 KID"
-#: src/views/cert/AccountView.vue:264
-#: src/views/cert/CreateAccountModal.vue:121
+#: src/views/cert/AccountView.vue:264 src/views/cert/CreateAccountModal.vue:121
msgid "Enter HMAC"
msgstr "输入 HMAC"
-#: src/views/cert/CertView.vue:63
-#: src/views/cert/CertView.vue:449
-#: src/views/cert/CreateCertModal.vue:74
-#: src/views/cert/ObtainModal.vue:57
-#: src/views/website/CreateModal.vue:118
-#: src/views/website/EditView.vue:189
+#: src/views/cert/CertView.vue:63 src/views/cert/CertView.vue:449
+#: src/views/cert/CreateCertModal.vue:74 src/views/cert/ObtainModal.vue:57
+#: src/views/website/CreateModal.vue:118 src/views/website/EditView.vue:189
msgid "Domain"
msgstr "域名"
-#: src/views/cert/CertView.vue:69
-#: src/views/cert/CertView.vue:123
-#: src/views/cert/CertView.vue:134
-#: src/views/cert/CertView.vue:153
+#: src/views/cert/CertView.vue:69 src/views/cert/CertView.vue:123
+#: src/views/cert/CertView.vue:134 src/views/cert/CertView.vue:153
#: src/views/container/ContainerCreate.vue:55
-#: src/views/database/ServerList.vue:51
-#: src/views/database/ServerList.vue:66
-#: src/views/database/UserList.vue:45
-#: src/views/database/UserList.vue:85
-#: src/views/firewall/ForwardView.vue:25
-#: src/views/firewall/IpRuleView.vue:25
-#: src/views/firewall/IpRuleView.vue:42
-#: src/views/firewall/RuleView.vue:25
+#: src/views/database/ServerList.vue:51 src/views/database/ServerList.vue:66
+#: src/views/database/UserList.vue:45 src/views/database/UserList.vue:85
+#: src/views/firewall/ForwardView.vue:25 src/views/firewall/IpRuleView.vue:25
+#: src/views/firewall/IpRuleView.vue:42 src/views/firewall/RuleView.vue:25
#: src/views/firewall/RuleView.vue:42
msgid "None"
msgstr "无"
-#: src/views/cert/CertView.vue:108
-#: src/views/file/ToolBar.vue:221
+#: src/views/cert/CertView.vue:108 src/views/file/ToolBar.vue:221
#: src/views/file/UploadModal.vue:38
msgid "Upload"
msgstr "上传"
@@ -1951,15 +1863,12 @@ msgstr "上传"
msgid "Associated Account"
msgstr "关联账户"
-#: src/views/cert/CertView.vue:129
-#: src/views/website/EditView.vue:277
+#: src/views/cert/CertView.vue:129 src/views/website/EditView.vue:277
msgid "Issuer"
msgstr "颁发者"
-#: src/views/cert/CertView.vue:138
-#: src/views/setting/TokenModal.vue:43
-#: src/views/setting/TokenModal.vue:256
-#: src/views/setting/TokenModal.vue:289
+#: src/views/cert/CertView.vue:138 src/views/setting/TokenModal.vue:43
+#: src/views/setting/TokenModal.vue:256 src/views/setting/TokenModal.vue:289
msgid "Expiration Time"
msgstr "过期时间"
@@ -1967,8 +1876,7 @@ msgstr "过期时间"
msgid "Auto Renew"
msgstr "自动续期"
-#: src/views/cert/CertView.vue:199
-#: src/views/cert/ObtainModal.vue:78
+#: src/views/cert/CertView.vue:199 src/views/cert/ObtainModal.vue:78
msgid "Issue"
msgstr "签发"
@@ -1976,10 +1884,8 @@ msgstr "签发"
msgid "Deploy"
msgstr "部署"
-#: src/views/cert/CertView.vue:230
-#: src/views/cert/ObtainModal.vue:24
-#: src/views/cert/ObtainModal.vue:81
-#: src/views/website/EditView.vue:132
+#: src/views/cert/CertView.vue:230 src/views/cert/ObtainModal.vue:24
+#: src/views/cert/ObtainModal.vue:81 src/views/website/EditView.vue:132
msgid "Please wait..."
msgstr "请稍候……"
@@ -2004,58 +1910,52 @@ msgid "Modify Certificate"
msgstr "修改证书"
#: src/views/cert/CertView.vue:443
-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:468
-#: src/views/cert/CreateCertModal.vue:93
+#: src/views/cert/CertView.vue:468 src/views/cert/CreateCertModal.vue:93
msgid "Select website for certificate deployment"
msgstr "选择要部署证书的网站"
-#: src/views/cert/CertView.vue:476
-#: src/views/cert/CreateCertModal.vue:98
+#: src/views/cert/CertView.vue:476 src/views/cert/CreateCertModal.vue:98
#: src/views/cert/IndexView.vue:97
msgid "Account"
msgstr "账户"
-#: src/views/cert/CertView.vue:480
-#: src/views/cert/CreateCertModal.vue:101
+#: src/views/cert/CertView.vue:480 src/views/cert/CreateCertModal.vue:101
msgid "Select account for certificate issuance"
msgstr "选择用于证书颁发的账户"
-#: src/views/cert/CertView.vue:485
-#: src/views/cert/CreateCertModal.vue:106
-#: src/views/cert/CreateDnsModal.vue:59
-#: src/views/cert/DnsView.vue:196
+#: src/views/cert/CertView.vue:485 src/views/cert/CreateCertModal.vue:106
+#: src/views/cert/CreateDnsModal.vue:59 src/views/cert/DnsView.vue:196
#: src/views/cert/IndexView.vue:98
msgid "DNS"
msgstr "DNS"
-#: src/views/cert/CertView.vue:488
-#: src/views/cert/CreateCertModal.vue:109
+#: src/views/cert/CertView.vue:488 src/views/cert/CreateCertModal.vue:109
msgid "Select DNS for certificate issuance"
msgstr "选择用于证书颁发的 DNS"
-#: src/views/cert/CertView.vue:501
-#: src/views/cert/UploadCertModal.vue:42
+#: src/views/cert/CertView.vue:501 src/views/cert/UploadCertModal.vue:42
#: src/views/website/EditView.vue:330
msgid "Enter the content of the PEM certificate file"
msgstr "输入 PEM 证书文件的内容"
-#: src/views/cert/CertView.vue:508
-#: src/views/cert/CertView.vue:576
-#: src/views/cert/UploadCertModal.vue:46
-#: src/views/setting/SettingSafe.vue:199
-#: src/views/ssh/CreateModal.vue:78
-#: src/views/ssh/CreateModal.vue:89
-#: src/views/ssh/UpdateModal.vue:84
-#: src/views/ssh/UpdateModal.vue:95
+#: src/views/cert/CertView.vue:508 src/views/cert/CertView.vue:576
+#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingSafe.vue:255
+#: src/views/ssh/CreateModal.vue:80 src/views/ssh/CreateModal.vue:91
+#: src/views/ssh/UpdateModal.vue:86 src/views/ssh/UpdateModal.vue:97
#: src/views/website/EditView.vue:334
msgid "Private Key"
msgstr "私钥"
-#: src/views/cert/CertView.vue:513
-#: src/views/cert/UploadCertModal.vue:50
+#: src/views/cert/CertView.vue:513 src/views/cert/UploadCertModal.vue:50
#: src/views/website/EditView.vue:338
msgid "Enter the content of the KEY private key file"
msgstr "输入 KEY 私钥文件的内容"
@@ -2065,7 +1965,9 @@ msgid "Deployment Script"
msgstr "部署脚本"
#: src/views/cert/CertView.vue:526
-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:540
@@ -2080,22 +1982,24 @@ msgstr "选择要部署证书的网站"
msgid "View Certificate"
msgstr "查看证书"
-#: src/views/cert/CreateAccountModal.vue:64
-#: src/views/cert/IndexView.vue:110
+#: src/views/cert/CreateAccountModal.vue:64 src/views/cert/IndexView.vue:110
msgid "Create Account"
msgstr "创建账户"
-#: src/views/cert/CreateCertModal.vue:59
-#: src/views/cert/IndexView.vue:107
+#: src/views/cert/CreateCertModal.vue:59 src/views/cert/IndexView.vue:107
msgid "Create Certificate"
msgstr "创建证书"
#: src/views/cert/CreateCertModal.vue:68
-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:44
-#: src/views/cert/IndexView.vue:113
+#: src/views/cert/CreateDnsModal.vue:44 src/views/cert/IndexView.vue:113
msgid "Create DNS"
msgstr "创建 DNS"
@@ -2107,88 +2011,71 @@ msgstr "备注名称"
msgid "Enter comment name"
msgstr "输入备注名称"
-#: src/views/cert/CreateDnsModal.vue:62
-#: src/views/cert/DnsView.vue:199
+#: src/views/cert/CreateDnsModal.vue:62 src/views/cert/DnsView.vue:199
msgid "Select DNS"
msgstr "选择 DNS"
-#: src/views/cert/CreateDnsModal.vue:71
-#: src/views/cert/DnsView.vue:208
+#: src/views/cert/CreateDnsModal.vue:71 src/views/cert/DnsView.vue:208
msgid "Enter Aliyun Access Key"
msgstr "输入阿里云 Access Key"
-#: src/views/cert/CreateDnsModal.vue:78
-#: src/views/cert/DnsView.vue:215
+#: src/views/cert/CreateDnsModal.vue:78 src/views/cert/DnsView.vue:215
msgid "Enter Aliyun Secret Key"
msgstr "输入阿里云 Secret Key"
-#: src/views/cert/CreateDnsModal.vue:85
-#: src/views/cert/DnsView.vue:222
+#: src/views/cert/CreateDnsModal.vue:85 src/views/cert/DnsView.vue:222
msgid "Enter Tencent Cloud SecretId"
msgstr "输入腾讯云 SecretId"
-#: src/views/cert/CreateDnsModal.vue:92
-#: src/views/cert/DnsView.vue:229
+#: src/views/cert/CreateDnsModal.vue:92 src/views/cert/DnsView.vue:229
msgid "Enter Tencent Cloud SecretKey"
msgstr "输入腾讯云 SecretKey"
-#: src/views/cert/CreateDnsModal.vue:99
-#: src/views/cert/DnsView.vue:236
+#: src/views/cert/CreateDnsModal.vue:99 src/views/cert/DnsView.vue:236
msgid "Enter Huawei Cloud AccessKeyId"
msgstr "输入华为云 AccessKeyId"
-#: src/views/cert/CreateDnsModal.vue:106
-#: src/views/cert/DnsView.vue:243
+#: src/views/cert/CreateDnsModal.vue:106 src/views/cert/DnsView.vue:243
msgid "Enter Huawei Cloud SecretAccessKey"
msgstr "输入华为云 SecretAccessKey"
-#: src/views/cert/CreateDnsModal.vue:113
-#: src/views/cert/DnsView.vue:250
+#: src/views/cert/CreateDnsModal.vue:113 src/views/cert/DnsView.vue:250
msgid "Enter West.cn Username"
msgstr "输入西部数码用户名"
-#: src/views/cert/CreateDnsModal.vue:120
-#: src/views/cert/DnsView.vue:257
+#: src/views/cert/CreateDnsModal.vue:120 src/views/cert/DnsView.vue:257
msgid "Enter West.cn API Password"
msgstr "输入西部数码 API 密码"
-#: src/views/cert/CreateDnsModal.vue:127
-#: src/views/cert/DnsView.vue:264
+#: src/views/cert/CreateDnsModal.vue:127 src/views/cert/DnsView.vue:264
msgid "Enter Cloudflare API Key"
msgstr "输入 Cloudflare API 密钥"
-#: src/views/cert/CreateDnsModal.vue:134
-#: src/views/cert/DnsView.vue:271
+#: src/views/cert/CreateDnsModal.vue:134 src/views/cert/DnsView.vue:271
msgid "Enter G-Core API Key"
msgstr "输入 G-Core API 密钥"
-#: src/views/cert/CreateDnsModal.vue:141
-#: src/views/cert/DnsView.vue:278
+#: src/views/cert/CreateDnsModal.vue:141 src/views/cert/DnsView.vue:278
msgid "Enter Porkbun API Key"
msgstr "输入 Porkbun API 密钥"
-#: src/views/cert/CreateDnsModal.vue:148
-#: src/views/cert/DnsView.vue:285
+#: src/views/cert/CreateDnsModal.vue:148 src/views/cert/DnsView.vue:285
msgid "Enter Porkbun Secret Key"
msgstr "输入 Porkbun 密钥"
-#: src/views/cert/CreateDnsModal.vue:155
-#: src/views/cert/DnsView.vue:292
+#: src/views/cert/CreateDnsModal.vue:155 src/views/cert/DnsView.vue:292
msgid "Enter NameSilo API Token"
msgstr "输入 NameSilo API 令牌"
-#: src/views/cert/CreateDnsModal.vue:162
-#: src/views/cert/DnsView.vue:299
+#: src/views/cert/CreateDnsModal.vue:162 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:169
-#: src/views/cert/DnsView.vue:306
+#: src/views/cert/CreateDnsModal.vue:169 src/views/cert/DnsView.vue:306
msgid "Enter ClouDNS Auth Password"
msgstr "输入 ClouDNS 认证密码"
-#: src/views/cert/DnsView.vue:31
-#: src/views/cert/DnsView.vue:189
+#: src/views/cert/DnsView.vue:31 src/views/cert/DnsView.vue:189
msgid "Note Name"
msgstr "备注名称"
@@ -2204,8 +2091,7 @@ msgstr "修改 DNS"
msgid "Enter note name"
msgstr "输入备注名称"
-#: src/views/cert/IndexView.vue:104
-#: src/views/cert/UploadCertModal.vue:30
+#: src/views/cert/IndexView.vue:104 src/views/cert/UploadCertModal.vue:30
msgid "Upload Certificate"
msgstr "上传证书"
@@ -2221,14 +2107,15 @@ msgstr "手动"
msgid "Self-signed"
msgstr "自签名"
-#: src/views/cert/ObtainModal.vue:33
-#: src/views/cert/ObtainModal.vue:89
+#: src/views/cert/ObtainModal.vue:33 src/views/cert/ObtainModal.vue:89
#: src/views/cert/ObtainModal.vue:107
msgid "Issuance successful"
msgstr "签发成功"
#: src/views/cert/ObtainModal.vue:42
-msgid "Please set up DNS resolution for the domain first, then continue with the issuance"
+msgid ""
+"Please set up DNS resolution for the domain first, then continue with the "
+"issuance"
msgstr "请先为域名设置 DNS 解析,然后继续签发"
#: src/views/cert/ObtainModal.vue:48
@@ -2251,22 +2138,17 @@ msgstr "签发证书"
msgid "Issuance Mode"
msgstr "签发模式"
-#: src/views/container/ComposeView.vue:65
-#: src/views/container/ImageView.vue:60
+#: src/views/container/ComposeView.vue:65 src/views/container/ImageView.vue:60
#: src/views/container/NetworkView.vue:100
-#: src/views/container/VolumeView.vue:54
-#: src/views/setting/SettingUser.vue:76
-#: src/views/setting/TokenModal.vue:34
-#: src/views/task/CronView.vue:79
-#: src/views/task/TaskView.vue:37
+#: src/views/container/VolumeView.vue:54 src/views/setting/SettingUser.vue:76
+#: src/views/setting/TokenModal.vue:34 src/views/task/CronView.vue:79
+#: src/views/task/TaskView.vue:37 src/views/toolbox/WebHookView.vue:120
msgid "Creation Time"
msgstr "创建时间"
-#: src/views/container/ComposeView.vue:96
-#: src/views/file/ListTable.vue:70
-#: src/views/file/ListTable.vue:222
-#: src/views/ssh/IndexView.vue:70
-#: src/views/task/CronView.vue:128
+#: src/views/container/ComposeView.vue:96 src/views/file/ListTable.vue:70
+#: src/views/file/ListTable.vue:222 src/views/ssh/IndexView.vue:70
+#: src/views/task/CronView.vue:128 src/views/toolbox/WebHookView.vue:157
#: src/views/website/ListView.vue:138
msgid "Edit"
msgstr "编辑"
@@ -2318,8 +2200,7 @@ msgid "Compose Name"
msgstr "编排名称"
#: src/views/container/ComposeView.vue:331
-#: src/views/container/ComposeView.vue:361
-#: src/views/container/IndexView.vue:23
+#: src/views/container/ComposeView.vue:361 src/views/container/IndexView.vue:23
msgid "Compose"
msgstr "编排"
@@ -2412,14 +2293,13 @@ msgstr "可选"
msgid "Add"
msgstr "添加"
-#: src/views/container/ContainerCreate.vue:245
-#: src/views/home/IndexView.vue:142
-#: src/views/home/IndexView.vue:803
-#: src/views/monitor/IndexView.vue:286
+#: src/views/container/ContainerCreate.vue:245 src/views/home/IndexView.vue:144
+#: src/views/home/IndexView.vue:805 src/views/monitor/IndexView.vue:286
msgid "Network"
msgstr "网络"
#: src/views/container/ContainerCreate.vue:248
+#: src/views/toolbox/DiskView.vue:752
msgid "Mount"
msgstr "挂载"
@@ -2431,12 +2311,9 @@ msgstr "主机目录"
msgid "Container Directory"
msgstr "容器目录"
-#: src/views/container/ContainerCreate.vue:255
-#: src/views/file/ListTable.vue:75
-#: src/views/file/ListTable.vue:147
-#: src/views/file/ListTable.vue:302
-#: src/views/file/PermissionModal.vue:113
-#: src/views/file/ToolBar.vue:235
+#: src/views/container/ContainerCreate.vue:255 src/views/file/ListTable.vue:75
+#: src/views/file/ListTable.vue:147 src/views/file/ListTable.vue:302
+#: src/views/file/PermissionModal.vue:113 src/views/file/ToolBar.vue:235
msgid "Permission"
msgstr "权限"
@@ -2458,14 +2335,10 @@ msgstr "命令"
msgid "Entrypoint"
msgstr "入口点"
-#: src/views/container/ContainerCreate.vue:307
-#: src/views/home/IndexView.vue:538
-#: src/views/monitor/IndexView.vue:205
-#: src/views/monitor/IndexView.vue:216
-#: src/views/monitor/IndexView.vue:238
-#: src/views/task/SystemView.vue:78
-#: src/views/toolbox/BenchmarkView.vue:177
-#: src/views/toolbox/ProcessView.vue:78
+#: src/views/container/ContainerCreate.vue:307 src/views/home/IndexView.vue:540
+#: src/views/monitor/IndexView.vue:205 src/views/monitor/IndexView.vue:216
+#: src/views/monitor/IndexView.vue:238 src/views/toolbox/BenchmarkView.vue:177
+#: src/views/toolbox/ProcessView.vue:153
msgid "Memory"
msgstr "内存"
@@ -2521,8 +2394,7 @@ msgid "Ports (Host->Container)"
msgstr "端口(主机->容器)"
#: src/views/container/ContainerView.vue:121
-#: src/views/container/ContainerView.vue:456
-#: src/views/file/ListTable.vue:86
+#: src/views/container/ContainerView.vue:456 src/views/file/ListTable.vue:86
#: src/views/file/ListTable.vue:266
msgid "Rename"
msgstr "重命名"
@@ -2542,8 +2414,7 @@ msgstr "暂停"
msgid "Resume"
msgstr "恢复"
-#: src/views/container/ContainerView.vue:199
-#: src/views/file/ListTable.vue:366
+#: src/views/container/ContainerView.vue:199 src/views/file/ListTable.vue:366
msgid "More"
msgstr "更多"
@@ -2610,8 +2481,7 @@ msgstr "请选择要恢复的容器"
msgid "Cleanup Containers"
msgstr "清理容器"
-#: src/views/container/ContainerView.vue:463
-#: src/views/file/ListTable.vue:742
+#: src/views/container/ContainerView.vue:463 src/views/file/ListTable.vue:742
msgid "New Name"
msgstr "新名称"
@@ -2623,12 +2493,9 @@ msgstr "输入新名称"
msgid "Container Count"
msgstr "容器数量"
-#: src/views/container/ImageView.vue:84
-#: src/views/container/NetworkView.vue:124
-#: src/views/container/VolumeView.vue:78
-#: src/views/firewall/ForwardView.vue:92
-#: src/views/firewall/IpRuleView.vue:134
-#: src/views/firewall/RuleView.vue:171
+#: src/views/container/ImageView.vue:84 src/views/container/NetworkView.vue:124
+#: src/views/container/VolumeView.vue:78 src/views/firewall/ForwardView.vue:92
+#: src/views/firewall/IpRuleView.vue:134 src/views/firewall/RuleView.vue:171
#: src/views/task/TaskView.vue:86
msgid "Are you sure you want to delete?"
msgstr "您确定要删除吗?"
@@ -2637,8 +2504,7 @@ msgstr "您确定要删除吗?"
msgid "Pull successful"
msgstr "拉取成功"
-#: src/views/container/ImageView.vue:150
-#: src/views/container/ImageView.vue:180
+#: src/views/container/ImageView.vue:150 src/views/container/ImageView.vue:180
msgid "Pull Image"
msgstr "拉取镜像"
@@ -2683,13 +2549,11 @@ msgstr "卷"
#: src/views/container/NetworkView.vue:52
#: src/views/container/NetworkView.vue:232
-#: src/views/container/VolumeView.vue:33
-#: src/views/container/VolumeView.vue:186
+#: src/views/container/VolumeView.vue:33 src/views/container/VolumeView.vue:186
msgid "Driver"
msgstr "驱动"
-#: src/views/container/NetworkView.vue:59
-#: src/views/container/VolumeView.vue:40
+#: src/views/container/NetworkView.vue:59 src/views/container/VolumeView.vue:40
msgid "Scope"
msgstr "范围"
@@ -2745,7 +2609,7 @@ msgid "2408:400e::/64"
msgstr "2408:400e::/64"
#: src/views/container/NetworkView.vue:303
-#: src/views/container/VolumeView.vue:203
+#: src/views/container/VolumeView.vue:203 src/views/toolbox/DiskView.vue:829
msgid "Options"
msgstr "选项"
@@ -2759,8 +2623,8 @@ msgstr "选项名称"
msgid "Option Value"
msgstr "选项值"
-#: src/views/container/VolumeView.vue:47
-#: src/views/home/IndexView.vue:653
+#: src/views/container/VolumeView.vue:47 src/views/home/IndexView.vue:655
+#: src/views/toolbox/DiskView.vue:324 src/views/toolbox/DiskView.vue:827
msgid "Mount Point"
msgstr "挂载点"
@@ -2799,8 +2663,7 @@ msgstr "创建数据库"
#: src/views/database/CreateDatabaseModal.vue:63
#: src/views/database/CreateUserModal.vue:69
-#: src/views/database/DatabaseList.vue:41
-#: src/views/database/IndexView.vue:29
+#: src/views/database/DatabaseList.vue:41 src/views/database/IndexView.vue:29
#: src/views/database/UserList.vue:90
msgid "Server"
msgstr "服务器"
@@ -2854,12 +2717,9 @@ msgstr "输入数据库服务器主机"
#: src/views/database/CreateServerModal.vue:84
#: src/views/database/UpdateServerModal.vue:76
-#: src/views/firewall/ForwardView.vue:31
-#: src/views/firewall/RuleView.vue:48
-#: src/views/setting/SettingBase.vue:49
-#: src/views/ssh/CreateModal.vue:68
-#: src/views/ssh/UpdateModal.vue:74
-#: src/views/website/CreateModal.vue:129
+#: src/views/firewall/ForwardView.vue:31 src/views/firewall/RuleView.vue:48
+#: src/views/setting/SettingBase.vue:42 src/views/ssh/CreateModal.vue:70
+#: src/views/ssh/UpdateModal.vue:76 src/views/website/CreateModal.vue:129
msgid "Port"
msgstr "端口"
@@ -2885,7 +2745,8 @@ msgstr "输入数据库服务器备注"
#: src/views/database/CreateUserModal.vue:65
#: src/views/database/UpdateUserModal.vue:51
-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:94
@@ -2893,8 +2754,7 @@ msgid "Host (MySQL only)"
msgstr "主机(仅限MySQL)"
#: src/views/database/CreateUserModal.vue:110
-#: src/views/database/UpdateUserModal.vue:64
-#: src/views/database/UserList.vue:98
+#: src/views/database/UpdateUserModal.vue:64 src/views/database/UserList.vue:98
msgid "Privileges"
msgstr "权限"
@@ -2911,41 +2771,35 @@ msgstr "编码"
msgid "Are you sure you want to delete this database?"
msgstr "您确定要删除这个数据库吗?"
-#: src/views/database/ServerList.vue:75
-#: src/views/database/UserList.vue:69
-#: src/views/file/ListTable.vue:519
-#: src/views/file/ListTable.vue:539
-#: src/views/file/ToolBar.vue:145
-#: src/views/file/ToolBar.vue:165
+#: src/views/database/ServerList.vue:75 src/views/database/UserList.vue:69
+#: src/views/file/ListTable.vue:519 src/views/file/ListTable.vue:539
+#: src/views/file/ToolBar.vue:145 src/views/file/ToolBar.vue:165
#: src/views/setting/TokenModal.vue:163
msgid "Copied successfully"
msgstr "复制成功"
-#: src/views/database/ServerList.vue:79
-#: src/views/database/UserList.vue:73
-#: src/views/file/ListTable.vue:73
-#: src/views/file/ListTable.vue:300
+#: src/views/database/ServerList.vue:79 src/views/database/UserList.vue:73
+#: src/views/file/ListTable.vue:73 src/views/file/ListTable.vue:300
#: src/views/file/ToolBar.vue:232
msgid "Copy"
msgstr "复制"
-#: src/views/database/ServerList.vue:120
-#: src/views/database/UserList.vue:137
+#: src/views/database/ServerList.vue:120 src/views/database/UserList.vue:137
msgid "Valid"
msgstr "有效"
-#: src/views/database/ServerList.vue:120
-#: src/views/database/UserList.vue:137
+#: src/views/database/ServerList.vue:120 src/views/database/UserList.vue:137
msgid "Invalid"
msgstr "无效"
-#: src/views/database/ServerList.vue:146
-#: src/views/toolbox/SystemView.vue:85
+#: src/views/database/ServerList.vue:146 src/views/toolbox/SystemView.vue:78
msgid "Synchronized successfully"
msgstr "同步成功"
#: src/views/database/ServerList.vue:152
-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:164
@@ -2953,7 +2807,9 @@ msgid "Sync"
msgstr "同步"
#: src/views/database/ServerList.vue:192
-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:203
@@ -2976,6 +2832,51 @@ msgstr "未保存"
msgid "Are you sure you want to delete the user?"
msgstr "您确定要删除该用户吗?"
+#: src/views/environment/PHPView.vue:36
+#, fuzzy
+msgid "Module Name"
+msgstr "卷名称"
+
+#: src/views/environment/PHPView.vue:64
+msgid "Are you sure you want to install %{ name }?"
+msgstr "您确定要安装 %{ name } 吗?"
+
+#: src/views/environment/PHPView.vue:89
+msgid "Are you sure you want to uninstall %{ name }?"
+msgstr "您确定要卸载 %{ name } 吗?"
+
+#: src/views/environment/PHPView.vue:131
+msgid "Set successfully"
+msgstr "设置成功"
+
+#: src/views/environment/PHPView.vue:161 src/views/environment/PHPView.vue:167
+msgid "Task submitted, please check progress in background tasks"
+msgstr "任务已提交,请在后台任务中查看进度"
+
+#: src/views/environment/PHPView.vue:180
+msgid "Set as CLI Default Version"
+msgstr "设置为 CLI 默认版本"
+
+#: src/views/environment/PHPView.vue:201
+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:215
+msgid "FPM Configuration"
+msgstr "FPM 配置"
+
+#: src/views/environment/PHPView.vue:219
+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/error-page/NotFound.vue:11
msgid "Sorry, the page you visited does not exist."
msgstr "抱歉,您访问的页面不存在。"
@@ -2992,12 +2893,9 @@ msgstr "压缩中……"
msgid "Compressed successfully"
msgstr "压缩成功"
-#: src/views/file/CompressModal.vue:73
-#: src/views/file/CompressModal.vue:105
-#: src/views/file/ListTable.vue:77
-#: src/views/file/ListTable.vue:247
-#: src/views/file/ListTable.vue:303
-#: src/views/file/ToolBar.vue:234
+#: src/views/file/CompressModal.vue:73 src/views/file/CompressModal.vue:105
+#: src/views/file/ListTable.vue:77 src/views/file/ListTable.vue:247
+#: src/views/file/ListTable.vue:303 src/views/file/ToolBar.vue:234
msgid "Compress"
msgstr "压缩"
@@ -3017,39 +2915,34 @@ msgstr "格式"
msgid "Edit - %{ file }"
msgstr "编辑 - %{ file }"
-#: src/views/file/EditModal.vue:31
+#: src/views/file/EditModal.vue:31 src/views/toolbox/ProcessView.vue:327
msgid "Refresh"
msgstr "刷新"
-#: src/views/file/ListTable.vue:67
-#: src/views/file/ListTable.vue:224
+#: src/views/file/ListTable.vue:67 src/views/file/ListTable.vue:224
msgid "Open"
msgstr "打开"
-#: src/views/file/ListTable.vue:69
-#: src/views/file/ListTable.vue:222
+#: src/views/file/ListTable.vue:69 src/views/file/ListTable.vue:222
msgid "Preview"
msgstr "预览"
-#: src/views/file/ListTable.vue:74
-#: src/views/file/ListTable.vue:301
+#: src/views/file/ListTable.vue:74 src/views/file/ListTable.vue:301
#: src/views/file/ToolBar.vue:233
msgid "Move"
msgstr "移动"
-#: src/views/file/ListTable.vue:77
-#: src/views/file/ListTable.vue:249
+#: src/views/file/ListTable.vue:77 src/views/file/ListTable.vue:249
+#: src/views/toolbox/SshView.vue:336
msgid "Download"
msgstr "下载"
-#: src/views/file/ListTable.vue:81
-#: src/views/file/ListTable.vue:305
+#: src/views/file/ListTable.vue:81 src/views/file/ListTable.vue:305
#: src/views/file/ListTable.vue:764
msgid "Uncompress"
msgstr "解压"
-#: src/views/file/ListTable.vue:91
-#: src/views/file/ToolBar.vue:229
+#: src/views/file/ListTable.vue:91 src/views/file/ToolBar.vue:229
msgid "Paste"
msgstr "粘贴"
@@ -3057,17 +2950,13 @@ msgstr "粘贴"
msgid "Are you sure you want to delete %{ name }?"
msgstr "您确定要删除 %{ name } 吗?"
-#: src/views/file/ListTable.vue:322
-#: src/views/file/ListTable.vue:337
-#: src/views/file/ListTable.vue:578
-#: src/views/file/ListTable.vue:591
-#: src/views/file/ToolBar.vue:77
-#: src/views/file/ToolBar.vue:94
+#: src/views/file/ListTable.vue:322 src/views/file/ListTable.vue:337
+#: src/views/file/ListTable.vue:578 src/views/file/ListTable.vue:591
+#: src/views/file/ToolBar.vue:77 src/views/file/ToolBar.vue:94
msgid "Marked successfully, please navigate to the destination path to paste"
msgstr "标记成功,请导航到目标路径进行粘贴"
-#: src/views/file/ListTable.vue:415
-#: src/views/file/ListTable.vue:502
+#: src/views/file/ListTable.vue:415 src/views/file/ListTable.vue:502
#: src/views/file/ToolBar.vue:128
msgid "Warning"
msgstr "警告"
@@ -3076,14 +2965,12 @@ msgstr "警告"
msgid "There are items with the same name. Do you want to overwrite?"
msgstr "存在同名项目。您要覆盖吗?"
-#: src/views/file/ListTable.vue:417
-#: src/views/file/ListTable.vue:512
+#: src/views/file/ListTable.vue:417 src/views/file/ListTable.vue:512
#: src/views/file/ToolBar.vue:138
msgid "Overwrite"
msgstr "覆盖"
-#: src/views/file/ListTable.vue:424
-#: src/views/file/ListTable.vue:440
+#: src/views/file/ListTable.vue:424 src/views/file/ListTable.vue:440
msgid "Renamed %{ source } to %{ target } successfully"
msgstr "成功将 %{ source } 重命名为 %{ target }"
@@ -3095,25 +2982,20 @@ msgstr "解压中……"
msgid "Uncompressed successfully"
msgstr "解压成功"
-#: src/views/file/ListTable.vue:478
-#: src/views/file/ToolBar.vue:104
+#: src/views/file/ListTable.vue:478 src/views/file/ToolBar.vue:104
msgid "Please mark the files/folders to copy or move first"
msgstr "请先标记要复制或移动的文件/文件夹"
-#: src/views/file/ListTable.vue:503
-#: src/views/file/ToolBar.vue:129
+#: src/views/file/ListTable.vue:503 src/views/file/ToolBar.vue:129
msgid "There are items with the same name %{ items } Do you want to overwrite?"
msgstr "存在同名项目 %{ items } 是否要覆盖?"
-#: src/views/file/ListTable.vue:525
-#: src/views/file/ListTable.vue:545
-#: src/views/file/ToolBar.vue:151
-#: src/views/file/ToolBar.vue:171
+#: src/views/file/ListTable.vue:525 src/views/file/ListTable.vue:545
+#: src/views/file/ToolBar.vue:151 src/views/file/ToolBar.vue:171
msgid "Moved successfully"
msgstr "移动成功"
-#: src/views/file/ListTable.vue:531
-#: src/views/file/ToolBar.vue:157
+#: src/views/file/ListTable.vue:531 src/views/file/ToolBar.vue:157
msgid "Canceled"
msgstr "已取消"
@@ -3145,40 +3027,27 @@ msgstr "批量修改权限"
msgid "Modify permissions - %{ path }"
msgstr "修改权限 - %{ path }"
-#: src/views/file/PermissionModal.vue:86
-#: src/views/file/PermissionModal.vue:116
+#: src/views/file/PermissionModal.vue:86 src/views/file/PermissionModal.vue:116
msgid "Owner"
msgstr "所有者"
-#: src/views/file/PermissionModal.vue:88
-#: src/views/file/PermissionModal.vue:97
-#: src/views/file/PermissionModal.vue:106
-#: src/views/home/IndexView.vue:166
-#: src/views/home/IndexView.vue:182
-#: src/views/home/IndexView.vue:848
+#: src/views/file/PermissionModal.vue:88 src/views/file/PermissionModal.vue:97
+#: src/views/file/PermissionModal.vue:106 src/views/home/IndexView.vue:168
+#: src/views/home/IndexView.vue:184 src/views/home/IndexView.vue:850
msgid "Read"
msgstr "读取"
-#: src/views/file/PermissionModal.vue:89
-#: src/views/file/PermissionModal.vue:98
-#: src/views/file/PermissionModal.vue:107
-#: src/views/home/IndexView.vue:166
-#: src/views/home/IndexView.vue:206
-#: src/views/home/IndexView.vue:849
+#: src/views/file/PermissionModal.vue:89 src/views/file/PermissionModal.vue:98
+#: src/views/file/PermissionModal.vue:107 src/views/home/IndexView.vue:168
+#: src/views/home/IndexView.vue:208 src/views/home/IndexView.vue:851
msgid "Write"
msgstr "写入"
-#: src/views/file/PermissionModal.vue:90
-#: src/views/file/PermissionModal.vue:99
+#: src/views/file/PermissionModal.vue:90 src/views/file/PermissionModal.vue:99
#: src/views/file/PermissionModal.vue:108
msgid "Execute"
msgstr "执行"
-#: src/views/file/PermissionModal.vue:95
-#: src/views/file/PermissionModal.vue:119
-msgid "Group"
-msgstr "组"
-
#: src/views/file/PermissionModal.vue:104
msgid "Others"
msgstr "其他"
@@ -3203,13 +3072,11 @@ msgstr "请选择要移动的文件/文件夹"
msgid "Please select files/folders to delete"
msgstr "请选择要删除的文件/文件夹"
-#: src/views/file/ToolBar.vue:219
-#: src/views/file/ToolBar.vue:249
+#: src/views/file/ToolBar.vue:219 src/views/file/ToolBar.vue:249
msgid "New"
msgstr "新建"
-#: src/views/file/ToolBar.vue:222
-#: src/views/file/ToolBar.vue:267
+#: src/views/file/ToolBar.vue:222 src/views/file/ToolBar.vue:267
msgid "Remote Download"
msgstr "远程下载"
@@ -3230,7 +3097,8 @@ msgid "Upload %{ fileName } successful"
msgstr "上传 %{ fileName } 成功"
#: src/views/file/UploadModal.vue:53
-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/firewall/CreateForwardModal.vue:50
@@ -3240,10 +3108,8 @@ msgstr "创建转发"
#: src/views/firewall/CreateForwardModal.vue:58
#: src/views/firewall/CreateIpModal.vue:100
-#: src/views/firewall/CreateModal.vue:102
-#: src/views/firewall/ForwardView.vue:14
-#: src/views/firewall/IpRuleView.vue:14
-#: src/views/firewall/RuleView.vue:14
+#: src/views/firewall/CreateModal.vue:102 src/views/firewall/ForwardView.vue:14
+#: src/views/firewall/IpRuleView.vue:14 src/views/firewall/RuleView.vue:14
msgid "Transport Protocol"
msgstr "传输协议"
@@ -3262,36 +3128,31 @@ msgid "Target Port"
msgstr "目标端口"
#: src/views/firewall/CreateIpModal.vue:38
-#: src/views/firewall/CreateModal.vue:38
-#: src/views/firewall/IpRuleView.vue:68
+#: src/views/firewall/CreateModal.vue:38 src/views/firewall/IpRuleView.vue:68
#: src/views/firewall/RuleView.vue:102
msgid "Accept"
msgstr "接受"
#: src/views/firewall/CreateIpModal.vue:42
-#: src/views/firewall/CreateModal.vue:42
-#: src/views/firewall/IpRuleView.vue:70
+#: src/views/firewall/CreateModal.vue:42 src/views/firewall/IpRuleView.vue:70
#: src/views/firewall/RuleView.vue:104
msgid "Drop"
msgstr "丢弃"
#: src/views/firewall/CreateIpModal.vue:46
-#: src/views/firewall/CreateModal.vue:46
-#: src/views/firewall/IpRuleView.vue:72
+#: src/views/firewall/CreateModal.vue:46 src/views/firewall/IpRuleView.vue:72
#: src/views/firewall/RuleView.vue:106
msgid "Reject"
msgstr "拒绝"
#: src/views/firewall/CreateIpModal.vue:53
-#: src/views/firewall/CreateModal.vue:53
-#: src/views/firewall/IpRuleView.vue:97
+#: src/views/firewall/CreateModal.vue:53 src/views/firewall/IpRuleView.vue:97
#: src/views/firewall/RuleView.vue:131
msgid "Inbound"
msgstr "入站"
#: src/views/firewall/CreateIpModal.vue:57
-#: src/views/firewall/CreateModal.vue:57
-#: src/views/firewall/IpRuleView.vue:99
+#: src/views/firewall/CreateModal.vue:57 src/views/firewall/IpRuleView.vue:99
#: src/views/firewall/RuleView.vue:133
msgid "Outbound"
msgstr "出站"
@@ -3302,15 +3163,13 @@ msgid "%{ address } created successfully"
msgstr "%{ address } 创建成功"
#: src/views/firewall/CreateIpModal.vue:92
-#: src/views/firewall/CreateModal.vue:94
-#: src/views/firewall/IpRuleView.vue:205
+#: src/views/firewall/CreateModal.vue:94 src/views/firewall/IpRuleView.vue:205
#: src/views/firewall/RuleView.vue:242
msgid "Create Rule"
msgstr "创建规则"
#: src/views/firewall/CreateIpModal.vue:103
-#: src/views/firewall/CreateModal.vue:105
-#: src/views/firewall/IpRuleView.vue:31
+#: src/views/firewall/CreateModal.vue:105 src/views/firewall/IpRuleView.vue:31
#: src/views/firewall/RuleView.vue:31
msgid "Network Protocol"
msgstr "网络协议"
@@ -3325,15 +3184,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:113
-#: src/views/firewall/CreateModal.vue:137
-#: src/views/firewall/IpRuleView.vue:48
+#: src/views/firewall/CreateModal.vue:137 src/views/firewall/IpRuleView.vue:48
#: src/views/firewall/RuleView.vue:82
msgid "Strategy"
msgstr "策略"
#: src/views/firewall/CreateIpModal.vue:116
-#: src/views/firewall/CreateModal.vue:140
-#: src/views/firewall/IpRuleView.vue:84
+#: src/views/firewall/CreateModal.vue:140 src/views/firewall/IpRuleView.vue:84
#: src/views/firewall/RuleView.vue:118
msgid "Direction"
msgstr "方向"
@@ -3346,27 +3203,22 @@ msgstr "起始端口"
msgid "End Port"
msgstr "结束端口"
-#: src/views/firewall/CreateModal.vue:130
-#: src/views/firewall/IpRuleView.vue:109
+#: src/views/firewall/CreateModal.vue:130 src/views/firewall/IpRuleView.vue:109
#: src/views/firewall/RuleView.vue:143
msgid "Target"
msgstr "目标"
-#: src/views/firewall/ForwardView.vue:135
-#: src/views/firewall/IpRuleView.vue:177
+#: src/views/firewall/ForwardView.vue:135 src/views/firewall/IpRuleView.vue:177
#: src/views/firewall/RuleView.vue:214
msgid "Please select rules to delete"
msgstr "请选择要删除的规则"
-#: src/views/firewall/ForwardView.vue:168
-#: src/views/firewall/IpRuleView.vue:210
-#: src/views/firewall/RuleView.vue:247
-#: src/views/website/ListView.vue:290
+#: src/views/firewall/ForwardView.vue:168 src/views/firewall/IpRuleView.vue:210
+#: src/views/firewall/RuleView.vue:247 src/views/website/ListView.vue:290
msgid "Batch Delete"
msgstr "批量删除"
-#: src/views/firewall/ForwardView.vue:171
-#: src/views/firewall/IpRuleView.vue:213
+#: src/views/firewall/ForwardView.vue:171 src/views/firewall/IpRuleView.vue:213
#: src/views/firewall/RuleView.vue:250
msgid "Are you sure you want to batch delete?"
msgstr "您确定要批量删除吗?"
@@ -3383,13 +3235,11 @@ msgstr "IP 规则"
msgid "Port Forwarding"
msgstr "端口转发"
-#: src/views/firewall/IndexView.vue:23
-#: src/views/website/IndexView.vue:24
+#: src/views/firewall/IndexView.vue:23 src/views/website/IndexView.vue:24
msgid "Settings"
msgstr "设置"
-#: src/views/firewall/IpRuleView.vue:74
-#: src/views/firewall/RuleView.vue:108
+#: src/views/firewall/IpRuleView.vue:74 src/views/firewall/RuleView.vue:108
msgid "Mark"
msgstr "标记"
@@ -3401,8 +3251,7 @@ msgstr "使用中"
msgid "Not Used"
msgstr "未使用"
-#: src/views/firewall/SettingView.vue:27
-#: src/views/firewall/SettingView.vue:33
+#: src/views/firewall/SettingView.vue:27 src/views/firewall/SettingView.vue:33
#: src/views/firewall/SettingView.vue:39
msgid "Settings saved successfully"
msgstr "设置保存成功"
@@ -3419,298 +3268,273 @@ msgstr "SSH 开关"
msgid "Allow Ping"
msgstr "允许 Ping"
-#: src/views/firewall/SettingView.vue:55
+#: src/views/firewall/SettingView.vue:55 src/views/toolbox/SshView.vue:266
msgid "SSH Port"
msgstr "SSH 端口"
-#: src/views/home/IndexView.vue:130
+#: src/views/home/IndexView.vue:132
msgid "Running blocked"
msgstr "运行阻塞"
-#: src/views/home/IndexView.vue:132
+#: src/views/home/IndexView.vue:134
msgid "Running slowly"
msgstr "运行缓慢"
-#: src/views/home/IndexView.vue:134
+#: src/views/home/IndexView.vue:136
msgid "Running normally"
msgstr "运行正常"
-#: src/views/home/IndexView.vue:136
+#: src/views/home/IndexView.vue:138
msgid "Running smoothly"
msgstr "运行流畅"
-#: src/views/home/IndexView.vue:142
-#: src/views/home/IndexView.vue:804
-#: src/views/home/IndexView.vue:824
-#: src/views/toolbox/BenchmarkView.vue:203
+#: src/views/home/IndexView.vue:144 src/views/home/IndexView.vue:806
+#: src/views/home/IndexView.vue:826 src/views/toolbox/BenchmarkView.vue:203
+#: src/views/toolbox/DiskView.vue:803 src/views/toolbox/IndexView.vue:25
msgid "Disk"
msgstr "磁盘"
-#: src/views/home/IndexView.vue:165
-#: src/views/home/IndexView.vue:182
+#: src/views/home/IndexView.vue:167 src/views/home/IndexView.vue:184
msgid "Send"
msgstr "发送"
-#: src/views/home/IndexView.vue:165
-#: src/views/home/IndexView.vue:206
+#: src/views/home/IndexView.vue:167 src/views/home/IndexView.vue:208
msgid "Receive"
msgstr "接收"
-#: src/views/home/IndexView.vue:174
+#: src/views/home/IndexView.vue:176
msgid "Unit %{unit}"
msgstr "单位 %{unit}"
-#: src/views/home/IndexView.vue:188
-#: src/views/home/IndexView.vue:212
-#: src/views/monitor/IndexView.vue:93
-#: src/views/monitor/IndexView.vue:115
-#: src/views/monitor/IndexView.vue:137
-#: src/views/monitor/IndexView.vue:192
-#: src/views/monitor/IndexView.vue:251
-#: src/views/monitor/IndexView.vue:273
-#: src/views/monitor/IndexView.vue:335
-#: src/views/monitor/IndexView.vue:357
-#: src/views/monitor/IndexView.vue:379
-#: src/views/monitor/IndexView.vue:401
+#: src/views/home/IndexView.vue:190 src/views/home/IndexView.vue:214
+#: src/views/monitor/IndexView.vue:93 src/views/monitor/IndexView.vue:115
+#: src/views/monitor/IndexView.vue:137 src/views/monitor/IndexView.vue:192
+#: src/views/monitor/IndexView.vue:251 src/views/monitor/IndexView.vue:273
+#: src/views/monitor/IndexView.vue:335 src/views/monitor/IndexView.vue:357
+#: src/views/monitor/IndexView.vue:379 src/views/monitor/IndexView.vue:401
msgid "Maximum"
msgstr "最大值"
-#: src/views/home/IndexView.vue:189
-#: src/views/home/IndexView.vue:213
-#: src/views/monitor/IndexView.vue:94
-#: src/views/monitor/IndexView.vue:116
-#: src/views/monitor/IndexView.vue:138
-#: src/views/monitor/IndexView.vue:193
-#: src/views/monitor/IndexView.vue:252
-#: src/views/monitor/IndexView.vue:274
-#: src/views/monitor/IndexView.vue:336
-#: src/views/monitor/IndexView.vue:358
-#: src/views/monitor/IndexView.vue:380
-#: src/views/monitor/IndexView.vue:402
+#: src/views/home/IndexView.vue:191 src/views/home/IndexView.vue:215
+#: src/views/monitor/IndexView.vue:94 src/views/monitor/IndexView.vue:116
+#: src/views/monitor/IndexView.vue:138 src/views/monitor/IndexView.vue:193
+#: src/views/monitor/IndexView.vue:252 src/views/monitor/IndexView.vue:274
+#: src/views/monitor/IndexView.vue:336 src/views/monitor/IndexView.vue:358
+#: src/views/monitor/IndexView.vue:380 src/views/monitor/IndexView.vue:402
msgid "Minimum"
msgstr "最小值"
-#: src/views/home/IndexView.vue:193
-#: src/views/home/IndexView.vue:217
-#: src/views/monitor/IndexView.vue:98
-#: src/views/monitor/IndexView.vue:120
-#: src/views/monitor/IndexView.vue:142
-#: src/views/monitor/IndexView.vue:197
-#: src/views/monitor/IndexView.vue:256
-#: src/views/monitor/IndexView.vue:278
-#: src/views/monitor/IndexView.vue:340
-#: src/views/monitor/IndexView.vue:362
-#: src/views/monitor/IndexView.vue:384
-#: src/views/monitor/IndexView.vue:406
+#: src/views/home/IndexView.vue:195 src/views/home/IndexView.vue:219
+#: src/views/monitor/IndexView.vue:98 src/views/monitor/IndexView.vue:120
+#: src/views/monitor/IndexView.vue:142 src/views/monitor/IndexView.vue:197
+#: src/views/monitor/IndexView.vue:256 src/views/monitor/IndexView.vue:278
+#: src/views/monitor/IndexView.vue:340 src/views/monitor/IndexView.vue:362
+#: src/views/monitor/IndexView.vue:384 src/views/monitor/IndexView.vue:406
msgid "Average"
msgstr "平均值"
-#: src/views/home/IndexView.vue:325
+#: src/views/home/IndexView.vue:327
msgid "Panel restarting..."
msgstr "面板重启中……"
-#: src/views/home/IndexView.vue:327
+#: src/views/home/IndexView.vue:329
msgid "Panel restarted successfully"
msgstr "面板重启成功"
-#: src/views/home/IndexView.vue:339
+#: src/views/home/IndexView.vue:341
msgid "Current version is the latest"
msgstr "当前版本是最新版本"
-#: src/views/home/IndexView.vue:435
-#: src/views/task/IndexView.vue:22
+#: src/views/home/IndexView.vue:437 src/views/task/IndexView.vue:22
msgid "Scheduled Tasks"
msgstr "计划任务"
-#: src/views/home/IndexView.vue:444
+#: src/views/home/IndexView.vue:446
msgid "Sponsor Support"
msgstr "赞助支持"
-#: src/views/home/IndexView.vue:450
+#: src/views/home/IndexView.vue:452
msgid "Are you sure you want to restart the panel?"
msgstr "您确定要重启面板吗?"
-#: src/views/home/IndexView.vue:458
+#: src/views/home/IndexView.vue:460
msgid "Resource Overview"
msgstr "资源概览"
-#: src/views/home/IndexView.vue:476
+#: src/views/home/IndexView.vue:478
msgid "Last 1 minute"
msgstr "最近 1 分钟"
-#: src/views/home/IndexView.vue:483
+#: src/views/home/IndexView.vue:485
msgid "Last 5 minutes"
msgstr "最近 5 分钟"
-#: src/views/home/IndexView.vue:490
+#: src/views/home/IndexView.vue:492
msgid "Last 15 minutes"
msgstr "最近 15 分钟"
-#: src/views/home/IndexView.vue:509
-#: src/views/home/IndexView.vue:521
+#: src/views/home/IndexView.vue:511 src/views/home/IndexView.vue:523
msgid "cores"
msgstr "核心"
-#: src/views/home/IndexView.vue:515
+#: src/views/home/IndexView.vue:517
msgid "Model"
msgstr "型号"
-#: src/views/home/IndexView.vue:519
+#: src/views/home/IndexView.vue:521
msgid "Parameters"
msgstr "参数"
-#: src/views/home/IndexView.vue:522
+#: src/views/home/IndexView.vue:524
msgid "cache"
msgstr "缓存"
-#: src/views/home/IndexView.vue:528
-#: src/views/monitor/IndexView.vue:179
+#: src/views/home/IndexView.vue:530 src/views/monitor/IndexView.vue:179
+#: src/views/toolbox/DiskView.vue:301
msgid "Usage"
msgstr "使用率"
-#: src/views/home/IndexView.vue:529
+#: src/views/home/IndexView.vue:531
msgid "Frequency"
msgstr "频率"
-#: src/views/home/IndexView.vue:551
+#: src/views/home/IndexView.vue:553
msgid "Active"
msgstr "活跃"
-#: src/views/home/IndexView.vue:557
+#: src/views/home/IndexView.vue:559
msgid "Inactive"
msgstr "非活跃"
-#: src/views/home/IndexView.vue:563
+#: src/views/home/IndexView.vue:565 src/views/toolbox/DiskView.vue:254
msgid "Free"
msgstr "空闲"
-#: src/views/home/IndexView.vue:569
+#: src/views/home/IndexView.vue:571
msgid "Shared"
msgstr "共享"
-#: src/views/home/IndexView.vue:575
+#: src/views/home/IndexView.vue:577
msgid "Committed"
msgstr "已提交"
-#: src/views/home/IndexView.vue:581
+#: src/views/home/IndexView.vue:583
msgid "Commit Limit"
msgstr "提交限制"
-#: src/views/home/IndexView.vue:587
-#: src/views/toolbox/SystemView.vue:124
+#: src/views/home/IndexView.vue:589 src/views/toolbox/SystemView.vue:117
msgid "SWAP Size"
msgstr "SWAP 大小"
-#: src/views/home/IndexView.vue:593
+#: src/views/home/IndexView.vue:595
msgid "SWAP Used"
msgstr "已用 SWAP"
-#: src/views/home/IndexView.vue:599
+#: src/views/home/IndexView.vue:601
msgid "SWAP Available"
msgstr "可用 SWAP"
-#: src/views/home/IndexView.vue:605
+#: src/views/home/IndexView.vue:607
msgid "Physical Memory Size"
msgstr "物理内存大小"
-#: src/views/home/IndexView.vue:611
+#: src/views/home/IndexView.vue:613
msgid "Physical Memory Used"
msgstr "已用物理内存"
-#: src/views/home/IndexView.vue:617
+#: src/views/home/IndexView.vue:619
msgid "Physical Memory Available"
msgstr "可用物理内存"
-#: src/views/home/IndexView.vue:657
+#: src/views/home/IndexView.vue:659
msgid "File System"
msgstr "文件系统"
-#: src/views/home/IndexView.vue:661
+#: src/views/home/IndexView.vue:663
msgid "Inodes Usage"
msgstr "Inodes 使用率"
-#: src/views/home/IndexView.vue:665
+#: src/views/home/IndexView.vue:667
msgid "Inodes Total"
msgstr "Inodes 总数"
-#: src/views/home/IndexView.vue:669
+#: src/views/home/IndexView.vue:671
msgid "Inodes Used"
msgstr "已用 Inodes"
-#: src/views/home/IndexView.vue:673
+#: src/views/home/IndexView.vue:675
msgid "Inodes Available"
msgstr "可用 Inodes"
-#: src/views/home/IndexView.vue:691
+#: src/views/home/IndexView.vue:693
msgid "Quick Apps"
msgstr "快捷应用"
-#: src/views/home/IndexView.vue:730
+#: src/views/home/IndexView.vue:732
msgid "You have not set any apps to display here!"
msgstr "您尚未设置任何要在此处显示的应用!"
-#: src/views/home/IndexView.vue:734
+#: src/views/home/IndexView.vue:736
msgid "Environment Information"
msgstr "环境信息"
-#: src/views/home/IndexView.vue:737
-#: src/views/toolbox/SystemView.vue:138
+#: src/views/home/IndexView.vue:739 src/views/toolbox/SystemView.vue:131
msgid "System Hostname"
msgstr "系统主机名"
-#: src/views/home/IndexView.vue:743
+#: src/views/home/IndexView.vue:745
msgid "System Version"
msgstr "系统版本"
-#: src/views/home/IndexView.vue:752
+#: src/views/home/IndexView.vue:754
msgid "System Kernel Version"
msgstr "系统内核版本"
-#: src/views/home/IndexView.vue:758
+#: src/views/home/IndexView.vue:760
msgid "System Uptime"
msgstr "系统运行时间"
-#: src/views/home/IndexView.vue:764
+#: src/views/home/IndexView.vue:766
msgid "Panel Internal Version"
msgstr "面板内部版本"
-#: src/views/home/IndexView.vue:776
+#: src/views/home/IndexView.vue:778
msgid "Panel Compile Information"
msgstr "面板编译信息"
-#: src/views/home/IndexView.vue:793
+#: src/views/home/IndexView.vue:795
msgid "Real-time Monitoring"
msgstr "实时监控"
-#: src/views/home/IndexView.vue:807
+#: src/views/home/IndexView.vue:809
msgid "Unit"
msgstr "单位"
-#: src/views/home/IndexView.vue:815
+#: src/views/home/IndexView.vue:817
msgid "Network Card"
msgstr "网卡"
-#: src/views/home/IndexView.vue:835
+#: src/views/home/IndexView.vue:837
msgid "Total Sent"
msgstr "总发送量"
-#: src/views/home/IndexView.vue:837
+#: src/views/home/IndexView.vue:839
msgid "Total Received"
msgstr "总接收量"
-#: src/views/home/IndexView.vue:840
+#: src/views/home/IndexView.vue:842
msgid "Real-time Sent"
msgstr "实时发送"
-#: src/views/home/IndexView.vue:844
+#: src/views/home/IndexView.vue:846
msgid "Real-time Received"
msgstr "实时接收"
-#: src/views/home/IndexView.vue:851
+#: src/views/home/IndexView.vue:853
msgid "Real-time Read/Write"
msgstr "实时读/写"
-#: src/views/home/IndexView.vue:854
+#: src/views/home/IndexView.vue:856
msgid "Read/Write Latency"
msgstr "读/写延迟"
@@ -3747,7 +3571,8 @@ msgid "Please enter username and password"
msgstr "请输入用户名和密码"
#: src/views/login/IndexView.vue:54
-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:67
@@ -3770,18 +3595,15 @@ msgstr "记住我"
msgid "Load"
msgstr "负载"
-#: src/views/monitor/IndexView.vue:71
-#: src/views/monitor/IndexView.vue:87
+#: src/views/monitor/IndexView.vue:71 src/views/monitor/IndexView.vue:87
msgid "1 minute"
msgstr "1 分钟"
-#: src/views/monitor/IndexView.vue:71
-#: src/views/monitor/IndexView.vue:102
+#: src/views/monitor/IndexView.vue:71 src/views/monitor/IndexView.vue:102
msgid "5 minutes"
msgstr "5 分钟"
-#: src/views/monitor/IndexView.vue:71
-#: src/views/monitor/IndexView.vue:124
+#: src/views/monitor/IndexView.vue:71 src/views/monitor/IndexView.vue:124
msgid "15 minutes"
msgstr "15 分钟"
@@ -3789,33 +3611,27 @@ msgstr "15 分钟"
msgid "Unit %"
msgstr "单位 %"
-#: src/views/monitor/IndexView.vue:221
-#: src/views/monitor/IndexView.vue:307
+#: src/views/monitor/IndexView.vue:221 src/views/monitor/IndexView.vue:307
msgid "Unit MB"
msgstr "单位 MB"
-#: src/views/monitor/IndexView.vue:298
-#: src/views/monitor/IndexView.vue:322
+#: src/views/monitor/IndexView.vue:298 src/views/monitor/IndexView.vue:322
msgid "Total Out"
msgstr "总出流量"
-#: src/views/monitor/IndexView.vue:299
-#: src/views/monitor/IndexView.vue:344
+#: src/views/monitor/IndexView.vue:299 src/views/monitor/IndexView.vue:344
msgid "Total In"
msgstr "总入流量"
-#: src/views/monitor/IndexView.vue:300
-#: src/views/monitor/IndexView.vue:366
+#: src/views/monitor/IndexView.vue:300 src/views/monitor/IndexView.vue:366
msgid "Per Second Out"
msgstr "每秒出流量"
-#: src/views/monitor/IndexView.vue:301
-#: src/views/monitor/IndexView.vue:388
+#: src/views/monitor/IndexView.vue:301 src/views/monitor/IndexView.vue:388
msgid "Per Second In"
msgstr "每秒入流量"
-#: src/views/monitor/IndexView.vue:414
-#: src/views/monitor/IndexView.vue:420
+#: src/views/monitor/IndexView.vue:414 src/views/monitor/IndexView.vue:420
msgid "Operation successful"
msgstr "操作成功"
@@ -3839,8 +3655,7 @@ msgstr "时间选择"
msgid "Clear Monitoring Records"
msgstr "清除监控记录"
-#: src/views/monitor/IndexView.vue:477
-#: src/views/website/EditView.vue:393
+#: src/views/monitor/IndexView.vue:477 src/views/website/EditView.vue:393
msgid "Are you sure you want to clear?"
msgstr "确定要清除吗?"
@@ -3848,8 +3663,7 @@ msgstr "确定要清除吗?"
msgid "General"
msgstr "通用"
-#: src/views/project/IndexView.vue:14
-#: src/views/website/IndexView.vue:22
+#: src/views/project/IndexView.vue:14 src/views/website/IndexView.vue:22
msgid "PHP"
msgstr "PHP"
@@ -3869,8 +3683,7 @@ msgstr "Node.js"
msgid "Enter user name"
msgstr "输入用户名"
-#: src/views/setting/CreateModal.vue:53
-#: src/views/setting/PasswordModal.vue:40
+#: src/views/setting/CreateModal.vue:53 src/views/setting/PasswordModal.vue:40
msgid "Enter user password"
msgstr "输入用户密码"
@@ -3878,22 +3691,21 @@ msgstr "输入用户密码"
msgid "Enter user email"
msgstr "输入用户邮箱"
-#: src/views/setting/IndexView.vue:51
-msgid "Panel is restarting, page will refresh in 3 seconds"
+#: src/views/setting/IndexView.vue:59
+#, fuzzy
+msgid "Panel is restarting, page will refresh in 5 seconds"
msgstr "面板正在重启,页面将在 3 秒后刷新"
-#: src/views/setting/IndexView.vue:68
+#: src/views/setting/IndexView.vue:81
msgid "Basic"
msgstr "基本"
-#: src/views/setting/IndexView.vue:69
+#: src/views/setting/IndexView.vue:82
msgid "Safe"
msgstr "安全"
-#: src/views/setting/PasswordModal.vue:16
-#: src/views/setting/TokenModal.vue:181
-#: src/views/setting/TwoFaModal.vue:24
-#: src/views/ssh/UpdateModal.vue:30
+#: src/views/setting/PasswordModal.vue:16 src/views/setting/TokenModal.vue:181
+#: src/views/setting/TwoFaModal.vue:24 src/views/ssh/UpdateModal.vue:31
msgid "Updated successfully"
msgstr "更新成功"
@@ -3905,127 +3717,173 @@ msgstr "稳定版"
msgid "Beta"
msgstr "测试版"
-#: src/views/setting/SettingBase.vue:34
-msgid "Modifying panel port/entrance requires corresponding changes in the browser address bar to access the panel!"
-msgstr "修改面板端口/入口需要在浏览器地址栏中相应更改以访问面板!"
-
-#: src/views/setting/SettingBase.vue:40
-#: src/views/setting/SettingBase.vue:41
+#: src/views/setting/SettingBase.vue:33 src/views/setting/SettingBase.vue:34
msgid "Panel Name"
msgstr "面板名称"
-#: src/views/setting/SettingBase.vue:43
+#: src/views/setting/SettingBase.vue:36
msgid "Language"
msgstr "语言"
-#: src/views/setting/SettingBase.vue:46
+#: src/views/setting/SettingBase.vue:39
msgid "Update Channel"
msgstr "更新渠道"
-#: src/views/setting/SettingBase.vue:50
+#: src/views/setting/SettingBase.vue:43
msgid "8888"
msgstr "8888"
-#: src/views/setting/SettingBase.vue:52
+#: src/views/setting/SettingBase.vue:45
msgid "Default Website Directory"
msgstr "默认网站目录"
-#: src/views/setting/SettingBase.vue:53
-msgid "/www/wwwroot"
-msgstr "/www/wwwroot"
+#: src/views/setting/SettingBase.vue:46
+msgid "/opt/ace/sites"
+msgstr ""
-#: src/views/setting/SettingBase.vue:55
+#: src/views/setting/SettingBase.vue:48
msgid "Default Backup Directory"
msgstr "默认备份目录"
-#: src/views/setting/SettingBase.vue:56
-msgid "/www/backup"
+#: src/views/setting/SettingBase.vue:49
+#, fuzzy
+msgid "/opt/ace/backup"
msgstr "/www/backup"
-#: src/views/setting/SettingSafe.vue:17
+#: src/views/setting/SettingSafe.vue:34
+#, fuzzy
+msgid "Disabled"
+msgstr "已启用"
+
+#: src/views/setting/SettingSafe.vue:35
+msgid "ACME (Auto)"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:36
+#, fuzzy
+msgid "Custom Certificate"
+msgstr "创建证书"
+
+#: src/views/setting/SettingSafe.vue:48
msgid "Login Timeout"
msgstr "登录超时"
-#: src/views/setting/SettingSafe.vue:22
-msgid "Set the maximum lifetime (in minutes) of the login state, after which you need to log in again"
+#: src/views/setting/SettingSafe.vue:53
+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:30
+#: src/views/setting/SettingSafe.vue:61
msgid "120"
msgstr "120"
-#: src/views/setting/SettingSafe.vue:36
+#: src/views/setting/SettingSafe.vue:67
#: src/views/website/ProxyBuilderModal.vue:188
msgid "minutes"
msgstr "分钟"
-#: src/views/setting/SettingSafe.vue:45
+#: src/views/setting/SettingSafe.vue:76
msgid "Access Entrance"
msgstr "访问入口"
-#: src/views/setting/SettingSafe.vue:50
-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:81
+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:63
+#: src/views/setting/SettingSafe.vue:94
msgid "Request IP Header"
msgstr "请求 IP 头"
-#: src/views/setting/SettingSafe.vue:68
-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:99
+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:74
+#: src/views/setting/SettingSafe.vue:105
msgid "X-Real-IP"
msgstr "X-Real-IP"
-#: src/views/setting/SettingSafe.vue:81
+#: src/views/setting/SettingSafe.vue:112
msgid "Bind Domain"
msgstr "绑定域名"
-#: src/views/setting/SettingSafe.vue:86
-msgid "Restrict panel access to the specified domain names. Leave blank to allow access from any domain"
+#: src/views/setting/SettingSafe.vue:117
+msgid ""
+"Restrict panel access to the specified domain names. Leave blank to allow "
+"access from any domain"
msgstr "限制面板访问为指定的域名。留空以允许来自任何域名的访问"
-#: src/views/setting/SettingSafe.vue:103
+#: src/views/setting/SettingSafe.vue:134
msgid "Bind IP"
msgstr "绑定 IP"
-#: src/views/setting/SettingSafe.vue:108
-msgid "Restrict panel access to the specified IP addresses. Leave blank to allow access from any IP"
+#: src/views/setting/SettingSafe.vue:139
+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:121
+#: src/views/setting/SettingSafe.vue:152
msgid "Bind UA"
msgstr "绑定 UA"
-#: src/views/setting/SettingSafe.vue:126
-msgid "Restrict panel access to the specified User-Agent strings. Leave blank to allow access from any User-Agent"
+#: src/views/setting/SettingSafe.vue:157
+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:143
+#: src/views/setting/SettingSafe.vue:174
msgid "Offline Mode"
msgstr "离线模式"
-#: src/views/setting/SettingSafe.vue:148
-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:179
+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:161
+#: src/views/setting/SettingSafe.vue:192
msgid "Auto Update"
msgstr "自动更新"
-#: src/views/setting/SettingSafe.vue:166
-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:197
+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:179
+#: src/views/setting/SettingSafe.vue:210
msgid "Panel HTTPS"
msgstr "面板 HTTPS"
-#: src/views/setting/SettingSafe.vue:184
-msgid "Enable HTTPS for the panel to ensure secure communication. You need to provide a valid SSL certificate and private key"
-msgstr "为面板启用 HTTPS 以确保安全通信。您需要提供有效的 SSL 证书和私钥"
+#: src/views/setting/SettingSafe.vue:215
+msgid ""
+"Enable HTTPS for the panel. ACME will automatically obtain and renew "
+"certificates (requires panel accessible via public IP). Custom allows you to "
+"provide your own certificate"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:230 src/views/setting/SettingSafe.vue:235
+msgid "Panel Public IP"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:240
+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 ""
#: src/views/setting/SettingUser.vue:53
msgid "2FA"
@@ -4035,8 +3893,7 @@ msgstr "两步验证"
msgid "Disabled successfully"
msgstr "禁用成功"
-#: src/views/setting/SettingUser.vue:102
-#: src/views/setting/TokenModal.vue:202
+#: src/views/setting/SettingUser.vue:102 src/views/setting/TokenModal.vue:202
msgid "Access Tokens"
msgstr "访问令牌"
@@ -4064,23 +3921,19 @@ msgstr "复制并关闭"
msgid "Copy failed"
msgstr "复制失败"
-#: src/views/setting/TokenModal.vue:212
-#: src/views/setting/TokenModal.vue:240
+#: src/views/setting/TokenModal.vue:212 src/views/setting/TokenModal.vue:240
msgid "Create Access Token"
msgstr "创建访问令牌"
-#: src/views/setting/TokenModal.vue:249
-#: src/views/setting/TokenModal.vue:282
+#: src/views/setting/TokenModal.vue:249 src/views/setting/TokenModal.vue:282
msgid "IP White List"
msgstr "IP 白名单"
-#: src/views/setting/TokenModal.vue:252
-#: src/views/setting/TokenModal.vue:285
+#: src/views/setting/TokenModal.vue:252 src/views/setting/TokenModal.vue:285
msgid "127.0.0.1"
msgstr "127.0.0.1"
-#: src/views/setting/TokenModal.vue:260
-#: src/views/setting/TokenModal.vue:293
+#: src/views/setting/TokenModal.vue:260 src/views/setting/TokenModal.vue:293
msgid "Please select the expiration time"
msgstr "请选择到期时间"
@@ -4101,7 +3954,8 @@ msgid "Scan the QR code with your 2FA app and enter the code below"
msgstr "用您的两步验证应用扫描二维码并在下方输入代码"
#: src/views/setting/TwoFaModal.vue:66
-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:79
@@ -4112,18 +3966,23 @@ msgstr "代码"
msgid "Enter the code"
msgstr "输入代码"
-#: src/views/ssh/CreateModal.vue:50
-#: src/views/ssh/IndexView.vue:245
+#: src/views/ssh/CreateModal.vue:52 src/views/ssh/IndexView.vue:245
msgid "Create Host"
msgstr "创建主机"
-#: src/views/ssh/CreateModal.vue:73
-#: src/views/ssh/UpdateModal.vue:79
+#: src/views/ssh/CreateModal.vue:75 src/views/ssh/UpdateModal.vue:81
msgid "Authentication Method"
msgstr "认证方式"
-#: src/views/ssh/CreateModal.vue:92
-#: src/views/ssh/UpdateModal.vue:98
+#: src/views/ssh/CreateModal.vue:94 src/views/ssh/UpdateModal.vue:100
+msgid "Key Passphrase"
+msgstr ""
+
+#: src/views/ssh/CreateModal.vue:99 src/views/ssh/UpdateModal.vue:105
+msgid "Leave empty if key has no passphrase"
+msgstr ""
+
+#: src/views/ssh/CreateModal.vue:102 src/views/ssh/UpdateModal.vue:108
msgid "Remarks"
msgstr "备注"
@@ -4143,7 +4002,7 @@ msgstr "连接已关闭。请刷新。"
msgid "Connection error. Please refresh."
msgstr "连接错误。请刷新。"
-#: src/views/ssh/UpdateModal.vue:56
+#: src/views/ssh/UpdateModal.vue:58
msgid "Update Host"
msgstr "更新主机"
@@ -4155,37 +4014,29 @@ msgstr "# 在此处输入您的脚本内容"
msgid "Create Scheduled Task"
msgstr "创建计划任务"
-#: src/views/task/CreateModal.vue:95
-#: src/views/task/CronView.vue:32
+#: src/views/task/CreateModal.vue:95 src/views/task/CronView.vue:32
msgid "Task Type"
msgstr "任务类型"
-#: src/views/task/CreateModal.vue:99
-#: src/views/task/CronView.vue:45
+#: src/views/task/CreateModal.vue:99 src/views/task/CronView.vue:45
msgid "Run Script"
msgstr "运行脚本"
-#: src/views/task/CreateModal.vue:100
-#: src/views/task/CronView.vue:47
+#: src/views/task/CreateModal.vue:100 src/views/task/CronView.vue:47
msgid "Backup Data"
msgstr "备份数据"
-#: src/views/task/CreateModal.vue:101
-#: src/views/task/CronView.vue:48
+#: src/views/task/CreateModal.vue:101 src/views/task/CronView.vue:48
msgid "Log Rotation"
msgstr "日志切割"
-#: src/views/task/CreateModal.vue:106
-#: src/views/task/CreateModal.vue:107
-#: src/views/task/CronView.vue:25
-#: src/views/task/CronView.vue:250
-#: src/views/task/CronView.vue:251
-#: src/views/task/TaskView.vue:15
+#: src/views/task/CreateModal.vue:106 src/views/task/CreateModal.vue:107
+#: src/views/task/CronView.vue:25 src/views/task/CronView.vue:250
+#: src/views/task/CronView.vue:251 src/views/task/TaskView.vue:15
msgid "Task Name"
msgstr "任务名称"
-#: src/views/task/CreateModal.vue:109
-#: src/views/task/CronView.vue:69
+#: src/views/task/CreateModal.vue:109 src/views/task/CronView.vue:69
#: src/views/task/CronView.vue:253
msgid "Task Schedule"
msgstr "任务周期"
@@ -4210,7 +4061,8 @@ msgstr "PostgreSQL 数据库"
msgid "Retention Count"
msgstr "保留数量"
-#: src/views/task/CronView.vue:55
+#: src/views/task/CronView.vue:55 src/views/toolbox/WebHookView.vue:86
+#: src/views/toolbox/WebHookView.vue:381
msgid "Enabled"
msgstr "已启用"
@@ -4234,66 +4086,15 @@ msgstr "面板任务"
msgid "Create Task"
msgstr "创建任务"
-#: src/views/task/SystemView.vue:25
-#: src/views/toolbox/ProcessView.vue:25
-msgid "Parent PID"
-msgstr "父进程 PID"
-
-#: src/views/task/SystemView.vue:31
-#: src/views/toolbox/ProcessView.vue:31
-msgid "Threads"
-msgstr "线程"
-
-#: src/views/task/SystemView.vue:52
-#: src/views/toolbox/ProcessView.vue:52
-msgid "Sleeping"
-msgstr "睡眠"
-
-#: src/views/task/SystemView.vue:56
-#: src/views/toolbox/ProcessView.vue:56
-msgid "Idle"
-msgstr "空闲"
-
-#: src/views/task/SystemView.vue:58
-#: src/views/toolbox/ProcessView.vue:58
-msgid "Zombie"
-msgstr "僵尸进程"
-
-#: src/views/task/SystemView.vue:60
-#: src/views/task/TaskView.vue:30
-#: src/views/toolbox/ProcessView.vue:60
-msgid "Waiting"
-msgstr "等待中"
-
-#: src/views/task/SystemView.vue:62
-#: src/views/toolbox/ProcessView.vue:62
-msgid "Locked"
-msgstr "已锁定"
-
-#: src/views/task/SystemView.vue:87
-#: src/views/toolbox/ProcessView.vue:87
-msgid "Start Time"
-msgstr "启动时间"
-
-#: src/views/task/SystemView.vue:108
-#: src/views/toolbox/ProcessView.vue:108
-msgid "Process %{ pid } has been terminated"
-msgstr "进程 %{ pid } 已被终止"
-
-#: src/views/task/SystemView.vue:115
-#: src/views/toolbox/ProcessView.vue:115
-msgid "Are you sure you want to terminate process %{ pid }?"
-msgstr "您确定要终止进程 %{ pid } 吗?"
-
-#: src/views/task/SystemView.vue:127
-#: src/views/toolbox/ProcessView.vue:127
-msgid "Terminate"
-msgstr "终止"
-
#: src/views/task/TaskView.vue:28
msgid "Completed"
msgstr "已完成"
+#: src/views/task/TaskView.vue:30 src/views/toolbox/ProcessView.vue:53
+#: src/views/toolbox/ProcessView.vue:90
+msgid "Waiting"
+msgstr "等待中"
+
#: src/views/task/TaskView.vue:32
msgid "Failed"
msgstr "失败"
@@ -4326,8 +4127,11 @@ msgid "Pending benchmark"
msgstr "待跑分"
#: src/views/toolbox/BenchmarkView.vue:89
-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:96
msgid "Benchmarking in progress, it may take some time..."
@@ -4405,66 +4209,890 @@ msgstr "跑分中……"
msgid "Start Benchmark"
msgstr "开始跑分"
-#: src/views/toolbox/IndexView.vue:19
+#: src/views/toolbox/DiskView.vue:109
+#, fuzzy
+msgid "Failed to parse disk data, please refresh and try again"
+msgstr "获取加密公钥失败,请刷新页面后重试"
+
+#: src/views/toolbox/DiskView.vue:270
+#, fuzzy
+msgid "Partition Name"
+msgstr "选项名称"
+
+#: src/views/toolbox/DiskView.vue:283
+#, fuzzy
+msgid "Used"
+msgstr "未使用"
+
+#: src/views/toolbox/DiskView.vue:292
+#, fuzzy
+msgid "Available"
+msgstr "可用 SWAP"
+
+#: src/views/toolbox/DiskView.vue:309
+#, fuzzy
+msgid "Not Mounted"
+msgstr "未使用"
+
+#: src/views/toolbox/DiskView.vue:332 src/views/toolbox/DiskView.vue:828
+#, fuzzy
+msgid "Filesystem"
+msgstr "文件系统"
+
+#: src/views/toolbox/DiskView.vue:385 src/views/toolbox/DiskView.vue:537
+#: src/views/toolbox/DiskView.vue:581 src/views/toolbox/DiskView.vue:630
+msgid "Please fill in all fields"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:390
+msgid ""
+"Are you sure you want to mount %{ device } to %{ path } and write to fstab "
+"for auto-mount on boot?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:397
+#, fuzzy
+msgid "Are you sure you want to mount %{ device } to %{ path }?"
+msgstr "您确定要删除挂载 %{ path } 吗?"
+
+#: src/views/toolbox/DiskView.vue:411
+#, fuzzy
+msgid "Mounted successfully"
+msgstr "移动成功"
+
+#: src/views/toolbox/DiskView.vue:429
+#, fuzzy
+msgid "Are you sure you want to unmount this partition?"
+msgstr "您确定要更新面板吗?"
+
+#: src/views/toolbox/DiskView.vue:434
+#, fuzzy
+msgid "Unmounted successfully"
+msgstr "解封成功"
+
+#: src/views/toolbox/DiskView.vue:444 src/views/toolbox/DiskView.vue:495
+#, fuzzy
+msgid "Please select a device"
+msgstr "请选择一个渠道"
+
+#: src/views/toolbox/DiskView.vue:449 src/views/toolbox/DiskView.vue:474
+#: src/views/toolbox/DiskView.vue:519 src/views/toolbox/DiskView.vue:562
+#: src/views/toolbox/DiskView.vue:611 src/views/toolbox/DiskView.vue:658
+msgid "Dangerous Operation"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:450
+msgid ""
+"Formatting will erase all data on the partition. This operation is "
+"irreversible. Are you sure?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:453
+#, fuzzy
+msgid "Confirm Format"
+msgstr "确认退出登录?"
+
+#: src/views/toolbox/DiskView.vue:457
+#, fuzzy
+msgid "Formatted successfully"
+msgstr "创建成功"
+
+#: src/views/toolbox/DiskView.vue:469
+#, fuzzy
+msgid "Please enter disk name"
+msgstr "请输入绝对路径"
+
+#: src/views/toolbox/DiskView.vue:475
+msgid ""
+"This will delete all partitions on %{ device } and create a single "
+"partition. All data will be permanently lost. Are you absolutely sure?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:479
+msgid "Confirm Initialize"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:483
+#, fuzzy
+msgid "Disk initialized successfully"
+msgstr "禁用成功"
+
+#: src/views/toolbox/DiskView.vue:501
+#, fuzzy
+msgid "Are you sure you want to create a physical volume on %{ device }?"
+msgstr "您确定要停止 %{ service } 吗?"
+
+#: src/views/toolbox/DiskView.vue:508
+#, fuzzy
+msgid "Physical volume created successfully"
+msgstr "面板重启成功"
+
+#: src/views/toolbox/DiskView.vue:520
+#, fuzzy
+msgid "Are you sure you want to remove the physical volume %{ device }?"
+msgstr "您确定要删除编排 %{ name } 吗?"
+
+#: src/views/toolbox/DiskView.vue:527
+#, fuzzy
+msgid "Physical volume removed successfully"
+msgstr "面板重启成功"
+
+#: src/views/toolbox/DiskView.vue:543
+#, fuzzy
+msgid "Are you sure you want to create volume group %{ name }?"
+msgstr "确定要删除模块 %{ name } 吗?"
+
+#: src/views/toolbox/DiskView.vue:550
+#, fuzzy
+msgid "Volume group created successfully"
+msgstr "创建成功"
+
+#: src/views/toolbox/DiskView.vue:563
+msgid ""
+"Are you sure you want to remove the volume group %{ name }? All logical "
+"volumes in this group will be deleted!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:571
+#, fuzzy
+msgid "Volume group removed successfully"
+msgstr "压缩成功"
+
+#: src/views/toolbox/DiskView.vue:587
+#, fuzzy
+msgid ""
+"Are you sure you want to create logical volume %{ name } with %{ size }GB?"
+msgstr "您确定要删除编排 %{ name } 吗?"
+
+#: src/views/toolbox/DiskView.vue:598
+#, fuzzy
+msgid "Logical volume created successfully"
+msgstr "面板重启成功"
+
+#: src/views/toolbox/DiskView.vue:612
+msgid ""
+"Are you sure you want to remove the logical volume %{ path }? All data on "
+"this volume will be lost!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:620
+#, fuzzy
+msgid "Logical volume removed successfully"
+msgstr "获取成功"
+
+#: src/views/toolbox/DiskView.vue:636
+#, fuzzy
+msgid "Are you sure you want to extend %{ path } by %{ size }GB?"
+msgstr "您确定要删除挂载 %{ path } 吗?"
+
+#: src/views/toolbox/DiskView.vue:645
+#, fuzzy
+msgid "Logical volume extended successfully"
+msgstr "退出登录成功!"
+
+#: src/views/toolbox/DiskView.vue:659
+msgid ""
+"Are you sure you want to remove the fstab entry for %{ mountPoint }? This "
+"will prevent auto-mount on boot."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:667
+#, fuzzy
+msgid "Fstab entry removed successfully"
+msgstr "获取成功"
+
+#: src/views/toolbox/DiskView.vue:678
+#, fuzzy
+msgid "Disk Management"
+msgstr "用户管理"
+
+#: src/views/toolbox/DiskView.vue:684
+#, fuzzy
+msgid "Disk Name"
+msgstr "任务名称"
+
+#: src/views/toolbox/DiskView.vue:686
+#, fuzzy
+msgid "System Disk"
+msgstr "系统"
+
+#: src/views/toolbox/DiskView.vue:693
+#, fuzzy
+msgid "Partitions"
+msgstr "权限"
+
+#: src/views/toolbox/DiskView.vue:694
+#, fuzzy
+msgid "Disk Type"
+msgstr "任务类型"
+
+#: src/views/toolbox/DiskView.vue:714
+msgid "Note: This is the system disk and cannot be operated on."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:719
+msgid "No disks found"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:722
+#, fuzzy
+msgid "Mount Partition"
+msgstr "挂载路径"
+
+#: src/views/toolbox/DiskView.vue:725 src/views/toolbox/DiskView.vue:770
+#, fuzzy
+msgid "Partition"
+msgstr "描述"
+
+#: src/views/toolbox/DiskView.vue:729 src/views/toolbox/DiskView.vue:774
+#, fuzzy
+msgid "Select partition"
+msgstr "选择 PHP 版本"
+
+#: src/views/toolbox/DiskView.vue:737
+msgid "e.g., /mnt/data"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:741
+#, fuzzy
+msgid "Mount Options"
+msgstr "选项"
+
+#: src/views/toolbox/DiskView.vue:744
+msgid "e.g., defaults,noatime"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:748
+msgid "Auto-mount on boot"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:758
+msgid ""
+"When enabled, the partition UUID will be written to /etc/fstab for automatic "
+"mounting on system boot."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:765
+msgid "Format Partition"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:767
+msgid "Warning: Formatting will erase all data!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:779 src/views/toolbox/DiskView.vue:812
+#, fuzzy
+msgid "Filesystem Type"
+msgstr "文件系统"
+
+#: src/views/toolbox/DiskView.vue:788
+#, fuzzy
+msgctxt "disk action"
+msgid "Format"
+msgstr "格式"
+
+#: src/views/toolbox/DiskView.vue:794
+msgid "Initialize Disk"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:797
+msgid ""
+"Warning: This will delete all partitions and create a single partition. All "
+"data will be lost!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:807
+#, fuzzy
+msgid "Select disk"
+msgstr "选择文件"
+
+#: src/views/toolbox/DiskView.vue:816
+msgid "Initialize"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:821
+#, fuzzy
+msgid "Auto-mount Configuration (fstab)"
+msgstr "模块配置"
+
+#: src/views/toolbox/DiskView.vue:826 src/views/toolbox/DiskView.vue:884
+#, fuzzy
+msgid "Device"
+msgstr "服务"
+
+#: src/views/toolbox/DiskView.vue:844 src/views/toolbox/DiskView.vue:874
+#: src/views/toolbox/DiskView.vue:912 src/views/toolbox/DiskView.vue:957
+#, fuzzy
+msgid "Remove"
+msgstr "自动移除"
+
+#: src/views/toolbox/DiskView.vue:854
+msgid "No fstab entries"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:861
+#, fuzzy
+msgid "LVM Management"
+msgstr "模块管理"
+
+#: src/views/toolbox/DiskView.vue:863 src/views/toolbox/DiskView.vue:929
+#, fuzzy
+msgid "Physical Volumes"
+msgstr "物理内存大小"
+
+#: src/views/toolbox/DiskView.vue:880
+msgid "No physical volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:888
+#, fuzzy
+msgid "Select device"
+msgstr "选择服务器"
+
+#: src/views/toolbox/DiskView.vue:894
+#, fuzzy
+msgid "Create PV"
+msgstr "创建"
+
+#: src/views/toolbox/DiskView.vue:900
+#, fuzzy
+msgid "Volume Groups"
+msgstr "卷"
+
+#: src/views/toolbox/DiskView.vue:918
+msgid "No volume groups"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:922
+#, fuzzy
+msgid "VG Name"
+msgstr "名称"
+
+#: src/views/toolbox/DiskView.vue:925
+#, fuzzy
+msgid "Enter VG name"
+msgstr "输入新名称"
+
+#: src/views/toolbox/DiskView.vue:933
+#, fuzzy
+msgid "Select PVs"
+msgstr "选择主机"
+
+#: src/views/toolbox/DiskView.vue:940
+#, fuzzy
+msgid "Create VG"
+msgstr "创建"
+
+#: src/views/toolbox/DiskView.vue:946
+#, fuzzy
+msgid "Logical Volumes"
+msgstr "卷"
+
+#: src/views/toolbox/DiskView.vue:963
+msgid "No logical volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:967
+#, fuzzy
+msgid "LV Name"
+msgstr "名称"
+
+#: src/views/toolbox/DiskView.vue:970
+#, fuzzy
+msgid "Enter LV name"
+msgstr "输入新名称"
+
+#: src/views/toolbox/DiskView.vue:974
+#, fuzzy
+msgid "Volume Group"
+msgstr "卷"
+
+#: src/views/toolbox/DiskView.vue:978
+#, fuzzy
+msgid "Select VG"
+msgstr "选择 CA"
+
+#: src/views/toolbox/DiskView.vue:983
+#, fuzzy
+msgid "Size (GB)"
+msgstr "大小"
+
+#: src/views/toolbox/DiskView.vue:987
+#, fuzzy
+msgid "Create LV"
+msgstr "创建"
+
+#: src/views/toolbox/DiskView.vue:993
+msgid "Extend Logical Volume"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:995
+msgid "Logical Volume"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:999
+#, fuzzy
+msgid "Select LV"
+msgstr "选择 CA"
+
+#: src/views/toolbox/DiskView.vue:1004
+msgid "Extend Size (GB)"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:1007
+msgid "Auto Resize Filesystem"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:1011
+msgid "Extend LV"
+msgstr ""
+
+#: src/views/toolbox/IndexView.vue:22
msgid "Process"
msgstr "进程"
-#: src/views/toolbox/IndexView.vue:20
+#: src/views/toolbox/IndexView.vue:23
msgid "System"
msgstr "系统"
-#: src/views/toolbox/IndexView.vue:21
+#: src/views/toolbox/IndexView.vue:26
+msgid "WebHook"
+msgstr ""
+
+#: src/views/toolbox/IndexView.vue:27
msgid "Benchmark"
msgstr "跑分"
-#: src/views/toolbox/SystemView.vue:95
+#: src/views/toolbox/ProcessView.vue:47
+#, fuzzy
+msgid "All Status"
+msgstr "状态"
+
+#: src/views/toolbox/ProcessView.vue:49 src/views/toolbox/ProcessView.vue:82
+msgid "Sleeping"
+msgstr "睡眠"
+
+#: src/views/toolbox/ProcessView.vue:51 src/views/toolbox/ProcessView.vue:86
+msgid "Idle"
+msgstr "空闲"
+
+#: src/views/toolbox/ProcessView.vue:52 src/views/toolbox/ProcessView.vue:88
+msgid "Zombie"
+msgstr "僵尸进程"
+
+#: src/views/toolbox/ProcessView.vue:54 src/views/toolbox/ProcessView.vue:92
+msgid "Locked"
+msgstr "已锁定"
+
+#: src/views/toolbox/ProcessView.vue:61
+msgid "View Details"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:63
+#, fuzzy
+msgid "Terminate (SIGTERM)"
+msgstr "终止"
+
+#: src/views/toolbox/ProcessView.vue:64
+msgid "Kill (SIGKILL)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:66
+msgid "Stop (SIGSTOP)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:67
+#, fuzzy
+msgid "Continue (SIGCONT)"
+msgstr "容器(起始)"
+
+#: src/views/toolbox/ProcessView.vue:69
+msgid "Interrupt (SIGINT)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:70
+msgid "Hang Up (SIGHUP)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:71
+msgid "User Signal 1 (SIGUSR1)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:72
+msgid "User Signal 2 (SIGUSR2)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:115 src/views/toolbox/ProcessView.vue:383
+msgid "Parent PID"
+msgstr "父进程 PID"
+
+#: src/views/toolbox/ProcessView.vue:122 src/views/toolbox/ProcessView.vue:395
+msgid "Threads"
+msgstr "线程"
+
+#: src/views/toolbox/ProcessView.vue:163 src/views/toolbox/ProcessView.vue:416
+msgid "Start Time"
+msgstr "启动时间"
+
+#: src/views/toolbox/ProcessView.vue:235
+#, fuzzy
+msgid "Are you sure you want to send %{ signal } to process %{ pid }?"
+msgstr "您确定要终止进程 %{ pid } 吗?"
+
+#: src/views/toolbox/ProcessView.vue:245
+msgid "Signal %{ signal } has been sent to process %{ pid }"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:313
+msgid "Search by PID or name"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:372
+#, fuzzy
+msgid "Process Details"
+msgstr "进程"
+
+#: src/views/toolbox/ProcessView.vue:401
+#, fuzzy
+msgid "Memory (RSS)"
+msgstr "内存"
+
+#: src/views/toolbox/ProcessView.vue:404
+#, fuzzy
+msgid "Virtual Memory"
+msgstr "内存"
+
+#: src/views/toolbox/ProcessView.vue:407
+msgid "Swap"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:410
+#, fuzzy
+msgid "Disk Read"
+msgstr "读取"
+
+#: src/views/toolbox/ProcessView.vue:413
+#, fuzzy
+msgid "Disk Write"
+msgstr "写入"
+
+#: src/views/toolbox/ProcessView.vue:419
+#, fuzzy
+msgid "Executable Path"
+msgstr "执行"
+
+#: src/views/toolbox/ProcessView.vue:429
+#, fuzzy
+msgid "Command Line"
+msgstr "命令"
+
+#: src/views/toolbox/ProcessView.vue:446
+#, fuzzy
+msgid "No environment variables"
+msgstr "环境变量"
+
+#: src/views/toolbox/ProcessView.vue:454
+#, fuzzy
+msgid "Open Files"
+msgstr "文件"
+
+#: src/views/toolbox/ProcessView.vue:462
+msgid "No open files"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:470
+#, fuzzy
+msgid "Network Connections"
+msgstr "网络协议"
+
+#: src/views/toolbox/ProcessView.vue:483
+msgid "No network connections"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:35
+msgid "Allow password and key login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:36
+msgid "Disable root login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:38
+msgid "Only allow key login (recommended)"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:42
+msgid "Only allow key login with forced commands"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:72
+msgid "SSH service stopped"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:75
+msgid "SSH service started"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:88
+msgid "SSH service restarted"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:99
+msgid "SSH port updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:117
+#, fuzzy
+msgid "Password authentication updated"
+msgstr "认证方式"
+
+#: src/views/toolbox/SshView.vue:129
+#, fuzzy
+msgid "Key authentication updated"
+msgstr "认证方式"
+
+#: src/views/toolbox/SshView.vue:141
+msgid "Root login setting updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:150
+#, fuzzy
+msgid "Please enter a password"
+msgstr "请输入用户名和密码"
+
+#: src/views/toolbox/SshView.vue:157
+#, fuzzy
+msgid "Root password updated"
+msgstr "Root 密码"
+
+#: src/views/toolbox/SshView.vue:177 src/views/toolbox/SshView.vue:191
+msgid "SSH key generated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:200
+msgid "No SSH key found"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:228
+#, fuzzy
+msgid "SSH Service"
+msgstr "服务"
+
+#: src/views/toolbox/SshView.vue:231
+msgid "SSH Service Status"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:240
+#, fuzzy
+msgid "SSH Password Login"
+msgstr "密码"
+
+#: src/views/toolbox/SshView.vue:247
+msgid "Allow password authentication for SSH login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:252
+#, fuzzy
+msgid "SSH Key Login"
+msgstr "安全登录"
+
+#: src/views/toolbox/SshView.vue:260
+msgid "Allow public key authentication for SSH login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:277
+msgid "Current SSH port, default is 22"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:283
+#, fuzzy
+msgid "Root Settings"
+msgstr "端口设置"
+
+#: src/views/toolbox/SshView.vue:287
+#, fuzzy
+msgid "Root Password Login Setting"
+msgstr "Root 密码"
+
+#: src/views/toolbox/SshView.vue:304
+#, fuzzy
+msgid "Enter new password"
+msgstr "输入密码"
+
+#: src/views/toolbox/SshView.vue:317
+#, fuzzy
+msgid "Reset"
+msgstr "预设"
+
+#: src/views/toolbox/SshView.vue:322
+msgid ""
+"It is recommended to use a complex password. Save after modification. "
+"Refresh will clear the password field."
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:331
+#, fuzzy
+msgid "Root Key"
+msgstr "根目录"
+
+#: src/views/toolbox/SshView.vue:333
+#, fuzzy
+msgid "View Key"
+msgstr "查看规则"
+
+#: src/views/toolbox/SshView.vue:341
+msgid "Recommended to use key login with password disabled for higher security"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:354
+#, fuzzy
+msgid "Root Private Key"
+msgstr "私钥"
+
+#: src/views/toolbox/SshView.vue:361
+msgid ""
+"This is the private key of the root user. Keep it safe and use it to login "
+"to this server."
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:371
+msgid "No private key generated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:375
+msgid "Regenerate"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:378
+#, fuzzy
+msgid "Download Private Key"
+msgstr "私钥"
+
+#: src/views/toolbox/SystemView.vue:88
msgid "DNS modifications will revert to default after system restart."
msgstr "DNS 修改将在系统重启后恢复为默认设置。"
-#: src/views/toolbox/SystemView.vue:99
+#: src/views/toolbox/SystemView.vue:92
msgid "Enter primary DNS server"
msgstr "输入主 DNS 服务器"
-#: src/views/toolbox/SystemView.vue:102
+#: src/views/toolbox/SystemView.vue:95
msgid "Enter secondary DNS server"
msgstr "输入辅 DNS 服务器"
-#: src/views/toolbox/SystemView.vue:116
+#: src/views/toolbox/SystemView.vue:109
msgid "Total %{ total }, used %{ used }, free %{ free }"
msgstr "总计 %{ total },已使用 %{ used },可用 %{ free }"
-#: src/views/toolbox/SystemView.vue:141
+#: src/views/toolbox/SystemView.vue:134
msgid "Enter hostname, e.g. myserver"
msgstr "输入主机名,例如 myserver"
-#: src/views/toolbox/SystemView.vue:144
+#: src/views/toolbox/SystemView.vue:137
msgid "Hosts"
msgstr "Hosts"
-#: src/views/toolbox/SystemView.vue:152
+#: src/views/toolbox/SystemView.vue:145
msgid "Time"
msgstr "时间"
-#: src/views/toolbox/SystemView.vue:156
-msgid "After manually changing the time, it may still be overwritten by system automatic time synchronization."
+#: src/views/toolbox/SystemView.vue:149
+msgid ""
+"After manually changing the time, it may still be overwritten by system "
+"automatic time synchronization."
msgstr "手动更改时间后,系统自动时间同步可能仍会覆盖设置。"
-#: src/views/toolbox/SystemView.vue:162
+#: src/views/toolbox/SystemView.vue:155
msgid "Select Timezone"
msgstr "选择时区"
-#: src/views/toolbox/SystemView.vue:165
+#: src/views/toolbox/SystemView.vue:158
msgid "Please select a timezone"
msgstr "请选择时区"
-#: src/views/toolbox/SystemView.vue:169
+#: src/views/toolbox/SystemView.vue:162
msgid "Modify Time"
msgstr "修改时间"
-#: src/views/toolbox/SystemView.vue:178
+#: src/views/toolbox/SystemView.vue:171
msgid "Synchronize Time"
msgstr "同步时间"
+#: src/views/toolbox/WebHookView.vue:68 src/views/toolbox/WebHookView.vue:340
+#: src/views/toolbox/WebHookView.vue:375
+msgid "Raw Output"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:80
+msgid "Yes"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:80
+#, fuzzy
+msgid "No"
+msgstr "无"
+
+#: src/views/toolbox/WebHookView.vue:100
+#, fuzzy
+msgid "Call Count"
+msgstr "容器数量"
+
+#: src/views/toolbox/WebHookView.vue:107
+msgid "Last Call"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:145
+#, fuzzy
+msgid "Copy URL"
+msgstr "复制"
+
+#: src/views/toolbox/WebHookView.vue:167
+#, fuzzy
+msgid "Are you sure you want to delete this WebHook?"
+msgstr "您确定要删除此备份吗?"
+
+#: src/views/toolbox/WebHookView.vue:217
+msgid "URL copied to clipboard"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:242 src/views/toolbox/WebHookView.vue:264
+#, fuzzy
+msgid "Please enter a name"
+msgstr "请输入绝对路径"
+
+#: src/views/toolbox/WebHookView.vue:246 src/views/toolbox/WebHookView.vue:268
+#, fuzzy
+msgid "Please enter a script"
+msgstr "请输入绝对路径"
+
+#: src/views/toolbox/WebHookView.vue:295 src/views/toolbox/WebHookView.vue:324
+#, fuzzy
+msgid "Create WebHook"
+msgstr "创建主机"
+
+#: src/views/toolbox/WebHookView.vue:332 src/views/toolbox/WebHookView.vue:367
+#, fuzzy
+msgid "Enter WebHook name"
+msgstr "输入新名称"
+
+#: src/views/toolbox/WebHookView.vue:337 src/views/toolbox/WebHookView.vue:372
+msgid "User to run the script (default: root)"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:343 src/views/toolbox/WebHookView.vue:378
+msgid "Return script output as raw text instead of JSON"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:346 src/views/toolbox/WebHookView.vue:384
+#, fuzzy
+msgid "Script"
+msgstr "运行脚本"
+
+#: src/views/toolbox/WebHookView.vue:359
+#, fuzzy
+msgid "Edit WebHook"
+msgstr "编辑网站"
+
#: src/views/website/BulkCreateModal.vue:23
msgid "The format is incorrect, please check"
msgstr "格式不正确,请检查"
@@ -4474,13 +5102,14 @@ msgstr "格式不正确,请检查"
msgid "Website %{ name } created successfully"
msgstr "网站 %{ name } 创建成功"
-#: src/views/website/BulkCreateModal.vue:79
-#: src/views/website/ListView.vue:285
+#: src/views/website/BulkCreateModal.vue:79 src/views/website/ListView.vue:285
msgid "Bulk Create Website"
msgstr "批量创建网站"
#: src/views/website/BulkCreateModal.vue:90
-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:98
@@ -4488,15 +5117,21 @@ msgid "name|domain|port|path|remark"
msgstr "名称|域名|端口|路径|备注"
#: src/views/website/BulkCreateModal.vue:103
-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:110
-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:117
-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:123
@@ -4507,27 +5142,24 @@ msgstr "路径:网站的根目录,可以为空以使用默认路径。"
msgid "Remark: The remark of the website, can be empty."
msgstr "备注:网站的备注,可以为空。"
-#: src/views/website/CreateModal.vue:35
-#: src/views/website/EditView.vue:56
+#: src/views/website/CreateModal.vue:35 src/views/website/EditView.vue:56
msgid "Not used"
msgstr "未使用"
-#: src/views/website/CreateModal.vue:97
-#: src/views/website/ListView.vue:282
+#: src/views/website/CreateModal.vue:97 src/views/website/ListView.vue:282
msgid "Create Website"
msgstr "创建网站"
#: src/views/website/CreateModal.vue:112
-msgid "Must use English for the website name, it cannot be modified after setting"
+msgid ""
+"Must use English for the website name, it cannot be modified after setting"
msgstr "网站名称必须使用英文,设置后将无法修改"
-#: src/views/website/CreateModal.vue:141
-#: src/views/website/EditView.vue:248
+#: src/views/website/CreateModal.vue:141 src/views/website/EditView.vue:248
msgid "PHP Version"
msgstr "PHP 版本"
-#: src/views/website/CreateModal.vue:145
-#: src/views/website/EditView.vue:253
+#: src/views/website/CreateModal.vue:145 src/views/website/EditView.vue:253
msgid "Select PHP Version"
msgstr "选择 PHP 版本"
@@ -4535,18 +5167,18 @@ msgstr "选择 PHP 版本"
msgid "Select Database"
msgstr "选择数据库"
-#: src/views/website/CreateModal.vue:185
-#: src/views/website/CreateModal.vue:190
+#: src/views/website/CreateModal.vue:185 src/views/website/CreateModal.vue:190
msgid "Database User"
msgstr "数据库用户"
-#: src/views/website/CreateModal.vue:199
-#: src/views/website/CreateModal.vue:205
+#: src/views/website/CreateModal.vue:199 src/views/website/CreateModal.vue:205
msgid "Database Password"
msgstr "数据库密码"
#: src/views/website/CreateModal.vue:216
-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:222
@@ -4557,8 +5189,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:230
-#: src/views/website/CreateModal.vue:235
+#: src/views/website/CreateModal.vue:230 src/views/website/CreateModal.vue:235
#: src/views/website/ListView.vue:106
msgid "Remark"
msgstr "备注"
@@ -4656,24 +5287,30 @@ msgid "Presets"
msgstr "预设"
#: src/views/website/EditView.vue:365
-msgid "If you modify the original text, other modifications will not take effect after clicking save!"
+msgid ""
+"If you modify the original text, other modifications will not take effect "
+"after clicking save!"
msgstr "如果修改原文,点击保存后其他修改将不会生效!"
#: src/views/website/EditView.vue:372
-msgid "If you do not understand the configuration rules, please do not modify them arbitrarily, otherwise it may cause the website to be inaccessible or panel function abnormalities! If you have already encountered a problem, try resetting the configuration!"
-msgstr "如果您不了解配置规则,请不要随意修改,否则可能导致网站无法访问或面板功能异常!如果您已经遇到问题,请尝试重置配置!"
+msgid ""
+"If you do not understand the configuration rules, please do not modify them "
+"arbitrarily, otherwise it may cause the website to be inaccessible or panel "
+"function abnormalities! If you have already encountered a problem, try "
+"resetting the configuration!"
+msgstr ""
+"如果您不了解配置规则,请不要随意修改,否则可能导致网站无法访问或面板功能异"
+"常!如果您已经遇到问题,请尝试重置配置!"
#: src/views/website/EditView.vue:379
msgid "Access Log"
msgstr "访问日志"
-#: src/views/website/EditView.vue:383
-#: src/views/website/EditView.vue:403
+#: src/views/website/EditView.vue:383 src/views/website/EditView.vue:403
msgid "All logs can be viewed by downloading the file"
msgstr "所有日志可通过下载文件查看"
-#: src/views/website/EditView.vue:385
-#: src/views/website/EditView.vue:405
+#: src/views/website/EditView.vue:385 src/views/website/EditView.vue:405
msgid "view"
msgstr "查看"
@@ -4742,7 +5379,9 @@ msgid "Please select the websites to delete"
msgstr "请选择要删除的网站"
#: src/views/website/ListView.vue:294
-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/ProxyBuilderModal.vue:24
@@ -4778,11 +5417,15 @@ msgid "Generate Reverse Proxy Configuration"
msgstr "生成反向代理配置"
#: src/views/website/ProxyBuilderModal.vue:132
-msgid "After generating the reverse proxy configuration, the original rewrite rules will be overwritten."
+msgid ""
+"After generating the reverse proxy configuration, the original rewrite rules "
+"will be overwritten."
msgstr "生成反向代理配置后,原有的伪静态规则将被覆盖。"
#: src/views/website/ProxyBuilderModal.vue:139
-msgid "If you need to proxy static resources like JS/CSS, please remove the static log recording part from the original configuration."
+msgid ""
+"If you need to proxy static resources like JS/CSS, please remove the static "
+"log recording part from the original configuration."
msgstr "如果您需要代理JS/CSS等静态资源,请从原始配置中删除静态日志记录部分。"
#: src/views/website/ProxyBuilderModal.vue:145
@@ -4889,3 +5532,24 @@ msgstr "默认密码套件"
msgid "Enter the default cipher suite, leave blank to reset to default"
msgstr "输入默认密码套件,留空以重置为默认值"
+#~ msgid "Extension Name"
+#~ msgstr "扩展名称"
+
+#~ msgid "Extension Management"
+#~ msgstr "扩展管理"
+
+#~ msgid ""
+#~ "Modifying panel port/entrance requires corresponding changes in the "
+#~ "browser address bar to access the panel!"
+#~ msgstr "修改面板端口/入口需要在浏览器地址栏中相应更改以访问面板!"
+
+#~ msgid "/www/wwwroot"
+#~ msgstr "/www/wwwroot"
+
+#~ msgid ""
+#~ "Enable HTTPS for the panel to ensure secure communication. You need to "
+#~ "provide a valid SSL certificate and private key"
+#~ msgstr "为面板启用 HTTPS 以确保安全通信。您需要提供有效的 SSL 证书和私钥"
+
+#~ msgid "Process %{ pid } has been terminated"
+#~ msgstr "进程 %{ pid } 已被终止"
diff --git a/web/src/locales/zh_TW.po b/web/src/locales/zh_TW.po
index c05a5e0b..280548fc 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-01-06 19:40\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-01-06 19:40\n"
-#: src/components/common/AppFooter.vue:13
-#: src/views/home/IndexView.vue:440
+#: src/components/common/AppFooter.vue:13 src/views/home/IndexView.vue:442
msgid "AcePanel"
msgstr "AcePanel"
@@ -195,14 +194,14 @@ msgstr "當前狀態無法保存"
#: src/views/apps/codeserver/IndexView.vue:23
#: src/views/apps/docker/IndexView.vue:23
#: src/views/apps/fail2ban/IndexView.vue:160
-#: src/views/apps/frp/IndexView.vue:27
+#: src/views/apps/frp/IndexView.vue:36 src/views/apps/frp/IndexView.vue:44
#: src/views/apps/gitea/IndexView.vue:21
+#: src/views/apps/mariadb/IndexView.vue:46
#: src/views/apps/memcached/IndexView.vue:43
-#: src/views/apps/minio/IndexView.vue:21
-#: src/views/apps/mysql/IndexView.vue:46
+#: src/views/apps/minio/IndexView.vue:21 src/views/apps/mysql/IndexView.vue:46
#: src/views/apps/nginx/IndexView.vue:43
-#: src/views/apps/php/PhpView.vue:142
-#: src/views/apps/php/PhpView.vue:148
+#: src/views/apps/openresty/IndexView.vue:43
+#: src/views/apps/percona/IndexView.vue:46
#: src/views/apps/phpmyadmin/IndexView.vue:36
#: src/views/apps/phpmyadmin/IndexView.vue:43
#: src/views/apps/podman/IndexView.vue:25
@@ -210,18 +209,14 @@ msgstr "當前狀態無法保存"
#: src/views/apps/postgresql/IndexView.vue:46
#: src/views/apps/postgresql/IndexView.vue:51
#: src/views/apps/pureftpd/IndexView.vue:115
-#: src/views/apps/redis/IndexView.vue:40
-#: src/views/apps/rsync/IndexView.vue:133
+#: src/views/apps/redis/IndexView.vue:40 src/views/apps/rsync/IndexView.vue:133
#: src/views/apps/rsync/IndexView.vue:177
#: src/views/apps/supervisor/IndexView.vue:219
#: src/views/apps/supervisor/IndexView.vue:284
-#: src/views/setting/IndexView.vue:48
-#: src/views/toolbox/SystemView.vue:49
-#: src/views/toolbox/SystemView.vue:55
-#: src/views/toolbox/SystemView.vue:64
-#: src/views/toolbox/SystemView.vue:70
-#: src/views/toolbox/SystemView.vue:79
-#: src/views/website/EditView.vue:114
+#: src/views/environment/PHPView.vue:137 src/views/environment/PHPView.vue:143
+#: src/views/setting/IndexView.vue:50 src/views/toolbox/SystemView.vue:48
+#: src/views/toolbox/SystemView.vue:54 src/views/toolbox/SystemView.vue:63
+#: src/views/toolbox/SystemView.vue:72 src/views/website/EditView.vue:114
msgid "Saved successfully"
msgstr "儲存成功"
@@ -235,24 +230,20 @@ msgstr "選擇文件"
#: src/components/common/PathSelector.vue:42
#: src/components/common/PathSelector.vue:332
-#: src/views/app/EnvironmentView.vue:26
+#: src/views/app/EnvironmentView.vue:27
#: src/views/apps/fail2ban/IndexView.vue:37
-#: src/views/apps/rsync/IndexView.vue:39
-#: src/views/apps/rsync/IndexView.vue:256
+#: src/views/apps/rsync/IndexView.vue:39 src/views/apps/rsync/IndexView.vue:256
#: src/views/apps/supervisor/IndexView.vue:46
#: src/views/apps/supervisor/IndexView.vue:373
#: src/views/container/ComposeView.vue:31
-#: src/views/container/NetworkView.vue:45
-#: src/views/container/VolumeView.vue:26
+#: src/views/container/NetworkView.vue:45 src/views/container/VolumeView.vue:26
#: src/views/database/CreateServerModal.vue:55
#: src/views/database/ServerList.vue:39
-#: src/views/database/UpdateServerModal.vue:55
-#: src/views/file/ListTable.vue:105
-#: src/views/file/ToolBar.vue:257
-#: src/views/ssh/CreateModal.vue:57
-#: src/views/ssh/UpdateModal.vue:63
-#: src/views/task/SystemView.vue:18
-#: src/views/toolbox/ProcessView.vue:18
+#: src/views/database/UpdateServerModal.vue:55 src/views/file/ListTable.vue:105
+#: src/views/file/ToolBar.vue:257 src/views/ssh/CreateModal.vue:59
+#: src/views/ssh/UpdateModal.vue:65 src/views/toolbox/ProcessView.vue:107
+#: src/views/toolbox/ProcessView.vue:386 src/views/toolbox/WebHookView.vue:32
+#: src/views/toolbox/WebHookView.vue:331 src/views/toolbox/WebHookView.vue:366
#: src/views/website/CreateModal.vue:106
msgid "Name"
msgstr "名稱"
@@ -261,77 +252,64 @@ msgstr "名稱"
msgid "Permissions"
msgstr "權限"
-#: src/components/common/PathSelector.vue:95
-#: src/views/file/ListTable.vue:159
+#: src/components/common/PathSelector.vue:95 src/views/file/ListTable.vue:159
msgid "Owner / Group"
msgstr "所有者 / 群組"
-#: src/components/common/PathSelector.vue:107
-#: src/views/backup/ListView.vue:42
-#: src/views/container/ImageView.vue:53
-#: src/views/file/ListTable.vue:171
+#: src/components/common/PathSelector.vue:107 src/views/backup/ListView.vue:42
+#: src/views/container/ImageView.vue:53 src/views/file/ListTable.vue:171
+#: src/views/toolbox/DiskView.vue:275 src/views/toolbox/DiskView.vue:692
msgid "Size"
msgstr "大小"
-#: src/components/common/PathSelector.vue:115
-#: src/views/file/ListTable.vue:179
+#: src/components/common/PathSelector.vue:115 src/views/file/ListTable.vue:179
msgid "Modification Time"
msgstr "修改時間"
-#: src/components/common/PathSelector.vue:149
-#: src/views/file/ListTable.vue:459
+#: src/components/common/PathSelector.vue:149 src/views/file/ListTable.vue:459
#: src/views/file/PathInput.vue:28
msgid "Invalid path"
msgstr "無效路徑"
-#: src/components/common/PathSelector.vue:209
-#: src/views/file/ListTable.vue:408
-#: src/views/file/ToolBar.vue:37
-#: src/views/file/ToolBar.vue:51
+#: src/components/common/PathSelector.vue:209 src/views/file/ListTable.vue:408
+#: src/views/file/ToolBar.vue:37 src/views/file/ToolBar.vue:51
msgid "Invalid name"
msgstr "無效的名稱"
-#: src/components/common/PathSelector.vue:217
-#: src/views/backup/ListView.vue:122
+#: src/components/common/PathSelector.vue:217 src/views/backup/ListView.vue:122
#: src/views/cert/CreateAccountModal.vue:52
-#: src/views/cert/CreateCertModal.vue:50
-#: src/views/cert/CreateDnsModal.vue:35
+#: src/views/cert/CreateCertModal.vue:50 src/views/cert/CreateDnsModal.vue:35
#: src/views/cert/UploadCertModal.vue:21
#: src/views/container/ComposeView.vue:254
#: src/views/container/ContainerCreate.vue:106
#: src/views/container/NetworkView.vue:174
#: src/views/container/VolumeView.vue:128
#: src/views/database/CreateDatabaseModal.vue:28
-#: src/views/database/CreateUserModal.vue:28
-#: src/views/file/ToolBar.vue:45
+#: src/views/database/CreateUserModal.vue:28 src/views/file/ToolBar.vue:45
#: src/views/firewall/CreateForwardModal.vue:41
-#: src/views/setting/CreateModal.vue:19
-#: src/views/setting/TokenModal.vue:125
-#: src/views/ssh/CreateModal.vue:38
-#: src/views/task/CreateModal.vue:50
+#: src/views/setting/CreateModal.vue:19 src/views/setting/TokenModal.vue:125
+#: src/views/ssh/CreateModal.vue:40 src/views/task/CreateModal.vue:50
+#: src/views/toolbox/WebHookView.vue:257
msgid "Created successfully"
msgstr "創建成功"
-#: src/components/common/PathSelector.vue:256
-#: src/views/file/ToolBar.vue:214
+#: src/components/common/PathSelector.vue:256 src/views/file/ToolBar.vue:214
msgid "File"
msgstr "文件"
-#: src/components/common/PathSelector.vue:257
-#: src/views/file/ToolBar.vue:215
+#: src/components/common/PathSelector.vue:257 src/views/file/ToolBar.vue:215
msgid "Folder"
msgstr "文件夾"
#: src/components/common/PathSelector.vue:261
#: src/components/common/PathSelector.vue:324
-#: src/views/setting/TokenModal.vue:266
+#: src/views/setting/TokenModal.vue:266 src/views/toolbox/WebHookView.vue:351
#: src/views/website/BulkCreateModal.vue:129
#: src/views/website/CreateModal.vue:240
msgid "Create"
msgstr "創建"
-#: src/components/common/PathSelector.vue:270
-#: src/views/file/PathInput.vue:128
+#: src/components/common/PathSelector.vue:270 src/views/file/PathInput.vue:128
msgid "Root Directory"
msgstr "根目錄"
@@ -339,19 +317,13 @@ msgstr "根目錄"
#: src/views/apps/fail2ban/IndexView.vue:368
#: src/views/apps/pureftpd/IndexView.vue:242
#: src/views/apps/pureftpd/IndexView.vue:264
-#: src/views/apps/rsync/IndexView.vue:305
-#: src/views/apps/s3fs/IndexView.vue:181
+#: src/views/apps/rsync/IndexView.vue:305 src/views/apps/s3fs/IndexView.vue:181
#: src/views/apps/supervisor/IndexView.vue:409
-#: src/views/backup/ListView.vue:256
-#: src/views/backup/ListView.vue:280
-#: src/views/cert/AccountView.vue:268
-#: src/views/cert/CertView.vue:534
-#: src/views/cert/CertView.vue:558
-#: src/views/cert/CreateAccountModal.vue:125
-#: src/views/cert/CreateCertModal.vue:115
-#: src/views/cert/CreateDnsModal.vue:173
-#: src/views/cert/DnsView.vue:310
-#: src/views/cert/ObtainModal.vue:130
+#: src/views/backup/ListView.vue:256 src/views/backup/ListView.vue:280
+#: src/views/cert/AccountView.vue:268 src/views/cert/CertView.vue:534
+#: src/views/cert/CertView.vue:558 src/views/cert/CreateAccountModal.vue:125
+#: src/views/cert/CreateCertModal.vue:115 src/views/cert/CreateDnsModal.vue:173
+#: src/views/cert/DnsView.vue:310 src/views/cert/ObtainModal.vue:130
#: src/views/cert/UploadCertModal.vue:55
#: src/views/container/ComposeView.vue:348
#: src/views/container/ComposeView.vue:378
@@ -364,17 +336,12 @@ msgstr "根目錄"
#: src/views/database/CreateServerModal.vue:120
#: src/views/database/CreateUserModal.vue:125
#: src/views/database/UpdateServerModal.vue:112
-#: src/views/database/UpdateUserModal.vue:79
-#: src/views/file/ToolBar.vue:261
-#: src/views/file/ToolBar.vue:282
-#: src/views/firewall/CreateForwardModal.vue:88
+#: src/views/database/UpdateUserModal.vue:79 src/views/file/ToolBar.vue:261
+#: src/views/file/ToolBar.vue:282 src/views/firewall/CreateForwardModal.vue:88
#: src/views/firewall/CreateIpModal.vue:121
-#: src/views/firewall/CreateModal.vue:145
-#: src/views/setting/CreateModal.vue:64
-#: src/views/setting/PasswordModal.vue:44
-#: src/views/setting/TwoFaModal.vue:87
-#: src/views/ssh/CreateModal.vue:99
-#: src/views/ssh/UpdateModal.vue:105
+#: src/views/firewall/CreateModal.vue:145 src/views/setting/CreateModal.vue:64
+#: src/views/setting/PasswordModal.vue:44 src/views/setting/TwoFaModal.vue:87
+#: src/views/ssh/CreateModal.vue:109 src/views/ssh/UpdateModal.vue:115
#: src/views/task/CreateModal.vue:157
#: src/views/website/ProxyBuilderModal.vue:201
msgid "Submit"
@@ -392,33 +359,26 @@ msgstr "獲取日誌流失敗"
#: src/components/common/RealtimeLogModal.vue:67
#: src/views/apps/supervisor/IndexView.vue:89
#: src/views/container/ContainerView.vue:105
-#: src/views/container/ContainerView.vue:445
-#: src/views/task/CronView.vue:116
+#: src/views/container/ContainerView.vue:445 src/views/task/CronView.vue:116
#: src/views/task/TaskView.vue:74
msgid "Logs"
msgstr "日誌"
-#: src/components/common/ServiceStatus.vue:25
-#: src/views/home/IndexView.vue:739
-#: src/views/home/IndexView.vue:747
-#: src/views/home/IndexView.vue:754
-#: src/views/home/IndexView.vue:760
-#: src/views/home/IndexView.vue:771
-#: src/views/home/IndexView.vue:783
+#: src/components/common/ServiceStatus.vue:25 src/views/home/IndexView.vue:741
+#: src/views/home/IndexView.vue:749 src/views/home/IndexView.vue:756
+#: src/views/home/IndexView.vue:762 src/views/home/IndexView.vue:773
+#: src/views/home/IndexView.vue:785
msgid "Loading..."
msgstr "載入中……"
-#: src/components/common/ServiceStatus.vue:26
-#: src/views/task/SystemView.vue:50
-#: src/views/task/TaskView.vue:33
-#: src/views/toolbox/ProcessView.vue:50
+#: src/components/common/ServiceStatus.vue:26 src/views/task/TaskView.vue:33
+#: src/views/toolbox/ProcessView.vue:48 src/views/toolbox/ProcessView.vue:80
#: src/views/website/ListView.vue:28
msgid "Running"
msgstr "運行中"
#: src/components/common/ServiceStatus.vue:26
-#: src/views/task/SystemView.vue:54
-#: src/views/toolbox/ProcessView.vue:54
+#: src/views/toolbox/ProcessView.vue:50 src/views/toolbox/ProcessView.vue:84
msgid "Stopped"
msgstr "已停止"
@@ -478,18 +438,19 @@ msgstr "自啟動已成功禁用"
#: src/views/apps/docker/IndexView.vue:31
#: src/views/apps/fail2ban/IndexView.vue:228
#: src/views/apps/gitea/IndexView.vue:29
+#: src/views/apps/mariadb/IndexView.vue:71
#: src/views/apps/memcached/IndexView.vue:51
-#: src/views/apps/minio/IndexView.vue:29
-#: src/views/apps/mysql/IndexView.vue:71
+#: src/views/apps/minio/IndexView.vue:29 src/views/apps/mysql/IndexView.vue:71
#: src/views/apps/nginx/IndexView.vue:57
-#: src/views/apps/php/PhpView.vue:180
+#: src/views/apps/openresty/IndexView.vue:57
+#: src/views/apps/percona/IndexView.vue:71
#: src/views/apps/podman/IndexView.vue:39
#: src/views/apps/postgresql/IndexView.vue:63
#: src/views/apps/pureftpd/IndexView.vue:158
-#: src/views/apps/redis/IndexView.vue:48
-#: src/views/apps/rsync/IndexView.vue:191
+#: src/views/apps/redis/IndexView.vue:48 src/views/apps/rsync/IndexView.vue:191
#: src/views/apps/supervisor/IndexView.vue:298
#: src/views/container/ContainerView.vue:83
+#: src/views/environment/PHPView.vue:175
msgid "Running Status"
msgstr "運行狀態"
@@ -524,8 +485,8 @@ msgstr "您確定要停止 %{ service } 嗎?"
#: src/components/common/ServiceStatus.vue:162
#: src/views/apps/supervisor/IndexView.vue:168
#: src/views/container/ContainerView.vue:139
-#: src/views/container/ContainerView.vue:413
-#: src/views/home/IndexView.vue:448
+#: src/views/container/ContainerView.vue:413 src/views/home/IndexView.vue:450
+#: src/views/toolbox/SshView.vue:234
msgid "Restart"
msgstr "重啟"
@@ -553,8 +514,7 @@ msgstr "切換主題"
#: src/layout/header/components/UserAvatar.vue:13
#: src/views/apps/pureftpd/IndexView.vue:65
#: src/views/apps/pureftpd/IndexView.vue:249
-#: src/views/setting/PasswordModal.vue:26
-#: src/views/setting/SettingUser.vue:117
+#: src/views/setting/PasswordModal.vue:26 src/views/setting/SettingUser.vue:117
msgid "Change Password"
msgstr "更改密碼"
@@ -571,17 +531,29 @@ msgid "Prompt"
msgstr "提示"
#: src/layout/header/components/UserAvatar.vue:29
-#: src/views/home/UpdateView.vue:26
-#: src/views/monitor/IndexView.vue:460
+#: src/views/home/UpdateView.vue:26 src/views/monitor/IndexView.vue:460
+#: src/views/toolbox/DiskView.vue:403 src/views/toolbox/DiskView.vue:405
+#: src/views/toolbox/DiskView.vue:428 src/views/toolbox/DiskView.vue:430
+#: src/views/toolbox/DiskView.vue:500 src/views/toolbox/DiskView.vue:504
+#: src/views/toolbox/DiskView.vue:523 src/views/toolbox/DiskView.vue:542
+#: src/views/toolbox/DiskView.vue:546 src/views/toolbox/DiskView.vue:567
+#: src/views/toolbox/DiskView.vue:586 src/views/toolbox/DiskView.vue:594
+#: src/views/toolbox/DiskView.vue:616 src/views/toolbox/DiskView.vue:635
+#: src/views/toolbox/DiskView.vue:640 src/views/toolbox/DiskView.vue:663
+#: src/views/toolbox/ProcessView.vue:234 src/views/toolbox/ProcessView.vue:239
msgid "Confirm"
msgstr "確認"
#: src/layout/header/components/UserAvatar.vue:30
-#: src/views/file/ListTable.vue:418
-#: src/views/file/ListTable.vue:513
-#: src/views/file/ToolBar.vue:139
-#: src/views/file/ToolBar.vue:226
-#: src/views/home/UpdateView.vue:27
+#: src/views/file/ListTable.vue:418 src/views/file/ListTable.vue:513
+#: src/views/file/ToolBar.vue:139 src/views/file/ToolBar.vue:226
+#: src/views/home/UpdateView.vue:27 src/views/toolbox/DiskView.vue:406
+#: src/views/toolbox/DiskView.vue:431 src/views/toolbox/DiskView.vue:454
+#: src/views/toolbox/DiskView.vue:480 src/views/toolbox/DiskView.vue:505
+#: src/views/toolbox/DiskView.vue:524 src/views/toolbox/DiskView.vue:547
+#: src/views/toolbox/DiskView.vue:568 src/views/toolbox/DiskView.vue:595
+#: src/views/toolbox/DiskView.vue:617 src/views/toolbox/DiskView.vue:641
+#: src/views/toolbox/DiskView.vue:664 src/views/toolbox/ProcessView.vue:240
msgid "Cancel"
msgstr "取消"
@@ -589,12 +561,10 @@ msgstr "取消"
msgid "Logged out successfully!"
msgstr "成功登出!"
-#: src/layout/header/components/UserAvatar.vue:48
-#: src/views/cert/DnsView.vue:56
-#: src/views/firewall/IpRuleView.vue:76
-#: src/views/firewall/IpRuleView.vue:101
-#: src/views/firewall/RuleView.vue:110
-#: src/views/firewall/RuleView.vue:135
+#: src/layout/header/components/UserAvatar.vue:48 src/views/cert/DnsView.vue:56
+#: src/views/firewall/IpRuleView.vue:76 src/views/firewall/IpRuleView.vue:101
+#: src/views/firewall/RuleView.vue:110 src/views/firewall/RuleView.vue:135
+#: src/views/toolbox/DiskView.vue:172
msgid "Unknown"
msgstr "未知"
@@ -604,7 +574,9 @@ msgid "Menu Settings"
msgstr "選單設定"
#: src/layout/sidebar/components/SideSetting.vue:83
-msgid "Settings are saved in the browser and will be reset after clearing the browser cache"
+msgid ""
+"Settings are saved in the browser and will be reset after clearing the "
+"browser cache"
msgstr "設置保存在瀏覽器中,清除瀏覽器緩存後將重置"
#: src/layout/sidebar/components/SideSetting.vue:88
@@ -651,12 +623,9 @@ msgstr "應用程式"
msgid "Backup"
msgstr "備份"
-#: src/locales/menu.ts:9
-#: src/views/cert/CertView.vue:496
-#: src/views/cert/CertView.vue:573
-#: src/views/cert/IndexView.vue:96
-#: src/views/cert/UploadCertModal.vue:38
-#: src/views/setting/SettingSafe.vue:192
+#: src/locales/menu.ts:9 src/views/cert/CertView.vue:496
+#: src/views/cert/CertView.vue:573 src/views/cert/IndexView.vue:96
+#: src/views/cert/UploadCertModal.vue:38 src/views/setting/SettingSafe.vue:248
#: src/views/website/EditView.vue:326
msgid "Certificate"
msgstr "證書"
@@ -665,10 +634,8 @@ msgstr "證書"
msgid "Container"
msgstr "容器"
-#: src/locales/menu.ts:11
-#: src/views/backup/ListView.vue:276
-#: src/views/database/IndexView.vue:27
-#: src/views/home/IndexView.vue:426
+#: src/locales/menu.ts:11 src/views/backup/ListView.vue:276
+#: src/views/database/IndexView.vue:27 src/views/home/IndexView.vue:428
#: src/views/website/CreateModal.vue:153
msgid "Database"
msgstr "數據庫"
@@ -709,24 +676,17 @@ msgstr ""
msgid "Toolbox"
msgstr "工具箱"
-#: src/locales/menu.ts:21
-#: src/views/app/AppView.vue:93
-#: src/views/app/EnvironmentView.vue:77
-#: src/views/home/IndexView.vue:452
+#: src/locales/menu.ts:21 src/views/app/AppView.vue:93
+#: src/views/app/EnvironmentView.vue:78 src/views/home/IndexView.vue:454
#: src/views/setting/TokenModal.vue:299
msgid "Update"
msgstr "更新"
-#: src/locales/menu.ts:22
-#: src/views/apps/fail2ban/IndexView.vue:315
-#: src/views/backup/IndexView.vue:37
-#: src/views/backup/ListView.vue:232
-#: src/views/backup/ListView.vue:269
-#: src/views/cert/CertView.vue:465
-#: src/views/cert/CertView.vue:548
-#: src/views/cert/CreateCertModal.vue:90
-#: src/views/home/IndexView.vue:422
-#: src/views/task/CreateModal.vue:118
+#: src/locales/menu.ts:22 src/views/apps/fail2ban/IndexView.vue:315
+#: src/views/backup/IndexView.vue:37 src/views/backup/ListView.vue:232
+#: src/views/backup/ListView.vue:269 src/views/cert/CertView.vue:465
+#: src/views/cert/CertView.vue:548 src/views/cert/CreateCertModal.vue:90
+#: src/views/home/IndexView.vue:424 src/views/task/CreateModal.vue:118
msgid "Website"
msgstr "網站"
@@ -754,16 +714,13 @@ msgstr "Rsync 管理器"
msgid "Frp Manager"
msgstr "Frp 管理器"
-#: src/router/routes/index.ts:18
-#: src/views/login/IndexView.vue:176
+#: src/router/routes/index.ts:18 src/views/login/IndexView.vue:176
msgid "Login"
msgstr "登錄"
-#: src/views/app/AppView.vue:17
-#: src/views/app/AppView.vue:152
-#: src/views/app/AppView.vue:157
-#: src/views/app/EnvironmentView.vue:144
-#: src/views/apps/php/PhpView.vue:79
+#: src/views/app/AppView.vue:17 src/views/app/AppView.vue:152
+#: src/views/app/AppView.vue:157 src/views/app/EnvironmentView.vue:145
+#: src/views/environment/PHPView.vue:74
msgid "Install"
msgstr "安裝"
@@ -771,14 +728,12 @@ msgstr "安裝"
msgid "App Name"
msgstr "應用名稱"
-#: src/views/app/AppView.vue:40
-#: src/views/app/EnvironmentView.vue:32
-#: src/views/apps/php/PhpView.vue:48
+#: src/views/app/AppView.vue:40 src/views/app/EnvironmentView.vue:33
+#: src/views/environment/PHPView.vue:43
msgid "Description"
msgstr "描述"
-#: src/views/app/AppView.vue:46
-#: src/views/app/EnvironmentView.vue:44
+#: src/views/app/AppView.vue:46 src/views/app/EnvironmentView.vue:45
msgid "Installed Version"
msgstr "已安裝版本"
@@ -786,62 +741,51 @@ msgstr "已安裝版本"
msgid "Show in Home"
msgstr "在主頁顯示"
-#: src/views/app/AppView.vue:65
-#: src/views/app/EnvironmentView.vue:50
+#: src/views/app/AppView.vue:65 src/views/app/EnvironmentView.vue:51
#: src/views/apps/fail2ban/IndexView.vue:59
#: src/views/apps/fail2ban/IndexView.vue:118
-#: src/views/apps/php/PhpView.vue:55
#: src/views/apps/pureftpd/IndexView.vue:46
-#: src/views/apps/rsync/IndexView.vue:68
-#: src/views/apps/s3fs/IndexView.vue:32
-#: src/views/apps/supervisor/IndexView.vue:74
-#: src/views/backup/ListView.vue:57
-#: src/views/cert/AccountView.vue:79
-#: src/views/cert/CertView.vue:180
-#: src/views/cert/DnsView.vue:64
-#: src/views/container/ComposeView.vue:74
+#: src/views/apps/rsync/IndexView.vue:68 src/views/apps/s3fs/IndexView.vue:32
+#: src/views/apps/supervisor/IndexView.vue:74 src/views/backup/ListView.vue:57
+#: src/views/cert/AccountView.vue:79 src/views/cert/CertView.vue:180
+#: src/views/cert/DnsView.vue:64 src/views/container/ComposeView.vue:74
#: src/views/container/ContainerCreate.vue:175
#: src/views/container/ContainerCreate.vue:256
#: src/views/container/ContainerView.vue:90
-#: src/views/container/ImageView.vue:69
-#: src/views/container/NetworkView.vue:109
-#: src/views/container/VolumeView.vue:63
-#: src/views/database/DatabaseList.vue:73
-#: src/views/database/ServerList.vue:134
-#: src/views/database/UserList.vue:151
-#: src/views/file/ListTable.vue:191
-#: src/views/firewall/ForwardView.vue:79
-#: src/views/firewall/IpRuleView.vue:121
-#: src/views/firewall/RuleView.vue:158
-#: src/views/setting/SettingUser.vue:85
-#: src/views/setting/TokenModal.vue:52
-#: src/views/task/CronView.vue:98
-#: src/views/task/SystemView.vue:96
-#: src/views/task/TaskView.vue:55
-#: src/views/toolbox/ProcessView.vue:96
+#: src/views/container/ImageView.vue:69 src/views/container/NetworkView.vue:109
+#: src/views/container/VolumeView.vue:63 src/views/database/DatabaseList.vue:73
+#: src/views/database/ServerList.vue:134 src/views/database/UserList.vue:151
+#: src/views/environment/PHPView.vue:50 src/views/file/ListTable.vue:191
+#: src/views/firewall/ForwardView.vue:79 src/views/firewall/IpRuleView.vue:121
+#: src/views/firewall/RuleView.vue:158 src/views/setting/SettingUser.vue:85
+#: src/views/setting/TokenModal.vue:52 src/views/task/CronView.vue:98
+#: src/views/task/TaskView.vue:55 src/views/toolbox/DiskView.vue:340
+#: src/views/toolbox/DiskView.vue:831 src/views/toolbox/WebHookView.vue:130
#: src/views/website/ListView.vue:123
msgid "Actions"
msgstr "操作"
#: src/views/app/AppView.vue:80
-msgid "Updating app %{ app } may reset related configurations to default state, are you sure to continue?"
+msgid ""
+"Updating app %{ app } may reset related configurations to default state, are "
+"you sure to continue?"
msgstr "更新應用程式 %{ app } 可能會將相關配置重置為默認狀態,您確定要繼續嗎?"
-#: src/views/app/AppView.vue:109
-#: src/views/app/EnvironmentView.vue:93
+#: src/views/app/AppView.vue:109 src/views/app/EnvironmentView.vue:94
msgid "Manage"
msgstr "管理"
#: src/views/app/AppView.vue:123
-msgid "Reinstalling/Switching to a different web server will reset the configuration of all websites, are you sure to continue?"
+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:127
msgid "Are you sure to uninstall app %{ app }?"
msgstr "您確定要卸載應用程式 %{ app } 嗎?"
-#: src/views/app/AppView.vue:137
-#: src/views/app/EnvironmentView.vue:117
+#: src/views/app/AppView.vue:137 src/views/app/EnvironmentView.vue:118
msgid "Uninstall"
msgstr "卸載"
@@ -849,54 +793,50 @@ msgstr "卸載"
msgid "Setup successfully"
msgstr "設置成功"
-#: src/views/app/AppView.vue:198
-#: src/views/app/AppView.vue:206
-#: src/views/app/EnvironmentView.vue:177
-#: src/views/app/EnvironmentView.vue:185
-#: src/views/app/EnvironmentView.vue:193
-#: src/views/app/VersionModal.vue:33
+#: src/views/app/AppView.vue:198 src/views/app/AppView.vue:206
+#: src/views/app/EnvironmentView.vue:178 src/views/app/EnvironmentView.vue:186
+#: src/views/app/EnvironmentView.vue:194 src/views/app/VersionModal.vue:33
msgid "Task submitted, please check the progress in background tasks"
msgstr "任務已提交,請在後台任務中查看進度"
-#: src/views/app/AppView.vue:229
-#: src/views/app/EnvironmentView.vue:212
+#: src/views/app/AppView.vue:229 src/views/app/EnvironmentView.vue:217
#: src/views/firewall/RuleView.vue:150
msgid "All"
msgstr "全部"
-#: src/views/app/EnvironmentView.vue:38
+#: src/views/app/EnvironmentView.vue:39
msgid "Latest Version"
msgstr ""
-#: src/views/app/EnvironmentView.vue:65
+#: src/views/app/EnvironmentView.vue:66
msgid "Are you sure to update environment %{ environment }?"
msgstr ""
-#: src/views/app/EnvironmentView.vue:105
+#: src/views/app/EnvironmentView.vue:106
msgid "Are you sure to uninstall environment %{ environment }?"
msgstr ""
-#: src/views/app/EnvironmentView.vue:132
+#: src/views/app/EnvironmentView.vue:133
msgid "Are you sure to install environment %{ environment }?"
msgstr ""
-#: src/views/app/IndexView.vue:20
+#: src/views/app/IndexView.vue:23
msgid "Cache updated successfully"
msgstr "快取更新成功"
-#: src/views/app/IndexView.vue:30
+#: src/views/app/IndexView.vue:34
msgid "Native App"
msgstr ""
-#: src/views/app/IndexView.vue:31
+#: src/views/app/IndexView.vue:35
msgid "Operating Environment"
msgstr ""
-#: src/views/app/IndexView.vue:32
+#: src/views/app/IndexView.vue:36
msgid "Container Template"
msgstr ""
-#: src/views/app/IndexView.vue:35
+#: src/views/app/IndexView.vue:39
msgid "Update Cache"
msgstr "更新快取"
@@ -917,30 +857,33 @@ msgid "Release Log"
msgstr ""
#: src/views/apps/codeserver/IndexView.vue:34
-#: src/views/apps/frp/IndexView.vue:43
-#: src/views/apps/frp/IndexView.vue:56
+#: src/views/apps/frp/IndexView.vue:75 src/views/apps/frp/IndexView.vue:103
#: src/views/apps/gitea/IndexView.vue:32
-#: src/views/apps/mysql/IndexView.vue:84
-#: src/views/apps/nginx/IndexView.vue:60
+#: src/views/apps/mariadb/IndexView.vue:84
+#: src/views/apps/mysql/IndexView.vue:84 src/views/apps/nginx/IndexView.vue:60
+#: src/views/apps/openresty/IndexView.vue:60
+#: src/views/apps/percona/IndexView.vue:84
#: src/views/apps/phpmyadmin/IndexView.vue:73
msgid "Modify Configuration"
msgstr "修改配置"
#: src/views/apps/codeserver/IndexView.vue:38
-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/codeserver/IndexView.vue:46
-#: src/views/apps/docker/IndexView.vue:42
-#: src/views/apps/frp/IndexView.vue:46
-#: src/views/apps/frp/IndexView.vue:59
-#: src/views/apps/gitea/IndexView.vue:44
+#: src/views/apps/docker/IndexView.vue:42 src/views/apps/frp/IndexView.vue:63
+#: src/views/apps/frp/IndexView.vue:78 src/views/apps/frp/IndexView.vue:91
+#: src/views/apps/frp/IndexView.vue:106 src/views/apps/gitea/IndexView.vue:44
+#: src/views/apps/mariadb/IndexView.vue:96
#: src/views/apps/memcached/IndexView.vue:59
-#: src/views/apps/minio/IndexView.vue:44
-#: src/views/apps/mysql/IndexView.vue:96
+#: src/views/apps/minio/IndexView.vue:44 src/views/apps/mysql/IndexView.vue:96
#: src/views/apps/nginx/IndexView.vue:72
-#: src/views/apps/php/PhpView.vue:214
-#: src/views/apps/php/PhpView.vue:232
+#: src/views/apps/openresty/IndexView.vue:72
+#: src/views/apps/percona/IndexView.vue:96
#: src/views/apps/phpmyadmin/IndexView.vue:66
#: src/views/apps/phpmyadmin/IndexView.vue:85
#: src/views/apps/podman/IndexView.vue:63
@@ -948,18 +891,14 @@ msgstr "這將修改 Code Server 的配置文件。如果您不理解每個參
#: src/views/apps/postgresql/IndexView.vue:78
#: src/views/apps/postgresql/IndexView.vue:95
#: src/views/apps/pureftpd/IndexView.vue:165
-#: src/views/apps/redis/IndexView.vue:63
-#: src/views/apps/rsync/IndexView.vue:235
+#: src/views/apps/redis/IndexView.vue:63 src/views/apps/rsync/IndexView.vue:235
#: src/views/apps/supervisor/IndexView.vue:342
-#: src/views/file/EditModal.vue:32
-#: src/views/file/ListTable.vue:746
-#: src/views/setting/IndexView.vue:84
-#: src/views/task/CronView.vue:259
-#: src/views/toolbox/SystemView.vue:107
-#: src/views/toolbox/SystemView.vue:131
-#: src/views/toolbox/SystemView.vue:149
-#: src/views/toolbox/SystemView.vue:175
-#: src/views/toolbox/SystemView.vue:190
+#: src/views/environment/PHPView.vue:210 src/views/environment/PHPView.vue:228
+#: src/views/file/EditModal.vue:32 src/views/file/ListTable.vue:746
+#: src/views/setting/IndexView.vue:97 src/views/task/CronView.vue:259
+#: src/views/toolbox/SshView.vue:274 src/views/toolbox/SystemView.vue:100
+#: src/views/toolbox/SystemView.vue:124 src/views/toolbox/SystemView.vue:142
+#: src/views/toolbox/SystemView.vue:168 src/views/toolbox/WebHookView.vue:389
#: src/views/website/EditView.vue:413
msgid "Save"
msgstr "儲存"
@@ -968,21 +907,21 @@ msgstr "儲存"
#: src/views/apps/docker/IndexView.vue:47
#: src/views/apps/fail2ban/IndexView.vue:282
#: src/views/apps/gitea/IndexView.vue:49
+#: src/views/apps/mariadb/IndexView.vue:111
#: src/views/apps/memcached/IndexView.vue:74
-#: src/views/apps/minio/IndexView.vue:49
-#: src/views/apps/mysql/IndexView.vue:111
+#: src/views/apps/minio/IndexView.vue:49 src/views/apps/mysql/IndexView.vue:111
#: src/views/apps/nginx/IndexView.vue:87
-#: src/views/apps/php/PhpView.vue:247
+#: src/views/apps/openresty/IndexView.vue:87
+#: src/views/apps/percona/IndexView.vue:111
#: src/views/apps/podman/IndexView.vue:85
#: src/views/apps/postgresql/IndexView.vue:110
-#: src/views/apps/redis/IndexView.vue:78
-#: src/views/apps/rsync/IndexView.vue:240
+#: src/views/apps/redis/IndexView.vue:78 src/views/apps/rsync/IndexView.vue:240
#: src/views/apps/supervisor/IndexView.vue:347
+#: src/views/environment/PHPView.vue:243
msgid "Runtime Logs"
msgstr "運行日誌"
-#: src/views/apps/docker/IndexView.vue:34
-#: src/views/website/EditView.vue:361
+#: src/views/apps/docker/IndexView.vue:34 src/views/website/EditView.vue:361
msgid "Configuration"
msgstr "配置"
@@ -995,12 +934,9 @@ msgstr "這將修改 Docker 配置文件 (/etc/docker/daemon.json)"
#: src/views/apps/supervisor/IndexView.vue:53
#: src/views/container/ComposeView.vue:58
#: src/views/container/ContainerView.vue:31
-#: src/views/database/ServerList.vue:113
-#: src/views/database/UserList.vue:130
-#: src/views/firewall/RuleView.vue:61
-#: src/views/task/SystemView.vue:43
-#: src/views/task/TaskView.vue:22
-#: src/views/toolbox/ProcessView.vue:43
+#: src/views/database/ServerList.vue:113 src/views/database/UserList.vue:130
+#: src/views/firewall/RuleView.vue:61 src/views/task/TaskView.vue:22
+#: src/views/toolbox/ProcessView.vue:135 src/views/toolbox/ProcessView.vue:392
msgid "Status"
msgstr "狀態"
@@ -1019,8 +955,7 @@ msgstr "封禁時間"
msgid "Find Time"
msgstr "查找時間"
-#: src/views/apps/fail2ban/IndexView.vue:77
-#: src/views/cert/CertView.vue:262
+#: src/views/apps/fail2ban/IndexView.vue:77 src/views/cert/CertView.vue:262
msgid "View"
msgstr "查看"
@@ -1029,37 +964,25 @@ msgid "Are you sure you want to delete rule %{ name }?"
msgstr "您確定要刪除規則 %{ name } 嗎?"
#: src/views/apps/fail2ban/IndexView.vue:98
-#: src/views/apps/php/PhpView.vue:106
#: src/views/apps/pureftpd/IndexView.vue:88
#: src/views/apps/rsync/IndexView.vue:105
-#: src/views/apps/supervisor/IndexView.vue:195
-#: src/views/backup/ListView.vue:96
-#: src/views/cert/AccountView.vue:127
-#: src/views/cert/CertView.vue:313
-#: src/views/cert/DnsView.vue:111
-#: src/views/container/ComposeView.vue:228
+#: src/views/apps/supervisor/IndexView.vue:195 src/views/backup/ListView.vue:96
+#: src/views/cert/AccountView.vue:127 src/views/cert/CertView.vue:313
+#: src/views/cert/DnsView.vue:111 src/views/container/ComposeView.vue:228
#: src/views/container/ContainerCreate.vue:236
#: src/views/container/ContainerCreate.vue:287
#: src/views/container/ContainerView.vue:159
#: src/views/container/ContainerView.vue:417
-#: src/views/container/ImageView.vue:94
-#: src/views/container/NetworkView.vue:134
-#: src/views/container/VolumeView.vue:88
-#: src/views/database/DatabaseList.vue:97
-#: src/views/database/ServerList.vue:214
-#: src/views/database/UserList.vue:189
-#: src/views/file/ListTable.vue:87
-#: src/views/file/ListTable.vue:291
-#: src/views/file/ToolBar.vue:238
-#: src/views/firewall/ForwardView.vue:103
-#: src/views/firewall/IpRuleView.vue:145
-#: src/views/firewall/RuleView.vue:182
-#: src/views/setting/SettingUser.vue:139
-#: src/views/setting/TokenModal.vue:91
-#: src/views/ssh/IndexView.vue:92
-#: src/views/task/CronView.vue:149
-#: src/views/task/TaskView.vue:97
-#: src/views/website/ListView.vue:195
+#: src/views/container/ImageView.vue:94 src/views/container/NetworkView.vue:134
+#: src/views/container/VolumeView.vue:88 src/views/database/DatabaseList.vue:97
+#: src/views/database/ServerList.vue:214 src/views/database/UserList.vue:189
+#: src/views/environment/PHPView.vue:101 src/views/file/ListTable.vue:87
+#: src/views/file/ListTable.vue:291 src/views/file/ToolBar.vue:238
+#: src/views/firewall/ForwardView.vue:103 src/views/firewall/IpRuleView.vue:145
+#: src/views/firewall/RuleView.vue:182 src/views/setting/SettingUser.vue:139
+#: src/views/setting/TokenModal.vue:91 src/views/ssh/IndexView.vue:92
+#: src/views/task/CronView.vue:149 src/views/task/TaskView.vue:97
+#: src/views/toolbox/WebHookView.vue:178 src/views/website/ListView.vue:195
msgid "Delete"
msgstr "刪除"
@@ -1073,8 +996,7 @@ msgstr "解封"
#: src/views/apps/fail2ban/IndexView.vue:188
#: src/views/apps/pureftpd/IndexView.vue:128
-#: src/views/apps/rsync/IndexView.vue:150
-#: src/views/apps/s3fs/IndexView.vue:82
+#: src/views/apps/rsync/IndexView.vue:150 src/views/apps/s3fs/IndexView.vue:82
#: src/views/apps/supervisor/IndexView.vue:233
#: src/views/database/CreateServerModal.vue:37
msgid "Added successfully"
@@ -1082,28 +1004,18 @@ msgstr "添加成功"
#: src/views/apps/fail2ban/IndexView.vue:196
#: src/views/apps/pureftpd/IndexView.vue:145
-#: src/views/apps/rsync/IndexView.vue:158
-#: src/views/apps/s3fs/IndexView.vue:89
+#: src/views/apps/rsync/IndexView.vue:158 src/views/apps/s3fs/IndexView.vue:89
#: src/views/apps/supervisor/IndexView.vue:261
-#: src/views/backup/ListView.vue:145
-#: src/views/database/DatabaseList.vue:121
-#: src/views/database/ServerList.vue:238
-#: src/views/database/UserList.vue:213
-#: src/views/file/ListTable.vue:274
-#: src/views/file/ListTable.vue:618
-#: src/views/file/ToolBar.vue:189
-#: src/views/firewall/ForwardView.vue:129
-#: src/views/firewall/ForwardView.vue:147
-#: src/views/firewall/IpRuleView.vue:171
-#: src/views/firewall/IpRuleView.vue:189
-#: src/views/firewall/RuleView.vue:208
-#: src/views/firewall/RuleView.vue:226
-#: src/views/setting/SettingUser.vue:174
-#: src/views/setting/TokenModal.vue:114
-#: src/views/task/CronView.vue:191
-#: src/views/task/TaskView.vue:122
-#: src/views/website/ListView.vue:254
-#: src/views/website/ListView.vue:269
+#: src/views/backup/ListView.vue:145 src/views/database/DatabaseList.vue:121
+#: src/views/database/ServerList.vue:238 src/views/database/UserList.vue:213
+#: src/views/file/ListTable.vue:274 src/views/file/ListTable.vue:618
+#: src/views/file/ToolBar.vue:189 src/views/firewall/ForwardView.vue:129
+#: src/views/firewall/ForwardView.vue:147 src/views/firewall/IpRuleView.vue:171
+#: src/views/firewall/IpRuleView.vue:189 src/views/firewall/RuleView.vue:208
+#: src/views/firewall/RuleView.vue:226 src/views/setting/SettingUser.vue:174
+#: src/views/setting/TokenModal.vue:114 src/views/task/CronView.vue:191
+#: src/views/task/TaskView.vue:122 src/views/toolbox/WebHookView.vue:235
+#: src/views/website/ListView.vue:254 src/views/website/ListView.vue:269
msgid "Deleted successfully"
msgstr "刪除成功"
@@ -1138,20 +1050,26 @@ msgid "Add Rule"
msgstr "新增規則"
#: src/views/apps/fail2ban/IndexView.vue:297
-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:304
-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:311
-#: src/views/cert/CertView.vue:86
-#: src/views/cert/DnsView.vue:38
-#: src/views/cert/ObtainModal.vue:58
+#: src/views/apps/fail2ban/IndexView.vue:311 src/views/cert/CertView.vue:86
+#: src/views/cert/DnsView.vue:38 src/views/cert/ObtainModal.vue:58
#: src/views/database/CreateServerModal.vue:63
-#: src/views/database/DatabaseList.vue:11
-#: src/views/database/ServerList.vue:16
+#: src/views/database/DatabaseList.vue:11 src/views/database/ServerList.vue:16
#: src/views/database/UserList.vue:16
msgid "Type"
msgstr "類型"
@@ -1162,8 +1080,7 @@ msgid "Service"
msgstr "服務"
#: src/views/apps/fail2ban/IndexView.vue:321
-#: src/views/apps/fail2ban/IndexView.vue:325
-#: src/views/task/CreateModal.vue:132
+#: src/views/apps/fail2ban/IndexView.vue:325 src/views/task/CreateModal.vue:132
#: src/views/task/CreateModal.vue:137
msgid "Select Website"
msgstr "選擇網站"
@@ -1203,178 +1120,188 @@ msgstr "總封禁次數"
msgid "Ban List"
msgstr "封禁列表"
+#: src/views/apps/frp/IndexView.vue:60 src/views/apps/frp/IndexView.vue:88
+#, fuzzy
+msgid "Run User"
+msgstr "以用戶身份運行"
+
+#: src/views/apps/frp/IndexView.vue:67 src/views/apps/frp/IndexView.vue:68
+#: src/views/apps/frp/IndexView.vue:95 src/views/apps/frp/IndexView.vue:96
+#: src/views/apps/rsync/IndexView.vue:53 src/views/apps/rsync/IndexView.vue:272
+#: src/views/apps/rsync/IndexView.vue:326 src/views/database/IndexView.vue:28
+#: src/views/setting/IndexView.vue:83 src/views/toolbox/ProcessView.vue:129
+#: src/views/toolbox/ProcessView.vue:389 src/views/toolbox/WebHookView.vue:334
+#: src/views/toolbox/WebHookView.vue:369
+msgid "User"
+msgstr "用戶"
+
+#: src/views/apps/frp/IndexView.vue:70 src/views/apps/frp/IndexView.vue:71
+#: src/views/apps/frp/IndexView.vue:98 src/views/apps/frp/IndexView.vue:99
+#: src/views/file/PermissionModal.vue:95 src/views/file/PermissionModal.vue:119
+msgid "Group"
+msgstr "群組"
+
#: src/views/apps/gitea/IndexView.vue:36
-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/mariadb/IndexView.vue:30
#: src/views/apps/memcached/IndexView.vue:17
-#: src/views/apps/mysql/IndexView.vue:30
-#: src/views/apps/nginx/IndexView.vue:27
-#: src/views/apps/php/PhpView.vue:120
+#: src/views/apps/mysql/IndexView.vue:30 src/views/apps/nginx/IndexView.vue:27
+#: src/views/apps/openresty/IndexView.vue:27
+#: src/views/apps/percona/IndexView.vue:30
#: src/views/apps/postgresql/IndexView.vue:30
-#: src/views/apps/redis/IndexView.vue:24
+#: src/views/apps/redis/IndexView.vue:24 src/views/environment/PHPView.vue:115
msgid "Property"
msgstr "屬性"
+#: src/views/apps/mariadb/IndexView.vue:37
#: src/views/apps/memcached/IndexView.vue:24
-#: src/views/apps/mysql/IndexView.vue:37
-#: src/views/apps/nginx/IndexView.vue:34
-#: src/views/apps/php/PhpView.vue:127
+#: src/views/apps/mysql/IndexView.vue:37 src/views/apps/nginx/IndexView.vue:34
+#: src/views/apps/openresty/IndexView.vue:34
+#: src/views/apps/percona/IndexView.vue:37
#: src/views/apps/postgresql/IndexView.vue:37
-#: src/views/apps/redis/IndexView.vue:31
+#: src/views/apps/redis/IndexView.vue:31 src/views/environment/PHPView.vue:122
msgid "Current Value"
msgstr "當前值"
-#: src/views/apps/memcached/IndexView.vue:54
-msgid "Service Configuration"
-msgstr "服務配置"
-
-#: src/views/apps/memcached/IndexView.vue:64
-#: src/views/apps/mysql/IndexView.vue:101
-#: src/views/apps/nginx/IndexView.vue:77
-#: src/views/apps/php/PhpView.vue:237
-#: src/views/apps/postgresql/IndexView.vue:100
-#: src/views/apps/redis/IndexView.vue:68
-#: src/views/home/IndexView.vue:463
-msgid "Load Status"
-msgstr "負載狀態"
-
-#: src/views/apps/minio/IndexView.vue:32
-#: src/views/container/ComposeView.vue:338
-#: src/views/container/ComposeView.vue:368
-#: src/views/container/ContainerCreate.vue:353
-msgid "Environment Variables"
-msgstr "環境變數"
-
-#: src/views/apps/minio/IndexView.vue:36
-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/mysql/IndexView.vue:52
-#: src/views/apps/mysql/IndexView.vue:58
+#: src/views/apps/mariadb/IndexView.vue:52
+#: src/views/apps/mariadb/IndexView.vue:58
+#: src/views/apps/mysql/IndexView.vue:52 src/views/apps/mysql/IndexView.vue:58
#: src/views/apps/nginx/IndexView.vue:49
-#: src/views/apps/php/PhpView.vue:154
-#: src/views/apps/php/PhpView.vue:160
+#: src/views/apps/openresty/IndexView.vue:49
+#: src/views/apps/percona/IndexView.vue:52
+#: src/views/apps/percona/IndexView.vue:58
#: src/views/apps/postgresql/IndexView.vue:56
#: src/views/apps/supervisor/IndexView.vue:225
+#: src/views/environment/PHPView.vue:149 src/views/environment/PHPView.vue:155
#: src/views/website/EditView.vue:159
msgid "Cleared successfully"
msgstr "清除成功"
+#: src/views/apps/mariadb/IndexView.vue:64
#: src/views/apps/mysql/IndexView.vue:64
+#: src/views/apps/percona/IndexView.vue:64
#: src/views/apps/pureftpd/IndexView.vue:138
#: src/views/database/DatabaseList.vue:127
#: src/views/database/ServerList.vue:244
#: src/views/database/UpdateServerModal.vue:21
#: src/views/database/UpdateUserModal.vue:18
-#: src/views/database/UserList.vue:219
-#: src/views/file/PermissionModal.vue:29
-#: src/views/setting/SettingUser.vue:162
-#: src/views/setting/SettingUser.vue:168
-#: src/views/task/CronView.vue:173
-#: src/views/task/CronView.vue:201
-#: src/views/website/ListView.vue:237
-#: src/views/website/SettingView.vue:28
+#: src/views/database/UserList.vue:219 src/views/file/PermissionModal.vue:29
+#: src/views/setting/SettingUser.vue:162 src/views/setting/SettingUser.vue:168
+#: src/views/task/CronView.vue:173 src/views/task/CronView.vue:201
+#: src/views/toolbox/WebHookView.vue:210 src/views/toolbox/WebHookView.vue:281
+#: src/views/website/ListView.vue:237 src/views/website/SettingView.vue:28
msgid "Modified successfully"
msgstr "修改成功"
+#: src/views/apps/mariadb/IndexView.vue:74
#: src/views/apps/mysql/IndexView.vue:74
-#: src/views/toolbox/SystemView.vue:183
-#: src/views/toolbox/SystemView.vue:185
+#: src/views/apps/percona/IndexView.vue:74 src/views/toolbox/SshView.vue:298
msgid "Root Password"
msgstr "Root 密碼"
+#: src/views/apps/mariadb/IndexView.vue:78
#: src/views/apps/mysql/IndexView.vue:78
-#: src/views/website/SettingView.vue:44
-#: src/views/website/SettingView.vue:54
-#: src/views/website/SettingView.vue:64
+#: src/views/apps/percona/IndexView.vue:78 src/views/website/SettingView.vue:44
+#: src/views/website/SettingView.vue:54 src/views/website/SettingView.vue:64
#: src/views/website/SettingView.vue:97
msgid "Save Changes"
msgstr "保存更改"
-#: src/views/apps/mysql/IndexView.vue:88
-msgid "This modifies the MySQL main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!"
-msgstr "這將修改 MySQL 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!"
+#: src/views/apps/mariadb/IndexView.vue:88
+#, fuzzy
+msgid ""
+"This modifies the MariaDB main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+"這將修改 MySQL 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!"
-#: src/views/apps/mysql/IndexView.vue:113
-#: src/views/apps/nginx/IndexView.vue:94
-#: src/views/apps/php/PhpView.vue:254
+#: src/views/apps/mariadb/IndexView.vue:101
+#: src/views/apps/memcached/IndexView.vue:64
+#: src/views/apps/mysql/IndexView.vue:101 src/views/apps/nginx/IndexView.vue:77
+#: src/views/apps/openresty/IndexView.vue:77
+#: src/views/apps/percona/IndexView.vue:101
+#: src/views/apps/postgresql/IndexView.vue:100
+#: src/views/apps/redis/IndexView.vue:68 src/views/environment/PHPView.vue:233
+#: src/views/home/IndexView.vue:465
+msgid "Load Status"
+msgstr "負載狀態"
+
+#: src/views/apps/mariadb/IndexView.vue:113
+#: src/views/apps/mysql/IndexView.vue:113 src/views/apps/nginx/IndexView.vue:94
+#: src/views/apps/openresty/IndexView.vue:94
+#: src/views/apps/percona/IndexView.vue:113
#: src/views/apps/postgresql/IndexView.vue:114
#: src/views/apps/supervisor/IndexView.vue:354
+#: src/views/environment/PHPView.vue:250
msgid "Clear Log"
msgstr "清除日誌"
+#: src/views/apps/mariadb/IndexView.vue:117
#: src/views/apps/mysql/IndexView.vue:117
+#: src/views/apps/percona/IndexView.vue:117
msgid "Slow Query Log"
msgstr "慢查詢日誌"
+#: src/views/apps/mariadb/IndexView.vue:119
#: src/views/apps/mysql/IndexView.vue:119
-#: src/views/apps/php/PhpView.vue:264
+#: src/views/apps/percona/IndexView.vue:119
+#: src/views/environment/PHPView.vue:260
msgid "Clear Slow Log"
msgstr "清除慢查詢日誌"
+#: src/views/apps/memcached/IndexView.vue:54
+msgid "Service Configuration"
+msgstr "服務配置"
+
+#: src/views/apps/minio/IndexView.vue:32
+#: src/views/container/ComposeView.vue:338
+#: src/views/container/ComposeView.vue:368
+#: src/views/container/ContainerCreate.vue:353
+#: src/views/toolbox/ProcessView.vue:438
+msgid "Environment Variables"
+msgstr "環境變數"
+
+#: src/views/apps/minio/IndexView.vue:36
+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/mysql/IndexView.vue:88
+msgid ""
+"This modifies the MySQL main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+"這將修改 MySQL 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!"
+
#: src/views/apps/nginx/IndexView.vue:64
-msgid "This modifies the OpenResty main configuration file. If you do not understand the meaning of each parameter, please do not modify it randomly!"
-msgstr "這將修改 OpenResty 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!"
+#: src/views/apps/openresty/IndexView.vue:64
+msgid ""
+"This modifies the OpenResty main configuration file. If you do not "
+"understand the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+"這將修改 OpenResty 主配置文件。如果您不理解每個參數的含義,請不要隨意修改!"
#: src/views/apps/nginx/IndexView.vue:90
-#: src/views/apps/php/PhpView.vue:250
+#: src/views/apps/openresty/IndexView.vue:90
+#: src/views/environment/PHPView.vue:246
msgid "Error Logs"
msgstr "錯誤日誌"
-#: src/views/apps/php/PhpView.vue:41
-msgid "Extension Name"
-msgstr "擴展名稱"
-
-#: src/views/apps/php/PhpView.vue:69
-msgid "Are you sure you want to install %{ name }?"
-msgstr "您確定要安裝 %{ name } 嗎?"
-
-#: src/views/apps/php/PhpView.vue:94
-msgid "Are you sure you want to uninstall %{ name }?"
-msgstr "您確定要卸載 %{ name } 嗎?"
-
-#: src/views/apps/php/PhpView.vue:136
-msgid "Set successfully"
-msgstr "設置成功"
-
-#: src/views/apps/php/PhpView.vue:166
-#: src/views/apps/php/PhpView.vue:172
-msgid "Task submitted, please check progress in background tasks"
-msgstr "任務已提交,請在後台任務中查看進度"
-
-#: src/views/apps/php/PhpView.vue:184
-msgid "Set as CLI Default Version"
-msgstr "設置為 CLI 默認版本"
-
-#: src/views/apps/php/PhpView.vue:188
-msgid "Extension Management"
-msgstr "擴展管理"
-
-#: src/views/apps/php/PhpView.vue:201
-#: src/views/apps/postgresql/IndexView.vue:66
-#: src/views/apps/redis/IndexView.vue:51
-#: src/views/apps/rsync/IndexView.vue:223
-#: src/views/apps/supervisor/IndexView.vue:330
-msgid "Main Configuration"
-msgstr "主要配置"
-
-#: src/views/apps/php/PhpView.vue:205
-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/apps/php/PhpView.vue:219
-msgid "FPM Configuration"
-msgstr "FPM 配置"
-
-#: src/views/apps/php/PhpView.vue:223
-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/apps/php/PhpView.vue:260
-#: src/views/apps/postgresql/IndexView.vue:120
-msgid "Slow Logs"
-msgstr "慢日誌"
+#: src/views/apps/percona/IndexView.vue:88
+#, fuzzy
+msgid ""
+"This modifies the Percona main configuration file. If you do not understand "
+"the meaning of each parameter, please do not modify it randomly!"
+msgstr ""
+"這將修改 Redis 主配置文件。如果您不了解每個參數的含義,請不要隨意修改!"
#: src/views/apps/phpmyadmin/IndexView.vue:57
msgid "Access Information"
@@ -1393,19 +1320,28 @@ msgid "Modify phpMyAdmin access port"
msgstr "修改 phpMyAdmin 訪問連接埠"
#: src/views/apps/phpmyadmin/IndexView.vue:77
-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:43
-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:51
msgid "Registry Configuration"
msgstr "註冊表配置"
#: src/views/apps/podman/IndexView.vue:55
-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:68
@@ -1413,20 +1349,41 @@ msgid "Storage Configuration"
msgstr "儲存配置"
#: src/views/apps/podman/IndexView.vue:72
-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:66
+#: src/views/apps/redis/IndexView.vue:51 src/views/apps/rsync/IndexView.vue:223
+#: src/views/apps/supervisor/IndexView.vue:330
+#: src/views/environment/PHPView.vue:197
+msgid "Main Configuration"
+msgstr "主要配置"
+
#: src/views/apps/postgresql/IndexView.vue:70
-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:83
msgid "User Configuration"
msgstr "用戶配置"
#: src/views/apps/postgresql/IndexView.vue:87
-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:120
+#: src/views/environment/PHPView.vue:256
+msgid "Slow Logs"
+msgstr "慢日誌"
#: src/views/apps/pureftpd/IndexView.vue:32
#: src/views/apps/pureftpd/IndexView.vue:214
@@ -1436,12 +1393,9 @@ msgstr "這將修改 PostgreSQL 用戶配置文件。如果您不了解每個參
#: src/views/database/CreateUserModal.vue:77
#: src/views/database/ServerList.vue:46
#: src/views/database/UpdateServerModal.vue:86
-#: src/views/database/UserList.vue:39
-#: src/views/login/IndexView.vue:133
-#: src/views/setting/CreateModal.vue:40
-#: src/views/setting/SettingUser.vue:19
-#: src/views/ssh/CreateModal.vue:83
-#: src/views/ssh/UpdateModal.vue:89
+#: src/views/database/UserList.vue:39 src/views/login/IndexView.vue:133
+#: src/views/setting/CreateModal.vue:40 src/views/setting/SettingUser.vue:19
+#: src/views/ssh/CreateModal.vue:85 src/views/ssh/UpdateModal.vue:91
msgid "Username"
msgstr "使用者名稱"
@@ -1473,9 +1427,8 @@ msgstr "運行日誌"
#: src/views/apps/pureftpd/IndexView.vue:210
#: src/views/database/CreateDatabaseModal.vue:79
#: src/views/database/CreateUserModal.vue:55
-#: src/views/database/IndexView.vue:42
-#: src/views/setting/CreateModal.vue:32
-#: src/views/setting/IndexView.vue:76
+#: src/views/database/IndexView.vue:42 src/views/setting/CreateModal.vue:32
+#: src/views/setting/IndexView.vue:89
msgid "Create User"
msgstr "建立使用者"
@@ -1489,22 +1442,17 @@ msgstr "輸入使用者名稱"
#: src/views/apps/pureftpd/IndexView.vue:222
#: src/views/apps/pureftpd/IndexView.vue:253
#: src/views/apps/rsync/IndexView.vue:280
-#: src/views/apps/rsync/IndexView.vue:334
-#: src/views/container/ImageView.vue:206
+#: src/views/apps/rsync/IndexView.vue:334 src/views/container/ImageView.vue:206
#: src/views/database/CreateDatabaseModal.vue:102
#: src/views/database/CreateServerModal.vue:102
#: src/views/database/CreateUserModal.vue:85
#: src/views/database/ServerList.vue:55
#: src/views/database/UpdateServerModal.vue:94
-#: src/views/database/UpdateUserModal.vue:55
-#: src/views/database/UserList.vue:49
-#: src/views/login/IndexView.vue:142
-#: src/views/setting/CreateModal.vue:47
-#: src/views/setting/PasswordModal.vue:34
-#: src/views/ssh/CreateModal.vue:77
-#: src/views/ssh/CreateModal.vue:86
-#: src/views/ssh/UpdateModal.vue:83
-#: src/views/ssh/UpdateModal.vue:92
+#: src/views/database/UpdateUserModal.vue:55 src/views/database/UserList.vue:49
+#: src/views/login/IndexView.vue:142 src/views/setting/CreateModal.vue:47
+#: src/views/setting/PasswordModal.vue:34 src/views/ssh/CreateModal.vue:79
+#: src/views/ssh/CreateModal.vue:88 src/views/ssh/UpdateModal.vue:85
+#: src/views/ssh/UpdateModal.vue:94
msgid "Password"
msgstr "密碼"
@@ -1514,11 +1462,9 @@ msgid "It is recommended to use the generator to generate a random password"
msgstr "建議使用生成器生成隨機密碼"
#: src/views/apps/pureftpd/IndexView.vue:233
-#: src/views/apps/rsync/IndexView.vue:46
-#: src/views/apps/rsync/IndexView.vue:264
+#: src/views/apps/rsync/IndexView.vue:46 src/views/apps/rsync/IndexView.vue:264
#: src/views/apps/rsync/IndexView.vue:318
-#: src/views/container/ComposeView.vue:38
-#: src/views/website/CreateModal.vue:210
+#: src/views/container/ComposeView.vue:38 src/views/website/CreateModal.vue:210
#: src/views/website/ListView.vue:41
msgid "Directory"
msgstr "目錄"
@@ -1528,40 +1474,28 @@ msgid "Enter the directory authorized to the user"
msgstr "輸入授權給用戶的目錄"
#: src/views/apps/redis/IndexView.vue:55
-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/rsync/IndexView.vue:53
-#: src/views/apps/rsync/IndexView.vue:272
-#: src/views/apps/rsync/IndexView.vue:326
-#: src/views/database/IndexView.vue:28
-#: src/views/setting/IndexView.vue:70
-#: src/views/task/SystemView.vue:37
-#: src/views/toolbox/ProcessView.vue:37
-msgid "User"
-msgstr "用戶"
-
-#: src/views/apps/rsync/IndexView.vue:60
-#: src/views/apps/rsync/IndexView.vue:288
+#: src/views/apps/rsync/IndexView.vue:60 src/views/apps/rsync/IndexView.vue:288
#: src/views/apps/rsync/IndexView.vue:343
#: src/views/database/CreateDatabaseModal.vue:111
#: src/views/database/CreateServerModal.vue:73
#: src/views/database/ServerList.vue:86
#: src/views/database/UpdateServerModal.vue:65
-#: src/views/database/UserList.vue:80
-#: src/views/ssh/CreateModal.vue:62
-#: src/views/ssh/UpdateModal.vue:68
-#: src/views/toolbox/SystemView.vue:136
+#: src/views/database/UserList.vue:80 src/views/ssh/CreateModal.vue:64
+#: src/views/ssh/UpdateModal.vue:70 src/views/toolbox/SystemView.vue:129
msgid "Host"
msgstr "主機"
-#: src/views/apps/rsync/IndexView.vue:66
-#: src/views/apps/rsync/IndexView.vue:296
+#: src/views/apps/rsync/IndexView.vue:66 src/views/apps/rsync/IndexView.vue:296
#: src/views/apps/rsync/IndexView.vue:351
#: src/views/database/CreateServerModal.vue:111
#: src/views/database/CreateUserModal.vue:116
-#: src/views/database/DatabaseList.vue:56
-#: src/views/database/ServerList.vue:96
+#: src/views/database/DatabaseList.vue:56 src/views/database/ServerList.vue:96
#: src/views/database/UpdateServerModal.vue:103
#: src/views/database/UpdateUserModal.vue:70
#: src/views/database/UserList.vue:113
@@ -1577,7 +1511,7 @@ msgstr "配置"
msgid "Are you sure you want to delete module %{ name }?"
msgstr "您確定要刪除模組 %{ name } 嗎?"
-#: src/views/apps/rsync/IndexView.vue:194
+#: src/views/apps/rsync/IndexView.vue:194 src/views/environment/PHPView.vue:184
msgid "Module Management"
msgstr "模組管理"
@@ -1587,8 +1521,11 @@ msgid "Add Module"
msgstr "添加模組"
#: src/views/apps/rsync/IndexView.vue:227
-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:261
#: src/views/apps/supervisor/IndexView.vue:378
@@ -1624,7 +1561,7 @@ msgstr "輸入註釋"
msgid "Module Configuration"
msgstr "模組配置"
-#: src/views/apps/s3fs/IndexView.vue:24
+#: src/views/apps/s3fs/IndexView.vue:24 src/views/toolbox/DiskView.vue:734
msgid "Mount Path"
msgstr "掛載路徑"
@@ -1632,12 +1569,11 @@ msgstr "掛載路徑"
msgid "Are you sure you want to delete mount %{ path }?"
msgstr "您確定要刪除掛載 %{ path } 嗎?"
-#: src/views/apps/s3fs/IndexView.vue:57
+#: src/views/apps/s3fs/IndexView.vue:57 src/views/toolbox/DiskView.vue:354
msgid "Unmount"
msgstr "卸載"
-#: src/views/apps/s3fs/IndexView.vue:103
-#: src/views/apps/s3fs/IndexView.vue:128
+#: src/views/apps/s3fs/IndexView.vue:103 src/views/apps/s3fs/IndexView.vue:128
#: src/views/apps/s3fs/IndexView.vue:132
msgid "Add Mount"
msgstr "添加掛載"
@@ -1659,7 +1595,9 @@ msgid "Region Endpoint"
msgstr "區域端點"
#: src/views/apps/s3fs/IndexView.vue:166
-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:172
@@ -1696,8 +1634,11 @@ msgid "Add Process"
msgstr "添加進程"
#: src/views/apps/supervisor/IndexView.vue:334
-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:350
msgid "Daemon Logs"
@@ -1712,6 +1653,7 @@ msgid "Please enter absolute path for files in start command"
msgstr "請在啟動命令中輸入文件的絕對路徑"
#: src/views/apps/supervisor/IndexView.vue:389
+#: src/views/toolbox/ProcessView.vue:424
msgid "Working Directory"
msgstr "工作目錄"
@@ -1720,6 +1662,7 @@ msgid "Please enter absolute path for working directory"
msgstr "請輸入工作目錄的絕對路徑"
#: src/views/apps/supervisor/IndexView.vue:397
+#: src/views/toolbox/WebHookView.vue:58
msgid "Run As User"
msgstr "以用戶身份運行"
@@ -1739,8 +1682,7 @@ msgstr "進程配置"
msgid "Filename"
msgstr "檔案名稱"
-#: src/views/backup/ListView.vue:48
-#: src/views/database/ServerList.vue:125
+#: src/views/backup/ListView.vue:48 src/views/database/ServerList.vue:125
#: src/views/database/UserList.vue:142
msgid "Update Date"
msgstr "更新日期"
@@ -1761,27 +1703,22 @@ msgstr "正在恢復……"
msgid "Restored successfully"
msgstr "恢復成功"
-#: src/views/backup/ListView.vue:194
-#: src/views/backup/ListView.vue:224
+#: src/views/backup/ListView.vue:194 src/views/backup/ListView.vue:224
msgid "Create Backup"
msgstr "創建備份"
-#: src/views/backup/ListView.vue:197
-#: src/views/backup/UploadModal.vue:39
+#: src/views/backup/ListView.vue:197 src/views/backup/UploadModal.vue:39
msgid "Upload Backup"
msgstr "上傳備份"
-#: src/views/backup/ListView.vue:236
-#: src/views/backup/ListView.vue:273
+#: src/views/backup/ListView.vue:236 src/views/backup/ListView.vue:273
msgid "Select website"
msgstr "選擇網站"
#: src/views/backup/ListView.vue:239
#: src/views/database/CreateDatabaseModal.vue:71
-#: src/views/database/DatabaseList.vue:34
-#: src/views/task/CreateModal.vue:142
-#: src/views/task/CreateModal.vue:144
-#: src/views/website/CreateModal.vue:174
+#: src/views/database/DatabaseList.vue:34 src/views/task/CreateModal.vue:142
+#: src/views/task/CreateModal.vue:144 src/views/website/CreateModal.vue:174
#: src/views/website/CreateModal.vue:179
msgid "Database Name"
msgstr "數據庫名稱"
@@ -1793,8 +1730,7 @@ msgstr "數據庫名稱"
msgid "Enter database name"
msgstr "輸入數據庫名稱"
-#: src/views/backup/ListView.vue:247
-#: src/views/task/CreateModal.vue:146
+#: src/views/backup/ListView.vue:247 src/views/task/CreateModal.vue:146
#: src/views/task/CreateModal.vue:149
msgid "Save Directory"
msgstr "保存目錄"
@@ -1811,43 +1747,35 @@ msgstr "恢復備份"
msgid "Upload %{ filename } successfully"
msgstr "上傳 %{ filename } 成功"
-#: src/views/backup/UploadModal.vue:51
-#: src/views/file/UploadModal.vue:50
+#: src/views/backup/UploadModal.vue:51 src/views/file/UploadModal.vue:50
msgid "Click or drag files to this area to upload"
msgstr "點擊或將文件拖到此區域上傳"
#: src/views/backup/UploadModal.vue:53
-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:44
-#: src/views/cert/AccountView.vue:243
+#: src/views/cert/AccountView.vue:44 src/views/cert/AccountView.vue:243
#: src/views/cert/CreateAccountModal.vue:100
-#: src/views/setting/CreateModal.vue:56
-#: src/views/setting/SettingUser.vue:36
+#: src/views/setting/CreateModal.vue:56 src/views/setting/SettingUser.vue:36
msgid "Email"
msgstr "電子郵件"
-#: src/views/cert/AccountView.vue:72
-#: src/views/cert/AccountView.vue:235
-#: src/views/cert/CertView.vue:457
-#: src/views/cert/CreateAccountModal.vue:92
+#: src/views/cert/AccountView.vue:72 src/views/cert/AccountView.vue:235
+#: src/views/cert/CertView.vue:457 src/views/cert/CreateAccountModal.vue:92
#: src/views/cert/CreateCertModal.vue:82
msgid "Key Type"
msgstr "密鑰類型"
-#: src/views/cert/AccountView.vue:101
-#: src/views/cert/CertView.vue:287
-#: src/views/cert/DnsView.vue:85
-#: src/views/database/ServerList.vue:182
-#: src/views/database/UserList.vue:168
-#: src/views/file/PermissionModal.vue:123
+#: src/views/cert/AccountView.vue:101 src/views/cert/CertView.vue:287
+#: src/views/cert/DnsView.vue:85 src/views/database/ServerList.vue:182
+#: src/views/database/UserList.vue:168 src/views/file/PermissionModal.vue:123
#: src/views/setting/TokenModal.vue:69
msgid "Modify"
msgstr "修改"
-#: src/views/cert/AccountView.vue:109
-#: src/views/cert/CertView.vue:296
+#: src/views/cert/AccountView.vue:109 src/views/cert/CertView.vue:296
#: src/views/cert/DnsView.vue:94
msgid "Deletion successful"
msgstr "刪除成功"
@@ -1856,15 +1784,12 @@ msgstr "刪除成功"
msgid "Are you sure you want to delete the account?"
msgstr "您確定要刪除該賬戶嗎?"
-#: src/views/cert/AccountView.vue:150
-#: src/views/cert/CreateAccountModal.vue:39
+#: src/views/cert/AccountView.vue:150 src/views/cert/CreateAccountModal.vue:39
msgid "Registering account with CA, please wait patiently"
msgstr "正在向 CA 註冊賬戶,請耐心等待"
-#: src/views/cert/AccountView.vue:162
-#: src/views/cert/CertView.vue:347
-#: src/views/cert/CertView.vue:364
-#: src/views/cert/DnsView.vue:139
+#: src/views/cert/AccountView.vue:162 src/views/cert/CertView.vue:347
+#: src/views/cert/CertView.vue:364 src/views/cert/DnsView.vue:139
#: src/views/container/ComposeView.vue:272
msgid "Update successful"
msgstr "更新成功"
@@ -1873,76 +1798,63 @@ msgstr "更新成功"
msgid "Modify Account"
msgstr "修改帳戶"
-#: src/views/cert/AccountView.vue:215
-#: src/views/cert/CreateAccountModal.vue:72
-msgid "Google and SSL.com require obtaining KID and HMAC from their official websites first"
+#: src/views/cert/AccountView.vue:215 src/views/cert/CreateAccountModal.vue:72
+msgid ""
+"Google and SSL.com require obtaining KID and HMAC from their official "
+"websites first"
msgstr "Google 和 SSL.com 需要先從其官網獲取 KID 和 HMAC"
-#: src/views/cert/AccountView.vue:221
-#: src/views/cert/CreateAccountModal.vue:78
-msgid "Google is not accessible in mainland China, other CAs depend on network conditions, recommend using Let's Encrypt"
-msgstr "Google 在中國大陸無法訪問,其他 CA 取決於網絡條件,建議使用 Let's Encrypt"
+#: src/views/cert/AccountView.vue:221 src/views/cert/CreateAccountModal.vue:78
+msgid ""
+"Google is not accessible in mainland China, other CAs depend on network "
+"conditions, recommend using Let's Encrypt"
+msgstr ""
+"Google 在中國大陸無法訪問,其他 CA 取決於網絡條件,建議使用 Let's Encrypt"
-#: src/views/cert/AccountView.vue:227
-#: src/views/cert/CreateAccountModal.vue:84
+#: src/views/cert/AccountView.vue:227 src/views/cert/CreateAccountModal.vue:84
msgid "CA"
msgstr "CA"
-#: src/views/cert/AccountView.vue:230
-#: src/views/cert/CreateAccountModal.vue:87
+#: src/views/cert/AccountView.vue:230 src/views/cert/CreateAccountModal.vue:87
msgid "Select CA"
msgstr "選擇 CA"
-#: src/views/cert/AccountView.vue:238
-#: src/views/cert/CertView.vue:460
+#: src/views/cert/AccountView.vue:238 src/views/cert/CertView.vue:460
#: src/views/cert/CreateAccountModal.vue:95
#: src/views/cert/CreateCertModal.vue:85
msgid "Select key type"
msgstr "選擇密鑰類型"
-#: src/views/cert/AccountView.vue:248
-#: src/views/cert/CreateAccountModal.vue:105
+#: src/views/cert/AccountView.vue:248 src/views/cert/CreateAccountModal.vue:105
msgid "Enter email address"
msgstr "輸入電子郵件地址"
-#: src/views/cert/AccountView.vue:256
-#: src/views/cert/CreateAccountModal.vue:113
+#: src/views/cert/AccountView.vue:256 src/views/cert/CreateAccountModal.vue:113
msgid "Enter KID"
msgstr "輸入 KID"
-#: src/views/cert/AccountView.vue:264
-#: src/views/cert/CreateAccountModal.vue:121
+#: src/views/cert/AccountView.vue:264 src/views/cert/CreateAccountModal.vue:121
msgid "Enter HMAC"
msgstr "輸入 HMAC"
-#: src/views/cert/CertView.vue:63
-#: src/views/cert/CertView.vue:449
-#: src/views/cert/CreateCertModal.vue:74
-#: src/views/cert/ObtainModal.vue:57
-#: src/views/website/CreateModal.vue:118
-#: src/views/website/EditView.vue:189
+#: src/views/cert/CertView.vue:63 src/views/cert/CertView.vue:449
+#: src/views/cert/CreateCertModal.vue:74 src/views/cert/ObtainModal.vue:57
+#: src/views/website/CreateModal.vue:118 src/views/website/EditView.vue:189
msgid "Domain"
msgstr "域名"
-#: src/views/cert/CertView.vue:69
-#: src/views/cert/CertView.vue:123
-#: src/views/cert/CertView.vue:134
-#: src/views/cert/CertView.vue:153
+#: src/views/cert/CertView.vue:69 src/views/cert/CertView.vue:123
+#: src/views/cert/CertView.vue:134 src/views/cert/CertView.vue:153
#: src/views/container/ContainerCreate.vue:55
-#: src/views/database/ServerList.vue:51
-#: src/views/database/ServerList.vue:66
-#: src/views/database/UserList.vue:45
-#: src/views/database/UserList.vue:85
-#: src/views/firewall/ForwardView.vue:25
-#: src/views/firewall/IpRuleView.vue:25
-#: src/views/firewall/IpRuleView.vue:42
-#: src/views/firewall/RuleView.vue:25
+#: src/views/database/ServerList.vue:51 src/views/database/ServerList.vue:66
+#: src/views/database/UserList.vue:45 src/views/database/UserList.vue:85
+#: src/views/firewall/ForwardView.vue:25 src/views/firewall/IpRuleView.vue:25
+#: src/views/firewall/IpRuleView.vue:42 src/views/firewall/RuleView.vue:25
#: src/views/firewall/RuleView.vue:42
msgid "None"
msgstr "無"
-#: src/views/cert/CertView.vue:108
-#: src/views/file/ToolBar.vue:221
+#: src/views/cert/CertView.vue:108 src/views/file/ToolBar.vue:221
#: src/views/file/UploadModal.vue:38
msgid "Upload"
msgstr "上傳"
@@ -1951,15 +1863,12 @@ msgstr "上傳"
msgid "Associated Account"
msgstr "關聯帳戶"
-#: src/views/cert/CertView.vue:129
-#: src/views/website/EditView.vue:277
+#: src/views/cert/CertView.vue:129 src/views/website/EditView.vue:277
msgid "Issuer"
msgstr "頒發者"
-#: src/views/cert/CertView.vue:138
-#: src/views/setting/TokenModal.vue:43
-#: src/views/setting/TokenModal.vue:256
-#: src/views/setting/TokenModal.vue:289
+#: src/views/cert/CertView.vue:138 src/views/setting/TokenModal.vue:43
+#: src/views/setting/TokenModal.vue:256 src/views/setting/TokenModal.vue:289
msgid "Expiration Time"
msgstr "過期時間"
@@ -1967,8 +1876,7 @@ msgstr "過期時間"
msgid "Auto Renew"
msgstr "自動續期"
-#: src/views/cert/CertView.vue:199
-#: src/views/cert/ObtainModal.vue:78
+#: src/views/cert/CertView.vue:199 src/views/cert/ObtainModal.vue:78
msgid "Issue"
msgstr "簽發"
@@ -1976,10 +1884,8 @@ msgstr "簽發"
msgid "Deploy"
msgstr "部署"
-#: src/views/cert/CertView.vue:230
-#: src/views/cert/ObtainModal.vue:24
-#: src/views/cert/ObtainModal.vue:81
-#: src/views/website/EditView.vue:132
+#: src/views/cert/CertView.vue:230 src/views/cert/ObtainModal.vue:24
+#: src/views/cert/ObtainModal.vue:81 src/views/website/EditView.vue:132
msgid "Please wait..."
msgstr "請稍候……"
@@ -2004,58 +1910,52 @@ msgid "Modify Certificate"
msgstr "修改證書"
#: src/views/cert/CertView.vue:443
-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:468
-#: src/views/cert/CreateCertModal.vue:93
+#: src/views/cert/CertView.vue:468 src/views/cert/CreateCertModal.vue:93
msgid "Select website for certificate deployment"
msgstr "選擇要部署憑證的網站"
-#: src/views/cert/CertView.vue:476
-#: src/views/cert/CreateCertModal.vue:98
+#: src/views/cert/CertView.vue:476 src/views/cert/CreateCertModal.vue:98
#: src/views/cert/IndexView.vue:97
msgid "Account"
msgstr "帳戶"
-#: src/views/cert/CertView.vue:480
-#: src/views/cert/CreateCertModal.vue:101
+#: src/views/cert/CertView.vue:480 src/views/cert/CreateCertModal.vue:101
msgid "Select account for certificate issuance"
msgstr "選擇用於憑證頒發的帳戶"
-#: src/views/cert/CertView.vue:485
-#: src/views/cert/CreateCertModal.vue:106
-#: src/views/cert/CreateDnsModal.vue:59
-#: src/views/cert/DnsView.vue:196
+#: src/views/cert/CertView.vue:485 src/views/cert/CreateCertModal.vue:106
+#: src/views/cert/CreateDnsModal.vue:59 src/views/cert/DnsView.vue:196
#: src/views/cert/IndexView.vue:98
msgid "DNS"
msgstr "DNS"
-#: src/views/cert/CertView.vue:488
-#: src/views/cert/CreateCertModal.vue:109
+#: src/views/cert/CertView.vue:488 src/views/cert/CreateCertModal.vue:109
msgid "Select DNS for certificate issuance"
msgstr "選擇用於證書頒發的 DNS"
-#: src/views/cert/CertView.vue:501
-#: src/views/cert/UploadCertModal.vue:42
+#: src/views/cert/CertView.vue:501 src/views/cert/UploadCertModal.vue:42
#: src/views/website/EditView.vue:330
msgid "Enter the content of the PEM certificate file"
msgstr "輸入 PEM 證書文件的內容"
-#: src/views/cert/CertView.vue:508
-#: src/views/cert/CertView.vue:576
-#: src/views/cert/UploadCertModal.vue:46
-#: src/views/setting/SettingSafe.vue:199
-#: src/views/ssh/CreateModal.vue:78
-#: src/views/ssh/CreateModal.vue:89
-#: src/views/ssh/UpdateModal.vue:84
-#: src/views/ssh/UpdateModal.vue:95
+#: src/views/cert/CertView.vue:508 src/views/cert/CertView.vue:576
+#: src/views/cert/UploadCertModal.vue:46 src/views/setting/SettingSafe.vue:255
+#: src/views/ssh/CreateModal.vue:80 src/views/ssh/CreateModal.vue:91
+#: src/views/ssh/UpdateModal.vue:86 src/views/ssh/UpdateModal.vue:97
#: src/views/website/EditView.vue:334
msgid "Private Key"
msgstr "私鑰"
-#: src/views/cert/CertView.vue:513
-#: src/views/cert/UploadCertModal.vue:50
+#: src/views/cert/CertView.vue:513 src/views/cert/UploadCertModal.vue:50
#: src/views/website/EditView.vue:338
msgid "Enter the content of the KEY private key file"
msgstr "輸入 KEY 私鑰文件的內容"
@@ -2065,7 +1965,9 @@ msgid "Deployment Script"
msgstr "部署腳本"
#: src/views/cert/CertView.vue:526
-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:540
@@ -2080,22 +1982,24 @@ msgstr "選擇要部署證書的網站"
msgid "View Certificate"
msgstr "查看證書"
-#: src/views/cert/CreateAccountModal.vue:64
-#: src/views/cert/IndexView.vue:110
+#: src/views/cert/CreateAccountModal.vue:64 src/views/cert/IndexView.vue:110
msgid "Create Account"
msgstr "創建賬戶"
-#: src/views/cert/CreateCertModal.vue:59
-#: src/views/cert/IndexView.vue:107
+#: src/views/cert/CreateCertModal.vue:59 src/views/cert/IndexView.vue:107
msgid "Create Certificate"
msgstr "建立憑證"
#: src/views/cert/CreateCertModal.vue:68
-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:44
-#: src/views/cert/IndexView.vue:113
+#: src/views/cert/CreateDnsModal.vue:44 src/views/cert/IndexView.vue:113
msgid "Create DNS"
msgstr "創建 DNS"
@@ -2107,88 +2011,71 @@ msgstr "備註名稱"
msgid "Enter comment name"
msgstr "輸入備註名稱"
-#: src/views/cert/CreateDnsModal.vue:62
-#: src/views/cert/DnsView.vue:199
+#: src/views/cert/CreateDnsModal.vue:62 src/views/cert/DnsView.vue:199
msgid "Select DNS"
msgstr "選擇 DNS"
-#: src/views/cert/CreateDnsModal.vue:71
-#: src/views/cert/DnsView.vue:208
+#: src/views/cert/CreateDnsModal.vue:71 src/views/cert/DnsView.vue:208
msgid "Enter Aliyun Access Key"
msgstr "輸入阿里雲 Access Key"
-#: src/views/cert/CreateDnsModal.vue:78
-#: src/views/cert/DnsView.vue:215
+#: src/views/cert/CreateDnsModal.vue:78 src/views/cert/DnsView.vue:215
msgid "Enter Aliyun Secret Key"
msgstr "輸入阿里雲 Secret Key"
-#: src/views/cert/CreateDnsModal.vue:85
-#: src/views/cert/DnsView.vue:222
+#: src/views/cert/CreateDnsModal.vue:85 src/views/cert/DnsView.vue:222
msgid "Enter Tencent Cloud SecretId"
msgstr "輸入騰訊雲 SecretId"
-#: src/views/cert/CreateDnsModal.vue:92
-#: src/views/cert/DnsView.vue:229
+#: src/views/cert/CreateDnsModal.vue:92 src/views/cert/DnsView.vue:229
msgid "Enter Tencent Cloud SecretKey"
msgstr "輸入騰訊雲 SecretKey"
-#: src/views/cert/CreateDnsModal.vue:99
-#: src/views/cert/DnsView.vue:236
+#: src/views/cert/CreateDnsModal.vue:99 src/views/cert/DnsView.vue:236
msgid "Enter Huawei Cloud AccessKeyId"
msgstr "輸入華為雲 AccessKeyId"
-#: src/views/cert/CreateDnsModal.vue:106
-#: src/views/cert/DnsView.vue:243
+#: src/views/cert/CreateDnsModal.vue:106 src/views/cert/DnsView.vue:243
msgid "Enter Huawei Cloud SecretAccessKey"
msgstr "輸入華為雲 SecretAccessKey"
-#: src/views/cert/CreateDnsModal.vue:113
-#: src/views/cert/DnsView.vue:250
+#: src/views/cert/CreateDnsModal.vue:113 src/views/cert/DnsView.vue:250
msgid "Enter West.cn Username"
msgstr "輸入西部數碼用戶名"
-#: src/views/cert/CreateDnsModal.vue:120
-#: src/views/cert/DnsView.vue:257
+#: src/views/cert/CreateDnsModal.vue:120 src/views/cert/DnsView.vue:257
msgid "Enter West.cn API Password"
msgstr "輸入西部數碼 API 密碼"
-#: src/views/cert/CreateDnsModal.vue:127
-#: src/views/cert/DnsView.vue:264
+#: src/views/cert/CreateDnsModal.vue:127 src/views/cert/DnsView.vue:264
msgid "Enter Cloudflare API Key"
msgstr "輸入 Cloudflare API 金鑰"
-#: src/views/cert/CreateDnsModal.vue:134
-#: src/views/cert/DnsView.vue:271
+#: src/views/cert/CreateDnsModal.vue:134 src/views/cert/DnsView.vue:271
msgid "Enter G-Core API Key"
msgstr "輸入 G-Core API 金鑰"
-#: src/views/cert/CreateDnsModal.vue:141
-#: src/views/cert/DnsView.vue:278
+#: src/views/cert/CreateDnsModal.vue:141 src/views/cert/DnsView.vue:278
msgid "Enter Porkbun API Key"
msgstr "輸入 Porkbun API 金鑰"
-#: src/views/cert/CreateDnsModal.vue:148
-#: src/views/cert/DnsView.vue:285
+#: src/views/cert/CreateDnsModal.vue:148 src/views/cert/DnsView.vue:285
msgid "Enter Porkbun Secret Key"
msgstr "輸入 Porkbun 密鑰"
-#: src/views/cert/CreateDnsModal.vue:155
-#: src/views/cert/DnsView.vue:292
+#: src/views/cert/CreateDnsModal.vue:155 src/views/cert/DnsView.vue:292
msgid "Enter NameSilo API Token"
msgstr "輸入 NameSilo API 令牌"
-#: src/views/cert/CreateDnsModal.vue:162
-#: src/views/cert/DnsView.vue:299
+#: src/views/cert/CreateDnsModal.vue:162 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:169
-#: src/views/cert/DnsView.vue:306
+#: src/views/cert/CreateDnsModal.vue:169 src/views/cert/DnsView.vue:306
msgid "Enter ClouDNS Auth Password"
msgstr "輸入 ClouDNS 認證密碼"
-#: src/views/cert/DnsView.vue:31
-#: src/views/cert/DnsView.vue:189
+#: src/views/cert/DnsView.vue:31 src/views/cert/DnsView.vue:189
msgid "Note Name"
msgstr "備註名稱"
@@ -2204,8 +2091,7 @@ msgstr "修改 DNS"
msgid "Enter note name"
msgstr "輸入備註名稱"
-#: src/views/cert/IndexView.vue:104
-#: src/views/cert/UploadCertModal.vue:30
+#: src/views/cert/IndexView.vue:104 src/views/cert/UploadCertModal.vue:30
msgid "Upload Certificate"
msgstr "上傳證書"
@@ -2221,14 +2107,15 @@ msgstr "手動"
msgid "Self-signed"
msgstr "自簽名"
-#: src/views/cert/ObtainModal.vue:33
-#: src/views/cert/ObtainModal.vue:89
+#: src/views/cert/ObtainModal.vue:33 src/views/cert/ObtainModal.vue:89
#: src/views/cert/ObtainModal.vue:107
msgid "Issuance successful"
msgstr "簽發成功"
#: src/views/cert/ObtainModal.vue:42
-msgid "Please set up DNS resolution for the domain first, then continue with the issuance"
+msgid ""
+"Please set up DNS resolution for the domain first, then continue with the "
+"issuance"
msgstr "請先為域名設置 DNS 解析,然後繼續簽發"
#: src/views/cert/ObtainModal.vue:48
@@ -2251,22 +2138,17 @@ msgstr "簽發證書"
msgid "Issuance Mode"
msgstr "簽發模式"
-#: src/views/container/ComposeView.vue:65
-#: src/views/container/ImageView.vue:60
+#: src/views/container/ComposeView.vue:65 src/views/container/ImageView.vue:60
#: src/views/container/NetworkView.vue:100
-#: src/views/container/VolumeView.vue:54
-#: src/views/setting/SettingUser.vue:76
-#: src/views/setting/TokenModal.vue:34
-#: src/views/task/CronView.vue:79
-#: src/views/task/TaskView.vue:37
+#: src/views/container/VolumeView.vue:54 src/views/setting/SettingUser.vue:76
+#: src/views/setting/TokenModal.vue:34 src/views/task/CronView.vue:79
+#: src/views/task/TaskView.vue:37 src/views/toolbox/WebHookView.vue:120
msgid "Creation Time"
msgstr "創建時間"
-#: src/views/container/ComposeView.vue:96
-#: src/views/file/ListTable.vue:70
-#: src/views/file/ListTable.vue:222
-#: src/views/ssh/IndexView.vue:70
-#: src/views/task/CronView.vue:128
+#: src/views/container/ComposeView.vue:96 src/views/file/ListTable.vue:70
+#: src/views/file/ListTable.vue:222 src/views/ssh/IndexView.vue:70
+#: src/views/task/CronView.vue:128 src/views/toolbox/WebHookView.vue:157
#: src/views/website/ListView.vue:138
msgid "Edit"
msgstr "編輯"
@@ -2318,8 +2200,7 @@ msgid "Compose Name"
msgstr "編排名稱"
#: src/views/container/ComposeView.vue:331
-#: src/views/container/ComposeView.vue:361
-#: src/views/container/IndexView.vue:23
+#: src/views/container/ComposeView.vue:361 src/views/container/IndexView.vue:23
msgid "Compose"
msgstr "編排"
@@ -2412,14 +2293,13 @@ msgstr "可選"
msgid "Add"
msgstr "添加"
-#: src/views/container/ContainerCreate.vue:245
-#: src/views/home/IndexView.vue:142
-#: src/views/home/IndexView.vue:803
-#: src/views/monitor/IndexView.vue:286
+#: src/views/container/ContainerCreate.vue:245 src/views/home/IndexView.vue:144
+#: src/views/home/IndexView.vue:805 src/views/monitor/IndexView.vue:286
msgid "Network"
msgstr "網絡"
#: src/views/container/ContainerCreate.vue:248
+#: src/views/toolbox/DiskView.vue:752
msgid "Mount"
msgstr "掛載"
@@ -2431,12 +2311,9 @@ msgstr "主機目錄"
msgid "Container Directory"
msgstr "容器目錄"
-#: src/views/container/ContainerCreate.vue:255
-#: src/views/file/ListTable.vue:75
-#: src/views/file/ListTable.vue:147
-#: src/views/file/ListTable.vue:302
-#: src/views/file/PermissionModal.vue:113
-#: src/views/file/ToolBar.vue:235
+#: src/views/container/ContainerCreate.vue:255 src/views/file/ListTable.vue:75
+#: src/views/file/ListTable.vue:147 src/views/file/ListTable.vue:302
+#: src/views/file/PermissionModal.vue:113 src/views/file/ToolBar.vue:235
msgid "Permission"
msgstr "權限"
@@ -2458,14 +2335,10 @@ msgstr "命令"
msgid "Entrypoint"
msgstr "進入點"
-#: src/views/container/ContainerCreate.vue:307
-#: src/views/home/IndexView.vue:538
-#: src/views/monitor/IndexView.vue:205
-#: src/views/monitor/IndexView.vue:216
-#: src/views/monitor/IndexView.vue:238
-#: src/views/task/SystemView.vue:78
-#: src/views/toolbox/BenchmarkView.vue:177
-#: src/views/toolbox/ProcessView.vue:78
+#: src/views/container/ContainerCreate.vue:307 src/views/home/IndexView.vue:540
+#: src/views/monitor/IndexView.vue:205 src/views/monitor/IndexView.vue:216
+#: src/views/monitor/IndexView.vue:238 src/views/toolbox/BenchmarkView.vue:177
+#: src/views/toolbox/ProcessView.vue:153
msgid "Memory"
msgstr "記憶體"
@@ -2521,8 +2394,7 @@ msgid "Ports (Host->Container)"
msgstr "端口(主機->容器)"
#: src/views/container/ContainerView.vue:121
-#: src/views/container/ContainerView.vue:456
-#: src/views/file/ListTable.vue:86
+#: src/views/container/ContainerView.vue:456 src/views/file/ListTable.vue:86
#: src/views/file/ListTable.vue:266
msgid "Rename"
msgstr "重新命名"
@@ -2542,8 +2414,7 @@ msgstr "暫停"
msgid "Resume"
msgstr "恢復"
-#: src/views/container/ContainerView.vue:199
-#: src/views/file/ListTable.vue:366
+#: src/views/container/ContainerView.vue:199 src/views/file/ListTable.vue:366
msgid "More"
msgstr "更多"
@@ -2610,8 +2481,7 @@ msgstr "請選擇要恢復的容器"
msgid "Cleanup Containers"
msgstr "清理容器"
-#: src/views/container/ContainerView.vue:463
-#: src/views/file/ListTable.vue:742
+#: src/views/container/ContainerView.vue:463 src/views/file/ListTable.vue:742
msgid "New Name"
msgstr "新名稱"
@@ -2623,12 +2493,9 @@ msgstr "輸入新名稱"
msgid "Container Count"
msgstr "容器數量"
-#: src/views/container/ImageView.vue:84
-#: src/views/container/NetworkView.vue:124
-#: src/views/container/VolumeView.vue:78
-#: src/views/firewall/ForwardView.vue:92
-#: src/views/firewall/IpRuleView.vue:134
-#: src/views/firewall/RuleView.vue:171
+#: src/views/container/ImageView.vue:84 src/views/container/NetworkView.vue:124
+#: src/views/container/VolumeView.vue:78 src/views/firewall/ForwardView.vue:92
+#: src/views/firewall/IpRuleView.vue:134 src/views/firewall/RuleView.vue:171
#: src/views/task/TaskView.vue:86
msgid "Are you sure you want to delete?"
msgstr "您確定要刪除嗎?"
@@ -2637,8 +2504,7 @@ msgstr "您確定要刪除嗎?"
msgid "Pull successful"
msgstr "拉取成功"
-#: src/views/container/ImageView.vue:150
-#: src/views/container/ImageView.vue:180
+#: src/views/container/ImageView.vue:150 src/views/container/ImageView.vue:180
msgid "Pull Image"
msgstr "拉取鏡像"
@@ -2683,13 +2549,11 @@ msgstr "卷"
#: src/views/container/NetworkView.vue:52
#: src/views/container/NetworkView.vue:232
-#: src/views/container/VolumeView.vue:33
-#: src/views/container/VolumeView.vue:186
+#: src/views/container/VolumeView.vue:33 src/views/container/VolumeView.vue:186
msgid "Driver"
msgstr "驅動程式"
-#: src/views/container/NetworkView.vue:59
-#: src/views/container/VolumeView.vue:40
+#: src/views/container/NetworkView.vue:59 src/views/container/VolumeView.vue:40
msgid "Scope"
msgstr "範圍"
@@ -2745,7 +2609,7 @@ msgid "2408:400e::/64"
msgstr "2408:400e::/64"
#: src/views/container/NetworkView.vue:303
-#: src/views/container/VolumeView.vue:203
+#: src/views/container/VolumeView.vue:203 src/views/toolbox/DiskView.vue:829
msgid "Options"
msgstr "選項"
@@ -2759,8 +2623,8 @@ msgstr "選項名稱"
msgid "Option Value"
msgstr "選項值"
-#: src/views/container/VolumeView.vue:47
-#: src/views/home/IndexView.vue:653
+#: src/views/container/VolumeView.vue:47 src/views/home/IndexView.vue:655
+#: src/views/toolbox/DiskView.vue:324 src/views/toolbox/DiskView.vue:827
msgid "Mount Point"
msgstr "掛載點"
@@ -2799,8 +2663,7 @@ msgstr "創建數據庫"
#: src/views/database/CreateDatabaseModal.vue:63
#: src/views/database/CreateUserModal.vue:69
-#: src/views/database/DatabaseList.vue:41
-#: src/views/database/IndexView.vue:29
+#: src/views/database/DatabaseList.vue:41 src/views/database/IndexView.vue:29
#: src/views/database/UserList.vue:90
msgid "Server"
msgstr "伺服器"
@@ -2854,12 +2717,9 @@ msgstr "輸入數據庫伺服器主機"
#: src/views/database/CreateServerModal.vue:84
#: src/views/database/UpdateServerModal.vue:76
-#: src/views/firewall/ForwardView.vue:31
-#: src/views/firewall/RuleView.vue:48
-#: src/views/setting/SettingBase.vue:49
-#: src/views/ssh/CreateModal.vue:68
-#: src/views/ssh/UpdateModal.vue:74
-#: src/views/website/CreateModal.vue:129
+#: src/views/firewall/ForwardView.vue:31 src/views/firewall/RuleView.vue:48
+#: src/views/setting/SettingBase.vue:42 src/views/ssh/CreateModal.vue:70
+#: src/views/ssh/UpdateModal.vue:76 src/views/website/CreateModal.vue:129
msgid "Port"
msgstr "端口"
@@ -2885,7 +2745,8 @@ msgstr "輸入數據庫伺服器備註"
#: src/views/database/CreateUserModal.vue:65
#: src/views/database/UpdateUserModal.vue:51
-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:94
@@ -2893,8 +2754,7 @@ msgid "Host (MySQL only)"
msgstr "主機(僅限MySQL)"
#: src/views/database/CreateUserModal.vue:110
-#: src/views/database/UpdateUserModal.vue:64
-#: src/views/database/UserList.vue:98
+#: src/views/database/UpdateUserModal.vue:64 src/views/database/UserList.vue:98
msgid "Privileges"
msgstr "權限"
@@ -2911,41 +2771,35 @@ msgstr "編碼"
msgid "Are you sure you want to delete this database?"
msgstr "您確定要刪除這個數據庫嗎?"
-#: src/views/database/ServerList.vue:75
-#: src/views/database/UserList.vue:69
-#: src/views/file/ListTable.vue:519
-#: src/views/file/ListTable.vue:539
-#: src/views/file/ToolBar.vue:145
-#: src/views/file/ToolBar.vue:165
+#: src/views/database/ServerList.vue:75 src/views/database/UserList.vue:69
+#: src/views/file/ListTable.vue:519 src/views/file/ListTable.vue:539
+#: src/views/file/ToolBar.vue:145 src/views/file/ToolBar.vue:165
#: src/views/setting/TokenModal.vue:163
msgid "Copied successfully"
msgstr "複製成功"
-#: src/views/database/ServerList.vue:79
-#: src/views/database/UserList.vue:73
-#: src/views/file/ListTable.vue:73
-#: src/views/file/ListTable.vue:300
+#: src/views/database/ServerList.vue:79 src/views/database/UserList.vue:73
+#: src/views/file/ListTable.vue:73 src/views/file/ListTable.vue:300
#: src/views/file/ToolBar.vue:232
msgid "Copy"
msgstr "複製"
-#: src/views/database/ServerList.vue:120
-#: src/views/database/UserList.vue:137
+#: src/views/database/ServerList.vue:120 src/views/database/UserList.vue:137
msgid "Valid"
msgstr "有效"
-#: src/views/database/ServerList.vue:120
-#: src/views/database/UserList.vue:137
+#: src/views/database/ServerList.vue:120 src/views/database/UserList.vue:137
msgid "Invalid"
msgstr "無效"
-#: src/views/database/ServerList.vue:146
-#: src/views/toolbox/SystemView.vue:85
+#: src/views/database/ServerList.vue:146 src/views/toolbox/SystemView.vue:78
msgid "Synchronized successfully"
msgstr "同步成功"
#: src/views/database/ServerList.vue:152
-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:164
@@ -2953,7 +2807,9 @@ msgid "Sync"
msgstr "同步"
#: src/views/database/ServerList.vue:192
-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:203
@@ -2976,6 +2832,51 @@ msgstr "未保存"
msgid "Are you sure you want to delete the user?"
msgstr "您確定要刪除該用戶嗎?"
+#: src/views/environment/PHPView.vue:36
+#, fuzzy
+msgid "Module Name"
+msgstr "卷名稱"
+
+#: src/views/environment/PHPView.vue:64
+msgid "Are you sure you want to install %{ name }?"
+msgstr "您確定要安裝 %{ name } 嗎?"
+
+#: src/views/environment/PHPView.vue:89
+msgid "Are you sure you want to uninstall %{ name }?"
+msgstr "您確定要卸載 %{ name } 嗎?"
+
+#: src/views/environment/PHPView.vue:131
+msgid "Set successfully"
+msgstr "設置成功"
+
+#: src/views/environment/PHPView.vue:161 src/views/environment/PHPView.vue:167
+msgid "Task submitted, please check progress in background tasks"
+msgstr "任務已提交,請在後台任務中查看進度"
+
+#: src/views/environment/PHPView.vue:180
+msgid "Set as CLI Default Version"
+msgstr "設置為 CLI 默認版本"
+
+#: src/views/environment/PHPView.vue:201
+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:215
+msgid "FPM Configuration"
+msgstr "FPM 配置"
+
+#: src/views/environment/PHPView.vue:219
+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/error-page/NotFound.vue:11
msgid "Sorry, the page you visited does not exist."
msgstr "抱歉,您訪問的頁面不存在。"
@@ -2992,12 +2893,9 @@ msgstr "壓縮中……"
msgid "Compressed successfully"
msgstr "壓縮成功"
-#: src/views/file/CompressModal.vue:73
-#: src/views/file/CompressModal.vue:105
-#: src/views/file/ListTable.vue:77
-#: src/views/file/ListTable.vue:247
-#: src/views/file/ListTable.vue:303
-#: src/views/file/ToolBar.vue:234
+#: src/views/file/CompressModal.vue:73 src/views/file/CompressModal.vue:105
+#: src/views/file/ListTable.vue:77 src/views/file/ListTable.vue:247
+#: src/views/file/ListTable.vue:303 src/views/file/ToolBar.vue:234
msgid "Compress"
msgstr "壓縮"
@@ -3017,39 +2915,34 @@ msgstr "格式"
msgid "Edit - %{ file }"
msgstr "編輯 - %{ file }"
-#: src/views/file/EditModal.vue:31
+#: src/views/file/EditModal.vue:31 src/views/toolbox/ProcessView.vue:327
msgid "Refresh"
msgstr "重新整理"
-#: src/views/file/ListTable.vue:67
-#: src/views/file/ListTable.vue:224
+#: src/views/file/ListTable.vue:67 src/views/file/ListTable.vue:224
msgid "Open"
msgstr "開啟"
-#: src/views/file/ListTable.vue:69
-#: src/views/file/ListTable.vue:222
+#: src/views/file/ListTable.vue:69 src/views/file/ListTable.vue:222
msgid "Preview"
msgstr "預覽"
-#: src/views/file/ListTable.vue:74
-#: src/views/file/ListTable.vue:301
+#: src/views/file/ListTable.vue:74 src/views/file/ListTable.vue:301
#: src/views/file/ToolBar.vue:233
msgid "Move"
msgstr "移動"
-#: src/views/file/ListTable.vue:77
-#: src/views/file/ListTable.vue:249
+#: src/views/file/ListTable.vue:77 src/views/file/ListTable.vue:249
+#: src/views/toolbox/SshView.vue:336
msgid "Download"
msgstr "下載"
-#: src/views/file/ListTable.vue:81
-#: src/views/file/ListTable.vue:305
+#: src/views/file/ListTable.vue:81 src/views/file/ListTable.vue:305
#: src/views/file/ListTable.vue:764
msgid "Uncompress"
msgstr "解壓縮"
-#: src/views/file/ListTable.vue:91
-#: src/views/file/ToolBar.vue:229
+#: src/views/file/ListTable.vue:91 src/views/file/ToolBar.vue:229
msgid "Paste"
msgstr "貼上"
@@ -3057,17 +2950,13 @@ msgstr "貼上"
msgid "Are you sure you want to delete %{ name }?"
msgstr "您確定要刪除 %{ name } 嗎?"
-#: src/views/file/ListTable.vue:322
-#: src/views/file/ListTable.vue:337
-#: src/views/file/ListTable.vue:578
-#: src/views/file/ListTable.vue:591
-#: src/views/file/ToolBar.vue:77
-#: src/views/file/ToolBar.vue:94
+#: src/views/file/ListTable.vue:322 src/views/file/ListTable.vue:337
+#: src/views/file/ListTable.vue:578 src/views/file/ListTable.vue:591
+#: src/views/file/ToolBar.vue:77 src/views/file/ToolBar.vue:94
msgid "Marked successfully, please navigate to the destination path to paste"
msgstr "標記成功,請導航到目標路徑進行粘貼"
-#: src/views/file/ListTable.vue:415
-#: src/views/file/ListTable.vue:502
+#: src/views/file/ListTable.vue:415 src/views/file/ListTable.vue:502
#: src/views/file/ToolBar.vue:128
msgid "Warning"
msgstr "警告"
@@ -3076,14 +2965,12 @@ msgstr "警告"
msgid "There are items with the same name. Do you want to overwrite?"
msgstr "存在同名項目。您要覆蓋嗎?"
-#: src/views/file/ListTable.vue:417
-#: src/views/file/ListTable.vue:512
+#: src/views/file/ListTable.vue:417 src/views/file/ListTable.vue:512
#: src/views/file/ToolBar.vue:138
msgid "Overwrite"
msgstr "覆蓋"
-#: src/views/file/ListTable.vue:424
-#: src/views/file/ListTable.vue:440
+#: src/views/file/ListTable.vue:424 src/views/file/ListTable.vue:440
msgid "Renamed %{ source } to %{ target } successfully"
msgstr "成功將 %{ source } 重命名為 %{ target }"
@@ -3095,25 +2982,20 @@ msgstr "解壓中……"
msgid "Uncompressed successfully"
msgstr "解壓成功"
-#: src/views/file/ListTable.vue:478
-#: src/views/file/ToolBar.vue:104
+#: src/views/file/ListTable.vue:478 src/views/file/ToolBar.vue:104
msgid "Please mark the files/folders to copy or move first"
msgstr "請先標記要複製或移動的文件/文件夾"
-#: src/views/file/ListTable.vue:503
-#: src/views/file/ToolBar.vue:129
+#: src/views/file/ListTable.vue:503 src/views/file/ToolBar.vue:129
msgid "There are items with the same name %{ items } Do you want to overwrite?"
msgstr ""
-#: src/views/file/ListTable.vue:525
-#: src/views/file/ListTable.vue:545
-#: src/views/file/ToolBar.vue:151
-#: src/views/file/ToolBar.vue:171
+#: src/views/file/ListTable.vue:525 src/views/file/ListTable.vue:545
+#: src/views/file/ToolBar.vue:151 src/views/file/ToolBar.vue:171
msgid "Moved successfully"
msgstr "移動成功"
-#: src/views/file/ListTable.vue:531
-#: src/views/file/ToolBar.vue:157
+#: src/views/file/ListTable.vue:531 src/views/file/ToolBar.vue:157
msgid "Canceled"
msgstr "已取消"
@@ -3145,40 +3027,27 @@ msgstr "批量修改權限"
msgid "Modify permissions - %{ path }"
msgstr "修改權限 - %{ path }"
-#: src/views/file/PermissionModal.vue:86
-#: src/views/file/PermissionModal.vue:116
+#: src/views/file/PermissionModal.vue:86 src/views/file/PermissionModal.vue:116
msgid "Owner"
msgstr "擁有者"
-#: src/views/file/PermissionModal.vue:88
-#: src/views/file/PermissionModal.vue:97
-#: src/views/file/PermissionModal.vue:106
-#: src/views/home/IndexView.vue:166
-#: src/views/home/IndexView.vue:182
-#: src/views/home/IndexView.vue:848
+#: src/views/file/PermissionModal.vue:88 src/views/file/PermissionModal.vue:97
+#: src/views/file/PermissionModal.vue:106 src/views/home/IndexView.vue:168
+#: src/views/home/IndexView.vue:184 src/views/home/IndexView.vue:850
msgid "Read"
msgstr "讀取"
-#: src/views/file/PermissionModal.vue:89
-#: src/views/file/PermissionModal.vue:98
-#: src/views/file/PermissionModal.vue:107
-#: src/views/home/IndexView.vue:166
-#: src/views/home/IndexView.vue:206
-#: src/views/home/IndexView.vue:849
+#: src/views/file/PermissionModal.vue:89 src/views/file/PermissionModal.vue:98
+#: src/views/file/PermissionModal.vue:107 src/views/home/IndexView.vue:168
+#: src/views/home/IndexView.vue:208 src/views/home/IndexView.vue:851
msgid "Write"
msgstr "寫入"
-#: src/views/file/PermissionModal.vue:90
-#: src/views/file/PermissionModal.vue:99
+#: src/views/file/PermissionModal.vue:90 src/views/file/PermissionModal.vue:99
#: src/views/file/PermissionModal.vue:108
msgid "Execute"
msgstr "執行"
-#: src/views/file/PermissionModal.vue:95
-#: src/views/file/PermissionModal.vue:119
-msgid "Group"
-msgstr "群組"
-
#: src/views/file/PermissionModal.vue:104
msgid "Others"
msgstr "其他"
@@ -3203,13 +3072,11 @@ msgstr "請選擇要移動的文件/文件夾"
msgid "Please select files/folders to delete"
msgstr "請選擇要刪除的文件/文件夾"
-#: src/views/file/ToolBar.vue:219
-#: src/views/file/ToolBar.vue:249
+#: src/views/file/ToolBar.vue:219 src/views/file/ToolBar.vue:249
msgid "New"
msgstr "新建"
-#: src/views/file/ToolBar.vue:222
-#: src/views/file/ToolBar.vue:267
+#: src/views/file/ToolBar.vue:222 src/views/file/ToolBar.vue:267
msgid "Remote Download"
msgstr "遠程下載"
@@ -3230,7 +3097,8 @@ msgid "Upload %{ fileName } successful"
msgstr "上傳 %{ fileName } 成功"
#: src/views/file/UploadModal.vue:53
-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/firewall/CreateForwardModal.vue:50
@@ -3240,10 +3108,8 @@ msgstr "創建轉發"
#: src/views/firewall/CreateForwardModal.vue:58
#: src/views/firewall/CreateIpModal.vue:100
-#: src/views/firewall/CreateModal.vue:102
-#: src/views/firewall/ForwardView.vue:14
-#: src/views/firewall/IpRuleView.vue:14
-#: src/views/firewall/RuleView.vue:14
+#: src/views/firewall/CreateModal.vue:102 src/views/firewall/ForwardView.vue:14
+#: src/views/firewall/IpRuleView.vue:14 src/views/firewall/RuleView.vue:14
msgid "Transport Protocol"
msgstr "傳輸協議"
@@ -3262,36 +3128,31 @@ msgid "Target Port"
msgstr "目標端口"
#: src/views/firewall/CreateIpModal.vue:38
-#: src/views/firewall/CreateModal.vue:38
-#: src/views/firewall/IpRuleView.vue:68
+#: src/views/firewall/CreateModal.vue:38 src/views/firewall/IpRuleView.vue:68
#: src/views/firewall/RuleView.vue:102
msgid "Accept"
msgstr "接受"
#: src/views/firewall/CreateIpModal.vue:42
-#: src/views/firewall/CreateModal.vue:42
-#: src/views/firewall/IpRuleView.vue:70
+#: src/views/firewall/CreateModal.vue:42 src/views/firewall/IpRuleView.vue:70
#: src/views/firewall/RuleView.vue:104
msgid "Drop"
msgstr "丟棄"
#: src/views/firewall/CreateIpModal.vue:46
-#: src/views/firewall/CreateModal.vue:46
-#: src/views/firewall/IpRuleView.vue:72
+#: src/views/firewall/CreateModal.vue:46 src/views/firewall/IpRuleView.vue:72
#: src/views/firewall/RuleView.vue:106
msgid "Reject"
msgstr "拒絕"
#: src/views/firewall/CreateIpModal.vue:53
-#: src/views/firewall/CreateModal.vue:53
-#: src/views/firewall/IpRuleView.vue:97
+#: src/views/firewall/CreateModal.vue:53 src/views/firewall/IpRuleView.vue:97
#: src/views/firewall/RuleView.vue:131
msgid "Inbound"
msgstr "入站"
#: src/views/firewall/CreateIpModal.vue:57
-#: src/views/firewall/CreateModal.vue:57
-#: src/views/firewall/IpRuleView.vue:99
+#: src/views/firewall/CreateModal.vue:57 src/views/firewall/IpRuleView.vue:99
#: src/views/firewall/RuleView.vue:133
msgid "Outbound"
msgstr "出站"
@@ -3302,15 +3163,13 @@ msgid "%{ address } created successfully"
msgstr "%{ address } 創建成功"
#: src/views/firewall/CreateIpModal.vue:92
-#: src/views/firewall/CreateModal.vue:94
-#: src/views/firewall/IpRuleView.vue:205
+#: src/views/firewall/CreateModal.vue:94 src/views/firewall/IpRuleView.vue:205
#: src/views/firewall/RuleView.vue:242
msgid "Create Rule"
msgstr "創建規則"
#: src/views/firewall/CreateIpModal.vue:103
-#: src/views/firewall/CreateModal.vue:105
-#: src/views/firewall/IpRuleView.vue:31
+#: src/views/firewall/CreateModal.vue:105 src/views/firewall/IpRuleView.vue:31
#: src/views/firewall/RuleView.vue:31
msgid "Network Protocol"
msgstr "網路協議"
@@ -3325,15 +3184,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:113
-#: src/views/firewall/CreateModal.vue:137
-#: src/views/firewall/IpRuleView.vue:48
+#: src/views/firewall/CreateModal.vue:137 src/views/firewall/IpRuleView.vue:48
#: src/views/firewall/RuleView.vue:82
msgid "Strategy"
msgstr "策略"
#: src/views/firewall/CreateIpModal.vue:116
-#: src/views/firewall/CreateModal.vue:140
-#: src/views/firewall/IpRuleView.vue:84
+#: src/views/firewall/CreateModal.vue:140 src/views/firewall/IpRuleView.vue:84
#: src/views/firewall/RuleView.vue:118
msgid "Direction"
msgstr "方向"
@@ -3346,27 +3203,22 @@ msgstr "起始端口"
msgid "End Port"
msgstr "結束連接埠"
-#: src/views/firewall/CreateModal.vue:130
-#: src/views/firewall/IpRuleView.vue:109
+#: src/views/firewall/CreateModal.vue:130 src/views/firewall/IpRuleView.vue:109
#: src/views/firewall/RuleView.vue:143
msgid "Target"
msgstr "目標"
-#: src/views/firewall/ForwardView.vue:135
-#: src/views/firewall/IpRuleView.vue:177
+#: src/views/firewall/ForwardView.vue:135 src/views/firewall/IpRuleView.vue:177
#: src/views/firewall/RuleView.vue:214
msgid "Please select rules to delete"
msgstr "請選擇要刪除的規則"
-#: src/views/firewall/ForwardView.vue:168
-#: src/views/firewall/IpRuleView.vue:210
-#: src/views/firewall/RuleView.vue:247
-#: src/views/website/ListView.vue:290
+#: src/views/firewall/ForwardView.vue:168 src/views/firewall/IpRuleView.vue:210
+#: src/views/firewall/RuleView.vue:247 src/views/website/ListView.vue:290
msgid "Batch Delete"
msgstr "批量刪除"
-#: src/views/firewall/ForwardView.vue:171
-#: src/views/firewall/IpRuleView.vue:213
+#: src/views/firewall/ForwardView.vue:171 src/views/firewall/IpRuleView.vue:213
#: src/views/firewall/RuleView.vue:250
msgid "Are you sure you want to batch delete?"
msgstr "您確定要批量刪除嗎?"
@@ -3383,13 +3235,11 @@ msgstr "IP 規則"
msgid "Port Forwarding"
msgstr "連接埠轉發"
-#: src/views/firewall/IndexView.vue:23
-#: src/views/website/IndexView.vue:24
+#: src/views/firewall/IndexView.vue:23 src/views/website/IndexView.vue:24
msgid "Settings"
msgstr "設置"
-#: src/views/firewall/IpRuleView.vue:74
-#: src/views/firewall/RuleView.vue:108
+#: src/views/firewall/IpRuleView.vue:74 src/views/firewall/RuleView.vue:108
msgid "Mark"
msgstr "標記"
@@ -3401,8 +3251,7 @@ msgstr "使用中"
msgid "Not Used"
msgstr "未使用"
-#: src/views/firewall/SettingView.vue:27
-#: src/views/firewall/SettingView.vue:33
+#: src/views/firewall/SettingView.vue:27 src/views/firewall/SettingView.vue:33
#: src/views/firewall/SettingView.vue:39
msgid "Settings saved successfully"
msgstr "設置保存成功"
@@ -3419,298 +3268,273 @@ msgstr "SSH 開關"
msgid "Allow Ping"
msgstr "允許 Ping"
-#: src/views/firewall/SettingView.vue:55
+#: src/views/firewall/SettingView.vue:55 src/views/toolbox/SshView.vue:266
msgid "SSH Port"
msgstr "SSH 連接埠"
-#: src/views/home/IndexView.vue:130
+#: src/views/home/IndexView.vue:132
msgid "Running blocked"
msgstr "運行阻塞"
-#: src/views/home/IndexView.vue:132
+#: src/views/home/IndexView.vue:134
msgid "Running slowly"
msgstr "運行緩慢"
-#: src/views/home/IndexView.vue:134
+#: src/views/home/IndexView.vue:136
msgid "Running normally"
msgstr "運行正常"
-#: src/views/home/IndexView.vue:136
+#: src/views/home/IndexView.vue:138
msgid "Running smoothly"
msgstr "運行流暢"
-#: src/views/home/IndexView.vue:142
-#: src/views/home/IndexView.vue:804
-#: src/views/home/IndexView.vue:824
-#: src/views/toolbox/BenchmarkView.vue:203
+#: src/views/home/IndexView.vue:144 src/views/home/IndexView.vue:806
+#: src/views/home/IndexView.vue:826 src/views/toolbox/BenchmarkView.vue:203
+#: src/views/toolbox/DiskView.vue:803 src/views/toolbox/IndexView.vue:25
msgid "Disk"
msgstr "磁碟"
-#: src/views/home/IndexView.vue:165
-#: src/views/home/IndexView.vue:182
+#: src/views/home/IndexView.vue:167 src/views/home/IndexView.vue:184
msgid "Send"
msgstr "發送"
-#: src/views/home/IndexView.vue:165
-#: src/views/home/IndexView.vue:206
+#: src/views/home/IndexView.vue:167 src/views/home/IndexView.vue:208
msgid "Receive"
msgstr "接收"
-#: src/views/home/IndexView.vue:174
+#: src/views/home/IndexView.vue:176
msgid "Unit %{unit}"
msgstr "單位 %{unit}"
-#: src/views/home/IndexView.vue:188
-#: src/views/home/IndexView.vue:212
-#: src/views/monitor/IndexView.vue:93
-#: src/views/monitor/IndexView.vue:115
-#: src/views/monitor/IndexView.vue:137
-#: src/views/monitor/IndexView.vue:192
-#: src/views/monitor/IndexView.vue:251
-#: src/views/monitor/IndexView.vue:273
-#: src/views/monitor/IndexView.vue:335
-#: src/views/monitor/IndexView.vue:357
-#: src/views/monitor/IndexView.vue:379
-#: src/views/monitor/IndexView.vue:401
+#: src/views/home/IndexView.vue:190 src/views/home/IndexView.vue:214
+#: src/views/monitor/IndexView.vue:93 src/views/monitor/IndexView.vue:115
+#: src/views/monitor/IndexView.vue:137 src/views/monitor/IndexView.vue:192
+#: src/views/monitor/IndexView.vue:251 src/views/monitor/IndexView.vue:273
+#: src/views/monitor/IndexView.vue:335 src/views/monitor/IndexView.vue:357
+#: src/views/monitor/IndexView.vue:379 src/views/monitor/IndexView.vue:401
msgid "Maximum"
msgstr "最大值"
-#: src/views/home/IndexView.vue:189
-#: src/views/home/IndexView.vue:213
-#: src/views/monitor/IndexView.vue:94
-#: src/views/monitor/IndexView.vue:116
-#: src/views/monitor/IndexView.vue:138
-#: src/views/monitor/IndexView.vue:193
-#: src/views/monitor/IndexView.vue:252
-#: src/views/monitor/IndexView.vue:274
-#: src/views/monitor/IndexView.vue:336
-#: src/views/monitor/IndexView.vue:358
-#: src/views/monitor/IndexView.vue:380
-#: src/views/monitor/IndexView.vue:402
+#: src/views/home/IndexView.vue:191 src/views/home/IndexView.vue:215
+#: src/views/monitor/IndexView.vue:94 src/views/monitor/IndexView.vue:116
+#: src/views/monitor/IndexView.vue:138 src/views/monitor/IndexView.vue:193
+#: src/views/monitor/IndexView.vue:252 src/views/monitor/IndexView.vue:274
+#: src/views/monitor/IndexView.vue:336 src/views/monitor/IndexView.vue:358
+#: src/views/monitor/IndexView.vue:380 src/views/monitor/IndexView.vue:402
msgid "Minimum"
msgstr "最小值"
-#: src/views/home/IndexView.vue:193
-#: src/views/home/IndexView.vue:217
-#: src/views/monitor/IndexView.vue:98
-#: src/views/monitor/IndexView.vue:120
-#: src/views/monitor/IndexView.vue:142
-#: src/views/monitor/IndexView.vue:197
-#: src/views/monitor/IndexView.vue:256
-#: src/views/monitor/IndexView.vue:278
-#: src/views/monitor/IndexView.vue:340
-#: src/views/monitor/IndexView.vue:362
-#: src/views/monitor/IndexView.vue:384
-#: src/views/monitor/IndexView.vue:406
+#: src/views/home/IndexView.vue:195 src/views/home/IndexView.vue:219
+#: src/views/monitor/IndexView.vue:98 src/views/monitor/IndexView.vue:120
+#: src/views/monitor/IndexView.vue:142 src/views/monitor/IndexView.vue:197
+#: src/views/monitor/IndexView.vue:256 src/views/monitor/IndexView.vue:278
+#: src/views/monitor/IndexView.vue:340 src/views/monitor/IndexView.vue:362
+#: src/views/monitor/IndexView.vue:384 src/views/monitor/IndexView.vue:406
msgid "Average"
msgstr "平均值"
-#: src/views/home/IndexView.vue:325
+#: src/views/home/IndexView.vue:327
msgid "Panel restarting..."
msgstr "面板重啟中……"
-#: src/views/home/IndexView.vue:327
+#: src/views/home/IndexView.vue:329
msgid "Panel restarted successfully"
msgstr "面板重啟成功"
-#: src/views/home/IndexView.vue:339
+#: src/views/home/IndexView.vue:341
msgid "Current version is the latest"
msgstr "當前版本是最新版本"
-#: src/views/home/IndexView.vue:435
-#: src/views/task/IndexView.vue:22
+#: src/views/home/IndexView.vue:437 src/views/task/IndexView.vue:22
msgid "Scheduled Tasks"
msgstr "計劃任務"
-#: src/views/home/IndexView.vue:444
+#: src/views/home/IndexView.vue:446
msgid "Sponsor Support"
msgstr "贊助支持"
-#: src/views/home/IndexView.vue:450
+#: src/views/home/IndexView.vue:452
msgid "Are you sure you want to restart the panel?"
msgstr "您確定要重啟面板嗎?"
-#: src/views/home/IndexView.vue:458
+#: src/views/home/IndexView.vue:460
msgid "Resource Overview"
msgstr "資源概覽"
-#: src/views/home/IndexView.vue:476
+#: src/views/home/IndexView.vue:478
msgid "Last 1 minute"
msgstr "最近 1 分鐘"
-#: src/views/home/IndexView.vue:483
+#: src/views/home/IndexView.vue:485
msgid "Last 5 minutes"
msgstr "最近 5 分鐘"
-#: src/views/home/IndexView.vue:490
+#: src/views/home/IndexView.vue:492
msgid "Last 15 minutes"
msgstr "最近 15 分鐘"
-#: src/views/home/IndexView.vue:509
-#: src/views/home/IndexView.vue:521
+#: src/views/home/IndexView.vue:511 src/views/home/IndexView.vue:523
msgid "cores"
msgstr "核心"
-#: src/views/home/IndexView.vue:515
+#: src/views/home/IndexView.vue:517
msgid "Model"
msgstr "型號"
-#: src/views/home/IndexView.vue:519
+#: src/views/home/IndexView.vue:521
msgid "Parameters"
msgstr "參數"
-#: src/views/home/IndexView.vue:522
+#: src/views/home/IndexView.vue:524
msgid "cache"
msgstr "快取"
-#: src/views/home/IndexView.vue:528
-#: src/views/monitor/IndexView.vue:179
+#: src/views/home/IndexView.vue:530 src/views/monitor/IndexView.vue:179
+#: src/views/toolbox/DiskView.vue:301
msgid "Usage"
msgstr "使用率"
-#: src/views/home/IndexView.vue:529
+#: src/views/home/IndexView.vue:531
msgid "Frequency"
msgstr "頻率"
-#: src/views/home/IndexView.vue:551
+#: src/views/home/IndexView.vue:553
msgid "Active"
msgstr "活躍"
-#: src/views/home/IndexView.vue:557
+#: src/views/home/IndexView.vue:559
msgid "Inactive"
msgstr "非活躍"
-#: src/views/home/IndexView.vue:563
+#: src/views/home/IndexView.vue:565 src/views/toolbox/DiskView.vue:254
msgid "Free"
msgstr "空閒"
-#: src/views/home/IndexView.vue:569
+#: src/views/home/IndexView.vue:571
msgid "Shared"
msgstr "共享"
-#: src/views/home/IndexView.vue:575
+#: src/views/home/IndexView.vue:577
msgid "Committed"
msgstr "已提交"
-#: src/views/home/IndexView.vue:581
+#: src/views/home/IndexView.vue:583
msgid "Commit Limit"
msgstr "提交限制"
-#: src/views/home/IndexView.vue:587
-#: src/views/toolbox/SystemView.vue:124
+#: src/views/home/IndexView.vue:589 src/views/toolbox/SystemView.vue:117
msgid "SWAP Size"
msgstr "SWAP 大小"
-#: src/views/home/IndexView.vue:593
+#: src/views/home/IndexView.vue:595
msgid "SWAP Used"
msgstr "已用 SWAP"
-#: src/views/home/IndexView.vue:599
+#: src/views/home/IndexView.vue:601
msgid "SWAP Available"
msgstr "可用 SWAP"
-#: src/views/home/IndexView.vue:605
+#: src/views/home/IndexView.vue:607
msgid "Physical Memory Size"
msgstr "物理記憶體大小"
-#: src/views/home/IndexView.vue:611
+#: src/views/home/IndexView.vue:613
msgid "Physical Memory Used"
msgstr "已用物理記憶體"
-#: src/views/home/IndexView.vue:617
+#: src/views/home/IndexView.vue:619
msgid "Physical Memory Available"
msgstr "可用實體記憶體"
-#: src/views/home/IndexView.vue:657
+#: src/views/home/IndexView.vue:659
msgid "File System"
msgstr "檔案系統"
-#: src/views/home/IndexView.vue:661
+#: src/views/home/IndexView.vue:663
msgid "Inodes Usage"
msgstr "Inodes 使用率"
-#: src/views/home/IndexView.vue:665
+#: src/views/home/IndexView.vue:667
msgid "Inodes Total"
msgstr "Inodes 總數"
-#: src/views/home/IndexView.vue:669
+#: src/views/home/IndexView.vue:671
msgid "Inodes Used"
msgstr "已用 Inodes"
-#: src/views/home/IndexView.vue:673
+#: src/views/home/IndexView.vue:675
msgid "Inodes Available"
msgstr "可用 Inodes"
-#: src/views/home/IndexView.vue:691
+#: src/views/home/IndexView.vue:693
msgid "Quick Apps"
msgstr "快速應用"
-#: src/views/home/IndexView.vue:730
+#: src/views/home/IndexView.vue:732
msgid "You have not set any apps to display here!"
msgstr "您尚未設置任何要在此處顯示的應用!"
-#: src/views/home/IndexView.vue:734
+#: src/views/home/IndexView.vue:736
msgid "Environment Information"
msgstr "環境資訊"
-#: src/views/home/IndexView.vue:737
-#: src/views/toolbox/SystemView.vue:138
+#: src/views/home/IndexView.vue:739 src/views/toolbox/SystemView.vue:131
msgid "System Hostname"
msgstr "系統主機名"
-#: src/views/home/IndexView.vue:743
+#: src/views/home/IndexView.vue:745
msgid "System Version"
msgstr "系統版本"
-#: src/views/home/IndexView.vue:752
+#: src/views/home/IndexView.vue:754
msgid "System Kernel Version"
msgstr "系統內核版本"
-#: src/views/home/IndexView.vue:758
+#: src/views/home/IndexView.vue:760
msgid "System Uptime"
msgstr "系統運行時間"
-#: src/views/home/IndexView.vue:764
+#: src/views/home/IndexView.vue:766
msgid "Panel Internal Version"
msgstr "面板內部版本"
-#: src/views/home/IndexView.vue:776
+#: src/views/home/IndexView.vue:778
msgid "Panel Compile Information"
msgstr "面板編譯資訊"
-#: src/views/home/IndexView.vue:793
+#: src/views/home/IndexView.vue:795
msgid "Real-time Monitoring"
msgstr "即時監控"
-#: src/views/home/IndexView.vue:807
+#: src/views/home/IndexView.vue:809
msgid "Unit"
msgstr "單位"
-#: src/views/home/IndexView.vue:815
+#: src/views/home/IndexView.vue:817
msgid "Network Card"
msgstr "網卡"
-#: src/views/home/IndexView.vue:835
+#: src/views/home/IndexView.vue:837
msgid "Total Sent"
msgstr "總發送量"
-#: src/views/home/IndexView.vue:837
+#: src/views/home/IndexView.vue:839
msgid "Total Received"
msgstr "總接收量"
-#: src/views/home/IndexView.vue:840
+#: src/views/home/IndexView.vue:842
msgid "Real-time Sent"
msgstr "實時發送"
-#: src/views/home/IndexView.vue:844
+#: src/views/home/IndexView.vue:846
msgid "Real-time Received"
msgstr "實時接收"
-#: src/views/home/IndexView.vue:851
+#: src/views/home/IndexView.vue:853
msgid "Real-time Read/Write"
msgstr "實時讀/寫"
-#: src/views/home/IndexView.vue:854
+#: src/views/home/IndexView.vue:856
msgid "Read/Write Latency"
msgstr "讀/寫延遲"
@@ -3747,7 +3571,8 @@ msgid "Please enter username and password"
msgstr "請輸入用戶名和密碼"
#: src/views/login/IndexView.vue:54
-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:67
@@ -3770,18 +3595,15 @@ msgstr "記住我"
msgid "Load"
msgstr "負載"
-#: src/views/monitor/IndexView.vue:71
-#: src/views/monitor/IndexView.vue:87
+#: src/views/monitor/IndexView.vue:71 src/views/monitor/IndexView.vue:87
msgid "1 minute"
msgstr "1 分鐘"
-#: src/views/monitor/IndexView.vue:71
-#: src/views/monitor/IndexView.vue:102
+#: src/views/monitor/IndexView.vue:71 src/views/monitor/IndexView.vue:102
msgid "5 minutes"
msgstr "5 分鐘"
-#: src/views/monitor/IndexView.vue:71
-#: src/views/monitor/IndexView.vue:124
+#: src/views/monitor/IndexView.vue:71 src/views/monitor/IndexView.vue:124
msgid "15 minutes"
msgstr "15 分鐘"
@@ -3789,33 +3611,27 @@ msgstr "15 分鐘"
msgid "Unit %"
msgstr "單位 %"
-#: src/views/monitor/IndexView.vue:221
-#: src/views/monitor/IndexView.vue:307
+#: src/views/monitor/IndexView.vue:221 src/views/monitor/IndexView.vue:307
msgid "Unit MB"
msgstr "單位 MB"
-#: src/views/monitor/IndexView.vue:298
-#: src/views/monitor/IndexView.vue:322
+#: src/views/monitor/IndexView.vue:298 src/views/monitor/IndexView.vue:322
msgid "Total Out"
msgstr "總出流量"
-#: src/views/monitor/IndexView.vue:299
-#: src/views/monitor/IndexView.vue:344
+#: src/views/monitor/IndexView.vue:299 src/views/monitor/IndexView.vue:344
msgid "Total In"
msgstr "總入流量"
-#: src/views/monitor/IndexView.vue:300
-#: src/views/monitor/IndexView.vue:366
+#: src/views/monitor/IndexView.vue:300 src/views/monitor/IndexView.vue:366
msgid "Per Second Out"
msgstr "每秒出流量"
-#: src/views/monitor/IndexView.vue:301
-#: src/views/monitor/IndexView.vue:388
+#: src/views/monitor/IndexView.vue:301 src/views/monitor/IndexView.vue:388
msgid "Per Second In"
msgstr "每秒入流量"
-#: src/views/monitor/IndexView.vue:414
-#: src/views/monitor/IndexView.vue:420
+#: src/views/monitor/IndexView.vue:414 src/views/monitor/IndexView.vue:420
msgid "Operation successful"
msgstr "操作成功"
@@ -3839,8 +3655,7 @@ msgstr "時間選擇"
msgid "Clear Monitoring Records"
msgstr "清除監控記錄"
-#: src/views/monitor/IndexView.vue:477
-#: src/views/website/EditView.vue:393
+#: src/views/monitor/IndexView.vue:477 src/views/website/EditView.vue:393
msgid "Are you sure you want to clear?"
msgstr "確定要清除嗎?"
@@ -3848,8 +3663,7 @@ msgstr "確定要清除嗎?"
msgid "General"
msgstr ""
-#: src/views/project/IndexView.vue:14
-#: src/views/website/IndexView.vue:22
+#: src/views/project/IndexView.vue:14 src/views/website/IndexView.vue:22
msgid "PHP"
msgstr ""
@@ -3869,8 +3683,7 @@ msgstr ""
msgid "Enter user name"
msgstr "輸入用戶名"
-#: src/views/setting/CreateModal.vue:53
-#: src/views/setting/PasswordModal.vue:40
+#: src/views/setting/CreateModal.vue:53 src/views/setting/PasswordModal.vue:40
msgid "Enter user password"
msgstr "輸入用戶密碼"
@@ -3878,22 +3691,21 @@ msgstr "輸入用戶密碼"
msgid "Enter user email"
msgstr "輸入用戶郵箱"
-#: src/views/setting/IndexView.vue:51
-msgid "Panel is restarting, page will refresh in 3 seconds"
+#: src/views/setting/IndexView.vue:59
+#, fuzzy
+msgid "Panel is restarting, page will refresh in 5 seconds"
msgstr "面板正在重啟,頁面將在 3 秒後刷新"
-#: src/views/setting/IndexView.vue:68
+#: src/views/setting/IndexView.vue:81
msgid "Basic"
msgstr "基本"
-#: src/views/setting/IndexView.vue:69
+#: src/views/setting/IndexView.vue:82
msgid "Safe"
msgstr "安全"
-#: src/views/setting/PasswordModal.vue:16
-#: src/views/setting/TokenModal.vue:181
-#: src/views/setting/TwoFaModal.vue:24
-#: src/views/ssh/UpdateModal.vue:30
+#: src/views/setting/PasswordModal.vue:16 src/views/setting/TokenModal.vue:181
+#: src/views/setting/TwoFaModal.vue:24 src/views/ssh/UpdateModal.vue:31
msgid "Updated successfully"
msgstr "更新成功"
@@ -3905,126 +3717,166 @@ msgstr "穩定版"
msgid "Beta"
msgstr "測試版"
-#: src/views/setting/SettingBase.vue:34
-msgid "Modifying panel port/entrance requires corresponding changes in the browser address bar to access the panel!"
-msgstr "修改面板端口/入口需要在瀏覽器地址欄中相應更改以訪問面板!"
-
-#: src/views/setting/SettingBase.vue:40
-#: src/views/setting/SettingBase.vue:41
+#: src/views/setting/SettingBase.vue:33 src/views/setting/SettingBase.vue:34
msgid "Panel Name"
msgstr "面板名稱"
-#: src/views/setting/SettingBase.vue:43
+#: src/views/setting/SettingBase.vue:36
msgid "Language"
msgstr "語言"
-#: src/views/setting/SettingBase.vue:46
+#: src/views/setting/SettingBase.vue:39
msgid "Update Channel"
msgstr "更新渠道"
-#: src/views/setting/SettingBase.vue:50
+#: src/views/setting/SettingBase.vue:43
msgid "8888"
msgstr "8888"
-#: src/views/setting/SettingBase.vue:52
+#: src/views/setting/SettingBase.vue:45
msgid "Default Website Directory"
msgstr "預設網站目錄"
-#: src/views/setting/SettingBase.vue:53
-msgid "/www/wwwroot"
-msgstr "/www/wwwroot"
+#: src/views/setting/SettingBase.vue:46
+msgid "/opt/ace/sites"
+msgstr ""
-#: src/views/setting/SettingBase.vue:55
+#: src/views/setting/SettingBase.vue:48
msgid "Default Backup Directory"
msgstr "預設備份目錄"
-#: src/views/setting/SettingBase.vue:56
-msgid "/www/backup"
+#: src/views/setting/SettingBase.vue:49
+#, fuzzy
+msgid "/opt/ace/backup"
msgstr "/www/backup"
-#: src/views/setting/SettingSafe.vue:17
+#: src/views/setting/SettingSafe.vue:34
+#, fuzzy
+msgid "Disabled"
+msgstr "已啟用"
+
+#: src/views/setting/SettingSafe.vue:35
+msgid "ACME (Auto)"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:36
+#, fuzzy
+msgid "Custom Certificate"
+msgstr "建立憑證"
+
+#: src/views/setting/SettingSafe.vue:48
msgid "Login Timeout"
msgstr "登錄超時"
-#: src/views/setting/SettingSafe.vue:22
-msgid "Set the maximum lifetime (in minutes) of the login state, after which you need to log in again"
+#: src/views/setting/SettingSafe.vue:53
+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:30
+#: src/views/setting/SettingSafe.vue:61
msgid "120"
msgstr "120"
-#: src/views/setting/SettingSafe.vue:36
+#: src/views/setting/SettingSafe.vue:67
#: src/views/website/ProxyBuilderModal.vue:188
msgid "minutes"
msgstr "分鐘"
-#: src/views/setting/SettingSafe.vue:45
+#: src/views/setting/SettingSafe.vue:76
msgid "Access Entrance"
msgstr "訪問入口"
-#: src/views/setting/SettingSafe.vue:50
-msgid "Set the access entrance of the panel (e.g. /mypanel) to prevent some malicious access. Leave blank to disable (not recommended)"
+#: src/views/setting/SettingSafe.vue:81
+msgid ""
+"Set the access entrance of the panel (e.g. /mypanel) to prevent some "
+"malicious access. Leave blank to disable (not recommended)"
msgstr ""
-#: src/views/setting/SettingSafe.vue:63
+#: src/views/setting/SettingSafe.vue:94
msgid "Request IP Header"
msgstr ""
-#: src/views/setting/SettingSafe.vue:68
-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"
+#: src/views/setting/SettingSafe.vue:99
+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 ""
-#: src/views/setting/SettingSafe.vue:74
+#: src/views/setting/SettingSafe.vue:105
msgid "X-Real-IP"
msgstr ""
-#: src/views/setting/SettingSafe.vue:81
+#: src/views/setting/SettingSafe.vue:112
msgid "Bind Domain"
msgstr "綁定域名"
-#: src/views/setting/SettingSafe.vue:86
-msgid "Restrict panel access to the specified domain names. Leave blank to allow access from any domain"
+#: src/views/setting/SettingSafe.vue:117
+msgid ""
+"Restrict panel access to the specified domain names. Leave blank to allow "
+"access from any domain"
msgstr ""
-#: src/views/setting/SettingSafe.vue:103
+#: src/views/setting/SettingSafe.vue:134
msgid "Bind IP"
msgstr "綁定 IP"
-#: src/views/setting/SettingSafe.vue:108
-msgid "Restrict panel access to the specified IP addresses. Leave blank to allow access from any IP"
+#: src/views/setting/SettingSafe.vue:139
+msgid ""
+"Restrict panel access to the specified IP addresses. Leave blank to allow "
+"access from any IP"
msgstr ""
-#: src/views/setting/SettingSafe.vue:121
+#: src/views/setting/SettingSafe.vue:152
msgid "Bind UA"
msgstr "綁定 UA"
-#: src/views/setting/SettingSafe.vue:126
-msgid "Restrict panel access to the specified User-Agent strings. Leave blank to allow access from any User-Agent"
+#: src/views/setting/SettingSafe.vue:157
+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:143
+#: src/views/setting/SettingSafe.vue:174
msgid "Offline Mode"
msgstr "離線模式"
-#: src/views/setting/SettingSafe.vue:148
-msgid "When enabled, the panel will not attempt to connect to external services for updates or other features. This may limit some functionalities"
+#: src/views/setting/SettingSafe.vue:179
+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:161
+#: src/views/setting/SettingSafe.vue:192
msgid "Auto Update"
msgstr "自動更新"
-#: src/views/setting/SettingSafe.vue:166
-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"
+#: src/views/setting/SettingSafe.vue:197
+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:179
+#: src/views/setting/SettingSafe.vue:210
msgid "Panel HTTPS"
msgstr "面板 HTTPS"
-#: src/views/setting/SettingSafe.vue:184
-msgid "Enable HTTPS for the panel to ensure secure communication. You need to provide a valid SSL certificate and private key"
+#: src/views/setting/SettingSafe.vue:215
+msgid ""
+"Enable HTTPS for the panel. ACME will automatically obtain and renew "
+"certificates (requires panel accessible via public IP). Custom allows you to "
+"provide your own certificate"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:230 src/views/setting/SettingSafe.vue:235
+msgid "Panel Public IP"
+msgstr ""
+
+#: src/views/setting/SettingSafe.vue:240
+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 ""
#: src/views/setting/SettingUser.vue:53
@@ -4035,8 +3887,7 @@ msgstr "兩步驗證"
msgid "Disabled successfully"
msgstr "禁用成功"
-#: src/views/setting/SettingUser.vue:102
-#: src/views/setting/TokenModal.vue:202
+#: src/views/setting/SettingUser.vue:102 src/views/setting/TokenModal.vue:202
msgid "Access Tokens"
msgstr "訪問令牌"
@@ -4064,23 +3915,19 @@ msgstr "複製並關閉"
msgid "Copy failed"
msgstr "複製失敗"
-#: src/views/setting/TokenModal.vue:212
-#: src/views/setting/TokenModal.vue:240
+#: src/views/setting/TokenModal.vue:212 src/views/setting/TokenModal.vue:240
msgid "Create Access Token"
msgstr "創建訪問令牌"
-#: src/views/setting/TokenModal.vue:249
-#: src/views/setting/TokenModal.vue:282
+#: src/views/setting/TokenModal.vue:249 src/views/setting/TokenModal.vue:282
msgid "IP White List"
msgstr "IP 白名單"
-#: src/views/setting/TokenModal.vue:252
-#: src/views/setting/TokenModal.vue:285
+#: src/views/setting/TokenModal.vue:252 src/views/setting/TokenModal.vue:285
msgid "127.0.0.1"
msgstr "127.0.0.1"
-#: src/views/setting/TokenModal.vue:260
-#: src/views/setting/TokenModal.vue:293
+#: src/views/setting/TokenModal.vue:260 src/views/setting/TokenModal.vue:293
msgid "Please select the expiration time"
msgstr "請選擇到期時間"
@@ -4101,7 +3948,8 @@ msgid "Scan the QR code with your 2FA app and enter the code below"
msgstr "用您的兩步驗證應用掃描二維碼並在下方輸入代碼"
#: src/views/setting/TwoFaModal.vue:66
-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:79
@@ -4112,18 +3960,23 @@ msgstr "代碼"
msgid "Enter the code"
msgstr "輸入代碼"
-#: src/views/ssh/CreateModal.vue:50
-#: src/views/ssh/IndexView.vue:245
+#: src/views/ssh/CreateModal.vue:52 src/views/ssh/IndexView.vue:245
msgid "Create Host"
msgstr "創建主機"
-#: src/views/ssh/CreateModal.vue:73
-#: src/views/ssh/UpdateModal.vue:79
+#: src/views/ssh/CreateModal.vue:75 src/views/ssh/UpdateModal.vue:81
msgid "Authentication Method"
msgstr "驗證方式"
-#: src/views/ssh/CreateModal.vue:92
-#: src/views/ssh/UpdateModal.vue:98
+#: src/views/ssh/CreateModal.vue:94 src/views/ssh/UpdateModal.vue:100
+msgid "Key Passphrase"
+msgstr ""
+
+#: src/views/ssh/CreateModal.vue:99 src/views/ssh/UpdateModal.vue:105
+msgid "Leave empty if key has no passphrase"
+msgstr ""
+
+#: src/views/ssh/CreateModal.vue:102 src/views/ssh/UpdateModal.vue:108
msgid "Remarks"
msgstr "備註"
@@ -4143,7 +3996,7 @@ msgstr "連接已關閉。請刷新。"
msgid "Connection error. Please refresh."
msgstr "連接錯誤。請刷新。"
-#: src/views/ssh/UpdateModal.vue:56
+#: src/views/ssh/UpdateModal.vue:58
msgid "Update Host"
msgstr "更新主機"
@@ -4155,37 +4008,29 @@ msgstr "# 在此處輸入您的腳本內容"
msgid "Create Scheduled Task"
msgstr "創建計劃任務"
-#: src/views/task/CreateModal.vue:95
-#: src/views/task/CronView.vue:32
+#: src/views/task/CreateModal.vue:95 src/views/task/CronView.vue:32
msgid "Task Type"
msgstr "任務類型"
-#: src/views/task/CreateModal.vue:99
-#: src/views/task/CronView.vue:45
+#: src/views/task/CreateModal.vue:99 src/views/task/CronView.vue:45
msgid "Run Script"
msgstr "運行腳本"
-#: src/views/task/CreateModal.vue:100
-#: src/views/task/CronView.vue:47
+#: src/views/task/CreateModal.vue:100 src/views/task/CronView.vue:47
msgid "Backup Data"
msgstr "備份數據"
-#: src/views/task/CreateModal.vue:101
-#: src/views/task/CronView.vue:48
+#: src/views/task/CreateModal.vue:101 src/views/task/CronView.vue:48
msgid "Log Rotation"
msgstr "日誌輪替"
-#: src/views/task/CreateModal.vue:106
-#: src/views/task/CreateModal.vue:107
-#: src/views/task/CronView.vue:25
-#: src/views/task/CronView.vue:250
-#: src/views/task/CronView.vue:251
-#: src/views/task/TaskView.vue:15
+#: src/views/task/CreateModal.vue:106 src/views/task/CreateModal.vue:107
+#: src/views/task/CronView.vue:25 src/views/task/CronView.vue:250
+#: src/views/task/CronView.vue:251 src/views/task/TaskView.vue:15
msgid "Task Name"
msgstr "任務名稱"
-#: src/views/task/CreateModal.vue:109
-#: src/views/task/CronView.vue:69
+#: src/views/task/CreateModal.vue:109 src/views/task/CronView.vue:69
#: src/views/task/CronView.vue:253
msgid "Task Schedule"
msgstr "任務週期"
@@ -4210,7 +4055,8 @@ msgstr "PostgreSQL 數據庫"
msgid "Retention Count"
msgstr "保留數量"
-#: src/views/task/CronView.vue:55
+#: src/views/task/CronView.vue:55 src/views/toolbox/WebHookView.vue:86
+#: src/views/toolbox/WebHookView.vue:381
msgid "Enabled"
msgstr "已啟用"
@@ -4234,66 +4080,15 @@ msgstr "面板任務"
msgid "Create Task"
msgstr "創建任務"
-#: src/views/task/SystemView.vue:25
-#: src/views/toolbox/ProcessView.vue:25
-msgid "Parent PID"
-msgstr "父進程 PID"
-
-#: src/views/task/SystemView.vue:31
-#: src/views/toolbox/ProcessView.vue:31
-msgid "Threads"
-msgstr "線程"
-
-#: src/views/task/SystemView.vue:52
-#: src/views/toolbox/ProcessView.vue:52
-msgid "Sleeping"
-msgstr "睡眠"
-
-#: src/views/task/SystemView.vue:56
-#: src/views/toolbox/ProcessView.vue:56
-msgid "Idle"
-msgstr "空閒"
-
-#: src/views/task/SystemView.vue:58
-#: src/views/toolbox/ProcessView.vue:58
-msgid "Zombie"
-msgstr "僵屍進程"
-
-#: src/views/task/SystemView.vue:60
-#: src/views/task/TaskView.vue:30
-#: src/views/toolbox/ProcessView.vue:60
-msgid "Waiting"
-msgstr "正在駐留等待"
-
-#: src/views/task/SystemView.vue:62
-#: src/views/toolbox/ProcessView.vue:62
-msgid "Locked"
-msgstr "已鎖定"
-
-#: src/views/task/SystemView.vue:87
-#: src/views/toolbox/ProcessView.vue:87
-msgid "Start Time"
-msgstr "啟動時間"
-
-#: src/views/task/SystemView.vue:108
-#: src/views/toolbox/ProcessView.vue:108
-msgid "Process %{ pid } has been terminated"
-msgstr "進程 %{ pid } 已被終止"
-
-#: src/views/task/SystemView.vue:115
-#: src/views/toolbox/ProcessView.vue:115
-msgid "Are you sure you want to terminate process %{ pid }?"
-msgstr "您確定要終止進程 %{ pid } 嗎?"
-
-#: src/views/task/SystemView.vue:127
-#: src/views/toolbox/ProcessView.vue:127
-msgid "Terminate"
-msgstr "終止"
-
#: src/views/task/TaskView.vue:28
msgid "Completed"
msgstr "已完成"
+#: src/views/task/TaskView.vue:30 src/views/toolbox/ProcessView.vue:53
+#: src/views/toolbox/ProcessView.vue:90
+msgid "Waiting"
+msgstr "正在駐留等待"
+
#: src/views/task/TaskView.vue:32
msgid "Failed"
msgstr "失敗"
@@ -4326,8 +4121,11 @@ msgid "Pending benchmark"
msgstr "待跑分"
#: src/views/toolbox/BenchmarkView.vue:89
-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:96
msgid "Benchmarking in progress, it may take some time..."
@@ -4405,66 +4203,890 @@ msgstr "跑分中……"
msgid "Start Benchmark"
msgstr "開始跑分"
-#: src/views/toolbox/IndexView.vue:19
+#: src/views/toolbox/DiskView.vue:109
+#, fuzzy
+msgid "Failed to parse disk data, please refresh and try again"
+msgstr "獲取加密公鑰失敗,請刷新頁面後重試"
+
+#: src/views/toolbox/DiskView.vue:270
+#, fuzzy
+msgid "Partition Name"
+msgstr "選項名稱"
+
+#: src/views/toolbox/DiskView.vue:283
+#, fuzzy
+msgid "Used"
+msgstr "未使用"
+
+#: src/views/toolbox/DiskView.vue:292
+#, fuzzy
+msgid "Available"
+msgstr "可用 SWAP"
+
+#: src/views/toolbox/DiskView.vue:309
+#, fuzzy
+msgid "Not Mounted"
+msgstr "未使用"
+
+#: src/views/toolbox/DiskView.vue:332 src/views/toolbox/DiskView.vue:828
+#, fuzzy
+msgid "Filesystem"
+msgstr "檔案系統"
+
+#: src/views/toolbox/DiskView.vue:385 src/views/toolbox/DiskView.vue:537
+#: src/views/toolbox/DiskView.vue:581 src/views/toolbox/DiskView.vue:630
+msgid "Please fill in all fields"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:390
+msgid ""
+"Are you sure you want to mount %{ device } to %{ path } and write to fstab "
+"for auto-mount on boot?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:397
+#, fuzzy
+msgid "Are you sure you want to mount %{ device } to %{ path }?"
+msgstr "您確定要刪除掛載 %{ path } 嗎?"
+
+#: src/views/toolbox/DiskView.vue:411
+#, fuzzy
+msgid "Mounted successfully"
+msgstr "移動成功"
+
+#: src/views/toolbox/DiskView.vue:429
+#, fuzzy
+msgid "Are you sure you want to unmount this partition?"
+msgstr "您確定要更新面板嗎?"
+
+#: src/views/toolbox/DiskView.vue:434
+#, fuzzy
+msgid "Unmounted successfully"
+msgstr "解封成功"
+
+#: src/views/toolbox/DiskView.vue:444 src/views/toolbox/DiskView.vue:495
+#, fuzzy
+msgid "Please select a device"
+msgstr "請選擇一個渠道"
+
+#: src/views/toolbox/DiskView.vue:449 src/views/toolbox/DiskView.vue:474
+#: src/views/toolbox/DiskView.vue:519 src/views/toolbox/DiskView.vue:562
+#: src/views/toolbox/DiskView.vue:611 src/views/toolbox/DiskView.vue:658
+msgid "Dangerous Operation"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:450
+msgid ""
+"Formatting will erase all data on the partition. This operation is "
+"irreversible. Are you sure?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:453
+#, fuzzy
+msgid "Confirm Format"
+msgstr "確認登出?"
+
+#: src/views/toolbox/DiskView.vue:457
+#, fuzzy
+msgid "Formatted successfully"
+msgstr "創建成功"
+
+#: src/views/toolbox/DiskView.vue:469
+#, fuzzy
+msgid "Please enter disk name"
+msgstr "請輸入絕對路徑"
+
+#: src/views/toolbox/DiskView.vue:475
+msgid ""
+"This will delete all partitions on %{ device } and create a single "
+"partition. All data will be permanently lost. Are you absolutely sure?"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:479
+msgid "Confirm Initialize"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:483
+#, fuzzy
+msgid "Disk initialized successfully"
+msgstr "禁用成功"
+
+#: src/views/toolbox/DiskView.vue:501
+#, fuzzy
+msgid "Are you sure you want to create a physical volume on %{ device }?"
+msgstr "您確定要停止 %{ service } 嗎?"
+
+#: src/views/toolbox/DiskView.vue:508
+#, fuzzy
+msgid "Physical volume created successfully"
+msgstr "面板重啟成功"
+
+#: src/views/toolbox/DiskView.vue:520
+#, fuzzy
+msgid "Are you sure you want to remove the physical volume %{ device }?"
+msgstr "您確定要刪除編排 %{ name } 嗎?"
+
+#: src/views/toolbox/DiskView.vue:527
+#, fuzzy
+msgid "Physical volume removed successfully"
+msgstr "面板重啟成功"
+
+#: src/views/toolbox/DiskView.vue:543
+#, fuzzy
+msgid "Are you sure you want to create volume group %{ name }?"
+msgstr "您確定要刪除模組 %{ name } 嗎?"
+
+#: src/views/toolbox/DiskView.vue:550
+#, fuzzy
+msgid "Volume group created successfully"
+msgstr "創建成功"
+
+#: src/views/toolbox/DiskView.vue:563
+msgid ""
+"Are you sure you want to remove the volume group %{ name }? All logical "
+"volumes in this group will be deleted!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:571
+#, fuzzy
+msgid "Volume group removed successfully"
+msgstr "壓縮成功"
+
+#: src/views/toolbox/DiskView.vue:587
+#, fuzzy
+msgid ""
+"Are you sure you want to create logical volume %{ name } with %{ size }GB?"
+msgstr "您確定要刪除編排 %{ name } 嗎?"
+
+#: src/views/toolbox/DiskView.vue:598
+#, fuzzy
+msgid "Logical volume created successfully"
+msgstr "面板重啟成功"
+
+#: src/views/toolbox/DiskView.vue:612
+msgid ""
+"Are you sure you want to remove the logical volume %{ path }? All data on "
+"this volume will be lost!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:620
+#, fuzzy
+msgid "Logical volume removed successfully"
+msgstr "獲取成功"
+
+#: src/views/toolbox/DiskView.vue:636
+#, fuzzy
+msgid "Are you sure you want to extend %{ path } by %{ size }GB?"
+msgstr "您確定要刪除掛載 %{ path } 嗎?"
+
+#: src/views/toolbox/DiskView.vue:645
+#, fuzzy
+msgid "Logical volume extended successfully"
+msgstr "成功登出!"
+
+#: src/views/toolbox/DiskView.vue:659
+msgid ""
+"Are you sure you want to remove the fstab entry for %{ mountPoint }? This "
+"will prevent auto-mount on boot."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:667
+#, fuzzy
+msgid "Fstab entry removed successfully"
+msgstr "獲取成功"
+
+#: src/views/toolbox/DiskView.vue:678
+#, fuzzy
+msgid "Disk Management"
+msgstr "用戶管理"
+
+#: src/views/toolbox/DiskView.vue:684
+#, fuzzy
+msgid "Disk Name"
+msgstr "任務名稱"
+
+#: src/views/toolbox/DiskView.vue:686
+#, fuzzy
+msgid "System Disk"
+msgstr "系統"
+
+#: src/views/toolbox/DiskView.vue:693
+#, fuzzy
+msgid "Partitions"
+msgstr "權限"
+
+#: src/views/toolbox/DiskView.vue:694
+#, fuzzy
+msgid "Disk Type"
+msgstr "任務類型"
+
+#: src/views/toolbox/DiskView.vue:714
+msgid "Note: This is the system disk and cannot be operated on."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:719
+msgid "No disks found"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:722
+#, fuzzy
+msgid "Mount Partition"
+msgstr "掛載路徑"
+
+#: src/views/toolbox/DiskView.vue:725 src/views/toolbox/DiskView.vue:770
+#, fuzzy
+msgid "Partition"
+msgstr "描述"
+
+#: src/views/toolbox/DiskView.vue:729 src/views/toolbox/DiskView.vue:774
+#, fuzzy
+msgid "Select partition"
+msgstr "選擇 PHP 版本"
+
+#: src/views/toolbox/DiskView.vue:737
+msgid "e.g., /mnt/data"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:741
+#, fuzzy
+msgid "Mount Options"
+msgstr "選項"
+
+#: src/views/toolbox/DiskView.vue:744
+msgid "e.g., defaults,noatime"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:748
+msgid "Auto-mount on boot"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:758
+msgid ""
+"When enabled, the partition UUID will be written to /etc/fstab for automatic "
+"mounting on system boot."
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:765
+msgid "Format Partition"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:767
+msgid "Warning: Formatting will erase all data!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:779 src/views/toolbox/DiskView.vue:812
+#, fuzzy
+msgid "Filesystem Type"
+msgstr "檔案系統"
+
+#: src/views/toolbox/DiskView.vue:788
+#, fuzzy
+msgctxt "disk action"
+msgid "Format"
+msgstr "格式"
+
+#: src/views/toolbox/DiskView.vue:794
+msgid "Initialize Disk"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:797
+msgid ""
+"Warning: This will delete all partitions and create a single partition. All "
+"data will be lost!"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:807
+#, fuzzy
+msgid "Select disk"
+msgstr "選擇文件"
+
+#: src/views/toolbox/DiskView.vue:816
+msgid "Initialize"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:821
+#, fuzzy
+msgid "Auto-mount Configuration (fstab)"
+msgstr "模組配置"
+
+#: src/views/toolbox/DiskView.vue:826 src/views/toolbox/DiskView.vue:884
+#, fuzzy
+msgid "Device"
+msgstr "服務"
+
+#: src/views/toolbox/DiskView.vue:844 src/views/toolbox/DiskView.vue:874
+#: src/views/toolbox/DiskView.vue:912 src/views/toolbox/DiskView.vue:957
+#, fuzzy
+msgid "Remove"
+msgstr "自動移除"
+
+#: src/views/toolbox/DiskView.vue:854
+msgid "No fstab entries"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:861
+#, fuzzy
+msgid "LVM Management"
+msgstr "模組管理"
+
+#: src/views/toolbox/DiskView.vue:863 src/views/toolbox/DiskView.vue:929
+#, fuzzy
+msgid "Physical Volumes"
+msgstr "物理記憶體大小"
+
+#: src/views/toolbox/DiskView.vue:880
+msgid "No physical volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:888
+#, fuzzy
+msgid "Select device"
+msgstr "選擇伺服器"
+
+#: src/views/toolbox/DiskView.vue:894
+#, fuzzy
+msgid "Create PV"
+msgstr "創建"
+
+#: src/views/toolbox/DiskView.vue:900
+#, fuzzy
+msgid "Volume Groups"
+msgstr "卷"
+
+#: src/views/toolbox/DiskView.vue:918
+msgid "No volume groups"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:922
+#, fuzzy
+msgid "VG Name"
+msgstr "名稱"
+
+#: src/views/toolbox/DiskView.vue:925
+#, fuzzy
+msgid "Enter VG name"
+msgstr "輸入新名稱"
+
+#: src/views/toolbox/DiskView.vue:933
+#, fuzzy
+msgid "Select PVs"
+msgstr "選擇主機"
+
+#: src/views/toolbox/DiskView.vue:940
+#, fuzzy
+msgid "Create VG"
+msgstr "創建"
+
+#: src/views/toolbox/DiskView.vue:946
+#, fuzzy
+msgid "Logical Volumes"
+msgstr "卷"
+
+#: src/views/toolbox/DiskView.vue:963
+msgid "No logical volumes"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:967
+#, fuzzy
+msgid "LV Name"
+msgstr "名稱"
+
+#: src/views/toolbox/DiskView.vue:970
+#, fuzzy
+msgid "Enter LV name"
+msgstr "輸入新名稱"
+
+#: src/views/toolbox/DiskView.vue:974
+#, fuzzy
+msgid "Volume Group"
+msgstr "卷"
+
+#: src/views/toolbox/DiskView.vue:978
+#, fuzzy
+msgid "Select VG"
+msgstr "選擇 CA"
+
+#: src/views/toolbox/DiskView.vue:983
+#, fuzzy
+msgid "Size (GB)"
+msgstr "大小"
+
+#: src/views/toolbox/DiskView.vue:987
+#, fuzzy
+msgid "Create LV"
+msgstr "創建"
+
+#: src/views/toolbox/DiskView.vue:993
+msgid "Extend Logical Volume"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:995
+msgid "Logical Volume"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:999
+#, fuzzy
+msgid "Select LV"
+msgstr "選擇 CA"
+
+#: src/views/toolbox/DiskView.vue:1004
+msgid "Extend Size (GB)"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:1007
+msgid "Auto Resize Filesystem"
+msgstr ""
+
+#: src/views/toolbox/DiskView.vue:1011
+msgid "Extend LV"
+msgstr ""
+
+#: src/views/toolbox/IndexView.vue:22
msgid "Process"
msgstr ""
-#: src/views/toolbox/IndexView.vue:20
+#: src/views/toolbox/IndexView.vue:23
msgid "System"
msgstr "系統"
-#: src/views/toolbox/IndexView.vue:21
+#: src/views/toolbox/IndexView.vue:26
+msgid "WebHook"
+msgstr ""
+
+#: src/views/toolbox/IndexView.vue:27
msgid "Benchmark"
msgstr "跑分"
-#: src/views/toolbox/SystemView.vue:95
+#: src/views/toolbox/ProcessView.vue:47
+#, fuzzy
+msgid "All Status"
+msgstr "狀態"
+
+#: src/views/toolbox/ProcessView.vue:49 src/views/toolbox/ProcessView.vue:82
+msgid "Sleeping"
+msgstr "睡眠"
+
+#: src/views/toolbox/ProcessView.vue:51 src/views/toolbox/ProcessView.vue:86
+msgid "Idle"
+msgstr "空閒"
+
+#: src/views/toolbox/ProcessView.vue:52 src/views/toolbox/ProcessView.vue:88
+msgid "Zombie"
+msgstr "僵屍進程"
+
+#: src/views/toolbox/ProcessView.vue:54 src/views/toolbox/ProcessView.vue:92
+msgid "Locked"
+msgstr "已鎖定"
+
+#: src/views/toolbox/ProcessView.vue:61
+msgid "View Details"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:63
+#, fuzzy
+msgid "Terminate (SIGTERM)"
+msgstr "終止"
+
+#: src/views/toolbox/ProcessView.vue:64
+msgid "Kill (SIGKILL)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:66
+msgid "Stop (SIGSTOP)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:67
+#, fuzzy
+msgid "Continue (SIGCONT)"
+msgstr "容器(起始)"
+
+#: src/views/toolbox/ProcessView.vue:69
+msgid "Interrupt (SIGINT)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:70
+msgid "Hang Up (SIGHUP)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:71
+msgid "User Signal 1 (SIGUSR1)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:72
+msgid "User Signal 2 (SIGUSR2)"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:115 src/views/toolbox/ProcessView.vue:383
+msgid "Parent PID"
+msgstr "父進程 PID"
+
+#: src/views/toolbox/ProcessView.vue:122 src/views/toolbox/ProcessView.vue:395
+msgid "Threads"
+msgstr "線程"
+
+#: src/views/toolbox/ProcessView.vue:163 src/views/toolbox/ProcessView.vue:416
+msgid "Start Time"
+msgstr "啟動時間"
+
+#: src/views/toolbox/ProcessView.vue:235
+#, fuzzy
+msgid "Are you sure you want to send %{ signal } to process %{ pid }?"
+msgstr "您確定要終止進程 %{ pid } 嗎?"
+
+#: src/views/toolbox/ProcessView.vue:245
+msgid "Signal %{ signal } has been sent to process %{ pid }"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:313
+msgid "Search by PID or name"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:372
+#, fuzzy
+msgid "Process Details"
+msgstr "進程管理"
+
+#: src/views/toolbox/ProcessView.vue:401
+#, fuzzy
+msgid "Memory (RSS)"
+msgstr "記憶體"
+
+#: src/views/toolbox/ProcessView.vue:404
+#, fuzzy
+msgid "Virtual Memory"
+msgstr "記憶體"
+
+#: src/views/toolbox/ProcessView.vue:407
+msgid "Swap"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:410
+#, fuzzy
+msgid "Disk Read"
+msgstr "讀取"
+
+#: src/views/toolbox/ProcessView.vue:413
+#, fuzzy
+msgid "Disk Write"
+msgstr "寫入"
+
+#: src/views/toolbox/ProcessView.vue:419
+#, fuzzy
+msgid "Executable Path"
+msgstr "執行"
+
+#: src/views/toolbox/ProcessView.vue:429
+#, fuzzy
+msgid "Command Line"
+msgstr "命令"
+
+#: src/views/toolbox/ProcessView.vue:446
+#, fuzzy
+msgid "No environment variables"
+msgstr "環境變數"
+
+#: src/views/toolbox/ProcessView.vue:454
+#, fuzzy
+msgid "Open Files"
+msgstr "檔案"
+
+#: src/views/toolbox/ProcessView.vue:462
+msgid "No open files"
+msgstr ""
+
+#: src/views/toolbox/ProcessView.vue:470
+#, fuzzy
+msgid "Network Connections"
+msgstr "網路協議"
+
+#: src/views/toolbox/ProcessView.vue:483
+msgid "No network connections"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:35
+msgid "Allow password and key login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:36
+msgid "Disable root login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:38
+msgid "Only allow key login (recommended)"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:42
+msgid "Only allow key login with forced commands"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:72
+msgid "SSH service stopped"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:75
+msgid "SSH service started"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:88
+msgid "SSH service restarted"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:99
+msgid "SSH port updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:117
+#, fuzzy
+msgid "Password authentication updated"
+msgstr "驗證方式"
+
+#: src/views/toolbox/SshView.vue:129
+#, fuzzy
+msgid "Key authentication updated"
+msgstr "驗證方式"
+
+#: src/views/toolbox/SshView.vue:141
+msgid "Root login setting updated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:150
+#, fuzzy
+msgid "Please enter a password"
+msgstr "請輸入用戶名和密碼"
+
+#: src/views/toolbox/SshView.vue:157
+#, fuzzy
+msgid "Root password updated"
+msgstr "Root 密碼"
+
+#: src/views/toolbox/SshView.vue:177 src/views/toolbox/SshView.vue:191
+msgid "SSH key generated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:200
+msgid "No SSH key found"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:228
+#, fuzzy
+msgid "SSH Service"
+msgstr "服務"
+
+#: src/views/toolbox/SshView.vue:231
+msgid "SSH Service Status"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:240
+#, fuzzy
+msgid "SSH Password Login"
+msgstr "密碼"
+
+#: src/views/toolbox/SshView.vue:247
+msgid "Allow password authentication for SSH login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:252
+#, fuzzy
+msgid "SSH Key Login"
+msgstr "安全登錄"
+
+#: src/views/toolbox/SshView.vue:260
+msgid "Allow public key authentication for SSH login"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:277
+msgid "Current SSH port, default is 22"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:283
+#, fuzzy
+msgid "Root Settings"
+msgstr "連接埠設置"
+
+#: src/views/toolbox/SshView.vue:287
+#, fuzzy
+msgid "Root Password Login Setting"
+msgstr "Root 密碼"
+
+#: src/views/toolbox/SshView.vue:304
+#, fuzzy
+msgid "Enter new password"
+msgstr "輸入密碼"
+
+#: src/views/toolbox/SshView.vue:317
+#, fuzzy
+msgid "Reset"
+msgstr "預設"
+
+#: src/views/toolbox/SshView.vue:322
+msgid ""
+"It is recommended to use a complex password. Save after modification. "
+"Refresh will clear the password field."
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:331
+#, fuzzy
+msgid "Root Key"
+msgstr "根目錄"
+
+#: src/views/toolbox/SshView.vue:333
+#, fuzzy
+msgid "View Key"
+msgstr "查看規則"
+
+#: src/views/toolbox/SshView.vue:341
+msgid "Recommended to use key login with password disabled for higher security"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:354
+#, fuzzy
+msgid "Root Private Key"
+msgstr "私鑰"
+
+#: src/views/toolbox/SshView.vue:361
+msgid ""
+"This is the private key of the root user. Keep it safe and use it to login "
+"to this server."
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:371
+msgid "No private key generated"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:375
+msgid "Regenerate"
+msgstr ""
+
+#: src/views/toolbox/SshView.vue:378
+#, fuzzy
+msgid "Download Private Key"
+msgstr "私鑰"
+
+#: src/views/toolbox/SystemView.vue:88
msgid "DNS modifications will revert to default after system restart."
msgstr "DNS 修改將在系統重新啟動後恢復為預設設置。"
-#: src/views/toolbox/SystemView.vue:99
+#: src/views/toolbox/SystemView.vue:92
msgid "Enter primary DNS server"
msgstr ""
-#: src/views/toolbox/SystemView.vue:102
+#: src/views/toolbox/SystemView.vue:95
msgid "Enter secondary DNS server"
msgstr ""
-#: src/views/toolbox/SystemView.vue:116
+#: src/views/toolbox/SystemView.vue:109
msgid "Total %{ total }, used %{ used }, free %{ free }"
msgstr "總計 %{ total },已使用 %{ used },可用 %{ free }"
-#: src/views/toolbox/SystemView.vue:141
+#: src/views/toolbox/SystemView.vue:134
msgid "Enter hostname, e.g. myserver"
msgstr ""
-#: src/views/toolbox/SystemView.vue:144
+#: src/views/toolbox/SystemView.vue:137
msgid "Hosts"
msgstr ""
-#: src/views/toolbox/SystemView.vue:152
+#: src/views/toolbox/SystemView.vue:145
msgid "Time"
msgstr "時間"
-#: src/views/toolbox/SystemView.vue:156
-msgid "After manually changing the time, it may still be overwritten by system automatic time synchronization."
+#: src/views/toolbox/SystemView.vue:149
+msgid ""
+"After manually changing the time, it may still be overwritten by system "
+"automatic time synchronization."
msgstr "手動更改時間後,系統自動時間同步可能仍會覆蓋設置。"
-#: src/views/toolbox/SystemView.vue:162
+#: src/views/toolbox/SystemView.vue:155
msgid "Select Timezone"
msgstr "選擇時區"
-#: src/views/toolbox/SystemView.vue:165
+#: src/views/toolbox/SystemView.vue:158
msgid "Please select a timezone"
msgstr "請選擇時區"
-#: src/views/toolbox/SystemView.vue:169
+#: src/views/toolbox/SystemView.vue:162
msgid "Modify Time"
msgstr "修改時間"
-#: src/views/toolbox/SystemView.vue:178
+#: src/views/toolbox/SystemView.vue:171
msgid "Synchronize Time"
msgstr "同步時間"
+#: src/views/toolbox/WebHookView.vue:68 src/views/toolbox/WebHookView.vue:340
+#: src/views/toolbox/WebHookView.vue:375
+msgid "Raw Output"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:80
+msgid "Yes"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:80
+#, fuzzy
+msgid "No"
+msgstr "無"
+
+#: src/views/toolbox/WebHookView.vue:100
+#, fuzzy
+msgid "Call Count"
+msgstr "容器數量"
+
+#: src/views/toolbox/WebHookView.vue:107
+msgid "Last Call"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:145
+#, fuzzy
+msgid "Copy URL"
+msgstr "複製"
+
+#: src/views/toolbox/WebHookView.vue:167
+#, fuzzy
+msgid "Are you sure you want to delete this WebHook?"
+msgstr "您確定要刪除此備份嗎?"
+
+#: src/views/toolbox/WebHookView.vue:217
+msgid "URL copied to clipboard"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:242 src/views/toolbox/WebHookView.vue:264
+#, fuzzy
+msgid "Please enter a name"
+msgstr "請輸入絕對路徑"
+
+#: src/views/toolbox/WebHookView.vue:246 src/views/toolbox/WebHookView.vue:268
+#, fuzzy
+msgid "Please enter a script"
+msgstr "請輸入絕對路徑"
+
+#: src/views/toolbox/WebHookView.vue:295 src/views/toolbox/WebHookView.vue:324
+#, fuzzy
+msgid "Create WebHook"
+msgstr "創建主機"
+
+#: src/views/toolbox/WebHookView.vue:332 src/views/toolbox/WebHookView.vue:367
+#, fuzzy
+msgid "Enter WebHook name"
+msgstr "輸入新名稱"
+
+#: src/views/toolbox/WebHookView.vue:337 src/views/toolbox/WebHookView.vue:372
+msgid "User to run the script (default: root)"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:343 src/views/toolbox/WebHookView.vue:378
+msgid "Return script output as raw text instead of JSON"
+msgstr ""
+
+#: src/views/toolbox/WebHookView.vue:346 src/views/toolbox/WebHookView.vue:384
+#, fuzzy
+msgid "Script"
+msgstr "運行腳本"
+
+#: src/views/toolbox/WebHookView.vue:359
+#, fuzzy
+msgid "Edit WebHook"
+msgstr "編輯網站"
+
#: src/views/website/BulkCreateModal.vue:23
msgid "The format is incorrect, please check"
msgstr "格式不正確,請檢查"
@@ -4474,13 +5096,14 @@ msgstr "格式不正確,請檢查"
msgid "Website %{ name } created successfully"
msgstr "網站 %{ name } 創建成功"
-#: src/views/website/BulkCreateModal.vue:79
-#: src/views/website/ListView.vue:285
+#: src/views/website/BulkCreateModal.vue:79 src/views/website/ListView.vue:285
msgid "Bulk Create Website"
msgstr "批量創建網站"
#: src/views/website/BulkCreateModal.vue:90
-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:98
@@ -4488,15 +5111,21 @@ msgid "name|domain|port|path|remark"
msgstr "名稱|域名|端口|路徑|備註"
#: src/views/website/BulkCreateModal.vue:103
-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:110
-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:117
-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:123
@@ -4507,27 +5136,24 @@ msgstr "路徑:網站的根目錄,可以為空以使用默認路徑。"
msgid "Remark: The remark of the website, can be empty."
msgstr "備註:網站的備註,可以為空。"
-#: src/views/website/CreateModal.vue:35
-#: src/views/website/EditView.vue:56
+#: src/views/website/CreateModal.vue:35 src/views/website/EditView.vue:56
msgid "Not used"
msgstr "未使用"
-#: src/views/website/CreateModal.vue:97
-#: src/views/website/ListView.vue:282
+#: src/views/website/CreateModal.vue:97 src/views/website/ListView.vue:282
msgid "Create Website"
msgstr "創建網站"
#: src/views/website/CreateModal.vue:112
-msgid "Must use English for the website name, it cannot be modified after setting"
+msgid ""
+"Must use English for the website name, it cannot be modified after setting"
msgstr ""
-#: src/views/website/CreateModal.vue:141
-#: src/views/website/EditView.vue:248
+#: src/views/website/CreateModal.vue:141 src/views/website/EditView.vue:248
msgid "PHP Version"
msgstr "PHP 版本"
-#: src/views/website/CreateModal.vue:145
-#: src/views/website/EditView.vue:253
+#: src/views/website/CreateModal.vue:145 src/views/website/EditView.vue:253
msgid "Select PHP Version"
msgstr "選擇 PHP 版本"
@@ -4535,18 +5161,18 @@ msgstr "選擇 PHP 版本"
msgid "Select Database"
msgstr "選擇數據庫"
-#: src/views/website/CreateModal.vue:185
-#: src/views/website/CreateModal.vue:190
+#: src/views/website/CreateModal.vue:185 src/views/website/CreateModal.vue:190
msgid "Database User"
msgstr "數據庫用戶"
-#: src/views/website/CreateModal.vue:199
-#: src/views/website/CreateModal.vue:205
+#: src/views/website/CreateModal.vue:199 src/views/website/CreateModal.vue:205
msgid "Database Password"
msgstr "數據庫密碼"
#: src/views/website/CreateModal.vue:216
-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 ""
#: src/views/website/CreateModal.vue:222
@@ -4557,8 +5183,7 @@ msgstr ""
msgid "Proxy target address (e.g., http://127.0.0.1:3000)"
msgstr ""
-#: src/views/website/CreateModal.vue:230
-#: src/views/website/CreateModal.vue:235
+#: src/views/website/CreateModal.vue:230 src/views/website/CreateModal.vue:235
#: src/views/website/ListView.vue:106
msgid "Remark"
msgstr "備註"
@@ -4656,24 +5281,30 @@ msgid "Presets"
msgstr "預設"
#: src/views/website/EditView.vue:365
-msgid "If you modify the original text, other modifications will not take effect after clicking save!"
+msgid ""
+"If you modify the original text, other modifications will not take effect "
+"after clicking save!"
msgstr "如果修改原文,點擊保存後其他修改將不會生效!"
#: src/views/website/EditView.vue:372
-msgid "If you do not understand the configuration rules, please do not modify them arbitrarily, otherwise it may cause the website to be inaccessible or panel function abnormalities! If you have already encountered a problem, try resetting the configuration!"
-msgstr "如果您不了解配置規則,請不要隨意修改,否則可能導致網站無法訪問或面板功能異常!如果您已經遇到問題,請嘗試重置配置!"
+msgid ""
+"If you do not understand the configuration rules, please do not modify them "
+"arbitrarily, otherwise it may cause the website to be inaccessible or panel "
+"function abnormalities! If you have already encountered a problem, try "
+"resetting the configuration!"
+msgstr ""
+"如果您不了解配置規則,請不要隨意修改,否則可能導致網站無法訪問或面板功能異"
+"常!如果您已經遇到問題,請嘗試重置配置!"
#: src/views/website/EditView.vue:379
msgid "Access Log"
msgstr "訪問日誌"
-#: src/views/website/EditView.vue:383
-#: src/views/website/EditView.vue:403
+#: src/views/website/EditView.vue:383 src/views/website/EditView.vue:403
msgid "All logs can be viewed by downloading the file"
msgstr "所有日誌可通過下載文件查看"
-#: src/views/website/EditView.vue:385
-#: src/views/website/EditView.vue:405
+#: src/views/website/EditView.vue:385 src/views/website/EditView.vue:405
msgid "view"
msgstr "查看"
@@ -4742,7 +5373,9 @@ msgid "Please select the websites to delete"
msgstr "請選擇要刪除的網站"
#: src/views/website/ListView.vue:294
-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/ProxyBuilderModal.vue:24
@@ -4778,11 +5411,15 @@ msgid "Generate Reverse Proxy Configuration"
msgstr "生成反向代理配置"
#: src/views/website/ProxyBuilderModal.vue:132
-msgid "After generating the reverse proxy configuration, the original rewrite rules will be overwritten."
+msgid ""
+"After generating the reverse proxy configuration, the original rewrite rules "
+"will be overwritten."
msgstr "生成反向代理配置後,原有的重寫規則將被覆蓋。"
#: src/views/website/ProxyBuilderModal.vue:139
-msgid "If you need to proxy static resources like JS/CSS, please remove the static log recording part from the original configuration."
+msgid ""
+"If you need to proxy static resources like JS/CSS, please remove the static "
+"log recording part from the original configuration."
msgstr "如果您需要代理JS/CSS等靜態資源,請從原始配置中刪除靜態日誌記錄部分。"
#: src/views/website/ProxyBuilderModal.vue:145
@@ -4889,3 +5526,19 @@ msgstr ""
msgid "Enter the default cipher suite, leave blank to reset to default"
msgstr ""
+#~ msgid "Extension Name"
+#~ msgstr "擴展名稱"
+
+#~ msgid "Extension Management"
+#~ msgstr "擴展管理"
+
+#~ msgid ""
+#~ "Modifying panel port/entrance requires corresponding changes in the "
+#~ "browser address bar to access the panel!"
+#~ msgstr "修改面板端口/入口需要在瀏覽器地址欄中相應更改以訪問面板!"
+
+#~ msgid "/www/wwwroot"
+#~ msgstr "/www/wwwroot"
+
+#~ msgid "Process %{ pid } has been terminated"
+#~ msgstr "進程 %{ pid } 已被終止"
diff --git a/web/src/views/toolbox/DiskView.vue b/web/src/views/toolbox/DiskView.vue
new file mode 100644
index 00000000..ead4a0ec
--- /dev/null
+++ b/web/src/views/toolbox/DiskView.vue
@@ -0,0 +1,1020 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ $gettext('Disk Name') }}: {{ diskItem.name }}
+
+ {{ $gettext('System Disk') }}
+
+
+
+
+
+ {{ $gettext('Size') }}: {{ formatBytes(diskItem.size) }}
+ {{ $gettext('Partitions') }}: {{ diskItem.partitions.length }}
+ {{ $gettext('Disk Type') }}:
+ {{ getDiskTypeLabel(diskItem.model) }}
+
+
+
+
+
+
+ {{ $gettext('Note: This is the system disk and cannot be operated on.') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $gettext('Mount') }}
+
+
+
+
+ {{
+ $gettext(
+ 'When enabled, the partition UUID will be written to /etc/fstab for automatic mounting on system boot.'
+ )
+ }}
+
+
+
+
+
+ {{ $gettext('Warning: Formatting will erase all data!') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $pgettext('disk action', 'Format') }}
+
+
+
+
+
+
+
+ {{
+ $gettext(
+ 'Warning: This will delete all partitions and create a single partition. All data will be lost!'
+ )
+ }}
+
+
+
+
+
+
+
+
+
+ {{ $gettext('Initialize') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ pv.field_0 }}
+
+ VG: {{ pv.field_1 }} | Size: {{ pv.field_2 }} | Free: {{ pv.field_3 }}
+
+
+
+ {{ $gettext('Remove') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $gettext('Create PV') }}
+
+
+
+
+
+
+
+
+
+
+ {{ vg.field_0 }}
+
+ PV: {{ vg.field_1 }} | LV: {{ vg.field_2 }} | Size: {{ vg.field_3 }} | Free:
+ {{ vg.field_4 }}
+
+
+
+ {{ $gettext('Remove') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $gettext('Create VG') }}
+
+
+
+
+
+
+
+
+
+
+ {{ lv.field_0 }}
+
+ VG: {{ lv.field_1 }} | Size: {{ lv.field_2 }} | Path: {{ lv.field_3 }}
+
+
+
+ {{ $gettext('Remove') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $gettext('Create LV') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $gettext('Extend LV') }}
+
+
+
+
+
+
+
+
+
diff --git a/web/src/views/toolbox/IndexView.vue b/web/src/views/toolbox/IndexView.vue
index ca016a10..01544139 100644
--- a/web/src/views/toolbox/IndexView.vue
+++ b/web/src/views/toolbox/IndexView.vue
@@ -4,8 +4,9 @@ defineOptions({
})
import BenchmarkView from '@/views/toolbox/BenchmarkView.vue'
+import DiskView from '@/views/toolbox/DiskView.vue'
import ProcessView from '@/views/toolbox/ProcessView.vue'
-import SSHView from '@/views/toolbox/SSHView.vue'
+import SshView from '@/views/toolbox/SshView.vue'
import SystemView from '@/views/toolbox/SystemView.vue'
import WebHookView from '@/views/toolbox/WebHookView.vue'
import { useGettext } from 'vue3-gettext'
@@ -21,6 +22,7 @@ const current = ref('process')
+
@@ -28,7 +30,8 @@ const current = ref('process')
-
+
+
diff --git a/web/src/views/toolbox/SSHView.vue b/web/src/views/toolbox/SshView.vue
similarity index 95%
rename from web/src/views/toolbox/SSHView.vue
rename to web/src/views/toolbox/SshView.vue
index 5965346d..3692ed8d 100644
--- a/web/src/views/toolbox/SSHView.vue
+++ b/web/src/views/toolbox/SshView.vue
@@ -224,20 +224,16 @@ onMounted(() => {
-
+
-
- {{ $gettext('SSH Service Status') }}
-
-
- {{ $gettext('Restart') }}
-
-
-
-
-
-
+
+ {{ $gettext('SSH Service Status') }}
+
+
+ {{ $gettext('Restart') }}
+
+
@@ -250,7 +246,6 @@ onMounted(() => {
{{ $gettext('Allow password authentication for SSH login') }}
-
@@ -265,7 +260,6 @@ onMounted(() => {
$gettext('Allow key authentication for SSH login')
}}
-
@@ -299,7 +293,6 @@ onMounted(() => {
@update:value="handleUpdateRootLogin"
/>
-
{{ $gettext('Root Password') }}
@@ -332,7 +325,6 @@ onMounted(() => {
}}
-
diff --git a/web/src/views/toolbox/WebHookView.vue b/web/src/views/toolbox/WebHookView.vue
index 48081de0..2bbce897 100644
--- a/web/src/views/toolbox/WebHookView.vue
+++ b/web/src/views/toolbox/WebHookView.vue
@@ -290,7 +290,7 @@ onMounted(() => {
-
+
{{ $gettext('Create WebHook') }}